From: Pierre Ossman Date: Wed, 21 Jun 2017 12:02:24 +0000 (+0200) Subject: Handle iOS special keys X-Git-Tag: v1.0.0~107 X-Git-Url: https://git.proxmox.com/?a=commitdiff_plain;h=e7c4d669f0f0267356c37b20b35ff50bbd204cb2;p=mirror_novnc.git Handle iOS special keys --- diff --git a/core/input/util.js b/core/input/util.js index 4335b0b..78a829c 100644 --- a/core/input/util.js +++ b/core/input/util.js @@ -103,6 +103,15 @@ export function getKey(evt) { 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'; + } + // IE and Edge have broken handling of AltGraph so we cannot // trust them for printable characters if ((evt.key.length !== 1) || (!isIE() && !isEdge())) { diff --git a/tests/test.helper.js b/tests/test.helper.js index e3bf8ac..aa64e95 100644 --- a/tests/test.helper.js +++ b/tests/test.helper.js @@ -115,6 +115,7 @@ describe('Helpers', function() { expect(KeyboardUtil.getKey({key: 'Left'})).to.be.equal('ArrowLeft'); expect(KeyboardUtil.getKey({key: 'OS'})).to.be.equal('Meta'); expect(KeyboardUtil.getKey({key: 'Win'})).to.be.equal('Meta'); + expect(KeyboardUtil.getKey({key: 'UIKeyInputLeftArrow'})).to.be.equal('ArrowLeft'); }); it('should use code if no key', function() { expect(KeyboardUtil.getKey({code: 'NumpadBackspace'})).to.be.equal('Backspace');