Features

Android and iOS use different keyboard APIs. The sections below state which behavior belongs to each platform.

iOS app and keyboard

>

remote-ssh-terminal

The main app connects to a remote SSH server that you configure. Commands run on that server. KeyJawn displays returned output and cannot browse files on your iPhone or iPad.

K

ios-keyboard-extension

The keyboard extension provides QWERTY input, a number row, terminal-oriented keys, slash shortcuts, clipboard history, themes, and extra-row presets. Terminal sequences depend on the receiving app.

^

copied-image-upload

Copy one image, tap the SCP key to open Upload copied image, and select a host configured for SSH key authentication. KeyJawn prepares the image in memory, writes it by SFTP to the remote directory, and inserts the remote path. Password authentication remains available for terminal connections. The upload feature does not request Photos or Files access.

+

optional-full-access

Basic typing and built-in shortcuts work without Full Access. Full Access is optional for network upload and for reading shared keyboard settings, user-created shortcuts, and clipboard history.

~

ios-voice-input

Voice input is available in the built-in remote SSH terminal. The iOS keyboard extension does not use the microphone.

#

host-key-trust

The first SSH connection asks you to review and save the server fingerprint. Later connections reject a changed host key.

Android keyboard

The detailed feature sections below describe the Android keyboard. The free APK includes terminal keys, voice input, clipboard history, slash commands, action swipes, per-app autocorrect, key press preview, and a configurable quick key. The $4 Android full APK adds SCP upload, multi-host SSH, themes, customizable extra-row keys, a menu panel, clipboard pinning, and custom slash commands.

Terminal keys

A dedicated row above the QWERTY layout with the keys terminals need: Esc, Tab, Ctrl, and arrow keys < >.

Always visible. No toggling layers or long-pressing to find them. Ctrl uses a three-state toggle: tap once to arm it for one keypress, long-press to lock it on, tap again to turn it off. Hold arrow keys to repeat.

Each key in the row has a distinct background color so you can tell them apart at a glance. Ctrl changes color when armed or locked.

In the Android full APK, the three left slots (Esc, Tab, Ctrl) are customizable. Long-press to swap them for Home, End, PgUp, PgDn, Insert, Delete, or text characters like |, ~, `, \. You can also change them in Settings.

EscTabCtrl<>

Voice input

Tap the mic in the extra row. A waveform animation shows audio level while you speak. Text appears at your cursor as the speech recognizer processes it -- streaming partial results, not waiting for you to finish.

When 90% of what you type into an AI agent is natural language, speaking is faster than typing on a phone keyboard. Tap stop or the mic again to finish.

Requires microphone permission. Included in both Android APKs.

fix the auth bug in login.ts

Android SCP upload

Configure your SSH hosts in Settings. Tap the upload button in the extra row, then select an image from your Android gallery. KeyJawn sends it to your server and types the remote file path at your cursor.

Supports multiple SSH hosts with per-host upload directories. Switch between servers without reconfiguring. All credentials encrypted with AES-256 via AndroidX EncryptedSharedPreferences. Host key verification uses trust-on-first-use and rejects changed keys.

Android full APK only.

# select an image in Android
scp photo_001.jpg pi@server:~/uploads/
# path typed at cursor:
~/uploads/photo_001.jpg_

Clipboard history and pinning

Tap the clipboard button in the extra row to see your recent clipboard history (up to 30 items). Tap any entry to paste it at your cursor.

The Android full APK adds pinning. You can pin up to 15 items that persist across sessions and stay at the top of the list. Pinned items are highlighted.

Clipboard history is in both Android APKs. Pinning is in the Android full APK.

ssh pi@192.168.1.50
git commit -m "fix auth"
export API_KEY=sk-...

Slash commands

On the symbols layer, the / key opens a command picker instead of typing a literal slash. Select a command to insert it. Dismiss without selecting to type / normally.

Built-in sets group common slash commands by tool. Recently used commands move to the top. The Android full APK lets you add commands, group them in custom sets, and turn sets on or off.

Built-in sets are in both Android APKs. Custom sets are in the Android full APK.

command-setbuilt-in
/help
/clear
/compact
/review
/init

Swipe gestures

Swipe across the keyboard area for quick actions:

  • Swipe left -- delete word
  • Swipe right -- space
  • Swipe up -- switch to symbols layer
  • Swipe down -- switch to letters layer
delete word
space
symbols
letters

Keyboard themes

Four color themes: Dark (the default), Light for outdoor use, OLED black for true-black displays, and Terminal green for the classic look.

Themes apply to every element -- keys, backgrounds, hints, accent colors, and the extra row. Pick one in the menu panel.

Android full APK only. The Android free APK uses the Dark theme.

DarkA
LightA
OLEDA
TermA

Number row

A dedicated 0-9 row above the QWERTY keys. Long-press any number for its shifted symbol. Small hint labels on each key show you what you'll get.

No switching layers to type a number. No memorizing which symbol lives where.

1234567890

Alt characters

Long-press any letter for accented characters and symbol variants. Keys with a single alt character fire immediately. Keys with multiple options show a popup where you slide to pick.

Examples: long-press a for accented variants, n for the tilde variant, e for accented forms.

a
áàâä

And also

{

symbol-layers

Three keyboard layers: lowercase, uppercase, and symbols. The symbols layout uses familiar punctuation groups and a second page for less common characters. Swipe up for symbols and down for letters.

A

per-app-autocorrect

Autocorrect is off by default because composing text can break terminal input. Long-press the spacebar to change it for the active Android app. KeyJawn remembers the setting for each app.

/

quick-key

The bottom-right key next to the spacebar is configurable. Long-press to pick from 24 terminal characters (/, |, ~, `, \, @, #, $, and more) or set custom text up to 8 characters. Also configurable in Settings.

~

haptic-feedback

Optional vibration on key presses. Toggle it in the menu panel or settings. Off by default for a quieter typing experience.

^

shift-and-caps

Tap shift for one uppercase letter -- it auto-returns to lowercase after. Double-tap for caps lock. The key changes appearance to show you which state you're in.

.

key-preview

A preview bubble appears above each key on tap, showing the character with a bounce animation. Works on letters, numbers, and symbols across all layers.

>

configurable-extra-row

In the Android full APK, long-press ESC, Tab, or Ctrl to replace it with Home, End, PgUp, PgDn, Ins, Del, or custom text. You can also change these keys in Settings.

=

color-coded-keys

Each function key in the extra row has a distinct background color. Esc, Tab, Ctrl, arrows, clipboard, upload, and mic are all visually separated so you can find them without reading labels.