From ccf3c7b421e804172827dd34a995290afc85af10 Mon Sep 17 00:00:00 2001 From: Shin'ya Ueoka Date: Sun, 12 Nov 2017 18:21:28 +0900 Subject: [PATCH] fix for symbol keys --- src/shared/utils/keys.js | 10 +++++++++- test/shared/utils/keys.test.js | 12 ++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/shared/utils/keys.js b/src/shared/utils/keys.js index dfdb954..fba8ce3 100644 --- a/src/shared/utils/keys.js +++ b/src/shared/utils/keys.js @@ -8,9 +8,17 @@ const modifierdKeyName = (name) => { }; const fromKeyboardEvent = (e) => { + let key = modifierdKeyName(e.key); + let shift = e.shiftKey; + if (key.length === 1 && key.toUpperCase() === key.toLowerCase()) { + // make shift false for symbols to enable key bindings by symbold keys. + // But this limits key bindings by symbol keys with Shift (such as Shift+$>. + shift = false; + } + return { key: modifierdKeyName(e.key), - shiftKey: e.shiftKey, + shiftKey: shift, ctrlKey: e.ctrlKey, altKey: e.altKey, metaKey: e.metaKey, diff --git a/test/shared/utils/keys.test.js b/test/shared/utils/keys.test.js index 77e2b12..5ca8b54 100644 --- a/test/shared/utils/keys.test.js +++ b/test/shared/utils/keys.test.js @@ -24,6 +24,18 @@ describe("keys util", () => { expect(k.altKey).to.be.false; expect(k.metaKey).to.be.true; }); + + it('returns from keyboard input Ctrl+$', () => { + // $ required shift pressing on most keyboards + let k = keys.fromKeyboardEvent({ + key: '$', shiftKey: true, ctrlKey: true, altKey: false, metaKey: false + }); + expect(k.key).to.equal('$'); + expect(k.shiftKey).to.be.false; + expect(k.ctrlKey).to.be.true; + expect(k.altKey).to.be.false; + expect(k.metaKey).to.be.false; + }); }); describe('fromMapKey', () => {