From 3b20cf0654203e5eaf8b9b657b0932e1208a9ce0 Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Sun, 23 Nov 2025 14:36:01 +0100 Subject: [PATCH] Capture Cmd+D dictation on web --- .../app/src/components/agent-input-area.tsx | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/packages/app/src/components/agent-input-area.tsx b/packages/app/src/components/agent-input-area.tsx index 282446954..4fcafb759 100644 --- a/packages/app/src/components/agent-input-area.tsx +++ b/packages/app/src/components/agent-input-area.tsx @@ -463,14 +463,20 @@ export function AgentInputArea({ agentId }: AgentInputAreaProps) { return; } - const handleDictationShortcut = (event: KeyboardEvent) => { + const listener = (event: KeyboardEvent) => { const key = event.key.toLowerCase(); + const isCommandLike = event.metaKey || event.ctrlKey; - if (event.metaKey && !event.altKey && !event.ctrlKey && key === "d") { + if (isCommandLike && !event.altKey && key === "d") { event.preventDefault(); + event.stopPropagation(); + if (isRecording) { void handleSendRecording(); - } else if (!isRealtimeMode && shouldShowVoiceControls && ws.isConnected) { + return; + } + + if (!isRealtimeMode && shouldShowVoiceControls && ws.isConnected) { void handleVoicePress(); } return; @@ -478,13 +484,14 @@ export function AgentInputArea({ agentId }: AgentInputAreaProps) { if (key === "escape" && isRecording) { event.preventDefault(); + event.stopPropagation(); void handleCancelRecording(); } }; - window.addEventListener("keydown", handleDictationShortcut); + window.addEventListener("keydown", listener, true); return () => { - window.removeEventListener("keydown", handleDictationShortcut); + window.removeEventListener("keydown", listener, true); }; }, [ isRecording,