diff --git a/packages/ui/src/components/terminal/TerminalViewport.tsx b/packages/ui/src/components/terminal/TerminalViewport.tsx index f2db2587..5fa95f98 100644 --- a/packages/ui/src/components/terminal/TerminalViewport.tsx +++ b/packages/ui/src/components/terminal/TerminalViewport.tsx @@ -128,7 +128,10 @@ const TerminalViewport = React.forwardRef= 'A' && upper <= 'Z') { + event.preventDefault(); + (event.nativeEvent as KeyboardEvent | undefined)?.stopImmediatePropagation(); + inputHandlerRef.current(String.fromCharCode(upper.charCodeAt(0) - 64)); + clearEditableValue(event.currentTarget as HTMLElement); + return; + } + } + + if (event.altKey && !event.ctrlKey && !event.metaKey && event.key.length === 1) { + event.preventDefault(); + (event.nativeEvent as KeyboardEvent | undefined)?.stopImmediatePropagation(); + inputHandlerRef.current('\x1b' + event.key); + clearEditableValue(event.currentTarget as HTMLElement); + return; + } + const specialKeySequences: Record = { ArrowUp: '\u001b[A', ArrowDown: '\u001b[B', diff --git a/packages/ui/src/hooks/useKeyboardShortcuts.ts b/packages/ui/src/hooks/useKeyboardShortcuts.ts index 10ea2fc9..e1ee756d 100644 --- a/packages/ui/src/hooks/useKeyboardShortcuts.ts +++ b/packages/ui/src/hooks/useKeyboardShortcuts.ts @@ -64,7 +64,6 @@ export const useKeyboardShortcuts = () => { target.getAttribute('data-terminal-hidden-input') === 'true' ); }; - const handleTerminalShortcutCapture = (e: KeyboardEvent) => { if (!isTerminalEventTarget(e.target)) { return; @@ -94,6 +93,10 @@ export const useKeyboardShortcuts = () => { }; const handleKeyDown = (e: KeyboardEvent) => { + if (isTerminalEventTarget(e.target)) { + return; + } + if (eventMatchesShortcut(e, combo('open_command_palette'))) { e.preventDefault(); toggleCommandPalette();