Inject Remote lock keys instead of retiring keyboard input
Refusing Caps, Num and Scroll Lock retired all remote input, so a controller using Caps Lock as its screen-reader modifier lost keyboard control on the first press. Lock keys are now owned like other keys and released once at retirement without another toggle. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
8e0ac3b258
commit
1c8ec3ce10
4 files changed
+52
-14
No files matched your search
@@ -200,8 +200,30 @@ func TestNativeRemoteKeyTargetLayoutChangeKeepsRelease(t *testing.T) {
|
||||
remoteNativeHeld(t, probe, after, false)
|
||||
}
|
||||
|
||||
func TestNativeRemoteKeyTargetRejectsUnavailableAndLocks(t *testing.T) {
|
||||
for _, name := range []string{"unknown private name", "Caps_Lock", "Num_Lock", "Scroll_Lock", "semicolon"} {
|
||||
func TestNativeRemoteKeyTargetLockKeysAreOwnedAndReleased(t *testing.T) {
|
||||
for _, name := range []string{"Caps_Lock", "Num_Lock", "Scroll_Lock"} {
|
||||
t.Run(name, func(t *testing.T) {
|
||||
remoteNativeThread(t)
|
||||
target, probe := remoteNativeTarget(t), remoteNativeTarget(t)
|
||||
code, err := target.backend.Resolve(name)
|
||||
if err != nil {
|
||||
t.Skip("lock key absent from this keymap")
|
||||
}
|
||||
if err := target.apply(name, true); err != nil {
|
||||
t.Fatal("lock key refused", err)
|
||||
}
|
||||
remoteNativeHeld(t, probe, code, true)
|
||||
// Retirement releases the held lock key without another toggle.
|
||||
if err := target.retire(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
remoteNativeHeld(t, probe, code, false)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestNativeRemoteKeyTargetRejectsUnavailable(t *testing.T) {
|
||||
for _, name := range []string{"unknown private name", "semicolon"} {
|
||||
t.Run(name, func(t *testing.T) {
|
||||
remoteNativeThread(t)
|
||||
target, probe := remoteNativeTarget(t), remoteNativeTarget(t)
|
||||
|
||||
Reference in new issue
Block a user