{ inputs, pkgs, ... }: let k-vars = '' (defvar tap-timeout 150 hold-timeout 150) ''; in { environment.systemPackages = [ pkgs.kanata ]; # Add the Kanata service user to necessary groups systemd.services.kanata-razer.serviceConfig = { SupplementaryGroups = [ "input" "uinput" "openrazer" ]; }; services.kanata = { enable = true; keyboards = { sinc = { devices = [ "/dev/input/by-id/usb-Keebio_Sinc_Rev._4-event-kbd" "/dev/input/by-id/usb-Keebio_Sinc_Rev._4-event-if02" "/dev/input/by-id/usb-Keebio_Sinc_Rev._4-if02-event-joystick" ]; extraDefCfg = '' process-unmapped-keys yes concurrent-tap-hold yes allow-hardware-repeat false ''; config = '' (defsrc esc f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 prtsc grv 1 2 3 4 5 6 7 8 9 0 - = \ del home tab q w e r t y u i o p [ ] bspc end caps a s d f g h j k l ; ' ret pgup lsft z x c v b n m , . / rsft up pgdn lctl slck lmet lalt spc ralt rmet rctrl left down right) ${k-vars} (defalias supesc (tap-hold-press $tap-timeout $hold-timeout esc lmet) sp-lsft (tap-hold-press $tap-timeout $hold-timeout S-9 lsft) sp-rsft (tap-hold-press $tap-timeout $hold-timeout S-0 lsft) controls (layer-while-held media-controls) nav (tap-hold-press $tap-timeout $hold-timeout a (layer-while-held navigation))) (deflayer qwerty esc f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 prtsc grv 1 2 3 4 5 6 7 8 9 0 - = \ del home tab q w e r t y u i o p [ ] bspc end @supesc a s d f g h j k l ; ' ret pgup @sp-lsft z x c v b n m , . / @sp-rsft up pgdn lmet @controls lalt lctrl spc rctrl ralt rmet left down right) (deflayer navigation esc f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 prtsc grv 1 2 3 4 5 6 7 8 9 0 - = \ del home tab q w e r t y u i o p [ ] bspc end @supesc a s d f g left down up right ; ' ret pgup @sp-lsft z x c v b n m , . / @sp-rsft up pgdn lmet @controls lalt lctrl spc rctrl ralt rmet left down right) (deflayer media-controls esc VolumeMute VolumeDown VolumeUp f4 MediaTrackPrevious MediaPlayPause MediaTrackNext f8 f9 f10 f11 f12 prtsc grv 1 2 3 4 5 6 7 8 9 0 - = \ del home tab q w e r t y u i o MediaPlayPause [ ] bspc end @supesc a s d f g MediaTrackNext VolumeDown VolumeUp MediaTrackPrevious ; ' ret pgup @sp-lsft z x c v b n VolumeMute , . / @sp-rsft pgup _ lmet lmet lalt lctrl spc rctrl ralt rmet home pgdn end) ''; }; # quefrency = { # devices = [ "/dev/input/by-id/usb-Keebio_Sinc_Rev._4-event-kbd" # "/dev/input/by-id/usb-Keebio_Sinc_Rev._4-event-if02" # "/dev/input/by-id/usb-Keebio_Sinc_Rev._4-if02-event-joystick" ]; # extraDefCfg = '' # process-unmapped-keys yes # concurrent-tap-hold yes # ''; # config = '' # (defsrc # grv 1 2 3 4 5 6 7 8 9 0 - = \ del home # tab q w e r t y u i o p [ ] bspc end # caps a s d f g h j k l ; ' ret pgup # lsft z x c v b n m , . / rsft up pgdn # lctl slck lmet lalt spc ralt rmet rctrl left down right) # ${k-vars} # (defalias # supesc (tap-hold-press $tap-timeout $hold-timeout esc lmet) # sp-lsft (tap-hold-press $tap-timeout $hold-timeout S-9 lsft) # sp-rsft (tap-hold-press $tap-timeout $hold-timeout S-0 lsft) # controls (layer-while-held controls)) # (deflayer qwerty # grv 1 2 3 4 5 6 7 8 9 0 - = \ del home # tab q w e r t y u i o p [ ] bspc end # @supesc a s d f g h j k l ; ' ret pgup # @sp-lsft z x c v b n m , . / @sp-rsft up pgdn # lmet @controls lalt lctrl spc rctrl ralt rmet left down right) # (deflayer controls # grv 1 2 3 4 5 6 7 8 9 0 - = \ del home # tab q w e r t y u i o MediaPlayPause [ ] bspc end # @supesc a s d f g MediaTrackNext VolumeDown VolumeUp MediaTrackPrevious l ; ' ret pgup # @sp-lsft z x c v b n VolumeMute , . / @sp-rsft pgup _ # lmet lmet lalt lctrl spc rctrl ralt rmet home pgdn end) # ''; # } razer = { devices = [ "/dev/input/by-id/usb-Razer_Razer_Blade-event-kbd" "/dev/input/by-id/usb-Razer_Razer_Blade-if01-event-kbd" ]; extraDefCfg = '' process-unmapped-keys yes concurrent-tap-hold yes allow-hardware-repeat false ''; config = '' (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 lctrl lmet lalt spc ralt rctrl) ${k-vars} (defchordsv2 (lctrl lalt h) left 200 all-released ()) (defalias supesc (tap-hold-press $tap-timeout $hold-timeout esc lmet) sp-lsft (tap-hold-press $tap-timeout $hold-timeout S-9 lsft) sp-rsft (tap-hold-press $tap-timeout $hold-timeout S-0 lsft)) (deflayer qwerty grv 1 2 3 4 5 6 7 8 9 0 - = bspc tab q w e r t y u i o p [ ] \ @supesc a s d f g h j k l ; ' ret @sp-lsft z x c v b n m , . / @sp-rsft lmet lalt lctrl spc rctrl ralt) ''; }; }; }; }