187 lines
4.6 KiB
Nix
187 lines
4.6 KiB
Nix
|
{ ... }:
|
||
|
let 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 —)
|
||
|
udo (arbitrary-code 131)
|
||
|
cpy (arbitrary-code 133)
|
||
|
pst (arbitrary-code 135)
|
||
|
cut (arbitrary-code 137)
|
||
|
)
|
||
|
;; }}}
|
||
|
;; {{{ 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-1 S-2 S-3 S-4 S-5 S-6 S-7 S-8 grv S-grv _ _ _
|
||
|
_ S-, S-9 [ S-[ - S-/ S-- / = S-; _ _
|
||
|
_ S-. S-0 ] S-] @em _ S-\ \ S-= S-' _
|
||
|
_ _ @purple _ _
|
||
|
)
|
||
|
;; }}}
|
||
|
;; {{{ Red
|
||
|
(deflayer red
|
||
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _
|
||
|
_ 1 2 3 4 _ _ _ _ _ _ _ _ _
|
||
|
_ 5 6 7 8 _ left down up rght _ _ _
|
||
|
_ 9 0 _ _ _ _ _ _ _ _ _
|
||
|
_ _ _ _ @purple
|
||
|
)
|
||
|
;; }}}
|
||
|
;; {{{ Purple
|
||
|
(deflayer purple
|
||
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _
|
||
|
_ _ _ _ _ _ _ _ _ _ @cpy _ _ _
|
||
|
_ _ _ _ _ _ _ _ _ _ @pst _ _
|
||
|
_ _ _ _ _ _ _ _ @udo _ @cut _
|
||
|
_ _ _ _ _
|
||
|
)
|
||
|
;; }}}
|
||
|
'';
|
||
|
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;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
}
|