[starklabs]"starklabs.net"

mihajlo@starklabs:~$ cat projects/haxboard.md

Haxboard

date2026-10-03
statusactive
kindsoftware
tagsandroid, kotlin, jetpack-compose, keyboard, on-device-ai, terminal
Split board over a terminal, rendered from the keyboard's own layout files in the Dracula theme. The middle of the screen stays free for the app.
Split board over a terminal, rendered from the keyboard's own layout files in the Dracula theme. The middle of the screen stays free for the app.

An on-screen keyboard for tablets, foldables and phones that sends the same key codes a US PC keyboard sends. Shift, Ctrl, Alt and Meta are real modifiers, one-shot, held or locked with a double tap. Esc, Tab, the F keys, a numeric pad and a navigation cluster sit one layer away, so terminal TUIs get Ctrl+C, Alt+Tab and Ctrl+J as they expect.

The board splits into two halves anchored to the screen edges on tablets and unfolded foldables, joins into one block when the split does not fit, and becomes a 10-column board on phones. Overlay mode keeps the app at full size, docked mode pushes it up like a normal keyboard. The touch model comes from AOSP LatinIME: a key commits on release, rollover keeps press order, a slide off cancels.

Two things usually sent to the cloud run on the device. Dictation: swipe up on Space, speak, tap to stop, NVIDIA Parakeet 110M through sherpa-onnx transcribes on the CPU in about a second per take. Spell check: own word lists, 340k words, English and Serbian Latin at once, and Serbian typed without diacritics is offered its proper form (sta becomes šta). The app holds no Internet permission, so Android blocks any network access. Haptics emulate a Cherry MX Brown switch. Kotlin and Jetpack Compose, Android 16 and newer, layouts authored in keyboard-layout-editor JSON and generated to Kotlin.

Split board over a terminal, rendered from the keyboard's own layout files in the Dracula theme. The middle of the screen stays free for the app.
Split board over a terminal, rendered from the keyboard's own layout files in the Dracula theme. The middle of the screen stays free for the app.
Fn layer. F1 to F12 on the left half, numeric pad and navigation cluster on the right.
Fn layer. F1 to F12 on the left half, numeric pad and navigation cluster on the right.

1/2 Split board over a terminal, rendered from the keyboard's own layout files in the Dracula theme. The middle of the screen stays free for the app.

prev Facemakernext Geppetto