fix(keybinds): recognize ctrl+punctuation shortcuts in recorder

This commit is contained in:
Lysec
2026-04-03 11:14:27 +02:00
parent 0d59c6c7b3
commit 359f4afa73
2 changed files with 20 additions and 88 deletions
+17
View File
@@ -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;
}
}
+3 -88
View File
@@ -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;
}