diff options
-rw-r--r-- | src/content/components/common/input.js | 13 | ||||
-rw-r--r-- | test/content/components/common/input.test.js | 24 |
2 files changed, 36 insertions, 1 deletions
diff --git a/src/content/components/common/input.js b/src/content/components/common/input.js index 9af9fbe..f285b0c 100644 --- a/src/content/components/common/input.js +++ b/src/content/components/common/input.js @@ -1,6 +1,17 @@ +const modifierdKeyName = (name) => { + if (name.length === 1) { + return name.toUpperCase(); + } else if (name === 'Escape') { + return 'Esc'; + } + return name; +}; + const mapKey = (e) => { if (e.ctrlKey) { - return '<C-' + e.key.toUpperCase() + '>'; + return '<C-' + modifierdKeyName(e.key) + '>'; + } else if (e.shiftKey && e.key.length !== 1) { + return '<S-' + modifierdKeyName(e.key) + '>'; } return e.key; }; diff --git a/test/content/components/common/input.test.js b/test/content/components/common/input.test.js index d4f554a..912ac34 100644 --- a/test/content/components/common/input.test.js +++ b/test/content/components/common/input.test.js @@ -40,6 +40,30 @@ describe('InputComponent', () => { component.onKeyDown({ key: 'a', ctrlKey: true }); }) + it('press X', () => { + let component = new InputComponent(window.document); + component.onKey((key) => { + expect(key).is.equals('X'); + }); + component.onKeyDown({ key: 'X', shiftKey: true }); + }) + + it('press <Shift> + <Esc>', () => { + let component = new InputComponent(window.document); + component.onKey((key) => { + expect(key).is.equals('<S-Esc>'); + }); + component.onKeyDown({ key: 'Escape', shiftKey: true }); + }) + + it('press <Ctrl> + <Esc>', () => { + let component = new InputComponent(window.document); + component.onKey((key) => { + expect(key).is.equals('<C-Esc>'); + }); + component.onKeyDown({ key: 'Escape', ctrlKey: true }); + }) + it('does not invoke only meta keys', () => { let component = new InputComponent(window.document); component.onKey((key) => { |