- [PASS] Build APK:
./gradlew assembleDebug - [PASS] Install on device/emulator
- [PASS] Enable keyboard in Settings → System → Keyboard
- [PASS] Set as default input method
- [PASS] Keyboard appears when tapping text field
- [PASS] Keyboard dismisses properly
- [PASS] Key labels display correctly
- [PASS] Key icons render (Tab, Backspace, Arrows)
- [PASS] Letter key → correct character
- [PASS] Number/symbol keys → correct character
- [PASS] Space key → space inserted
- [PASS] Backspace → deletes character
- [PASS (Doesn't act as a search button in context windows that explicitly require search button press like on GBoard)] Enter → newline/action
- [PASS] Tab → tab character
- [PASS] Long press with
labelLongPress→ secondary char - [PASS] Long press with
keyCodeLongPress→ action - [PASS] Key repeat on Backspace/Arrows
- [PASS] Shift → uppercase labels
- [PASS] Shift + letter → uppercase, then reverts
- [PASS] Caps Lock → locks uppercase
- [PASS] Ctrl modifier works
- [PASS] Alt modifier works
- [PASS] Cycle layout (keycode -21) → next layout
- [PASS] All layouts in
layouts-language/detected - [PASS] Layout indicator updates
- [PASS] Open floating (keycode -11)
- [PASS] Close floating (keycode -10)
- [PASS] Switch mode (keycode -12)
- [PASS] Floating renders over apps
- [PASS] Input works from floating
- [PASS] Enlarge horizontal (keycode -13)
- [PASS] Shrink horizontal (keycode -14)
- [PASS] Move left (keycode -17)
- [PASS] Move right (keycode -18)
- [PASS] Move up (keycode -19)
- [PASS] Move down (keycode -20)
- [PASS] Min size enforced
- [PASS] Open clipboard (keycode -24)
- [PASS] Entries display stored text
- [PASS] Tap entry → paste text
- [PASS] Erase clipboard (keycode -23)
- [PASS] Left/Right arrows move cursor
- [PASS] Up/Down arrows (multiline)
- [Didn't implement yet] Home/End keys
- [Didi't implement yet] Page Up/Down
- [PASS] Default layouts copy via menu
- [PASS] Custom layouts load from
layouts-language/ - [PASS] Service layouts load from
layouts-service/ - [PASS] Invalid JSON shows error popup
- [PASS] Missing layout → fallback
- [FAIL] Custom
settings.jsonloads -
keyboardMinimalWidth/Heightenforced -
touchCorrectionX/Yadjusts touches -
renderedKeyGap/renderedRowGapapplies -
keyCornerRadiusFactoraffects corners - [FAIL] Invalid settings → fallback to defaults
- [PASS] Key with no keyCode/label/icon renders (blank rect)
- [PASS] Pressing empty key → no crash, no output
- [Not implemented (for privacy)] Key press feedback visible
- [PASS] Modifier active state shown
- [PASS] Caps Lock indicator
- [PASS] Key gaps render correctly
- [PASS] Empty layout → fallback
- [PASS] Very long labels → handled
- [PASS] Rapid tapping → no missed input
- [PASS] Screen rotation → state preserved
Report: PASS / FAIL with error description (build, crash, behavior).