Karabiner-Elements is a powerful tool for customizing keyboards on macOS
  • C++ 77.2%
  • Swift 18.1%
  • C 2.2%
  • Makefile 1.1%
  • Shell 0.7%
  • Other 0.6%
Find a file
Takayama Fumihiko e577e49ab2
Version 15.9.16
2026-02-18 08:37:51 +09:00
.github Apply prettier 2026-01-27 23:21:11 +09:00
.vscode src/core/grabber -> src/core/CoreService 2025-11-08 19:18:00 +09:00
appendix c++20 -> c++23 2026-02-09 22:47:59 +09:00
files karabiner_grabber -> Karabiner-Core-Service in DEVELOPMENT.md 2025-11-08 22:39:08 +09:00
pkginfo Make tmp directory before creating karabiner_machine_identifier.json 2025-11-24 14:49:12 +09:00
scripts Use trap in scripts/codesign.sh 2024-05-26 21:27:25 +09:00
src Set send_buffer_size in send_user_command_handler 2026-02-17 22:46:09 +09:00
tests Made the endpoint in send_user_command optional 2026-02-15 21:09:21 +09:00
tools/clean-launch-services-database socket_command -> send_user_command 2026-02-15 19:07:00 +09:00
vendor Update vendor/Karabiner-DriverKit-VirtualHIDDevice (6.10.0) 2026-02-09 22:47:34 +09:00
.clang-format add IndentCaseLabels: true 2017-04-22 00:03:35 +09:00
.editorconfig Add *.py to .editorconfig 2023-07-30 07:11:42 +09:00
.gitignore Add notification_message_file_path to notification_message_manager constructor arguments 2021-03-11 11:48:59 +09:00
.gitmodules Move duktape and Karabiner-DriverKit-VirtualHIDDevice to vendor from src/vendor 2025-05-26 09:06:27 +09:00
.markdownlint.json Format markdown files 2026-01-18 21:23:38 +09:00
.prettierrc.json Add event_definition::type::from_event 2026-02-10 21:37:15 +09:00
.swiftlint.yml Add StickContinuedMovementIntervalMillisecondsView 2024-01-21 22:23:56 +09:00
DEVELOPMENT.md Format markdown files 2026-01-18 21:23:38 +09:00
LICENSE.md Format markdown files 2026-01-18 21:23:38 +09:00
make-package.sh src/core/grabber -> src/core/CoreService 2025-11-08 19:18:00 +09:00
Makefile Add make notarized-dmg 2026-01-18 16:21:58 +09:00
NEWS.md Update NEWS 2026-02-15 22:50:38 +09:00
README.md Format markdown files 2026-01-18 21:23:38 +09:00
SECURITY.md Format markdown files 2026-01-18 21:23:38 +09:00
TASKS.md Format markdown files 2026-01-18 21:23:38 +09:00
version Version 15.9.16 2026-02-18 08:37:51 +09:00

Build Status License

Karabiner-Elements

Karabiner-Elements is a powerful key remapper for macOS.

Download

You can download Karabiner-Elements from the official site.

Alternatively, for users of homebrew, Karabiner-Elements may be installed with brew install --cask karabiner-elements.

Old releases

You can download previous versions of Karabiner-Elements from Release notes.

Supported systems

  • macOS 26 Tahoe
    • Both Intel-based Macs and Apple Silicon Macs
  • macOS 15 Sequoia
    • Both Intel-based Macs and Apple Silicon Macs
  • macOS 14 Sonoma
    • Both Intel-based Macs and Apple Silicon Macs
  • macOS 13 Ventura
    • Both Intel-based Macs and Apple Silicon Macs

Usage

Documentation can be found here: https://karabiner-elements.pqrs.org/docs/

Donations

If you would like to contribute financially to the development of Karabiner-Elements, donations can be made via https://karabiner-elements.pqrs.org/docs/pricing/


For developers

How to build

System requirements to build Karabiner-Elements:

  • macOS 15+
  • Xcode 26+
  • Command Line Tools for Xcode (xcode-select --install)
  • xz (brew install xz)
  • XcodeGen (brew install xcodegen)
  • CMake (brew install cmake)

Steps

  1. Get source code by executing the following command in Terminal.app.

    git clone --depth 1 https://github.com/pqrs-org/Karabiner-Elements.git
    cd Karabiner-Elements
    git submodule update --init --recursive --depth 1
    
  2. (Optional) If you have a codesign identity:

    1. Find your codesign identity.

      security find-identity -p codesigning -v | grep 'Developer ID Application'
      

      The result is as follows.

      1) 8D660191481C98F5C56630847A6C39D95C166F22 "Developer ID Application: Fumihiko Takayama (G43BCU2T37)"
      

      Your codesign identity is 8D660191481C98F5C56630847A6C39D95C166F22 in the above case.

    2. Set environment variable to use your codesign identity.

      export PQRS_ORG_CODE_SIGN_IDENTITY=8D660191481C98F5C56630847A6C39D95C166F22
      
    3. Find your codesign identity for installer signing.

      security find-identity -p basic -v | grep 'Developer ID Installer'
      

      The result is as follows.

      1) C86BB5F7830071C7B0B07D168A9A9375CC2D02C5 "Developer ID Installer: Fumihiko Takayama (G43BCU2T37)"
      

      Your codesign identity is C86BB5F7830071C7B0B07D168A9A9375CC2D02C5 in the above case.

    4. Set environment variable to use your codesign identity for installer signing.

      export PQRS_ORG_INSTALLER_CODE_SIGN_IDENTITY=C86BB5F7830071C7B0B07D168A9A9375CC2D02C5
      
  3. Build a package by executing the following command in Terminal.app.

    make package
    

    The make script will create a redistributable Karabiner-Elements-VERSION.dmg in the current directory.

Note about pre-built binaries in the source tree

Karabiner-Elements uses some pre-built binaries in the source tree.

  • vendor/Karabiner-DriverKit-VirtualHIDDevice/dist/Karabiner-DriverKit-VirtualHIDDevice-*.pkg (the latest one)
  • Sparkle.framework in src/apps/SettingsWindow/

The above make package command does not rebuild these binaries.
(These binaries will be copied in the distributed package.)

If you want to rebuild these binaries, you have to build them manually.
Please follow the instruction of these projects.