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');