mirror of
https://github.com/noctalia-dev/noctalia-shell.git
synced 2026-05-11 17:08:27 +08:00
fix(keybinds): recognize ctrl+punctuation shortcuts in recorder
This commit is contained in:
@@ -93,6 +93,23 @@ QtObject {
|
|||||||
case Qt.Key_Down:
|
case Qt.Key_Down:
|
||||||
keyName = "Down";
|
keyName = "Down";
|
||||||
break;
|
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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -221,93 +221,8 @@ Item {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let keyStr = "";
|
const keybindStr = Keybinds.getKeybindString(event);
|
||||||
if (event.modifiers & Qt.ControlModifier)
|
if (keybindStr) {
|
||||||
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) {
|
|
||||||
// Enforce modifier requirement (Ctrl or Alt) for "normal" keys unless explicitly disabled
|
// Enforce modifier requirement (Ctrl or Alt) for "normal" keys unless explicitly disabled
|
||||||
// Allow Arrows, Nav, Function, and System keys without modifiers
|
// 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
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
root._applyKeybind(keyStr + keyName);
|
root._applyKeybind(keybindStr);
|
||||||
}
|
}
|
||||||
event.accepted = true;
|
event.accepted = true;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user