← All Projects
KeyLime app icon

KeyLime

v0.5.0

A lightweight keyboard remapping app for macOS. Remap keys, create layers, and use tap-hold gestures — all from the menu bar.

macOSSwiftKeyboard

Requires macOS 14.0 (Sonoma) or later. Free to download.

Screenshots

Features

Key Remapping

Remap any key to any other key. No kernel extensions, no system modifications.

Tap-Hold

Assign different actions for tapping vs holding a key. Turn Caps Lock into Escape on tap, layer switch on hold.

Layers

Define multiple layers of remappings and switch between them dynamically, like a programmable keyboard.

Profiles

Create and switch between different remapping configurations for different workflows.

Visual Editor

Configure mappings through an interactive keyboard UI. No manual config editing needed.

Menu Bar App

Runs quietly in the menu bar with a quick enable/disable toggle. Hot reload when you edit the config file.

Configuration

KeyLime stores its config at ~/.config/keylime/config.json. A default config is created on first run. Here's an example that turns Caps Lock into a dual-purpose key:

{
  "profiles": [
    {
      "name": "Default",
      "settings": {
        "tap_hold_threshold_ms": 200
      },
      "layers": {
        "base": {
          "remaps": {
            "caps_lock": {
              "tap": "escape",
              "hold": null,
              "hold_layer": "nav"
            }
          }
        },
        "nav": {
          "remaps": {
            "h": "left_arrow",
            "j": "down_arrow",
            "k": "up_arrow",
            "l": "right_arrow"
          }
        }
      }
    }
  ]
}

Tap Caps Lock → Escape. Hold Caps Lock → Activate a navigation layer where H/J/K/L become arrow keys.

Getting Started

  1. Download the latest DMG and drag KeyLime to your Applications folder.
  2. Launch KeyLime. It will appear in your menu bar.
  3. Grant Accessibility permission when prompted: System Settings → Privacy & Security → Accessibility → Enable KeyLime
  4. The default config maps Caps Lock to Escape (tap) and a navigation layer (hold). Customize by editing the config or using the visual editor.