com.harryaskham.omni · Java · GPL-3.0

Omni

An Android keyboard for writing code and using terminals on a phone. It is a fork of Unexpected Keyboard, which puts symbols, modifiers and arrows within one swipe of the letters, and adds a floating keyboard that can be moved, resized and split across two screens, layouts loaded from files, and keys that control the suite's window managers.

Omni's keyboard in a dark slate theme: QWERTY rows with small corner symbols on each key, and Ctrl, Fn, arrows and Enter on the bottom row.
A full layout, with corner characters on every key.

Keys from the original

One key, several characters How Unexpected Keyboard, and so Omni, packs a full keyboard into few keys, using the e key of the default US QWERTY layout as it is defined in the source. Tapping it types e. Swiping from it towards a corner types the character shown there: up-left types an exclamation mark, up-right the digit 3, down-left a hash, and down-right the euro sign where the locale has one. A key has eight positions around it, four corners and four edges; this one uses the corners. e ! 3 # € · · · · tap → e swipe ↗ → 3 swipe ↙ → # eight positions; this key uses four
The e key of the US QWERTY layout, as defined in latn_qwerty_us.xml.

The base comes from Unexpected Keyboard: every key can carry up to eight extra characters, reached by swiping towards an edge or corner, so a full programming keyboard with Ctrl, Alt, Esc, Tab, function keys and arrows fits in the space of an ordinary one. Layouts are XML files. Omni keeps that format and is released under the same GPL-3.0 licence.

Floating keyboard

Omni installs two input methods, docked and floating, switched with Android's keyboard picker or a key. The floating keyboard is a window that apps flow underneath instead of shrinking for. It can be dragged, resized and snapped to an edge or the centre, and remembers its position separately for portrait and landscape.

  • Tap-through: tapping a gap disables the keyboard and passes touches to the app below until a small button brings it back.
  • Persistent mode keeps it on screen with no text field focused, so its keys can drive Android itself.
  • Two screens: on dual-screen and folding phones it can sit on either screen, both, or follow whichever has the focused field.
  • Blur behind the keys uses Samsung's native blur by default, with an optional Android backend.
Omni's 'Keyboard screen' dialog with the options Screen 1, Screen 2, Both screens and Follow typing focus, the last selected.
Choosing a screen on a dual-screen phone.

Layouts and actions

Custom XML layouts load from the phone's storage, can be refreshed, replaced by name and sorted. They pair with a Nix module that generates them inside Nix-on-Droid, so layouts live in the same configuration as the shell. Keys can carry actions as well as characters:

Key valueDoes
switch_to_layout_<name>Switch straight to a named layout
toggle_floatingSwitch between docked and floating
snap_top, center_both, …Snap the floating keyboard to an edge or centre it
flotilla_1 … flotilla_12Run an action configured in Flotilla
flotilla_shortcutsHand hardware shortcuts to Flotilla, or take them back
wm_focus_left, wm_hide_all, …Send a command to Sandbox's Overlay WM

With the other apps

Omni and the other apps What the Omni keyboard connects to. It compiles in the flotilla-api client, so its keys can send window commands to Flotilla, which assigns the actions of twelve configurable keys and a key that hands hardware shortcuts to Flotilla. Other keys send commands to Sandbox's Overlay WM, a service protected by a signature permission. NOD Term terminals can attach to the floating keyboard in five slots; that link only decides placement and carries no typed text. Typing itself always goes through Android's normal input connection to the focused app. Omnifloating or dockedkeyboard Flotillaflotilla_1 … flotilla_12 Sandbox Overlay WMwm_* keys NOD Termfive attachment slots the focused appAndroid input connection window commands placement only typing

NOD Term's terminals can attach to the floating keyboard in five places, and Omni's Term key focuses or hides the attached terminal. Neither link carries typed text: what you type always reaches the focused app through Android's ordinary input connection.

Limits