nixos/hosts/macbook/hotkeys.nix

102 lines
5.1 KiB
Nix
Raw Normal View History

# This Nix expression defines a set of Apple Symbolic HotKeys to disable.
# (Thank you!) Definitions sourced from: https://github.com/andyjakubowski/dotfiles/blob/main/AppleSymbolicHotKeys%20Mapping
{ lib, ... }:
let
# some "Sensible" enums for AppleSymbolicHotKeys IDs based on their function.
hotkeyEnums = {
moveFocusToMenuBar = 7; # Control-fn-F2
moveFocusToDock = 8; # Control-fn-F3
moveFocusToActiveOrNextWindow = 9; # Control-fn-F4
moveFocusToWindowToolbar = 10; # Control-fn-F5
moveFocusToFloatingWindow = 11; # Control-fn-F6
turnKeyboardAccessOnOrOff = 12; # Control-fn-F1
changeWayTabMovesFocus = 13; # Control-fn-F7
moveFocusToNextWindow = 27; # Command-`
saveScreenToFile = 28; # Shift-Command-3
copyScreenToClipboard = 29; # Control-Shift-Command-3
saveSelectionToFile = 30; # Shift-Command-4
copySelectionToClipboard = 31; # Control-Shift-Command-4
missionControl = 32; # Control-UpArrow (standard key combination)
missionControlDedicatedKey = 34; # Control-UpArrow (often for a dedicated key like F3, params differ)
applicationWindows = 35; # Control-DownArrow
showDesktop = 36; # fn-F11 (standard key combination)
showDesktopDedicatedKey = 37; # fn-F11 (often for a dedicated key, params differ)
moveFocusToWindowDrawer = 51; # Option-Command-'
turnDockHidingOnOff = 52; # Option-Command-D
decreaseDisplayBrightness = 53; # fn-F14 (standard key combination)
increaseDisplayBrightness = 54; # fn-F15 (standard key combination)
decreaseDisplayBrightnessDedicatedKey = 55; # fn-F14 (dedicated key, params differ)
increaseDisplayBrightnessDedicatedKey = 56; # fn-F15 (dedicated key, params differ)
moveFocusToStatusMenus = 57; # Control-fn-F8
selectPreviousInputSource = 60; # Control-Space bar (if multiple inputs)
showSpotlightSearch = 64; # Command-Space bar
moveLeftASpace = 79; # Control-LeftArrow (standard key combination)
moveLeftASpaceDedicatedKey = 80; # Control-LeftArrow (dedicated key, params differ)
moveRightASpace = 81; # Control-RightArrow (standard key combination)
moveRightASpaceDedicatedKey = 82; # Control-RightArrow (dedicated key, params differ)
switchToDesktop1 = 118; # Control-1
switchToDesktop2 = 119; # Control-2
switchToDesktop3 = 120; # Control-3
switchToDesktop4 = 121; # Control-4
switchToDesktop5 = 122; # Control-5
switchToDesktop6 = 123; # Control-6
switchToDesktop7 = 124; # Control-7
switchToDesktop8 = 125; # Control-8
switchToDesktop9 = 126; # Control-9
showLaunchpad = 160; # None (default is disabled)
showNotificationCenter = 163; # None (default is disabled)
turnDoNotDisturbOnOff = 175; # None (default is disabled)
saveTouchBarToFile = 181; # Shift-Command-6 (Touch Bar specific)
copyTouchBarToClipboard = 182; # Control-Shift-Command-6 (Touch Bar specific)
screenshotAndRecordingOptions = 184; # Shift-Command-5
};
# Define which hotkeys you want to disable
# If you want to disable all hotkeys, you can use the `hotkeyEnums` directly
# If you want to keep some hotkeys enabled, simply comment them out or remove them from the following list.
disableHotKeys = with hotkeyEnums; [
showSpotlightSearch
];
enabledHotKeys = with hotkeyEnums; [
moveLeftASpace
moveRightASpace
switchToDesktop1
switchToDesktop2
switchToDesktop3
switchToDesktop4
switchToDesktop5
switchToDesktop6
switchToDesktop7
switchToDesktop8
switchToDesktop9
];
uniqueSortedHotkeyIntegerIdsToDisable = lib.sort lib.lessThan disableHotKeys;
uniqueSortedHotkeyIntegerIdsToEnable = lib.sort lib.lessThan enabledHotKeys;
# Construct the target attribute set for the AppleSymbolicHotKeys dictionary.
disabledSymbolicHotKeys = lib.listToAttrs (
map (id: {
name = builtins.toString id; # Hotkey ID as a string key
value = { enabled = false; };
}) uniqueSortedHotkeyIntegerIdsToDisable
);
enabledSymbolicHotKeys = lib.listToAttrs (
map (id: {
name = builtins.toString id; # Hotkey ID as a string key
value = { enabled = true; };
}) uniqueSortedHotkeyIntegerIdsToEnable
);
symbolicHotkeys = disabledSymbolicHotKeys // enabledSymbolicHotKeys;
in
{
system.defaults.CustomUserPreferences = {
"com.apple.symbolichotkeys" = {
AppleSymbolicHotKeys = symbolicHotkeys;
};
};
}