diff --git a/Commons/Keybinds.qml b/Commons/Keybinds.qml index 1bebe3ec9..e807b01aa 100644 --- a/Commons/Keybinds.qml +++ b/Commons/Keybinds.qml @@ -93,6 +93,23 @@ QtObject { case Qt.Key_Down: keyName = "Down"; break; + case Qt.Key_BracketLeft: + keyName = "["; + break; + case Qt.Key_BracketRight: + keyName = "]"; + break; + case Qt.Key_Backslash: + keyName = "\\"; + break; + case Qt.Key_Slash: + keyName = "/"; + break; + case Qt.Key_QuoteLeft: + case Qt.Key_AsciiTilde: + case Qt.Key_Dead_Grave: + keyName = "`"; + break; } } diff --git a/Widgets/NKeybindRecorder.qml b/Widgets/NKeybindRecorder.qml index c19343d06..016e591d1 100644 --- a/Widgets/NKeybindRecorder.qml +++ b/Widgets/NKeybindRecorder.qml @@ -221,93 +221,8 @@ Item { return; } - let keyStr = ""; - if (event.modifiers & Qt.ControlModifier) - keyStr += "Ctrl+"; - if (event.modifiers & Qt.AltModifier) - keyStr += "Alt+"; - if (event.modifiers & Qt.ShiftModifier) - keyStr += "Shift+"; - - let keyName = ""; - let rawText = event.text; - - if (event.key >= Qt.Key_A && event.key <= Qt.Key_Z || event.key >= Qt.Key_0 && event.key <= Qt.Key_9) { - keyName = String.fromCharCode(event.key); - } else if (event.key >= Qt.Key_F1 && event.key <= Qt.Key_F12) { - keyName = "F" + (event.key - Qt.Key_F1 + 1); - } else if (rawText && rawText.length > 0 && rawText.charCodeAt(0) > 31 && rawText.charCodeAt(0) !== 127) { - keyName = rawText.toUpperCase(); - - // Handle shifted digits - if (event.modifiers & Qt.ShiftModifier) { - const shiftMap = { - "!": "1", - "\"": "2", - "ยง": "3", - "$": "4", - "%": "5", - "&": "6", - "/": "7", - "(": "8", - ")": "9", - "=": "0", - "@": "2", - "#": "3", - "^": "6", - "*": "8" - }; - if (shiftMap[keyName]) - keyName = shiftMap[keyName]; - } - } else { - switch (event.key) { - case Qt.Key_Return: - keyName = "Return"; - break; - case Qt.Key_Enter: - keyName = "Enter"; - break; - case Qt.Key_Tab: - keyName = "Tab"; - break; - case Qt.Key_Backspace: - keyName = "Backspace"; - break; - case Qt.Key_Delete: - keyName = "Del"; - break; - case Qt.Key_Insert: - keyName = "Ins"; - break; - case Qt.Key_Home: - keyName = "Home"; - break; - case Qt.Key_End: - keyName = "End"; - break; - case Qt.Key_PageUp: - keyName = "PgUp"; - break; - case Qt.Key_PageDown: - keyName = "PgDn"; - break; - case Qt.Key_Left: - keyName = "Left"; - break; - case Qt.Key_Right: - keyName = "Right"; - break; - case Qt.Key_Up: - keyName = "Up"; - break; - case Qt.Key_Down: - keyName = "Down"; - break; - } - } - - if (keyName) { + const keybindStr = Keybinds.getKeybindString(event); + if (keybindStr) { // Enforce modifier requirement (Ctrl or Alt) for "normal" keys unless explicitly disabled // Allow Arrows, Nav, Function, and System keys without modifiers const isSpecialKey = (event.key >= Qt.Key_F1 && event.key <= Qt.Key_F35) || (event.key >= Qt.Key_Left && event.key <= Qt.Key_Down) || (event.key === Qt.Key_Home || event.key === Qt.Key_End || event.key === Qt.Key_PageUp || event.key === Qt.Key_PageDown) || (event.key === Qt.Key_Insert || event.key === Qt.Key_Delete || event.key @@ -325,7 +240,7 @@ Item { return; } - root._applyKeybind(keyStr + keyName); + root._applyKeybind(keybindStr); } event.accepted = true; }