fix(web): useShortcuts — бэр-клавиши не зависят от Shift
Some checks are pending
Some checks are pending
'?' на US-раскладке вводится через Shift+/, поэтому при нажатии e.shiftKey=true. Старая логика требовала wantShift === e.shiftKey и блокировала '?' (wantShift=false). Теперь для одиночных клавиш (без '+' в spec) сравниваем только e.key — это правильно и для '/', и для '?', и для 'n', и не ломает 'mod+s'. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
76cbe78257
commit
c2ebbcc1bd
|
|
@ -40,6 +40,14 @@ const matches = (e: KeyboardEvent, spec: string): boolean => {
|
|||
const wantShift = parts.includes('shift')
|
||||
const wantAlt = parts.includes('alt')
|
||||
const key = parts[parts.length - 1]
|
||||
const isBare = parts.length === 1
|
||||
|
||||
// Бэр-ключи ('?', '/', 'n', 'Escape') — не зависим от модификаторов:
|
||||
// некоторые символы требуют shift на ряде раскладок ('?'), и мы хотим
|
||||
// чтобы ловилось при любом состоянии. Esc сам не использует модификаторы.
|
||||
if (isBare) {
|
||||
return e.key.toLowerCase() === key
|
||||
}
|
||||
|
||||
const ctrlOrMeta = e.ctrlKey || e.metaKey
|
||||
if (wantMod !== ctrlOrMeta) return false
|
||||
|
|
|
|||
Loading…
Reference in a new issue