Handle iOS special keys
This commit is contained in:
parent
9e99ce126c
commit
e7c4d669f0
|
@ -103,6 +103,15 @@ export function getKey(evt) {
|
||||||
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';
|
||||||
|
}
|
||||||
|
|
||||||
// IE and Edge have broken handling of AltGraph so we cannot
|
// IE and Edge have broken handling of AltGraph so we cannot
|
||||||
// trust them for printable characters
|
// trust them for printable characters
|
||||||
if ((evt.key.length !== 1) || (!isIE() && !isEdge())) {
|
if ((evt.key.length !== 1) || (!isIE() && !isEdge())) {
|
||||||
|
|
|
@ -115,6 +115,7 @@ describe('Helpers', function() {
|
||||||
expect(KeyboardUtil.getKey({key: 'Left'})).to.be.equal('ArrowLeft');
|
expect(KeyboardUtil.getKey({key: 'Left'})).to.be.equal('ArrowLeft');
|
||||||
expect(KeyboardUtil.getKey({key: 'OS'})).to.be.equal('Meta');
|
expect(KeyboardUtil.getKey({key: 'OS'})).to.be.equal('Meta');
|
||||||
expect(KeyboardUtil.getKey({key: 'Win'})).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() {
|
it('should use code if no key', function() {
|
||||||
expect(KeyboardUtil.getKey({code: 'NumpadBackspace'})).to.be.equal('Backspace');
|
expect(KeyboardUtil.getKey({code: 'NumpadBackspace'})).to.be.equal('Backspace');
|
||||||
|
|
Loading…
Reference in New Issue