dunlin

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

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))