osk: retire the dead dual-keyboard path
This commit is contained in:
parent
dd19ab227f
commit
fb5e9bb80c
4 changed files with 36 additions and 179 deletions
|
|
@ -35,12 +35,6 @@ Singleton {
|
|||
property string squeezeAction: "dial"
|
||||
property string squeezeHoldAction: "assistant"
|
||||
property string edgeAction: "dial"
|
||||
// The nav pill's extra detent, past swipe-to-maximum, while an OSK is up.
|
||||
// Named here rather than wired into the pill for the same reason as the
|
||||
// squeeze: TASK-38 says this registers as an action, not as a hardcoded
|
||||
// pill binding (INTERFACE-ARCHITECTURE §4).
|
||||
property string oskSwapAction: "oskSwap"
|
||||
|
||||
// Last gesture seen, so a surface can show that the hardware is alive even
|
||||
// before anything is bound to it — the difference between "grip does
|
||||
// nothing" and "grip is not reaching us" is the whole debugging story.
|
||||
|
|
@ -63,34 +57,6 @@ Singleton {
|
|||
Haptics.tick();
|
||||
GlobalStates.oskOpen = !GlobalStates.oskOpen;
|
||||
},
|
||||
// Swap which on-screen keyboard is running: stevia (daily — word
|
||||
// completion, dictation mic) <-> squeekboard (terminal — arrows, fn,
|
||||
// dense grid). stevia dropped its terminal layout and the
|
||||
// POS_INPUT_METHOD_PURPOSE_TERMINAL auto-switch with it, so without
|
||||
// this there is no way to reach a terminal layout by gesture at all.
|
||||
//
|
||||
// Called by name, not by path: osk-switch is /usr/bin/osk-switch, owned
|
||||
// by souveraine-osk-switch (Pixel3Arch cd8b67e), which depends on both
|
||||
// souveraine-stevia and souveraine-squeekboard. It was unowned at
|
||||
// /usr/local/bin until 2026-07-29 — a shipped gesture whose only effect
|
||||
// was a file no package knew about and a reprovision would lose.
|
||||
//
|
||||
// confirm(), not tick(): the detent already ticked when the drag
|
||||
// crossed it, and a swap that has actually been committed should not
|
||||
// feel the same as crossing the line.
|
||||
"oskSwap": () => {
|
||||
Haptics.confirm();
|
||||
// Declare the intent before the swap, not after it. osk-switch
|
||||
// deliberately re-shows the keyboard on the new daemon ("so the
|
||||
// swap is visible immediately"), and OnScreenKeyboard re-asserts
|
||||
// oskOpen at whoever takes the sm.puri.OSK0 name. If the shell
|
||||
// did not record that a swap means "keyboard up", those two would
|
||||
// fight: osk-switch shows it, the shell pushes its stale false,
|
||||
// and which one the user gets is a race. A swap is a request for
|
||||
// a keyboard.
|
||||
GlobalStates.oskOpen = true;
|
||||
Quickshell.execDetached(["osk-switch"]);
|
||||
},
|
||||
"screenshot": () => {
|
||||
Haptics.confirm();
|
||||
Quickshell.execDetached(["sh", "-c",
|
||||
|
|
@ -143,16 +109,6 @@ Singleton {
|
|||
});
|
||||
}
|
||||
|
||||
// The nav pill's past-maximum detent. Exposed here so the swap is
|
||||
// testable without a touchscreen — `qs -c souveraine ipc call gesture
|
||||
// oskSwap` is the same path the pill takes.
|
||||
function oskSwap(): string {
|
||||
return JSON.stringify({
|
||||
ok: root.deliver("osk-swap", root.oskSwapAction),
|
||||
action: root.oskSwapAction
|
||||
});
|
||||
}
|
||||
|
||||
// What is bound to what, and what was last seen. An agent or a
|
||||
// settings page reads this instead of guessing.
|
||||
function state(): string {
|
||||
|
|
@ -160,7 +116,6 @@ Singleton {
|
|||
squeeze: root.squeezeAction,
|
||||
squeezeHold: root.squeezeHoldAction,
|
||||
edge: root.edgeAction,
|
||||
oskSwap: root.oskSwapAction,
|
||||
available: Object.keys(root.actions),
|
||||
lastGesture: root.lastGesture,
|
||||
lastGestureAt: root.lastGestureAt
|
||||
|
|
@ -175,7 +130,6 @@ Singleton {
|
|||
case "squeeze": root.squeezeAction = action; break;
|
||||
case "squeeze-hold": root.squeezeHoldAction = action; break;
|
||||
case "edge": root.edgeAction = action; break;
|
||||
case "osk-swap": root.oskSwapAction = action; break;
|
||||
default:
|
||||
return JSON.stringify({ ok: false, reason: "no such gesture: " + gesture });
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue