support shift modifier
This commit is contained in:
parent
214a5103f3
commit
cd6f7e7788
2 changed files with 36 additions and 1 deletions
|
@ -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) => {
|
||||||
|
|
Reference in a new issue