mirror of
https://git.proxmox.com/git/mirror_xterm.js
synced 2025-10-26 03:21:16 +00:00
Move all browser/platform detecting in utils/Browser.js
This commit is contained in:
parent
356377975b
commit
d426c99866
@ -9,9 +9,18 @@
|
|||||||
* @module xterm/utils/Browser
|
* @module xterm/utils/Browser
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import { contains } from './Generic.js';
|
||||||
|
|
||||||
let userAgent = navigator.userAgent;
|
let userAgent = navigator.userAgent;
|
||||||
let platform = navigator.platform;
|
let platform = navigator.platform;
|
||||||
|
|
||||||
export let isFirefox = !!~userAgent.indexOf('Firefox');
|
export let isFirefox = !!~userAgent.indexOf('Firefox');
|
||||||
export let isMSIE = !!~userAgent.indexOf('MSIE');
|
export let isMSIE = !!~userAgent.indexOf('MSIE');
|
||||||
|
|
||||||
|
// Find the users platform. We use this to interpret the meta key
|
||||||
|
// and ISO third level shifts.
|
||||||
|
// http://stackoverflow.com/q/19877924/577598
|
||||||
|
export let isMac = contains(platform, ['Macintosh', 'MacIntel', 'MacPPC', 'Mac68K']);
|
||||||
|
export let isIpad = platform === 'iPad';
|
||||||
|
export let isIphone = platform === 'iPhone';
|
||||||
|
export let isMSWindows = contains(platform, ['Windows', 'Win16', 'Win32', 'WinCE']);
|
||||||
|
|||||||
19
src/utils/Generic.js
Normal file
19
src/utils/Generic.js
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
/**
|
||||||
|
* xterm.js: xterm, in the browser
|
||||||
|
* Copyright (c) 2016, SourceLair Private Company <www.sourcelair.com> (MIT License)
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generic utilities module. This module contains generic methods that can be helpful at
|
||||||
|
* different parts of the code base.
|
||||||
|
* @module xterm/utils/Generic
|
||||||
|
*/
|
||||||
|
|
||||||
|
export let contains = function(el, arr) {
|
||||||
|
for (var i = 0; i < arr.length; i += 1) {
|
||||||
|
if (el === arr[i]) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
};
|
||||||
33
src/xterm.js
33
src/xterm.js
@ -35,7 +35,7 @@ import { CompositionHelper } from './CompositionHelper.js';
|
|||||||
import { EventEmitter } from './EventEmitter.js';
|
import { EventEmitter } from './EventEmitter.js';
|
||||||
import { Viewport } from './Viewport.js';
|
import { Viewport } from './Viewport.js';
|
||||||
import { rightClickHandler, pasteHandler, copyHandler } from './handlers/Clipboard.js';
|
import { rightClickHandler, pasteHandler, copyHandler } from './handlers/Clipboard.js';
|
||||||
import { isFirefox, isMSIE } from './utils/Browser';
|
import { isFirefox, isMSIE, isMac, isIpad, isIphone, isMSWindows } from './utils/Browser';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Terminal Emulation References:
|
* Terminal Emulation References:
|
||||||
@ -536,22 +536,6 @@ Terminal.prototype.open = function(parent) {
|
|||||||
this.document = this.parent.ownerDocument;
|
this.document = this.parent.ownerDocument;
|
||||||
this.body = this.document.getElementsByTagName('body')[0];
|
this.body = this.document.getElementsByTagName('body')[0];
|
||||||
|
|
||||||
// Find the users platform. We use this to interpret the meta key
|
|
||||||
// and ISO third level shifts.
|
|
||||||
// http://stackoverflow.com/q/19877924/577598
|
|
||||||
if (this.context.navigator && this.context.navigator.platform) {
|
|
||||||
this.isMac = contains(
|
|
||||||
this.context.navigator.platform,
|
|
||||||
['Macintosh', 'MacIntel', 'MacPPC', 'Mac68K']
|
|
||||||
);
|
|
||||||
this.isIpad = this.context.navigator.platform === 'iPad';
|
|
||||||
this.isIphone = this.context.navigator.platform === 'iPhone';
|
|
||||||
this.isMSWindows = contains(
|
|
||||||
this.context.navigator.platform,
|
|
||||||
['Windows', 'Win16', 'Win32', 'WinCE']
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
//Create main element container
|
//Create main element container
|
||||||
this.element = this.document.createElement('div');
|
this.element = this.document.createElement('div');
|
||||||
this.element.classList.add('terminal');
|
this.element.classList.add('terminal');
|
||||||
@ -2720,7 +2704,7 @@ Terminal.prototype.evaluateKeyEscapeSequence = function(ev) {
|
|||||||
// ^] - group sep
|
// ^] - group sep
|
||||||
result.key = String.fromCharCode(29);
|
result.key = String.fromCharCode(29);
|
||||||
}
|
}
|
||||||
} else if (!this.isMac && ev.altKey && !ev.ctrlKey && !ev.metaKey) {
|
} else if (!isMac && ev.altKey && !ev.ctrlKey && !ev.metaKey) {
|
||||||
// On Mac this is a third level shift. Use <Esc> instead.
|
// On Mac this is a third level shift. Use <Esc> instead.
|
||||||
if (ev.keyCode >= 65 && ev.keyCode <= 90) {
|
if (ev.keyCode >= 65 && ev.keyCode <= 90) {
|
||||||
result.key = '\x1b' + String.fromCharCode(ev.keyCode + 32);
|
result.key = '\x1b' + String.fromCharCode(ev.keyCode + 32);
|
||||||
@ -4875,15 +4859,6 @@ Terminal.charsets.ISOLatin = null; // /A
|
|||||||
* Helpers
|
* Helpers
|
||||||
*/
|
*/
|
||||||
|
|
||||||
function contains(el, arr) {
|
|
||||||
for (var i = 0; i < arr.length; i += 1) {
|
|
||||||
if (el === arr[i]) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
function on(el, type, handler, capture) {
|
function on(el, type, handler, capture) {
|
||||||
if (!Array.isArray(el)) {
|
if (!Array.isArray(el)) {
|
||||||
el = [el];
|
el = [el];
|
||||||
@ -4938,8 +4913,8 @@ function indexOf(obj, el) {
|
|||||||
|
|
||||||
function isThirdLevelShift(term, ev) {
|
function isThirdLevelShift(term, ev) {
|
||||||
var thirdLevelKey =
|
var thirdLevelKey =
|
||||||
(term.isMac && ev.altKey && !ev.ctrlKey && !ev.metaKey) ||
|
(isMac && ev.altKey && !ev.ctrlKey && !ev.metaKey) ||
|
||||||
(term.isMSWindows && ev.altKey && ev.ctrlKey && !ev.metaKey);
|
(isMSWindows && ev.altKey && ev.ctrlKey && !ev.metaKey);
|
||||||
|
|
||||||
if (ev.type == 'keypress') {
|
if (ev.type == 'keypress') {
|
||||||
return thirdLevelKey;
|
return thirdLevelKey;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user