diff --git a/packages/opencode/src/cli/cmd/tui/component/prompt/autocomplete.tsx b/packages/opencode/src/cli/cmd/tui/component/prompt/autocomplete.tsx index d30cf6252b66..4f29239e9af2 100644 --- a/packages/opencode/src/cli/cmd/tui/component/prompt/autocomplete.tsx +++ b/packages/opencode/src/cli/cmd/tui/component/prompt/autocomplete.tsx @@ -723,13 +723,19 @@ export function Autocomplete(props: { }, }, ], - bindings: tuiConfig.keybinds.gather("prompt.autocomplete", [ - "prompt.autocomplete.prev", - "prompt.autocomplete.next", - "prompt.autocomplete.hide", - "prompt.autocomplete.select", - "prompt.autocomplete.complete", - ]), + bindings: [ + ...tuiConfig.keybinds.gather("prompt.autocomplete", [ + "prompt.autocomplete.prev", + "prompt.autocomplete.next", + "prompt.autocomplete.hide", + "prompt.autocomplete.complete", + ]), + ...tuiConfig.keybinds.get("input.submit").map((binding) => ({ + ...binding, + cmd: "prompt.autocomplete.select", + desc: binding.desc ?? "Select autocomplete item", + })), + ], })) function show(mode: "@" | "/") { diff --git a/packages/opencode/src/cli/cmd/tui/routes/session/question.tsx b/packages/opencode/src/cli/cmd/tui/routes/session/question.tsx index a4d1e5138b70..0e2f98244342 100644 --- a/packages/opencode/src/cli/cmd/tui/routes/session/question.tsx +++ b/packages/opencode/src/cli/cmd/tui/routes/session/question.tsx @@ -39,6 +39,12 @@ export function QuestionPrompt(props: { request: QuestionRequest; directory?: st const other = createMemo(() => custom() && store.selected === options().length) const input = createMemo(() => store.custom[store.tab] ?? "") const multi = createMemo(() => question()?.multiple === true) + const submitKey = createMemo(() => { + const bindings = tuiConfig.keybinds.get("input.submit") + const key = bindings[0]?.key + if (!key) return "enter" + return typeof key === "string" ? key : "enter" + }) const customPicked = createMemo(() => { const value = input() if (!value) return false @@ -158,8 +164,8 @@ export function QuestionPrompt(props: { request: QuestionRequest; directory?: st }, }, ...tuiConfig.keybinds.get("prompt.clear"), - { - key: "return", + ...tuiConfig.keybinds.get("input.submit").map((binding) => ({ + ...binding, desc: "Submit answer edit", group: "Question", cmd: () => { @@ -202,7 +208,7 @@ export function QuestionPrompt(props: { request: QuestionRequest; directory?: st pick(text, true) setStore("editing", false) }, - }, + })), ], })) @@ -249,7 +255,12 @@ export function QuestionPrompt(props: { request: QuestionRequest; directory?: st }, ...(confirm() ? [ - { key: "return", desc: "Submit answer", group: "Question", cmd: () => submit() }, + ...tuiConfig.keybinds.get("input.submit").map((binding) => ({ + ...binding, + desc: "Submit answer", + group: "Question", + cmd: () => submit(), + })), { key: "escape", desc: "Reject question", group: "Question", cmd: () => reject() }, ...tuiConfig.keybinds.get("app.exit"), ] @@ -277,7 +288,12 @@ export function QuestionPrompt(props: { request: QuestionRequest; directory?: st }, { key: "down", desc: "Next answer", group: "Question", cmd: () => moveTo((store.selected + 1) % total) }, { key: "j", desc: "Next answer", group: "Question", cmd: () => moveTo((store.selected + 1) % total) }, - { key: "return", desc: "Select answer", group: "Question", cmd: () => selectOption() }, + ...tuiConfig.keybinds.get("input.submit").map((binding) => ({ + ...binding, + desc: "Select answer", + group: "Question", + cmd: () => selectOption(), + })), { key: "escape", desc: "Reject question", group: "Question", cmd: () => reject() }, ...tuiConfig.keybinds.get("app.exit"), ]), @@ -498,7 +514,7 @@ export function QuestionPrompt(props: { request: QuestionRequest; directory?: st - enter{" "} + {submitKey()}{" "} {confirm() ? "submit" : multi() ? "toggle" : single() ? "submit" : "confirm"} 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..5be59318d727 100644 --- a/packages/opencode/src/cli/cmd/tui/ui/dialog-prompt.tsx +++ b/packages/opencode/src/cli/cmd/tui/ui/dialog-prompt.tsx @@ -43,7 +43,11 @@ export function DialogPrompt(props: DialogPromptProps) { run: confirm, }, ], - bindings: tuiConfig.keybinds.gather("dialog.prompt", ["dialog.prompt.submit"]), + bindings: tuiConfig.keybinds.get("input.submit").map((binding) => ({ + ...binding, + cmd: "dialog.prompt.submit", + desc: binding.desc ?? "Submit dialog prompt", + })), })) onMount(() => {