52 lines
1.1 KiB
Nix
52 lines
1.1 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
let
|
|
cfg = config.youthlic.programs.kanata;
|
|
in
|
|
{
|
|
options = {
|
|
youthlic.programs.kanata = {
|
|
enable = lib.mkEnableOption "kanata";
|
|
};
|
|
};
|
|
config = lib.mkIf cfg.enable {
|
|
boot.kernelModules = [ "uinput" ];
|
|
hardware.uinput.enable = true;
|
|
services.kanata = {
|
|
enable = true;
|
|
package = pkgs.kanata-with-cmd;
|
|
keyboards.default = {
|
|
extraDefCfg = ''
|
|
process-unmapped-keys no
|
|
'';
|
|
config = ''
|
|
#|
|
|
Kanata
|
|
|
|
CapsLock tap to Esc
|
|
CapsLock hold to Ctrl
|
|
|#
|
|
;; default keyboard layout
|
|
(defsrc
|
|
caps ;; type → esc, hold caps → ctrl
|
|
esc ;; type esc → caps, hold esc → esc
|
|
)
|
|
|
|
(deflayer default
|
|
@cac
|
|
@esc-behavior
|
|
)
|
|
|
|
(defalias
|
|
cac (tap-hold 190 190 esc lctrl) ;; hold CapsLock → Esc, press CapsLock → LCtrl
|
|
esc-behavior (tap-hold 190 190 caps esc) ;; press Esc → CapsLock, hold Esc → Esc
|
|
)
|
|
'';
|
|
};
|
|
};
|
|
};
|
|
}
|