With "Shrink to Button" on, the dismiss key shrinks the window to just
itself: a see-through button that can be dragged anywhere. Tapping it
grows the keyboard back around it, kept on screen. KWin moves and
resizes the window through a one-off script, as Wayland clients can't
place themselves.
Also moves the window back on screen whenever it appears (KWin remembers
where the button was), and releases the mouse after a window manager
move or resize, which used to eat the next press on the grab bar.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diagnostics collects what this session doesn't allow, logs it, and lists
it in the settings panel (with a dot on the gear): KWin not launching
sloposk as its keyboard (detected by WAYLAND_SOCKET, since KWin offers the
input-method global to every client), fake input missing or too old,
org.kde.keyboard unreachable, and the D-Bus control name taken.
Modifier combos go through fake input even in text fields: KWin drops
the input method's modifier mask for most clients, so Ctrl+A typed "a".
The desktop file is generated with an absolute Exec, which KWin needs to
match it: one for the installed binary, one for the build's.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- DebouncedStore, taken out of WindowSettings, now also saves the opacity
slider once a drag ends instead of on every step
- SIGTERM/SIGINT (how KWin stops the input method) quit normally, so
pending geometry and settings are written
- The slider's minimum opacity comes from Settings instead of a copy in QML
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Opacity slider for the panel behind the keys (10–100%); keys stay opaque
- Blur Behind: asks the compositor (KWin) to blur under the rounded panel
via KF6 WindowSystem; skipped at full opacity
- Settings panel draws over the window background so changes show live,
and scrolls when it doesn't fit
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- HardwareKeys presses a key's unshifted keysym on touch and releases it
on lift, through fake input; held keys repeat and combine as on a
physical keyboard (games, Shift+click)
- Shift/Ctrl/Alt/Super are plain held keys, caps lock is the system's,
dead keys compose in the app
- No long-press, flick, trackpad or rollover in this mode; nothing is
left held when the mode is turned off or touches are cancelled
- Settings switch; default stays the touch (virtual keyboard) mode
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- KWinFakeInput (org_kde_kwin_fake_input v6, offered by KWin to the
input-method process): keysyms with real modifier keys held
- The KWin backend uses the input method in text fields and fake input
everywhere else, so shortcuts, terminals and the desktop get keys
- Text rules (auto-capitalization, double-space) only apply in fields
- Always Show setting keeps the keyboard up without a text field
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 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>