From faa9b2f7633e4af801db3da245860478888817f7 Mon Sep 17 00:00:00 2001 From: HarryHeres Date: Tue, 10 Sep 2024 13:26:55 +0200 Subject: [PATCH] Fixing macOS keybind issues --- src/browser/components/preferences/zen-settings.js | 14 +++++++++++++- src/dom/events/KeyHandlerEvent-cpp.patch | 13 +++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 src/dom/events/KeyHandlerEvent-cpp.patch diff --git a/src/browser/components/preferences/zen-settings.js b/src/browser/components/preferences/zen-settings.js index 807a5c957..b1d64d9d9 100644 --- a/src/browser/components/preferences/zen-settings.js +++ b/src/browser/components/preferences/zen-settings.js @@ -704,7 +704,19 @@ var gZenCKSSettings = { input.value = modifiers.toUserString() + shortcut; - if (!shortcut || shortcut === '') { + if (!['Control', 'Alt', 'Meta', 'Shift'].includes(event.key)) { + shortcut.key = event.key; + } + + event.preventDefault(); + gZenKeyboardShortcuts.setShortcut(this._currentAction, shortcut); + + input.value = gZenKeyboardShortcuts.shortCutToString(shortcut); + input.classList.remove('zenCKSOption-input-not-set'); + + if (gZenKeyboardShortcuts.isValidShortcut(shortcut)) { + input.classList.remove('zenCKSOption-input-invalid'); + } else { input.classList.add('zenCKSOption-input-invalid'); return; } diff --git a/src/dom/events/KeyHandlerEvent-cpp.patch b/src/dom/events/KeyHandlerEvent-cpp.patch new file mode 100644 index 000000000..30c365116 --- /dev/null +++ b/src/dom/events/KeyHandlerEvent-cpp.patch @@ -0,0 +1,13 @@ +diff --git a/dom/events/KeyEventHandler.cpp b/dom/events/KeyEventHandler.cpp +index 3f3ca808e8..0828b37f51 100644 +--- a/dom/events/KeyEventHandler.cpp ++++ b/dom/events/KeyEventHandler.cpp +@@ -641,7 +641,7 @@ void KeyEventHandler::BuildModifiers(nsAString& aModifiers) { + } else if (strcmp(token, "control") == 0) { + mKeyMask |= cControl | cControlMask; + } else if (strcmp(token, "accel") == 0) { +- mKeyMask |= AccelKeyMask(); ++ mKeyMask |= cControl | cControlMask; + } else if (strcmp(token, "access") == 0) { + mKeyMask |= KeyToMask(LookAndFeel::GetMenuAccessKey()); + } else if (strcmp(token, "any") == 0) {