From e7c4d669f0f0267356c37b20b35ff50bbd204cb2 Mon Sep 17 00:00:00 2001 From: Pierre Ossman Date: Wed, 21 Jun 2017 14:02:24 +0200 Subject: [PATCH] Handle iOS special keys --- core/input/util.js | 9 +++++++++ tests/test.helper.js | 1 + 2 files changed, 10 insertions(+) diff --git a/core/input/util.js b/core/input/util.js index 4335b0bf..78a829c8 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 e3bf8ac1..aa64e955 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');