Files

40 lines
1.4 KiB
Go

// Copyright (c) 2026 Storm Dragon
// SPDX-License-Identifier: GPL-3.0-or-later
package input
import "testing"
func TestEmojiShortcutBothLayoutsAndReleaseOrders(t *testing.T) {
for _, layout := range []KeyboardLayout{DesktopKeyboardLayout, LaptopKeyboardLayout} {
chord := CommandChord{Symbol: 'e', Modifiers: controlModifier, CthulhuModifier: true}
if got := DefaultCommandBindings(layout)[chord]; got != EmojiMenu {
t.Fatalf("%v: %s", layout, got)
}
if got := BrowseCommandBindings(layout)[chord]; got != "" && got != EmojiMenu {
t.Fatalf("browse conflict: %s", got)
}
for _, releaseFirst := range []bool{false, true} {
router := NewCommandRouter([]uint32{0xff63}, DefaultCommandBindings(layout))
router.Handle(0xff63, 118, 0, true)
router.Handle(leftControlKeySymbol, 37, controlModifier, true)
if consumed, cmd := router.Handle('e', 26, controlModifier, true); !consumed || cmd != EmojiMenu {
t.Fatalf("shortcut: %v %s", consumed, cmd)
}
if _, cmd := router.Handle('e', 26, controlModifier, true); cmd != "" {
t.Fatal("repeat reopened menu")
}
if releaseFirst {
router.Handle(0xff63, 118, controlModifier, false)
}
router.Handle('e', 26, controlModifier, false)
router.Handle(leftControlKeySymbol, 37, 0, false)
if !releaseFirst {
router.Handle(0xff63, 118, 0, false)
}
if consumed, cmd := router.Handle('e', 26, 0, true); consumed || cmd != "" {
t.Fatal("typing did not resume")
}
}
}
}