keymap.fnl (1307B)
1 (local { : view } (require :fennel)) 2 (local { : Gdk } (require :lgi)) 3 4 (local keymap (require :keymap)) 5 6 7 (local Mod Gdk.ModifierType) 8 9 (local km { 10 "a" { 11 "a" ["command-1"] 12 "b" ["command-2" {:arg-1 "10" :arg-2 "11"}] 13 } 14 "b" { 15 "z" ["command-3"] 16 } 17 "c" ["command-4"] 18 }) 19 20 (fn fake-key-event [c] 21 {:keyval (string.byte c) 22 :state {} 23 }) 24 25 26 (let [s (keymap._.keychord->spec "q")] 27 (match s 28 {:keyval 113 :modmask 0} true 29 _ (assert false (view s)))) 30 31 (let [s (keymap._.keychord->spec "C-a")] 32 (match s 33 {:keyval 97 :modmask 4} true 34 _ (assert false (view s)))) 35 36 (let [s (keymap._.keychord->spec "C-M-z")] 37 (match s 38 {:keyval 122 :modmask 12} true 39 _ (assert false (view s)))) 40 41 42 (let [r (keymap.recogniser km) 43 (ok err) 44 (match (r:accept-event (fake-key-event "c")) 45 ["command-4"] true 46 x (values false (view x)) 47 nil (values false "???"))] 48 (assert ok err)) 49 50 (let [r (keymap.recogniser km) 51 (ok err) 52 (match-try 53 (r:accept-event (fake-key-event "a")) 54 nil (r:accept-event (fake-key-event "b")) 55 ["command-2" {:arg-1 "10" :arg-2 "11"}] true 56 (catch x (values false (view x))))] 57 (assert ok err))