Skip to content

Keyboard Customization

ZestSSH provides extensive keyboard customization on both desktop and mobile platforms.

The desktop shell registers 40+ keyboard shortcuts via Flutter’s Shortcuts widget. On macOS, Ctrl is replaced with Cmd throughout.

ShortcutAction
Ctrl+TQuick Connect dialog
Ctrl+Shift+NNew Connection (open connection editor)
Ctrl+WClose current tab
Ctrl+Shift+TReopen last closed tab
ShortcutAction
Ctrl+TabNext tab
Ctrl+Shift+TabPrevious tab
Ctrl+1 through Ctrl+9Jump to tab by index
ShortcutAction
Ctrl+Shift+DSplit right (vertical split)
Ctrl+Shift+ESplit down (horizontal split)
Ctrl+\Close current split pane
Ctrl+Shift+MToggle maximize focused pane
Ctrl+Alt+ArrowMove focus between panes (left/right/up/down)
ShortcutAction
Ctrl+Alt+1Side-by-side (2 columns)
Ctrl+Alt+2Stacked (2 rows)
Ctrl+Alt+33 columns
Ctrl+Alt+42x2 grid
Ctrl+Alt+5Reset to single pane
Ctrl+Alt+61 + 2 layout (one left, two right)
Ctrl+Alt+72 + 1 layout (two left, one right)
Ctrl+Alt+83 rows
ShortcutAction
Ctrl+CCopy selected text (when text is selected)
Ctrl+VPaste from clipboard
Ctrl+FFind / search in terminal
Ctrl+Shift+FSFTP file browser
Ctrl+Shift+BToggle broadcast mode (type to all sessions)
ShortcutAction
Ctrl+=Increase font size
Ctrl+-Decrease font size
Ctrl+0Reset font size to 14px
ShortcutAction
Ctrl+Shift+PCommand palette
Ctrl+BToggle sidebar collapse/expand
Ctrl+,Open settings
Ctrl+SSnippets panel
F11Toggle fullscreen

The command palette (Ctrl+Shift+P) provides fuzzy-search access to all actions, connections, and settings. It mirrors VS Code’s command palette behavior:

  • Type to filter commands
  • Arrow keys to navigate
  • Enter to execute
  • Escape to dismiss

On mobile (Android/iOS), ZestSSH adds a two-row toolbar above the system keyboard, styled after the JuiceSSH keyboard pattern. Both rows contain exactly 9 equal-width keys.

Row 1: [ESC] [/] [|] [-] [UP] [~] [HOME] [END] [FN]
Row 2: [TAB] [CTRL] [ALT] [LEFT] [DOWN] [RIGHT] [DEL] [INS] [MIC]

Arrow keys form a natural inverted-T pattern because UP and DOWN are at the same column index (position 5) in their respective rows.

Pressing FN replaces both rows with function keys and navigation:

Row 1: [<-] [F1] [F2] [F3] [F4] [F5] [F6] [F7] [F8] [F9]
Row 2: [F10] [F11] [F12] [PgUp] [PgDn] [INS] [DEL] [HOME] [END] [MIC]

Press <- (back arrow) to return to the normal layout.

CTRL and ALT are sticky toggles:

  • Tap once to activate (highlighted). The next key press includes the modifier.
  • They are mutually exclusive — activating one deactivates the other.
  • The active modifier state is exposed to the parent terminal via a ValueNotifier<SoftKeyModifier>, allowing the terminal provider to intercept system keyboard input and apply the modifier before sending to the shell.

The microphone button (MIC) activates voice-to-text input for the terminal. This is a premium feature that uses the device’s speech recognition to convert spoken words into terminal commands.

On the mobile soft keyboard, holding down a key triggers key repeat via a timer. Arrow keys and deletion keys support repeat for continuous movement and character deletion. The repeat rate is hardcoded at 400ms initial delay followed by 80ms repeat interval and is not user-configurable.

In addition to the soft keyboard, the terminal supports advanced touch gestures:

GestureAction
Two-finger tapSend Ctrl+C (interrupt)
Three-finger tapPaste from clipboard
Two-finger horizontal swipeSwitch between active sessions

These gestures work in conjunction with the soft keyboard modifiers.