diff --git a/docs/cli/keyboard-shortcuts.md b/docs/cli/keyboard-shortcuts.md index 54defec914..831f74da80 100644 --- a/docs/cli/keyboard-shortcuts.md +++ b/docs/cli/keyboard-shortcuts.md @@ -62,7 +62,7 @@ available combinations. | Show the previous entry in history. | `Ctrl + P (no Shift)` | | Show the next entry in history. | `Ctrl + N (no Shift)` | | Start reverse search through history. | `Ctrl + R` | -| Insert the selected reverse-search match. | `Enter (no Ctrl)` | +| Submit the selected reverse-search match. | `Enter (no Ctrl)` | | Accept a suggestion while reverse searching. | `Tab` | #### Navigation @@ -100,18 +100,18 @@ available combinations. #### App Controls -| Action | Keys | -| ----------------------------------------------------------------- | ----------------------------------- | -| Toggle detailed error information. | `F12` | -| Toggle the full TODO list. | `Ctrl + T` | -| Toggle IDE context details. | `Ctrl + G` | -| Toggle Markdown rendering. | `Cmd + M` | -| Toggle copy mode when the terminal is using the alternate buffer. | `Ctrl + S` | -| Toggle YOLO (auto-approval) mode for tool calls. | `Ctrl + Y` | -| Toggle Auto Edit (auto-accept edits) mode. | `Shift + Tab` | -| Expand a height-constrained response to show additional lines. | `Ctrl + S` | -| Toggle focus between the shell and Gemini input. | `Tab (no Shift)` | -| Toggle focus out of the interactive shell and into Gemini input. | `Tab (no Shift)`
`Shift + Tab` | +| Action | Keys | +| ----------------------------------------------------------------- | ---------------- | +| Toggle detailed error information. | `F12` | +| Toggle the full TODO list. | `Ctrl + T` | +| Show IDE context details. | `Ctrl + G` | +| Toggle Markdown rendering. | `Cmd + M` | +| Toggle copy mode when the terminal is using the alternate buffer. | `Ctrl + S` | +| Toggle YOLO (auto-approval) mode for tool calls. | `Ctrl + Y` | +| Toggle Auto Edit (auto-accept edits) mode. | `Shift + Tab` | +| Expand a height-constrained response to show additional lines. | `Ctrl + S` | +| Focus the shell input from the gemini input. | `Tab (no Shift)` | +| Focus the Gemini input from the shell input. | `Tab` | #### Session Control diff --git a/packages/cli/src/config/keyBindings.ts b/packages/cli/src/config/keyBindings.ts index ba7b2e10a3..4e0daf5ae2 100644 --- a/packages/cli/src/config/keyBindings.ts +++ b/packages/cli/src/config/keyBindings.ts @@ -59,7 +59,7 @@ export enum Command { // App level bindings SHOW_ERROR_DETAILS = 'showErrorDetails', SHOW_FULL_TODOS = 'showFullTodos', - TOGGLE_IDE_CONTEXT_DETAIL = 'toggleIDEContextDetail', + SHOW_IDE_CONTEXT_DETAIL = 'showIDEContextDetail', TOGGLE_MARKDOWN = 'toggleMarkdown', TOGGLE_COPY_MODE = 'toggleCopyMode', TOGGLE_YOLO = 'toggleYolo', @@ -81,8 +81,8 @@ export enum Command { REVERSE_SEARCH = 'reverseSearch', SUBMIT_REVERSE_SEARCH = 'submitReverseSearch', ACCEPT_SUGGESTION_REVERSE_SEARCH = 'acceptSuggestionReverseSearch', - TOGGLE_SHELL_INPUT_FOCUS_IN = 'toggleShellInputFocus', - TOGGLE_SHELL_INPUT_FOCUS_OUT = 'toggleShellInputFocusOut', + FOCUS_SHELL_INPUT = 'focusShellInput', + UNFOCUS_SHELL_INPUT = 'unfocusShellInput', // Suggestion expansion EXPAND_SUGGESTION = 'expandSuggestion', @@ -243,7 +243,7 @@ export const defaultKeyBindings: KeyBindingConfig = { // App level bindings [Command.SHOW_ERROR_DETAILS]: [{ key: 'f12' }], [Command.SHOW_FULL_TODOS]: [{ key: 't', ctrl: true }], - [Command.TOGGLE_IDE_CONTEXT_DETAIL]: [{ key: 'g', ctrl: true }], + [Command.SHOW_IDE_CONTEXT_DETAIL]: [{ key: 'g', ctrl: true }], [Command.TOGGLE_MARKDOWN]: [{ key: 'm', command: true }], [Command.TOGGLE_COPY_MODE]: [{ key: 's', ctrl: true }], [Command.TOGGLE_YOLO]: [{ key: 'y', ctrl: true }], @@ -259,11 +259,8 @@ export const defaultKeyBindings: KeyBindingConfig = { // Note: original logic ONLY checked ctrl=false, ignored meta/shift/paste [Command.SUBMIT_REVERSE_SEARCH]: [{ key: 'return', ctrl: false }], [Command.ACCEPT_SUGGESTION_REVERSE_SEARCH]: [{ key: 'tab' }], - [Command.TOGGLE_SHELL_INPUT_FOCUS_IN]: [{ key: 'tab', shift: false }], - [Command.TOGGLE_SHELL_INPUT_FOCUS_OUT]: [ - { key: 'tab', shift: false }, - { key: 'tab', shift: true }, - ], + [Command.FOCUS_SHELL_INPUT]: [{ key: 'tab', shift: false }], + [Command.UNFOCUS_SHELL_INPUT]: [{ key: 'tab' }], // Suggestion expansion [Command.EXPAND_SUGGESTION]: [{ key: 'right' }], [Command.COLLAPSE_SUGGESTION]: [{ key: 'left' }], @@ -364,14 +361,14 @@ export const commandCategories: readonly CommandCategory[] = [ commands: [ Command.SHOW_ERROR_DETAILS, Command.SHOW_FULL_TODOS, - Command.TOGGLE_IDE_CONTEXT_DETAIL, + Command.SHOW_IDE_CONTEXT_DETAIL, Command.TOGGLE_MARKDOWN, Command.TOGGLE_COPY_MODE, Command.TOGGLE_YOLO, Command.TOGGLE_AUTO_EDIT, Command.SHOW_MORE_LINES, - Command.TOGGLE_SHELL_INPUT_FOCUS_IN, - Command.TOGGLE_SHELL_INPUT_FOCUS_OUT, + Command.FOCUS_SHELL_INPUT, + Command.UNFOCUS_SHELL_INPUT, ], }, { @@ -424,7 +421,7 @@ export const commandDescriptions: Readonly> = { [Command.PASTE_CLIPBOARD]: 'Paste from the clipboard.', [Command.SHOW_ERROR_DETAILS]: 'Toggle detailed error information.', [Command.SHOW_FULL_TODOS]: 'Toggle the full TODO list.', - [Command.TOGGLE_IDE_CONTEXT_DETAIL]: 'Toggle IDE context details.', + [Command.SHOW_IDE_CONTEXT_DETAIL]: 'Show IDE context details.', [Command.TOGGLE_MARKDOWN]: 'Toggle Markdown rendering.', [Command.TOGGLE_COPY_MODE]: 'Toggle copy mode when the terminal is using the alternate buffer.', @@ -435,13 +432,11 @@ export const commandDescriptions: Readonly> = { [Command.SHOW_MORE_LINES]: 'Expand a height-constrained response to show additional lines.', [Command.REVERSE_SEARCH]: 'Start reverse search through history.', - [Command.SUBMIT_REVERSE_SEARCH]: 'Insert the selected reverse-search match.', + [Command.SUBMIT_REVERSE_SEARCH]: 'Submit the selected reverse-search match.', [Command.ACCEPT_SUGGESTION_REVERSE_SEARCH]: 'Accept a suggestion while reverse searching.', - [Command.TOGGLE_SHELL_INPUT_FOCUS_IN]: - 'Toggle focus between the shell and Gemini input.', - [Command.TOGGLE_SHELL_INPUT_FOCUS_OUT]: - 'Toggle focus out of the interactive shell and into Gemini input.', + [Command.FOCUS_SHELL_INPUT]: 'Focus the shell input from the gemini input.', + [Command.UNFOCUS_SHELL_INPUT]: 'Focus the Gemini input from the shell input.', [Command.EXPAND_SUGGESTION]: 'Expand an inline suggestion.', [Command.COLLAPSE_SUGGESTION]: 'Collapse an inline suggestion.', }; diff --git a/packages/cli/src/ui/AppContainer.tsx b/packages/cli/src/ui/AppContainer.tsx index ad5ddc5fed..4f3c9617a8 100644 --- a/packages/cli/src/ui/AppContainer.tsx +++ b/packages/cli/src/ui/AppContainer.tsx @@ -1277,7 +1277,7 @@ Logging in with Google... Restarting Gemini CLI to continue. return newValue; }); } else if ( - keyMatchers[Command.TOGGLE_IDE_CONTEXT_DETAIL](key) && + keyMatchers[Command.SHOW_IDE_CONTEXT_DETAIL](key) && config.getIdeMode() && ideContextState ) { @@ -1289,7 +1289,7 @@ Logging in with Google... Restarting Gemini CLI to continue. ) { setConstrainHeight(false); } else if ( - keyMatchers[Command.TOGGLE_SHELL_INPUT_FOCUS_OUT](key) && + keyMatchers[Command.UNFOCUS_SHELL_INPUT](key) && activePtyId && embeddedShellFocused ) { diff --git a/packages/cli/src/ui/components/InputPrompt.tsx b/packages/cli/src/ui/components/InputPrompt.tsx index 239e192fec..2ed22900b2 100644 --- a/packages/cli/src/ui/components/InputPrompt.tsx +++ b/packages/cli/src/ui/components/InputPrompt.tsx @@ -829,7 +829,7 @@ export const InputPrompt: React.FC = ({ return; } - if (keyMatchers[Command.TOGGLE_SHELL_INPUT_FOCUS_IN](key)) { + if (keyMatchers[Command.FOCUS_SHELL_INPUT](key)) { // If we got here, Autocomplete didn't handle the key (e.g. no suggestions). if (activePtyId) { setEmbeddedShellFocused(true); diff --git a/packages/cli/src/ui/keyMatchers.test.ts b/packages/cli/src/ui/keyMatchers.test.ts index 2cf98b7b9c..4b112de358 100644 --- a/packages/cli/src/ui/keyMatchers.test.ts +++ b/packages/cli/src/ui/keyMatchers.test.ts @@ -289,7 +289,7 @@ describe('keyMatchers', () => { negative: [createKey('t'), createKey('e', { ctrl: true })], }, { - command: Command.TOGGLE_IDE_CONTEXT_DETAIL, + command: Command.SHOW_IDE_CONTEXT_DETAIL, positive: [createKey('g', { ctrl: true })], negative: [createKey('g'), createKey('t', { ctrl: true })], }, @@ -336,7 +336,7 @@ describe('keyMatchers', () => { negative: [createKey('return'), createKey('space')], }, { - command: Command.TOGGLE_SHELL_INPUT_FOCUS_IN, + command: Command.FOCUS_SHELL_INPUT, positive: [createKey('tab')], negative: [createKey('f', { ctrl: true }), createKey('f')], },