From 1103b2c2e993d8950ece73110b9e0d5a4aec1fed Mon Sep 17 00:00:00 2001 From: filtered <176114999+webfiltered@users.noreply.github.com> Date: Thu, 30 Jan 2025 21:19:08 +1100 Subject: [PATCH 1/3] Allow tab navigation in keyboard shortcuts screen --- .../dialog/content/setting/KeybindingPanel.vue | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/components/dialog/content/setting/KeybindingPanel.vue b/src/components/dialog/content/setting/KeybindingPanel.vue index 60bd7c5e0..a638c27cf 100644 --- a/src/components/dialog/content/setting/KeybindingPanel.vue +++ b/src/components/dialog/content/setting/KeybindingPanel.vue @@ -77,7 +77,7 @@ ref="keybindingInput" :modelValue="newBindingKeyCombo?.toString() ?? ''" placeholder="Press keys for new binding" - @keydown.stop.prevent="captureKeybinding" + @keydown="captureKeybinding" autocomplete="off" fluid :invalid="!!existingKeybindingOnCombo" @@ -213,6 +213,13 @@ function removeKeybinding(commandData: ICommandData) { } function captureKeybinding(event: KeyboardEvent) { + // Accessibility: Tab and shift-tab are standard keyboard navigation shortcuts + const pressingAltOrCtrl = event.altKey || event.ctrlKey || event.metaKey + if (!pressingAltOrCtrl && event.key === 'Tab') return + + event.stopPropagation() + event.preventDefault() + const keyCombo = KeyComboImpl.fromEvent(event) newBindingKeyCombo.value = keyCombo } From cb410dcc45f5e121ed1d3ae81f7bddd49bb01436 Mon Sep 17 00:00:00 2001 From: filtered <176114999+webfiltered@users.noreply.github.com> Date: Thu, 30 Jan 2025 21:19:37 +1100 Subject: [PATCH 2/3] Use enter to add a keyboard shortcut, escape to cancel --- .../dialog/content/setting/KeybindingPanel.vue | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/components/dialog/content/setting/KeybindingPanel.vue b/src/components/dialog/content/setting/KeybindingPanel.vue index a638c27cf..b801250fc 100644 --- a/src/components/dialog/content/setting/KeybindingPanel.vue +++ b/src/components/dialog/content/setting/KeybindingPanel.vue @@ -220,6 +220,17 @@ function captureKeybinding(event: KeyboardEvent) { event.stopPropagation() event.preventDefault() + // Allow the use of keyboard shortcuts when adding keyboard shortcuts + if (!event.shiftKey && !pressingAltOrCtrl) { + switch (event.key) { + case 'Escape': + cancelEdit() + return + case 'Enter': + saveKeybinding() + return + } + } const keyCombo = KeyComboImpl.fromEvent(event) newBindingKeyCombo.value = keyCombo } From 620769a160b9585a16097fade66245a62efe6229 Mon Sep 17 00:00:00 2001 From: filtered <176114999+webfiltered@users.noreply.github.com> Date: Sat, 1 Feb 2025 00:53:56 +1100 Subject: [PATCH 3/3] Revert tab allowed --- .../dialog/content/setting/KeybindingPanel.vue | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/src/components/dialog/content/setting/KeybindingPanel.vue b/src/components/dialog/content/setting/KeybindingPanel.vue index b801250fc..fbad90535 100644 --- a/src/components/dialog/content/setting/KeybindingPanel.vue +++ b/src/components/dialog/content/setting/KeybindingPanel.vue @@ -77,7 +77,7 @@ ref="keybindingInput" :modelValue="newBindingKeyCombo?.toString() ?? ''" placeholder="Press keys for new binding" - @keydown="captureKeybinding" + @keydown.stop.prevent="captureKeybinding" autocomplete="off" fluid :invalid="!!existingKeybindingOnCombo" @@ -213,15 +213,8 @@ function removeKeybinding(commandData: ICommandData) { } function captureKeybinding(event: KeyboardEvent) { - // Accessibility: Tab and shift-tab are standard keyboard navigation shortcuts - const pressingAltOrCtrl = event.altKey || event.ctrlKey || event.metaKey - if (!pressingAltOrCtrl && event.key === 'Tab') return - - event.stopPropagation() - event.preventDefault() - // Allow the use of keyboard shortcuts when adding keyboard shortcuts - if (!event.shiftKey && !pressingAltOrCtrl) { + if (!event.shiftKey && !event.altKey && !event.ctrlKey && !event.metaKey) { switch (event.key) { case 'Escape': cancelEdit()