id = "karabiner-elements" name = "Karabiner-Elements" homepage = "https://karabiner-elements.pqrs.org" description = "A powerful and stable keyboard customizer for macOS." # The apple-touch-icon from the project's site. icon = "https://karabiner-elements.pqrs.org/favicons/apple-touch-icon-180x180.png" # Karabiner-Elements ships a command line tool, and the Homebrew cask puts it # on the PATH: binary "/Library/Application Support/org.pqrs/Karabiner-Elements/ # bin/karabiner_cli", target "$HOMEBREW_PREFIX/bin/karabiner_cli" # (https://formulae.brew.sh/api/cask/karabiner-elements.json). The docs site has # a "Command line interface" page for it as well. executables = ["karabiner_cli"] platforms = ["macos"] [dotfiles] # https://karabiner-elements.pqrs.org/docs/json/location/ — "File locations": # # ~/.config/karabiner/karabiner.json Main configuration file. # Karabiner-Elements watches this file and reload it automatically when it # is updated. # ~/.config/karabiner/assets/complex_modifications # Imported complex_modifications files. You can use them in # Karabiner-Elements Settings > Complex Modifications > Add predefined rule. # # The path is a literal ~/.config even on macOS: the docs spell it out that way # and the same page explains that Karabiner-Elements watches the parent # directory ~/.config/karabiner with the File System Events API. It is not # [configHome], which would mean it followed $XDG_CONFIG_HOME — nothing in the # documentation says it does. The Homebrew cask's zap list names the same # directory (~/.config/karabiner). paths = [ "~/.config/karabiner/karabiner.json", "~/.config/karabiner/assets/complex_modifications/", ] # The log directory the same page names, ~/.local/share/karabiner/log, is # outside both paths above, so there is nothing to carve out of what is synced. # A key remapper with no accounts: karabiner.json is profiles, simple and # complex modifications, function key mappings and device settings. secret = [] # No machine_lines, deliberately. The one hardware-shaped part of # karabiner.json is profiles[].devices[], whose identifiers are the USB vendor # and product ids of keyboards attached to this Mac — but a user with the same # external keyboard on both machines wants those rules to follow, and the # entries for hardware that is absent are inert rather than harmful. Stripping # them would cost more than it saves, so the file syncs whole.