{ ... }: let stickTap = action: "tap-hold-press 0 200 (one-shot-press-pcancel 1000 (${action})) (${action})"; mkConfig = { blueTrigger, redTrigger, chordDelay }: '' ;; {{{ Source layout (defsrc grv 1 2 3 4 5 6 7 8 9 0 - = bspc tab q w e r t y u i o p [ ] \ caps a s d f g h j k l ; ' ret lsft z x c v b n m , . / rsft lctl lmet ${redTrigger} spc ${blueTrigger} ) ;; }}} ;; {{{ Layer & utility aliases (defalias red (layer-while-held red) blue (layer-while-held blue) purple (layer-while-held purple) em (unicode —) ) ;; }}} ;; {{{ Chord aliases (defalias chq (chord mainchords q) chw (chord mainchords w) che (chord mainchords e) chr (chord mainchords r) cha (chord mainchords a) chs (chord mainchords s) chd (chord mainchords d) chf (chord mainchords f) chz (chord mainchords z) chx (chord mainchords x) chc (chord mainchords c) chg (chord mainchords g) chh (chord mainchords h) chi (chord mainchords i) chp (chord mainchords p) chj (chord mainchords j) chk (chord mainchords k) chl (chord mainchords l) ch: (chord mainchords :) chn (chord mainchords n) ) ;; }}} (defchords mainchords ${toString chordDelay} ;; {{{ Single keys (q) q (w) w (e) e (r) r (a) a (s) s (d) d (f) f (z) z (x) x (c) c (g) g (h) h (i) i (p) p (j) j (k) k (l) l (:) ; (n) n ;; }}} ;; {{{ Left modifiers (a s ) lalt ( s d ) lsft ( s f) lctl ( s d f) C-lsft (a s d ) S-lalt (a s d f) C-S-lalt ;; }}} ;; {{{ Right modifiers ( l :) ralt ( k l ) rsft (j l ) rctl (j k l ) C-rsft ( k l :) S-ralt (j k l :) C-S-ralt ;; }}} ;; {{{ Special keys (d f) tab (e f) ret (q w) esc (g h) bspc (n l) rmet (j k) f10 (c p) f11 (j i) f12 ;; }}} ;; {{{ Wm keybinds (n l k) M-p (n l q) M-1 (n l w) M-2 (n l e) M-3 (n l r) M-4 (n l a) M-5 (n l s) M-6 (n l d) M-7 (n l f) M-8 (n l z) M-9 (n l x) M-0 ;; }}} ) ;; {{{ Qwerty (deflayer qwerty XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX @chq @chw @che @chr t y u @chi o @chp XX XX XX XX @cha @chs @chd @chf @chg @chh @chj @chk @chl @ch: XX XX lsft @chz @chx @chc v b @chn m , . ' XX XX lmet @red spc @blue ) ;; }}} ;; {{{ Transparent template (deflayer template _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ) ;; }}} ;; {{{ Blue (deflayer blue _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ S-= S-2 S-3 S-4 S-5 S-- S-7 S-8 grv S-grv _ _ _ _ S-, S-[ [ S-9 S-/ S-\ - / = S-; _ _ _ S-. S-] ] S-0 S-1 @em S-6 _ _ S-' _ _ _ @purple \ _ ) ;; }}} ;; {{{ Red (deflayer red _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1 2 3 4 5 home pgdn pgup end del _ _ _ _ 6 7 8 9 0 left down up rght _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ @purple ) ;; }}} ;; {{{ Purple (defalias ;; Press once to active caps lock for a word (revert after being idle ;; for 2s), or twice for real caps lock. cps (tap-dance 200 ((caps-word 2000) caps)) udo (arbitrary-code 131) ;; undo cpy (arbitrary-code 133) ;; copy pst (arbitrary-code 135) ;; paste cut (arbitrary-code 137) ;; cut ) (deflayer purple _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f1 f2 f3 f4 f5 @cps @cpy next volu brup _ _ _ _ f6 f7 f8 f9 f10 @udo @pst pp vold brdn _ _ _ f11 f12 _ _ _ _ @cut prev mute _ _ _ _ _ _ _ ) ;; }}} ''; in { services.kanata = { enable = true; keyboards.tethysLaptop = { devices = [ "/dev/input/by-path/platform-i8042-serio-0-event-kbd" ]; config = mkConfig { redTrigger = "lalt"; blueTrigger = "ralt"; chordDelay = 25; }; }; keyboards.keychronK6 = { devices = [ "/dev/input/by-id/usb-Keychron_Keychron_K6-event-kbd" ]; config = mkConfig { redTrigger = "lalt"; blueTrigger = "rctl"; chordDelay = 30; }; }; }; }