From 5514136ae1382daf81546819582357e06e90c8ef Mon Sep 17 00:00:00 2001 From: Egor Kolesnikov Date: Wed, 11 Jun 2025 17:54:57 +0500 Subject: [PATCH 1/3] add Digit keys handler --- hotkey.js | 7 +++++-- test/demo/index.tsx | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/hotkey.js b/hotkey.js index 7ba8389..1da155e 100644 --- a/hotkey.js +++ b/hotkey.js @@ -83,9 +83,12 @@ function findHotKey(event, window, transformers) { if ( !hotkey && (event.key.length > 1 || NON_ENGLISH_LAYOUT.test(event.key)) && - /^Key.$/.test(event.code) + (/^Digit\d$/.test(event.code) || /^Key.$/.test(event.code)) ) { - let enKey = event.code.replace(/^Key/, '').toLowerCase() + let enKey = event.code + .replace(/^Key/, '') + .replace(/^Digit/, '') + .toLowerCase() hotkey = checkHotkey(window, prefix + enKey, transformers) } diff --git a/test/demo/index.tsx b/test/demo/index.tsx index 100751f..127c7a1 100644 --- a/test/demo/index.tsx +++ b/test/demo/index.tsx @@ -85,6 +85,23 @@ const Counter: FC = () => { ) } +const Numbers: FC = () => { + return ( +
+
+ {Array(10) + .fill(0) + .map((_, i) => ( + + ))} +
+
+ ) +} + const Search: FC = () => { return (
@@ -481,6 +498,7 @@ const App: FC = () => { + ) } From 8b3a646cde8e9a7ded049a4e2f4933a819a72482 Mon Sep 17 00:00:00 2001 From: Egor Kolesnikov Date: Thu, 12 Jun 2025 11:39:24 +0500 Subject: [PATCH 2/3] add tests for digit keys & increase size-limit --- package.json | 2 +- test/hotkey.test.ts | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 164003b..c76a7c4 100644 --- a/package.json +++ b/package.json @@ -85,7 +85,7 @@ "import": { "./index.js": "{ startKeyUX, hotkeyKeyUX, pressKeyUX, focusGroupKeyUX, jumpKeyUX, hiddenKeyUX, likelyWithKeyboard, getHotKeyHint, hotkeyOverrides, hotkeyMacCompat }" }, - "limit": "2202 B" + "limit": "2220 B" } ], "clean-publish": { diff --git a/test/hotkey.test.ts b/test/hotkey.test.ts index 8e1c111..95e4401 100644 --- a/test/hotkey.test.ts +++ b/test/hotkey.test.ts @@ -143,18 +143,28 @@ test('does not ignore hotkeys with Alt on focus in text field', () => { test('supports non-English keyboard layouts', () => { let window = new JSDOM().window startKeyUX(window, [hotkeyKeyUX()]) - window.document.body.innerHTML = '' + window.document.body.innerHTML = + '' + + '' let clicked = 0 - window.document.querySelector('button')!.addEventListener('click', () => { + window.document.querySelector('#button1')!.addEventListener('click', () => { clicked += 1 }) + let digitClicked = 0 + window.document.querySelector('#button2')!.addEventListener('click', () => { + digitClicked += 1 + }) + press(window, { altKey: true, code: 'KeyB', key: 'и' }) equal(clicked, 1) press(window, { altKey: true, code: 'KeyB', key: 'Unidentified' }) equal(clicked, 2) + + press(window, { altKey: true, code: 'Digit0', key: 'º' }) + equal(digitClicked, 1) }) test('allows to override hotkeys', () => { From 2c2419a14b05dbff251cb4cd266000a0d65a54da Mon Sep 17 00:00:00 2001 From: Egor Kolesnikov Date: Thu, 12 Jun 2025 11:48:33 +0500 Subject: [PATCH 3/3] made size smaller --- hotkey.js | 7 ++----- package.json | 2 +- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/hotkey.js b/hotkey.js index 1da155e..b7bbc51 100644 --- a/hotkey.js +++ b/hotkey.js @@ -83,12 +83,9 @@ function findHotKey(event, window, transformers) { if ( !hotkey && (event.key.length > 1 || NON_ENGLISH_LAYOUT.test(event.key)) && - (/^Digit\d$/.test(event.code) || /^Key.$/.test(event.code)) + /^(Key.|Digit\d)$/.test(event.code) ) { - let enKey = event.code - .replace(/^Key/, '') - .replace(/^Digit/, '') - .toLowerCase() + let enKey = event.code.replace(/^Key|^Digit/, '').toLowerCase() hotkey = checkHotkey(window, prefix + enKey, transformers) } diff --git a/package.json b/package.json index c76a7c4..7c4e56e 100644 --- a/package.json +++ b/package.json @@ -85,7 +85,7 @@ "import": { "./index.js": "{ startKeyUX, hotkeyKeyUX, pressKeyUX, focusGroupKeyUX, jumpKeyUX, hiddenKeyUX, likelyWithKeyboard, getHotKeyHint, hotkeyOverrides, hotkeyMacCompat }" }, - "limit": "2220 B" + "limit": "2210 B" } ], "clean-publish": {