{ pkgs, ... }: { # Make Caps lock work as an Escape key on press and Ctrl on hold. services.interception-tools = let dfkConfig = pkgs.writeText "dual-function-keys.yaml" '' MAPPINGS: - KEY: KEY_CAPSLOCK TAP: KEY_ESC HOLD: KEY_LEFTCTRL ''; in { enable = true; plugins = pkgs.lib.mkForce [ pkgs.interception-tools-plugins.dual-function-keys ]; udevmonConfig = '' - JOB: "${pkgs.interception-tools}/bin/intercept -g $DEVNODE | ${pkgs.interception-tools-plugins.dual-function-keys}/bin/dual-function-keys -c ${dfkConfig} | ${pkgs.interception-tools}/bin/uinput -d $DEVNODE" DEVICE: NAME: "AT Translated Set 2 keyboard" EVENTS: EV_KEY: [[KEY_CAPSLOCK, KEY_ESC, KEY_LEFTCTRL]] ''; }; }