feat: add Ctrl+Alt key remapping for browser-blocked shortcuts #501

Merged
ZacharyZcR merged 1 commits from feat/ctrl-alt-key-remap into dev-1.10.1 2026-01-13 05:58:14 +00:00

View File

@@ -1349,6 +1349,24 @@ export const Terminal = forwardRef<TerminalHandle, SSHTerminalProps>(
return true;
}
// Ctrl+Alt+<key> → Ctrl+<key> remapping for browser-blocked shortcuts
// Browsers intercept Ctrl+W/T/N/Q, so we use Ctrl+Alt as an alternative
if (e.ctrlKey && e.altKey && !e.metaKey && !e.shiftKey) {
const key = e.key.toLowerCase();
const blockedKeys = ["w", "t", "n", "q"];
if (blockedKeys.includes(key)) {
e.preventDefault();
e.stopPropagation();
const ctrlCode = key.charCodeAt(0) - 96;
if (webSocketRef.current?.readyState === 1) {
webSocketRef.current.send(
JSON.stringify({ type: "input", data: String.fromCharCode(ctrlCode) }),
);
}
return false;
}
}
if (showAutocompleteRef.current) {
if (e.key === "Escape") {
e.preventDefault();