mirror of
https://github.com/retspen/webvirtcloud
synced 2025-07-31 12:41:08 +00:00
novnc ES6 compatibility is not working. I reverse it. Spice/VNC sending ctrl+alt+fn functionality restored.
This commit is contained in:
parent
f73271e677
commit
76e6388ec5
53 changed files with 19018 additions and 17438 deletions
|
|
@ -1,42 +1,12 @@
|
|||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.getKeycode = getKeycode;
|
||||
exports.getKey = getKey;
|
||||
exports.getKeysym = getKeysym;
|
||||
|
||||
var _keysym = require("./keysym.js");
|
||||
|
||||
var _keysym2 = _interopRequireDefault(_keysym);
|
||||
|
||||
var _keysymdef = require("./keysymdef.js");
|
||||
|
||||
var _keysymdef2 = _interopRequireDefault(_keysymdef);
|
||||
|
||||
var _vkeys = require("./vkeys.js");
|
||||
|
||||
var _vkeys2 = _interopRequireDefault(_vkeys);
|
||||
|
||||
var _fixedkeys = require("./fixedkeys.js");
|
||||
|
||||
var _fixedkeys2 = _interopRequireDefault(_fixedkeys);
|
||||
|
||||
var _domkeytable = require("./domkeytable.js");
|
||||
|
||||
var _domkeytable2 = _interopRequireDefault(_domkeytable);
|
||||
|
||||
var _browser = require("../util/browser.js");
|
||||
|
||||
var browser = _interopRequireWildcard(_browser);
|
||||
|
||||
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
import KeyTable from "./keysym.js";
|
||||
import keysyms from "./keysymdef.js";
|
||||
import vkeys from "./vkeys.js";
|
||||
import fixedkeys from "./fixedkeys.js";
|
||||
import DOMKeyTable from "./domkeytable.js";
|
||||
import * as browser from "../util/browser.js";
|
||||
|
||||
// Get 'KeyboardEvent.code', handling legacy browsers
|
||||
function getKeycode(evt) {
|
||||
export function getKeycode(evt){
|
||||
// Are we getting proper key identifiers?
|
||||
// (unfortunately Firefox and Chrome are crappy here and gives
|
||||
// us an empty string on some platforms, rather than leaving it
|
||||
|
|
@ -44,10 +14,8 @@ function getKeycode(evt) {
|
|||
if (evt.code) {
|
||||
// Mozilla isn't fully in sync with the spec yet
|
||||
switch (evt.code) {
|
||||
case 'OSLeft':
|
||||
return 'MetaLeft';
|
||||
case 'OSRight':
|
||||
return 'MetaRight';
|
||||
case 'OSLeft': return 'MetaLeft';
|
||||
case 'OSRight': return 'MetaRight';
|
||||
}
|
||||
|
||||
return evt.code;
|
||||
|
|
@ -56,11 +24,11 @@ function getKeycode(evt) {
|
|||
// The de-facto standard is to use Windows Virtual-Key codes
|
||||
// in the 'keyCode' field for non-printable characters. However
|
||||
// Webkit sets it to the same as charCode in 'keypress' events.
|
||||
if (evt.type !== 'keypress' && evt.keyCode in _vkeys2.default) {
|
||||
var code = _vkeys2.default[evt.keyCode];
|
||||
if ((evt.type !== 'keypress') && (evt.keyCode in vkeys)) {
|
||||
var code = vkeys[evt.keyCode];
|
||||
|
||||
// macOS has messed up this code for some reason
|
||||
if (browser.isMac() && code === 'ContextMenu') {
|
||||
if (browser.isMac() && (code === 'ContextMenu')) {
|
||||
code = 'MetaRight';
|
||||
}
|
||||
|
||||
|
|
@ -68,40 +36,26 @@ function getKeycode(evt) {
|
|||
// for the standard modifiers
|
||||
if (evt.location === 2) {
|
||||
switch (code) {
|
||||
case 'ShiftLeft':
|
||||
return 'ShiftRight';
|
||||
case 'ControlLeft':
|
||||
return 'ControlRight';
|
||||
case 'AltLeft':
|
||||
return 'AltRight';
|
||||
case 'ShiftLeft': return 'ShiftRight';
|
||||
case 'ControlLeft': return 'ControlRight';
|
||||
case 'AltLeft': return 'AltRight';
|
||||
}
|
||||
}
|
||||
|
||||
// Nor a bunch of the numpad keys
|
||||
if (evt.location === 3) {
|
||||
switch (code) {
|
||||
case 'Delete':
|
||||
return 'NumpadDecimal';
|
||||
case 'Insert':
|
||||
return 'Numpad0';
|
||||
case 'End':
|
||||
return 'Numpad1';
|
||||
case 'ArrowDown':
|
||||
return 'Numpad2';
|
||||
case 'PageDown':
|
||||
return 'Numpad3';
|
||||
case 'ArrowLeft':
|
||||
return 'Numpad4';
|
||||
case 'ArrowRight':
|
||||
return 'Numpad6';
|
||||
case 'Home':
|
||||
return 'Numpad7';
|
||||
case 'ArrowUp':
|
||||
return 'Numpad8';
|
||||
case 'PageUp':
|
||||
return 'Numpad9';
|
||||
case 'Enter':
|
||||
return 'NumpadEnter';
|
||||
case 'Delete': return 'NumpadDecimal';
|
||||
case 'Insert': return 'Numpad0';
|
||||
case 'End': return 'Numpad1';
|
||||
case 'ArrowDown': return 'Numpad2';
|
||||
case 'PageDown': return 'Numpad3';
|
||||
case 'ArrowLeft': return 'Numpad4';
|
||||
case 'ArrowRight': return 'Numpad6';
|
||||
case 'Home': return 'Numpad7';
|
||||
case 'ArrowUp': return 'Numpad8';
|
||||
case 'PageUp': return 'Numpad9';
|
||||
case 'Enter': return 'NumpadEnter';
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -112,75 +66,54 @@ function getKeycode(evt) {
|
|||
}
|
||||
|
||||
// Get 'KeyboardEvent.key', handling legacy browsers
|
||||
function getKey(evt) {
|
||||
export function getKey(evt) {
|
||||
// Are we getting a proper key value?
|
||||
if (evt.key !== undefined) {
|
||||
// IE and Edge use some ancient version of the spec
|
||||
// https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/8860571/
|
||||
switch (evt.key) {
|
||||
case 'Spacebar':
|
||||
return ' ';
|
||||
case 'Esc':
|
||||
return 'Escape';
|
||||
case 'Scroll':
|
||||
return 'ScrollLock';
|
||||
case 'Win':
|
||||
return 'Meta';
|
||||
case 'Apps':
|
||||
return 'ContextMenu';
|
||||
case 'Up':
|
||||
return 'ArrowUp';
|
||||
case 'Left':
|
||||
return 'ArrowLeft';
|
||||
case 'Right':
|
||||
return 'ArrowRight';
|
||||
case 'Down':
|
||||
return 'ArrowDown';
|
||||
case 'Del':
|
||||
return 'Delete';
|
||||
case 'Divide':
|
||||
return '/';
|
||||
case 'Multiply':
|
||||
return '*';
|
||||
case 'Subtract':
|
||||
return '-';
|
||||
case 'Add':
|
||||
return '+';
|
||||
case 'Decimal':
|
||||
return evt.char;
|
||||
case 'Spacebar': return ' ';
|
||||
case 'Esc': return 'Escape';
|
||||
case 'Scroll': return 'ScrollLock';
|
||||
case 'Win': return 'Meta';
|
||||
case 'Apps': return 'ContextMenu';
|
||||
case 'Up': return 'ArrowUp';
|
||||
case 'Left': return 'ArrowLeft';
|
||||
case 'Right': return 'ArrowRight';
|
||||
case 'Down': return 'ArrowDown';
|
||||
case 'Del': return 'Delete';
|
||||
case 'Divide': return '/';
|
||||
case 'Multiply': return '*';
|
||||
case 'Subtract': return '-';
|
||||
case 'Add': return '+';
|
||||
case 'Decimal': return evt.char;
|
||||
}
|
||||
|
||||
// Mozilla isn't fully in sync with the spec yet
|
||||
switch (evt.key) {
|
||||
case 'OS':
|
||||
return 'Meta';
|
||||
case 'OS': return 'Meta';
|
||||
}
|
||||
|
||||
// iOS leaks some OS names
|
||||
switch (evt.key) {
|
||||
case 'UIKeyInputUpArrow':
|
||||
return 'ArrowUp';
|
||||
case 'UIKeyInputDownArrow':
|
||||
return 'ArrowDown';
|
||||
case 'UIKeyInputLeftArrow':
|
||||
return 'ArrowLeft';
|
||||
case 'UIKeyInputRightArrow':
|
||||
return 'ArrowRight';
|
||||
case 'UIKeyInputEscape':
|
||||
return 'Escape';
|
||||
case 'UIKeyInputUpArrow': return 'ArrowUp';
|
||||
case 'UIKeyInputDownArrow': return 'ArrowDown';
|
||||
case 'UIKeyInputLeftArrow': return 'ArrowLeft';
|
||||
case 'UIKeyInputRightArrow': return 'ArrowRight';
|
||||
case 'UIKeyInputEscape': return 'Escape';
|
||||
}
|
||||
|
||||
// IE and Edge have broken handling of AltGraph so we cannot
|
||||
// trust them for printable characters
|
||||
if (evt.key.length !== 1 || !browser.isIE() && !browser.isEdge()) {
|
||||
if ((evt.key.length !== 1) || (!browser.isIE() && !browser.isEdge())) {
|
||||
return evt.key;
|
||||
}
|
||||
}
|
||||
|
||||
// Try to deduce it based on the physical key
|
||||
var code = getKeycode(evt);
|
||||
if (code in _fixedkeys2.default) {
|
||||
return _fixedkeys2.default[code];
|
||||
if (code in fixedkeys) {
|
||||
return fixedkeys[code];
|
||||
}
|
||||
|
||||
// If that failed, then see if we have a printable character
|
||||
|
|
@ -193,7 +126,7 @@ function getKey(evt) {
|
|||
}
|
||||
|
||||
// Get the most reliable keysym value we can get from a key event
|
||||
function getKeysym(evt) {
|
||||
export function getKeysym(evt){
|
||||
var key = getKey(evt);
|
||||
|
||||
if (key === 'Unidentified') {
|
||||
|
|
@ -201,19 +134,19 @@ function getKeysym(evt) {
|
|||
}
|
||||
|
||||
// First look up special keys
|
||||
if (key in _domkeytable2.default) {
|
||||
if (key in DOMKeyTable) {
|
||||
var location = evt.location;
|
||||
|
||||
// Safari screws up location for the right cmd key
|
||||
if (key === 'Meta' && location === 0) {
|
||||
if ((key === 'Meta') && (location === 0)) {
|
||||
location = 2;
|
||||
}
|
||||
|
||||
if (location === undefined || location > 3) {
|
||||
if ((location === undefined) || (location > 3)) {
|
||||
location = 0;
|
||||
}
|
||||
|
||||
return _domkeytable2.default[key][location];
|
||||
return DOMKeyTable[key][location];
|
||||
}
|
||||
|
||||
// Now we need to look at the Unicode symbol instead
|
||||
|
|
@ -227,8 +160,8 @@ function getKeysym(evt) {
|
|||
|
||||
codepoint = key.charCodeAt();
|
||||
if (codepoint) {
|
||||
return _keysymdef2.default.lookup(codepoint);
|
||||
return keysyms.lookup(codepoint);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue