From 3d5883898ff9f47c273b1f95fc6441c0afdc195b Mon Sep 17 00:00:00 2001 From: Yan Lin Date: Tue, 9 Sep 2025 22:00:05 +0200 Subject: [PATCH] Add key remap for macos --- hosts/darwin/system-default.nix | 1 + modules/keyboard.nix | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 modules/keyboard.nix 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