diff --git a/src/KeyBindingsManager.ts b/src/KeyBindingsManager.ts index c32610670d..030cd94e99 100644 --- a/src/KeyBindingsManager.ts +++ b/src/KeyBindingsManager.ts @@ -20,8 +20,7 @@ export enum KeyAction { * The combo is evaluated strictly, i.e. the KeyboardEvent must match exactly what is specified in the KeyCombo. */ export type KeyCombo = { - /** Currently only one `normal` key is supported */ - keys: string[]; + key?: string; /** On PC: ctrl is pressed; on Mac: meta is pressed */ ctrlOrCmd?: boolean; @@ -42,7 +41,7 @@ const messageComposerBindings = (): KeyBinding[] => { { action: KeyAction.SelectPrevSendHistory, keyCombo: { - keys: [Key.ARROW_UP], + key: Key.ARROW_UP, altKey: true, ctrlKey: true, }, @@ -50,7 +49,7 @@ const messageComposerBindings = (): KeyBinding[] => { { action: KeyAction.SelectNextSendHistory, keyCombo: { - keys: [Key.ARROW_DOWN], + key: Key.ARROW_DOWN, altKey: true, ctrlKey: true, }, @@ -58,7 +57,7 @@ const messageComposerBindings = (): KeyBinding[] => { { action: KeyAction.EditLastMessage, keyCombo: { - keys: [Key.ARROW_UP], + key: Key.ARROW_UP, } }, ]; @@ -66,7 +65,7 @@ const messageComposerBindings = (): KeyBinding[] => { bindings.push({ action: KeyAction.Send, keyCombo: { - keys: [Key.ENTER], + key: Key.ENTER, ctrlOrCmd: true, }, }); @@ -74,7 +73,7 @@ const messageComposerBindings = (): KeyBinding[] => { bindings.push({ action: KeyAction.Send, keyCombo: { - keys: [Key.ENTER], + key: Key.ENTER, }, }); } @@ -88,7 +87,7 @@ const messageComposerBindings = (): KeyBinding[] => { * Note, this method is only exported for testing. */ export function isKeyComboMatch(ev: KeyboardEvent, combo: KeyCombo, onMac: boolean): boolean { - if (combo.keys.length > 0 && ev.key !== combo.keys[0]) { + if (combo.key !== undefined && ev.key !== combo.key) { return false; } diff --git a/test/KeyBindingsManager-test.ts b/test/KeyBindingsManager-test.ts index f272878658..28204be9c8 100644 --- a/test/KeyBindingsManager-test.ts +++ b/test/KeyBindingsManager-test.ts @@ -19,7 +19,7 @@ function mockKeyEvent(key: string, modifiers?: { describe('KeyBindingsManager', () => { it('should match basic key combo', () => { const combo1: KeyCombo = { - keys: ['k'], + key: 'k', }; assert.strictEqual(isKeyComboMatch(mockKeyEvent('k'), combo1, false), true); assert.strictEqual(isKeyComboMatch(mockKeyEvent('n'), combo1, false), false); @@ -28,7 +28,7 @@ describe('KeyBindingsManager', () => { it('should match key + modifier key combo', () => { const combo: KeyCombo = { - keys: ['k'], + key: 'k', ctrlKey: true, }; assert.strictEqual(isKeyComboMatch(mockKeyEvent('k', { ctrlKey: true }), combo, false), true); @@ -38,7 +38,7 @@ describe('KeyBindingsManager', () => { assert.strictEqual(isKeyComboMatch(mockKeyEvent('k', { shiftKey: true, metaKey: true }), combo, false), false); const combo2: KeyCombo = { - keys: ['k'], + key: 'k', metaKey: true, }; assert.strictEqual(isKeyComboMatch(mockKeyEvent('k', { metaKey: true }), combo2, false), true); @@ -47,7 +47,7 @@ describe('KeyBindingsManager', () => { assert.strictEqual(isKeyComboMatch(mockKeyEvent('k', { altKey: true, metaKey: true }), combo2, false), false); const combo3: KeyCombo = { - keys: ['k'], + key: 'k', altKey: true, }; assert.strictEqual(isKeyComboMatch(mockKeyEvent('k', { altKey: true }), combo3, false), true); @@ -56,7 +56,7 @@ describe('KeyBindingsManager', () => { assert.strictEqual(isKeyComboMatch(mockKeyEvent('k', { ctrlKey: true, metaKey: true }), combo3, false), false); const combo4: KeyCombo = { - keys: ['k'], + key: 'k', shiftKey: true, }; assert.strictEqual(isKeyComboMatch(mockKeyEvent('k', { shiftKey: true }), combo4, false), true); @@ -67,7 +67,7 @@ describe('KeyBindingsManager', () => { it('should match key + multiple modifiers key combo', () => { const combo: KeyCombo = { - keys: ['k'], + key: 'k', ctrlKey: true, altKey: true, }; @@ -78,7 +78,7 @@ describe('KeyBindingsManager', () => { false), false); const combo2: KeyCombo = { - keys: ['k'], + key: 'k', ctrlKey: true, shiftKey: true, altKey: true, @@ -92,7 +92,7 @@ describe('KeyBindingsManager', () => { { ctrlKey: true, shiftKey: true, altKey: true, metaKey: true }), combo2, false), false); const combo3: KeyCombo = { - keys: ['k'], + key: 'k', ctrlKey: true, shiftKey: true, altKey: true, @@ -108,7 +108,7 @@ describe('KeyBindingsManager', () => { it('should match ctrlOrMeta key combo', () => { const combo: KeyCombo = { - keys: ['k'], + key: 'k', ctrlOrCmd: true, }; // PC: @@ -123,7 +123,7 @@ describe('KeyBindingsManager', () => { it('should match advanced ctrlOrMeta key combo', () => { const combo: KeyCombo = { - keys: ['k'], + key: 'k', ctrlOrCmd: true, altKey: true, };