F6 should move focus into tab row #17466

Open
opened 2026-01-31 05:43:20 +00:00 by claunia · 6 comments
Owner

Originally created by @carlos-zamora on GitHub (May 12, 2022).

Originally assigned to: @carlos-zamora on GitHub.

Description of the new feature/enhancement

F6 is commonly used to cycle through layers of the UI tree. Windows Terminal doesn't do that. We should make Windows Terminal respect that.

Proposed technical implementation details (optional)

  1. introduce a new action called moveRegion() bound to F6 by default
  2. when pressed...
    • [context: terminal] move the focus to the tab row
    • [context: settings UI] move the focus to the navigation view pane (on the left), then to the tab row

This will definitely bring up issues with focus again, so keep a close eye on that when working on this.

Originally created by @carlos-zamora on GitHub (May 12, 2022). Originally assigned to: @carlos-zamora on GitHub. # Description of the new feature/enhancement F6 is commonly used to cycle through layers of the UI tree. Windows Terminal doesn't do that. We should make Windows Terminal respect that. # Proposed technical implementation details (optional) 1. introduce a new action called `moveRegion()` bound to <kbd>F6</kbd> by default 2. when pressed... - [context: terminal] move the focus to the tab row - [context: settings UI] move the focus to the navigation view pane (on the left), then to the tab row This will definitely bring up issues with focus again, so keep a close eye on that when working on this.
claunia added the Issue-FeatureHelp WantedProduct-TerminalArea-Accessibility labels 2026-01-31 05:43:20 +00:00
Author
Owner
@carlos-zamora commented on GitHub (May 12, 2022): Here's a random example of what the behavior looks like: https://docs.mattermost.com/channels/keyboard-accessibility.html#:~:text=Use%20F6%20%28in%20the%20Desktop%20App%29%20or%20CTRL%2BF6,message%20list%20region%20Right-hand%20side%20message%20input%20region
Author
Owner

@DHowett commented on GitHub (May 12, 2022):

How do we comport that with this?

image
@DHowett commented on GitHub (May 12, 2022): How do we comport that with this? <img width="730" alt="image" src="https://user-images.githubusercontent.com/189190/168132987-e5a6c9c8-fe22-40fd-b65d-283b39d7958b.png">
Author
Owner

@carlos-zamora commented on GitHub (May 12, 2022):

How do we comport that with this?

image

It's configurable so it's ok? I feel like this would be kinda similar to the age-old "ctrl+c" vs "ctrl+shift+c" discussion for "copy", the keybinding can get in the way, but it's configurable so it's ok?

@carlos-zamora commented on GitHub (May 12, 2022): > How do we comport that with this? > > <img alt="image" width="730" src="https://user-images.githubusercontent.com/189190/168132987-e5a6c9c8-fe22-40fd-b65d-283b39d7958b.png"> It's configurable so it's ok? I feel like this would be kinda similar to the age-old "ctrl+c" vs "ctrl+shift+c" discussion for "copy", the keybinding can get in the way, but it's configurable so it's ok?
Author
Owner

@237dmitry commented on GitHub (May 13, 2022):

Not only mc uses "F6". Powershell (PSReadline) for example:

PS >  Get-PSReadLineKeyHandler | ? Key -eq 'F6' | fl Key, Function

Key      : F6
Function : MenuComplete
@237dmitry commented on GitHub (May 13, 2022): Not only `mc` uses "F6". Powershell (PSReadline) for example: ```powershell PS > Get-PSReadLineKeyHandler | ? Key -eq 'F6' | fl Key, Function Key : F6 Function : MenuComplete ```
Author
Owner

@Nevember commented on GitHub (May 14, 2022):

I like the idea of changing the focus to the tab row, and F6 is sensible for that.

To avoid instances where F6 is already used within the terminal, it would be smart to use the resolution set by the Ctrl+C / Ctrl+Shift+C example, and have this action use Shift+F6 by default.

Of course, another option would be to make the action available and leave the keybind unassigned.

@Nevember commented on GitHub (May 14, 2022): I like the idea of changing the focus to the tab row, and F6 **is** sensible for that. To avoid instances where F6 is already used within the terminal, it would be smart to use the resolution set by the Ctrl+C / Ctrl+_Shift_+C example, and have this action use _Shift_+F6 by default. Of course, another option would be to make the action available and leave the keybind unassigned.
Author
Owner

@zadjii-msft commented on GitHub (Jun 6, 2022):

Notes from discussion:

  • We could bind something like
    { "command": "cycleFocus", "when": "screenReaderAttached", "keys": "f6" }
    
    and that would be a clever way of psuedo-implementing modal keybindings, without actually doing it. We could then bind f6 by default safely when a screen reader is attached, and not when one isn't.
  • This would have to manually focus the tab as Keyboard, so when we yeet focus when something like the tab context menu is dismissed, we only yeet when the focus was from Mouse or Pointer.
  • This now raises a super weird question:
    • What happens when the command palette is open, and you perform this action from the command palette?
    • What about the find dialog?
    • The window renamer?
    • The tab renamer?
    • etc

This gets really complicated really fast, and needs a real spec.

@zadjii-msft commented on GitHub (Jun 6, 2022): Notes from discussion: * We could bind something like ```jsonc { "command": "cycleFocus", "when": "screenReaderAttached", "keys": "f6" } ``` and that would be a clever way of psuedo-implementing modal keybindings, without actually doing it. We could then bind f6 _by default_ safely when a screen reader is attached, and not when one isn't. * This would have to manually focus the tab as `Keyboard`, so when we yeet focus when something like the tab context menu is dismissed, we only yeet when the focus was from `Mouse` or `Pointer`. * This now raises a super weird question: * What happens when the command palette is open, and you perform this action from the command palette? * What about the find dialog? * The window renamer? * The tab renamer? * etc This gets really complicated really fast, and needs a real spec.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/terminal#17466