dunlin/test/keymap.fnl

48 lines
895 B
Plaintext
Raw Normal View History

2022-12-22 22:42:45 +00:00
(local { : view } (require :fennel))
2022-12-23 14:43:29 +00:00
(local { : Gdk } (require :lgi))
2022-12-22 22:42:45 +00:00
(local keymap (require :keymap))
2022-12-23 14:43:29 +00:00
(local Mod Gdk.ModifierType)
2022-12-22 22:42:45 +00:00
(local km
{"a"
{"a" #1
"b" #2}
"b"
{"z" #3}
"c" #4
})
2022-12-23 14:43:29 +00:00
(fn fake-key-event [c]
{:keyval (string.byte c)
:state {}
})
(let [s (keymap._.keychord->spec "q")]
(match s
{:keyval 113 :modmask 0} true
_ (assert false (view s))))
(let [s (keymap._.keychord->spec "C-a")]
(match s
{:keyval 97 :modmask 4} true
_ (assert false (view s))))
(let [s (keymap._.keychord->spec "C-M-Z")]
(match s
{:keyval 122 :modmask 13} true
_ (assert false (view s))))
2022-12-22 22:42:45 +00:00
(let [r (keymap.recogniser km)
(ok err)
2022-12-23 14:43:29 +00:00
(match (r:accept-event (fake-key-event "c"))
2022-12-22 22:42:45 +00:00
(where f (= (f) 4)) true
2022-12-23 14:43:29 +00:00
x (values false (view x))
nil (values false "???"))]
2022-12-22 22:42:45 +00:00
(assert ok err))