mirror of
https://github.com/noctalia-dev/noctalia-shell.git
synced 2026-05-11 17:08:27 +08:00
SessionMenu: adjust keybind detection & layout
This commit is contained in:
@@ -146,13 +146,18 @@ Item {
|
||||
|
||||
// Get color value from color name (returns null for invalid names)
|
||||
function _getColorValue(colorName, forHover) {
|
||||
const baseColor = (function() {
|
||||
const baseColor = (function () {
|
||||
switch (colorName) {
|
||||
case "primary": return Color.mPrimary;
|
||||
case "secondary": return Color.mSecondary;
|
||||
case "tertiary": return Color.mTertiary;
|
||||
case "error": return Color.mError;
|
||||
default: return null;
|
||||
case "primary":
|
||||
return Color.mPrimary;
|
||||
case "secondary":
|
||||
return Color.mSecondary;
|
||||
case "tertiary":
|
||||
return Color.mTertiary;
|
||||
case "error":
|
||||
return Color.mError;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
})();
|
||||
return baseColor !== null ? (forHover ? Qt.darker(baseColor, 1.2) : baseColor) : null;
|
||||
@@ -165,12 +170,14 @@ Item {
|
||||
return isHover ? Color.mOnHover : Color.mOnSurface;
|
||||
}
|
||||
const color = _getColorValue(dynamicColorName, isHover);
|
||||
if (color !== null) return color;
|
||||
if (color !== null)
|
||||
return color;
|
||||
}
|
||||
|
||||
if (staticColorName && staticColorName !== "" && isColorizing) {
|
||||
const color = _getColorValue(staticColorName, isHover);
|
||||
if (color !== null) return color;
|
||||
if (color !== null)
|
||||
return color;
|
||||
}
|
||||
|
||||
return isHover ? Color.mOnHover : Color.mOnSurface;
|
||||
|
||||
@@ -454,15 +454,88 @@ SmartPanel {
|
||||
keyStr += "Alt+";
|
||||
if (event.modifiers & Qt.ShiftModifier)
|
||||
keyStr += "Shift+";
|
||||
if (event.modifiers & Qt.MetaModifier)
|
||||
keyStr += "Meta+";
|
||||
|
||||
let keyName = "";
|
||||
if (event.text && event.text.length > 0 && event.text.charCodeAt(0) > 31) {
|
||||
keyName = event.text.toUpperCase();
|
||||
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) {
|
||||
keyName = rawText.toUpperCase();
|
||||
|
||||
// Handle shifted digits for common layouts (e.g., German, US)
|
||||
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 {
|
||||
// Only checking text based keys for now as per recorder
|
||||
return;
|
||||
switch (event.key) {
|
||||
case Qt.Key_Escape:
|
||||
keyName = "Esc";
|
||||
break;
|
||||
case Qt.Key_Space:
|
||||
keyName = "Space";
|
||||
break;
|
||||
case Qt.Key_Return:
|
||||
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)
|
||||
|
||||
@@ -193,14 +193,90 @@ Popup {
|
||||
keyStr += "Alt+";
|
||||
if (event.modifiers & Qt.ShiftModifier)
|
||||
keyStr += "Shift+";
|
||||
if (event.modifiers & Qt.MetaModifier)
|
||||
keyStr += "Meta+";
|
||||
|
||||
let keyName = "";
|
||||
if (event.text && event.text.length > 0 && event.text.charCodeAt(0) > 31) {
|
||||
keyName = event.text.toUpperCase();
|
||||
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) {
|
||||
keyName = rawText.toUpperCase();
|
||||
|
||||
// Handle shifted digits for common layouts (e.g., German, US)
|
||||
// If shift is pressed and we get a symbol, try to map it back to the base key
|
||||
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 {
|
||||
keyName = event.text.toUpperCase();
|
||||
// Fallback for non-printable keys like Esc, Enter, etc.
|
||||
switch (event.key) {
|
||||
case Qt.Key_Escape:
|
||||
keyName = "Esc";
|
||||
break;
|
||||
case Qt.Key_Space:
|
||||
keyName = "Space";
|
||||
break;
|
||||
case Qt.Key_Return:
|
||||
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) {
|
||||
|
||||
Reference in New Issue
Block a user