# Capslock goes native

> Capslock started as a Karabiner-Elements configuration. It is now a native Mac app that keeps the same layout and adds an editor, app rules, lessons, and a way to always get Caps Lock back.

---

LLMS index: [llms.txt](/llms.txt)

---

For years Capslock was a configuration file. You installed Karabiner-Elements,
imported a set of rules, and Caps Lock became Escape on a tap and a Hyper key
on a hold. With Command, Option, Control and Shift it reached sixteen planes
of shortcuts for the cursor, editing, windows, apps and the mouse.

That worked, and it kept two costs. Karabiner-Elements had to be installed,
with its driver and its permissions, just to change one key. And the layout
was a JSON file: to change a binding you edited that file, and to learn the
layout you kept a picture of the keyboard open.

The new Capslock is a native macOS app. It is built for the same layout, and
for removing those two costs.

## The same layout, nothing to install around it {#layout}

Capslock ships the complete Capslock Classic layout: 357 bindings, from
`⇪ H J K L` for the arrows to five extra clipboards on the number row. Every
rule of the last Karabiner version has a native counterpart, and none was
dropped. App launches, sleep, and the clipboard slots used to be shell
commands; they are now built-in actions, so the default layout runs no
scripts at all.

The app needs one permission, Accessibility. It installs no kernel extension,
driver, daemon, or privileged helper. See
[How Capslock works](/blog/post/how-capslock-works/) for how that is possible.

## An editor instead of a JSON file {#editor}

The Keyboard page draws your keyboard with every action on its key. Click a
key to rebind it, disable it, put back the Classic default, or see its YAML.
A mapping can carry app rules, so `⇪ N` can delete a word everywhere and send
⌃W in Terminal. Every change is applied as one transaction, and the
configuration is still a plain YAML file you can export, import, and keep in
version control.

Shell commands remain possible and need your approval before they run. A
command that arrives in an imported file is switched off until you review it.

## Learning built in {#learning}

Hold Caps Lock and wait, and the current plane appears on screen. The
Playground has short lessons that follow your own mappings, a Safe Practice
mode that previews actions with side effects instead of running them, and a
Free Play view that shows what the last key did without recording what you
type.

## Always a way back {#recovery}

A tool that owns your Caps Lock key has to give it back reliably. Capslock
changes only the one key mapping it adds, restores it on Pause and Quit, and
leaves other tools' mappings alone. A small helper restores it after a crash.
If Karabiner-Elements or another tool already uses Caps Lock, Capslock does not
start, and Diagnostics says what to change.

## Two ways to be Hyper {#hyper}

The Karabiner layout made Caps Lock look like ⌃⌥⇧⌘ to every app, and many
people built Alfred, Raycast or Moom shortcuts on that. Capslock keeps it as
**Classic** mode, the default. **Native** mode keeps Hyper private to
Capslock, for those who would rather other apps never saw it.

## Where it stands {#status}

Capslock 0.4.0 is a release candidate. The download goes up once it is
Developer ID signed, notarized, tested on a clean account and on Intel and
macOS 14, and its update feed is verified. Until then the
[documentation](/docs/) describes the app as it will ship, and the
[Download](/download/) page has its status.

The Karabiner-Elements configuration stays available, free, as the
[Karabiner Edition](/docs/karabiner/).
