Shell Keyboard app icon
iOS 16.0+ Custom Keyboard

Shell Keyboard

The terminal keyboard for iOS that never reads what you type.

A custom keyboard extension giving you esc, ctrl, alt, tab, arrows, and function keys directly on your iOS device. Use ssh, vim, and tmux on your phone without fighting the stock keyboard.

Version 1.2.0 · October 2026

Shell Keyboard's terminal layer on iPhone, showing esc, tab, ctrl, alt, shift, arrow keys, home and end, and shell punctuation, below a text field where 'git status' has been typed.

New in version 1.2 · iPad

A real keyboard on your iPad

Choose a 60% or 75% layout, the compact keyboards terminal users already type on. Shift types the symbol printed on each key, Caps Lock sits where it always does, and ctrl is bottom-left. iPad opens in the 75% layout; the original ShellKey layout is one tap away in the keyboard's Settings.

Shell Keyboard's 75% layout on iPad: esc and F1 to F12 on top, a number row with shifted symbols, caps, shift, ctrl, alt, a navigation column and inverted-T arrow keys.
75% — F-keys, a number row, Caps Lock, a navigation column and inverted-T arrows, all on one screen.
Shell Keyboard's 60% layout on iPad with the fn layer on, in the Ember theme: F1 to F12 on top, and the right half turned into ins, home, pgup, del, end, pgdn and the arrow keys.
60% — compact, with an fn layer for F-keys, navigation and arrows. Shown in the Ember theme.

Both are US layouts. On iPhone, Shell Keyboard keeps its own terminal layout.

Features

Terminal layer

esc top-left where vim expects it, ctrl, alt, tab, a full arrow cluster, home / end, pgup / pgdn, ins, del, and the twelve punctuation characters a shell actually needs — ~ / | \ < > [ ] { } ( ). All on one screen, no layer switching.

Function keys

Tap fn and the top row becomes F1–F12. Everything else stays exactly where it was, so nothing under your thumbs moves.

Modifiers that latch

Tap ctrl to arm it for the next key, or double-tap to lock it. Ctrl+C is two taps, deliberately — never one.

Arrow keys that match your app

Normal mode for shells that expect ^[[A. Application mode for full-screen apps (vim, tmux, less, htop). A third mode moves the text cursor instead, for ordinary text fields.

Return or Enter

Long-press Return to switch between carriage return (CR) and line feed (LF).

Letters and symbols without leaving

An abc layer for hostnames, paths and commit messages, and a symbols layer carrying every printable ASCII punctuation character exactly once.

Seven themes, light or dark

Shell, Ember, Glacier, Dusk, Moss, Void (pure black) and High Contrast, each with a light and a dark version. Appearance follows each app, or keeps the keyboard light or dark everywhere.

Settings inside the keyboard

Touch and hold the key with the small gear (on iPad’s 60% and 75% layouts, tap the gear key) for Haptic feedback, Theme, Appearance and, on iPad, Layout. They live in the keyboard because, without Full Access, iOS keeps a keyboard and its app apart.

Built-in reference

Searchable cheat sheet of every ANSI escape sequence the keyboard sends, with the hex bytes, inside the app.

Privacy by design

Never asks for Full Access. Shell Keyboard collects nothing and reads nothing. Read the privacy policy.

Need an SSH client to go with it? Shell SSH is a real interactive terminal for iPhone and iPad by the same developer. It has a small key row of its own for esc, ctrl, tab and the arrows; Shell Keyboard covers the fuller set, and covers it in every other app too. The two are complementary; neither needs the other.

Gallery

The keyboard's own Settings panel in the Glacier theme: Haptic feedback, a row of theme chips, and Appearance set to System, Light or Dark.

Settings live in the keyboard: haptics, theme, appearance.

The fn layer in the Ember theme, where the top row has become F1 through F12 while every other row stays exactly where it was.

Tap fn. Only the top row changes.

The terminal layer in the Void theme, pure black, with ctrl latched and highlighted for the next key press.

Ctrl latches for one key, or locks with a double-tap.

The abc layer in the Dusk theme, light, a QWERTY layout for hostnames, paths and commit messages.

Letters, without leaving. Shown in Dusk, light.

The Arrow Keys panel in the Moss theme, offering Normal, Application and Move the cursor, with an explanation of what each one sends.

Arrows that match the app you're in.

The symbols layer in the High Contrast theme, carrying every printable ASCII punctuation character.

Every ASCII punctuation character, exactly once.

The app's Install tab: a preview of every theme, and a short guide to the keyboard's settings.

Preview all seven themes in the app.

The Reference tab inside the app: a searchable list of keys with the exact escape sequences and hex bytes each one sends.

A searchable reference for every sequence it sends.

iPad

The keyboard's Settings panel on iPad in the Glacier theme, with Haptic feedback, Theme, Appearance and a Layout row.

On iPad, Settings adds a Layout row.

The 60% layout in the Glacier theme with Shift on: the number row types ! @ # $ and the letters are capitals.

Shift types the symbol printed on each key.

The 75% layout in the Dusk theme, light: F-keys, a number row, Caps Lock, a navigation column and arrow keys.

The 75% layout, in Dusk, light.

The original ShellKey terminal layout on iPad in the Void theme.

Prefer the original ShellKey layout? It's still there.

The app's Install tab on iPad: a preview of every theme, and a short guide to the keyboard's settings.

Preview all seven themes in the app.

The Reference tab inside the app: a searchable list of keys with the exact escape sequences and hex bytes each one sends.

A searchable reference for every sequence it sends.

What it does NOT do

Please read this before buying:

  • Works in native terminal apps — Blink Shell, Termius, Prompt, a-Shell, iSH — and in ordinary text fields.
  • Does not work with a terminal or editor running inside a web browser (code-server, Jupyter, ttyd, Wetty). A web page listening for keydown events will see nothing — an iOS keyboard extension can only insert text. No third-party iOS keyboard can do this — it's an iOS limitation, not a missing feature.
  • In "move the cursor" mode, arrows move left and right only. Moving by a line would require reading the text around your cursor, which this keyboard deliberately never does.