Change:
Originally posted by in
this is working AFAICT
On Windows, have to use Ctrl+Up to both go to the list and to go back down to the inputbox. after I focus the list, when I press Up again, it goes back in the input history and changes the inputbox, instead of moving up the list. !
Only tested on mac. Strange that they're different. does that reproduce in the panel chat?
No. It only occurs in terminal chat

Discussion:
export const enum TerminalChatCommandId { Start = 'workbench.action.terminal.chat.start', Close = 'workbench.action.terminal.chat.close', <del> FocusResponse = 'workbench.action.terminal.chat.focusResponse', FocusInput = 'workbench.action.terminal.chat.focusInput', </del> Discard = 'workbench.action.terminal.chat.discard', MakeRequest = 'workbench.action.terminal.chat.makeRequest', Cancel = 'workbench.action.terminal.chat.cancel',

const insertCommandKeybinding = keybindingService.lookupKeybinding(TerminalChatCommandId.InsertCommand)?.getAriaLabel(); const makeRequestKeybinding = keybindingService.lookupKeybinding(TerminalChatCommandId.MakeRequest)?.getAriaLabel(); const startChatKeybinding = keybindingService.lookupKeybinding(TerminalChatCommandId.Start)?.getAriaLabel(); <del> const focusResponseKeybinding = keybindingService.lookupKeybinding(TerminalChatCommandId.FocusResponse)?.getAriaLabel(); const focusInputKeybinding = keybindingService.lookupKeybinding(TerminalChatCommandId.FocusInput)?.getAriaLabel(); </del> <ins> const focusResponseKeybinding = keybindingService.lookupKeybinding('chat.action.focus')?.getAriaLabel(); const focusInputKeybinding = keybindingService.lookupKeybinding('workbench.action.chat.focusInput')?.getAriaLabel(); </ins> content.push(localize('inlineChat.overview', "Inline chat occurs within a terminal. It is useful for suggesting terminal commands. Keep in mind that AI generated code may be incorrect.")); content.push(localize('inlineChat.access', "It can be activated using the command: Terminal: Start Chat ({0}), which will focus the input box.", startChatKeybinding)); content.push(makeRequestKeybinding ? localize('inlineChat.input', "The input box is where the user can type a request and can make the request ({0}). The widget will be closed and all content will be discarded when the Escape key is pressed and the terminal will regain focus.", makeRequestKeybinding) : localize('inlineChat.inputNoKb', "The input box is where the user can type a request and can make the request by tabbing to the Make Request button, which is not currently triggerable via keybindings. The widget will be closed and all content will be discarded when the Escape key is pressed and the terminal will regain focus."));

import { ContextKeyExpr } from '../../../../../platform/contextkey/common/contextkey.js'; import { KeybindingWeight } from '../../../../../platform/keybinding/common/keybindingsRegistry.js'; import { AbstractInlineChatAction } from '../../../inlineChat/browser/inlineChatActions.js'; <del> import { CTX_INLINE_CHAT_EMPTY, CTX_INLINE_CHAT_FOCUSED } from '../../../inlineChat/common/inlineChat.js'; </del> <ins> import { CTX_INLINE_CHAT_EMPTY } from '../../../inlineChat/common/inlineChat.js'; </ins> import { isDetachedTerminalInstance } from '../../../terminal/browser/terminal.js'; import { registerActiveXtermAction } from '../../../terminal/browser/terminalActions.js'; import { TerminalContextKeys } from '../../../terminal/common/terminalContextKey.js';

}); registerActiveXtermAction({ <del> id: TerminalChatCommandId.FocusResponse, title: localize2('focusTerminalResponse', 'Focus Terminal Response'), keybinding: { primary: KeyMod.CtrlCmd | KeyCode.DownArrow, when: TerminalChatContextKeys.focused, weight: KeybindingWeight.WorkbenchContrib, }, f1: true, category: AbstractInlineChatAction.category, precondition: ContextKeyExpr.and( TerminalChatContextKeys.focused ), run: (_xterm, _accessor, activeInstance) => { if (isDetachedTerminalInstance(activeInstance)) { return; } const contr = TerminalChatController.activeChatController || TerminalChatController.get(activeInstance); contr?.chatWidget?.focusLastMessage(); } }); registerActiveXtermAction({ id: TerminalChatCommandId.FocusInput, title: localize2('focusTerminalInput', 'Focus Terminal Input'), keybinding: { primary: KeyMod.CtrlCmd | KeyCode.UpArrow, secondary: [KeyMod.CtrlCmd | KeyCode.KeyI], when: ContextKeyExpr.and(TerminalChatContextKeys.focused, CTX_INLINE_CHAT_FOCUSED.toNegated()), weight: KeybindingWeight.WorkbenchContrib, }, f1: true, category: AbstractInlineChatAction.category, precondition: ContextKeyExpr.and( TerminalChatContextKeys.focused ), run: (_xterm, _accessor, activeInstance) => { if (isDetachedTerminalInstance(activeInstance)) { return; } const contr = TerminalChatController.activeChatController || TerminalChatController.get(activeInstance); contr?.terminalChatWidget?.focus(); } }); registerActiveXtermAction({ </del> id: TerminalChatCommandId.Discard, title: localize2('discard', 'Discard'), metadata: {