diff --git a/packages/opencode/src/cli/cmd/tui/keymap.tsx b/packages/opencode/src/cli/cmd/tui/keymap.tsx index 461b204a2058..0b4aa68ffebe 100644 --- a/packages/opencode/src/cli/cmd/tui/keymap.tsx +++ b/packages/opencode/src/cli/cmd/tui/keymap.tsx @@ -185,6 +185,7 @@ function formatOptions(config: FormatConfig) { pageup: "pgup", pagedown: "pgdn", delete: "del", + enter: "return", }, modifierAliases: { meta: "alt", @@ -246,6 +247,15 @@ export function useCommandShortcut(command: string): Accessor { ) } +export function useCommandShortcuts(command: string): Accessor { + const config = useTuiConfig() + return useKeymapSelector((keymap) => { + const bindings = keymap.getCommandBindings({ visibility: "registered", commands: [command] }).get(command) + if (!bindings) return [] + return bindings.map((b) => formatKeySequence(b.sequence, config)).filter(Boolean) + }) +} + export function useLeaderActive(): Accessor { return useKeymapSelector((keymap: OpenTuiKeymap) => keymap.getPendingSequence()[0]?.tokenName === LEADER_TOKEN) } diff --git a/packages/opencode/src/cli/cmd/tui/ui/dialog-prompt.tsx b/packages/opencode/src/cli/cmd/tui/ui/dialog-prompt.tsx index dfd8091852fe..2a00119606f3 100644 --- a/packages/opencode/src/cli/cmd/tui/ui/dialog-prompt.tsx +++ b/packages/opencode/src/cli/cmd/tui/ui/dialog-prompt.tsx @@ -4,7 +4,7 @@ import { useDialog, type DialogContext } from "./dialog" import { Show, createEffect, createSignal, onMount, type JSX } from "solid-js" import { Spinner } from "../component/spinner" import { useTuiConfig } from "../context/tui-config" -import { useBindings, useCommandShortcut } from "../keymap" +import { useBindings, useCommandShortcuts } from "../keymap" export type DialogPromptProps = { title: string @@ -21,7 +21,7 @@ export function DialogPrompt(props: DialogPromptProps) { const dialog = useDialog() const { theme } = useTheme() const tuiConfig = useTuiConfig() - const submitShortcut = useCommandShortcut("dialog.prompt.submit") + const submitShortcuts = useCommandShortcuts("dialog.prompt.submit") const [textareaTarget, setTextareaTarget] = createSignal() let textarea: TextareaRenderable @@ -103,9 +103,9 @@ export function DialogPrompt(props: DialogPromptProps) { processing...}> - + 0}> - {submitShortcut()} submit + {submitShortcuts().join("/")} submit