diff --git a/hosts/darwin/system-default.nix b/hosts/darwin/system-default.nix index 9797329..2a4301b 100644 --- a/hosts/darwin/system-default.nix +++ b/hosts/darwin/system-default.nix @@ -3,6 +3,7 @@ { imports = [ ../../modules/homebrew.nix + ../../modules/keyboard.nix nix-homebrew.darwinModules.nix-homebrew ]; diff --git a/modules/keyboard.nix b/modules/keyboard.nix new file mode 100644 index 0000000..331069b --- /dev/null +++ b/modules/keyboard.nix @@ -0,0 +1,22 @@ +{ config, pkgs, ... }: + +{ + # Key remapping using hidutil via launchd agent + # This swaps Control and Caps Lock keys bidirectionally + + launchd.user.agents.remap-keys = { + serviceConfig = { + ProgramArguments = [ + "/usr/bin/hidutil" + "property" + "--set" + ''{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000039,"HIDKeyboardModifierMappingDst":0x7000000E0},{"HIDKeyboardModifierMappingSrc":0x7000000E0,"HIDKeyboardModifierMappingDst":0x700000039}]}'' + ]; + RunAtLoad = true; + KeepAlive = false; + Label = "org.nixos.remap-keys"; + StandardErrorPath = "/tmp/remap-keys.err"; + StandardOutPath = "/tmp/remap-keys.out"; + }; + }; +} \ No newline at end of file