From 3f8460c0d9b5b94f4cb0f9bc2a7d4efc6b647a90 Mon Sep 17 00:00:00 2001 From: Nitwel Date: Mon, 5 Oct 2020 16:13:09 +0200 Subject: [PATCH 1/3] Fix keyUp events not triggered --- app/src/composables/use-shortcut/use-shortcut.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/app/src/composables/use-shortcut/use-shortcut.ts b/app/src/composables/use-shortcut/use-shortcut.ts index ffd0b90922..2ca22fd3f2 100644 --- a/app/src/composables/use-shortcut/use-shortcut.ts +++ b/app/src/composables/use-shortcut/use-shortcut.ts @@ -15,8 +15,16 @@ document.body.addEventListener('keydown', (event: KeyboardEvent) => { document.body.addEventListener('keyup', (event: KeyboardEvent) => { if (event.repeat || !event.key) return; - const key = mapKeys(event.key); + + // This is a fix for mac not emitting a keyUp event on letters when meta is pressed: https://stackoverflow.com/questions/11818637 + if(key === 'meta') { + for(let i = 0; i < 26; i++) { + const letter = (i + 10).toString(36) + keysdown.delete(letter) + keysdown.delete(letter.toUpperCase()) + } + } keysdown.delete(key.toLowerCase()); keysdown.delete(key.toUpperCase()); }); From 28e29941c278c78e90cd8008f48a4df4b6ab131e Mon Sep 17 00:00:00 2001 From: Nitwel Date: Mon, 5 Oct 2020 16:25:53 +0200 Subject: [PATCH 2/3] clear map instead of removing letters --- app/src/composables/use-shortcut/use-shortcut.ts | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/app/src/composables/use-shortcut/use-shortcut.ts b/app/src/composables/use-shortcut/use-shortcut.ts index 2ca22fd3f2..cac9d91d77 100644 --- a/app/src/composables/use-shortcut/use-shortcut.ts +++ b/app/src/composables/use-shortcut/use-shortcut.ts @@ -18,13 +18,10 @@ document.body.addEventListener('keyup', (event: KeyboardEvent) => { const key = mapKeys(event.key); // This is a fix for mac not emitting a keyUp event on letters when meta is pressed: https://stackoverflow.com/questions/11818637 - if(key === 'meta') { - for(let i = 0; i < 26; i++) { - const letter = (i + 10).toString(36) - keysdown.delete(letter) - keysdown.delete(letter.toUpperCase()) - } + if (key === 'meta') { + keysdown.clear(); } + keysdown.delete(key.toLowerCase()); keysdown.delete(key.toUpperCase()); }); From 0f9359e89083eedcc4eb6a3bc1cbe698f6de4ead Mon Sep 17 00:00:00 2001 From: Nitwel Date: Mon, 5 Oct 2020 16:42:15 +0200 Subject: [PATCH 3/3] delete all keys pressed on keyUp --- app/src/composables/use-shortcut/use-shortcut.ts | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/app/src/composables/use-shortcut/use-shortcut.ts b/app/src/composables/use-shortcut/use-shortcut.ts index cac9d91d77..df599afee5 100644 --- a/app/src/composables/use-shortcut/use-shortcut.ts +++ b/app/src/composables/use-shortcut/use-shortcut.ts @@ -15,15 +15,7 @@ document.body.addEventListener('keydown', (event: KeyboardEvent) => { document.body.addEventListener('keyup', (event: KeyboardEvent) => { if (event.repeat || !event.key) return; - const key = mapKeys(event.key); - - // This is a fix for mac not emitting a keyUp event on letters when meta is pressed: https://stackoverflow.com/questions/11818637 - if (key === 'meta') { - keysdown.clear(); - } - - keysdown.delete(key.toLowerCase()); - keysdown.delete(key.toUpperCase()); + keysdown.clear(); }); export default function useShortcut(