- Full (iPad Pro) mode: every typing key from the keymap, number row,
tab, caps lock, ctrl/super/alt; shifted symbol shown above and flickable
- Dead keys compose with the locale's XKB compose table
- Ctrl/Alt/Super stick like shift and turn keys into shortcuts; a tapped
or held shift joins shortcuts and non-text keys, auto-shift and caps
lock don't
- Auto-capitalization and caps lock only capitalize letters; the user's
shift picks the keymap's shifted level
- Mode switch in settings keeps key size by resizing the window
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Template sections placed above or to the right of the typing keys;
the user picks any mix in settings, typing keys included
- keysym keys send XKB keysyms on press, optionally repeating
- Geometry lays blocks side by side with one key unit; stretch keys are
resolved at layout time so composed blocks line up
- Toggling a block resizes the window so keys keep their size
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Double-space replaced the space via a Backspace keysym, which clients
apply after the commit: use delete_surrounding_text with the commit
- Tests use a shared FakeEngine that applies ops to a simulated field
- Double-tap shift locks at a sentence start; typing between taps doesn't
- Organization name set: config lives in ~/.config/sloposk/
- Settings (auto-capitalization, double-space period) with a ⚙ panel
- Letter rows come from the compositor's XKB keymap; other letters of the
layout become long-press alternates; globe switches the system layout
over org.kde.keyboard
- One JSON template for non-letter layers; stretch keys even out rows
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- VisibilityController: show on field focus, dismiss until next focus,
manual show/hide/toggle overrides
- FloatingWindow: resize from the corner grip, clamp to screen
- WindowSettings: geometry per screen, debounced saves
- DBusControl: org.sloposk.Keyboard Show/Hide/Toggle for global shortcuts
- org.sloposk.keyboard.desktop so System Settings lists it as a virtual keyboard
- README with build/run/layout docs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- TextContext: field purpose/hints and text before the cursor, reported by
the backend (KWin content_type + surrounding_text)
- TextRules: sentence-start and double-space heuristics, deletion helpers
- KeyRepeater: held backspace repeats, then deletes whole words (Ctrl+BS)
- Controller keeps a best-guess of the text before the cursor so rules work
instantly and in fields that don't report surrounding text
- No auto-capitalization or smart punctuation in password/URL/email fields
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- PointerTracker: per-finger gesture state machine (pure, unit-tested)
- AlternatesPicker + AlternatesPopup.qml: long-press choices, finger selects
- Space long-press trackpad moves the cursor with arrow keysyms
- Slide from .?123 onto a symbol types it and switches back
- New finger commits pending taps (iOS rollover)
- Flick animation: secondary symbol slides down as the finger moves
- Transparent popup margin with an input region that passes clicks through
- tst_keyboardsurface: end-to-end gesture tests on the real QML
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>