pantheon/modules/programs/kanata.nix
2025-04-05 01:14:15 +08:00

47 lines
1.6 KiB
Nix

{
services.kanata = {
enable = true;
keyboards.k14 = {
devices = [ "/dev/input/by-id/usb-Keychron_Keychron_K14-event-kbd" ];
extraDefCfg = "process-unmapped-keys yes";
config = # lisp
''
(defsrc)
(defvar
tap-timeout 200
home-row-hold-timeout 200
tt $tap-timeout
hrht $home-row-hold-timeout
)
(deflayermap (default-layer)
;; tap caps lock as enter, hold as left ctrl
;; tap-hold-release will activate the hold action early
;; if another key is pressed while it is held.
CapsLock (tap-hold-release 200 200 Escape ControlLeft)
;; space if pressed twice in quick succession will
;; enter a space then delete it and put enter
Space (tap-hold-release 200 200
(tap-dance-eager 200 (
(macro Space) ;; use macro to prevent auto repeat
(macro Backspace Enter)
))
MetaRight)
;; Home Row Mods
KeyA (tap-hold-release $tt $hrht KeyA ControlLeft)
KeyS (tap-hold-release $tt $hrht KeyS ShiftLeft)
KeyD (tap-hold-release $tt $hrht KeyD AltLeft)
KeyF (tap-hold-release $tt $hrht KeyF MetaLeft)
Semicolon (tap-hold-release $tt $hrht Semicolon ControlRight)
KeyL (tap-hold-release $tt $hrht KeyL ShiftRight)
KeyK (tap-hold-release $tt $hrht KeyK AltRight)
KeyJ (tap-hold-release $tt $hrht KeyJ MetaRight)
)
'';
};
};
}