From dc3ddc8efcdd41cf75216719cb1a11f4aae71fa7 Mon Sep 17 00:00:00 2001 From: Pierre Ossman Date: Thu, 31 Oct 2019 14:51:36 +0100 Subject: [PATCH] Handle broken numpad delete key in Chrome --- kasmweb/core/input/util.js | 5 +++++ kasmweb/tests/test.helper.js | 3 +++ 2 files changed, 8 insertions(+) diff --git a/kasmweb/core/input/util.js b/kasmweb/core/input/util.js index 179f7ee..b0e8855 100644 --- a/kasmweb/core/input/util.js +++ b/kasmweb/core/input/util.js @@ -103,6 +103,11 @@ export function getKey(evt) { case 'UIKeyInputEscape': return 'Escape'; } + // Broken behaviour in Chrome + if ((evt.key === '\x00') && (evt.code === 'NumpadDecimal')) { + return 'Delete'; + } + // 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())) { diff --git a/kasmweb/tests/test.helper.js b/kasmweb/tests/test.helper.js index 5b58a83..70eba1b 100644 --- a/kasmweb/tests/test.helper.js +++ b/kasmweb/tests/test.helper.js @@ -110,6 +110,9 @@ describe('Helpers', function () { expect(KeyboardUtil.getKey({key: 'Win'})).to.be.equal('Meta'); expect(KeyboardUtil.getKey({key: 'UIKeyInputLeftArrow'})).to.be.equal('ArrowLeft'); }); + it('should handle broken Delete', function () { + expect(KeyboardUtil.getKey({key: '\x00', code: 'NumpadDecimal'})).to.be.equal('Delete'); + }); it('should use code if no key', function () { expect(KeyboardUtil.getKey({code: 'NumpadBackspace'})).to.be.equal('Backspace'); });