support shift modifier

jh-changes
Shin'ya Ueoka 7 years ago
parent 214a5103f3
commit cd6f7e7788
  1. 13
      src/content/components/common/input.js
  2. 24
      test/content/components/common/input.test.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) => { const mapKey = (e) => {
if (e.ctrlKey) { 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; return e.key;
}; };

@ -40,6 +40,30 @@ describe('InputComponent', () => {
component.onKeyDown({ key: 'a', ctrlKey: true }); 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', () => { it('does not invoke only meta keys', () => {
let component = new InputComponent(window.document); let component = new InputComponent(window.document);
component.onKey((key) => { component.onKey((key) => {