// Copyright (c) 2026 Storm Dragon // SPDX-License-Identifier: GPL-3.0-or-later package input import ( "git.stormux.org/storm/fenrir/internal/command" "testing" ) func TestApplicationsChordConsumesRepeatsAndBothReleaseOrders(t *testing.T) { for _, layout := range []string{"desktop", "laptop"} { bindings, _, err := Load_bindings([]string{"../../config/keyboard/" + layout + ".toml"}) if err != nil { t.Fatal(err) } for _, numLock := range []bool{false, true} { for _, modifierFirst := range []bool{false, true} { r, err := New_router(bindings) if err != nil { t.Fatal(err) } r.Key(0, KeyInsert, 1, numLock, false) if got := r.Key(0, 30, 1, numLock, false); got.Command != command.ApplicationsMenu || got.Forward { t.Fatal(got) } if got := r.Key(0, 30, 2, numLock, false); got.Command != "" || got.Forward { t.Fatal(got) } releases := []uint16{30, KeyInsert} if modifierFirst { releases = []uint16{KeyInsert, 30} } for _, key := range releases { if got := r.Key(0, key, 0, numLock, false); got.Forward || got.Command != "" { t.Fatal(got) } } if r.Held(0) { t.Fatal("held applications chord") } if got := r.Key(0, 48, 1, numLock, false); !got.Forward || got.Code != 48 { t.Fatal("subsequent application input", got) } } } } }