Published on

Keychron K6 Setup Guide for Mac with Karabiner

Authors

Keychron K6 Setup Guide for Mac with Karabiner

I recently switched from an 80-key Mac keyboard to the Keychron K6 65% (68 keys) mechanical keyboard. The compact form factor is great for desk space, but there's a learning curveβ€”especially for programmers who use backtick and tilde frequently. This guide documents my setup and the solutions I found.

The Problem πŸ€”

On the K6, there's no dedicated backtick/tilde key. Instead, you need to press:

  • fn1 + ESC for backtick (`)
  • fn2 + ESC for tilde (~)

This is handled at the keyboard firmware level, meaning Karabiner-Elements cannot intercept these combinations. The keyboard sends the character directly to macOS before any software can remap it.

For developers who write markdown, use terminal paths (~/Documents), or switch windows (Cmd + ~), this is painful.

The Solution πŸ’‘

The workaround is to:

  1. Remap the physical ESC key to make ESC work as is without any extra click
  2. Shift ESC is mapped to ~
  3. Option ESC is mapped to `

This way you get single-key access to ESC, backtick and tilde.

Karabiner-Elements Setup βš™οΈ

Karabiner-Elements is an open-source keyboard customizer for macOS. Install it via brew:

brew install --cask karabiner-elements

Device Identification

Your K6 may appear as different devices depending on connection mode (Bluetooth vs Wired). My configuration uses:

DeviceVendor IDProduct ID
K6 (Complex Mods)1452591
K6 (Simple Mods)133644451

You can find your device IDs in Karabiner-Elements β†’ Devices tab.

Simple Modifications

These are applied only to the K6, not to MacBook's internal keyboard. Open Karabiner-Elements β†’ Simple Modifications β†’ Select your K6 device.

From KeyTo KeyPurpose
homedelete_forwardHome key acts as Forward Delete
page_uphomePage Up becomes Home
page_downendPage Down becomes End

Complex Modifications

These give you quick access to backtick, tilde, and window switching using modifier + ESC combinations:

ShortcutOutputUse Case
Option + ESC` (backtick)Markdown code blocks, terminal
Shift + ESC~ (tilde)Home directory paths
Cmd + ESCCmd + ~Switch windows within same app

Final Key Behavior

After applying the configuration:

Physical KeyTapWith OptionWith Shift
ESCESC`~
HomeForward Deleteβ€”β€”
Page UpHomeβ€”β€”
Page DownEndβ€”β€”

Complete Karabiner Configuration πŸ“‹

Save this as ~/.config/karabiner/karabiner.json:

{
    "global": { "show_in_menu_bar": false },
    "profiles": [
        {
            "complex_modifications": {
                "rules": [
                    {
                        "description": "Shift + Esc to Tilde (~)",
                        "manipulators": [
                            {
                                "type": "basic",
                                "from": {
                                    "key_code": "escape",
                                    "modifiers": { "mandatory": ["shift"] }
                                },
                                "to": [
                                    {
                                        "key_code": "grave_accent_and_tilde",
                                        "modifiers": ["shift"]
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        "description": "Option + Esc to Backtick (`)",
                        "manipulators": [
                            {
                                "type": "basic",
                                "from": {
                                    "key_code": "escape",
                                    "modifiers": { "mandatory": ["option"] }
                                },
                                "to": [
                                    { "key_code": "grave_accent_and_tilde" }
                                ]
                            }
                        ]
                    },
                    {
                        "description": "Command + Esc to Command + Tilde (Window Switcher)",
                        "manipulators": [
                            {
                                "type": "basic",
                                "from": {
                                    "key_code": "escape",
                                    "modifiers": { "mandatory": ["command"] }
                                },
                                "to": [
                                    {
                                        "key_code": "grave_accent_and_tilde",
                                        "modifiers": ["command"]
                                    }
                                ]
                            }
                        ]
                    }
                ]
            },
            "devices": [
                {
                    "identifiers": {
                        "is_keyboard": true,
                        "is_pointing_device": true,
                        "product_id": 4451,
                        "vendor_id": 13364
                    },
                    "ignore": false,
                    "simple_modifications": [
                        {
                            "from": { "key_code": "home" },
                            "to": [{ "key_code": "delete_forward" }]
                        },
                        {
                            "from": { "key_code": "page_up" },
                            "to": [{ "key_code": "home" }]
                        },
                        {
                            "from": { "key_code": "page_down" },
                            "to": [{ "key_code": "end" }]
                        }
                    ]
                }
            ],
            "name": "Default",
            "selected": true,
            "virtual_hid_keyboard": {
                "country_code": 0,
                "keyboard_type_v2": "ansi"
            }
        }
    ]
}

K6 Hardware Shortcuts 🎹

These are built into the keyboard firmware and work regardless of Karabiner configuration.

Bluetooth

The K6 supports up to 3 Bluetooth devices. Make sure the side toggle is set to Bluetooth (not Cable).

ComboFunction
fn1 + QSwitch to Bluetooth device 1
fn1 + WSwitch to Bluetooth device 2
fn1 + ESwitch to Bluetooth device 3
fn1 + Q/W/E (hold 4s)Pair new device to slot 1/2/3

Pairing a New Device

  1. Select an empty slot β€” short press fn1 + Q/W/E to check (LED blinks slowly = empty/disconnected)
  2. Enter pairing mode β€” hold fn1 + Q/W/E for 4 seconds (LED blinks rapidly)
  3. Pair from your device β€” look for "Keychron K6" in Bluetooth settings

The LED will blink rapidly for ~3 minutes while discoverable. If pairing fails, forget the device from your computer's Bluetooth settings and try again.

Media & Volume

ComboFunction
fn1 + -Volume down
fn1 + =Volume up
fn1 + [Previous track
fn1 + ]Next track
fn1 + \Play/Pause

Function Keys

ComboFunction
fn1 + 1 through 0F1 – F10
fn1 + -F11
fn1 + =F12

Backlight

ComboFunction
Light keyCycle RGB effects
fn1 + Light keyToggle backlight on/off
fn1 + ←Decrease brightness
fn1 + β†’Increase brightness
fn1 + L + Light key (4s)Lock/unlock light effect

System

ComboFunction
fn1 + S + O (4s)Disable auto-sleep mode
fn1 + J + Z (4s)Factory reset (clears all Bluetooth pairings)
fn1 + K + R (4s)Switch function key layout

Backup & Restore πŸ’Ύ

Backup Command

cp ~/.config/karabiner/karabiner.json ~/Desktop/karabiner-backup-$(date +%Y%m%d).json

Restore Command

cp ~/Desktop/karabiner-backup-YYYYMMDD.json ~/.config/karabiner/karabiner.json

Karabiner automatically detects changes and reloads the configuration.

Sync Across Machines

Store karabiner.json in a synced folder and symlink it:

# Move to iCloud
mv ~/.config/karabiner/karabiner.json ~/Library/Mobile\ Documents/com~apple~CloudDocs/karabiner.json

# Create symlink
ln -s ~/Library/Mobile\ Documents/com~apple~CloudDocs/karabiner.json ~/.config/karabiner/karabiner.json

Things to Remember πŸ“

  1. Physical ESC works as it is β€” no need anything else
  2. Shift + ESC for tilde β€” quick access to ~ for terminal paths
  3. Option + ESC for backtick β€” quick access to ` for markdown code block
  4. Cmd + ESC for window switching β€” replaces the standard Cmd + ~
  5. Page Up/Down remapped β€” now act as Home/End for line navigation
  6. Home is Forward Delete β€” useful for deleting text ahead of cursor
  7. Config is device-specific β€” MacBook keyboard is unaffected
  8. fn1 and fn2 cannot be remapped β€” they're hardware-level keys
  9. Bluetooth vs Wired β€” may appear as different devices in Karabiner; configure both if needed
  10. Menu bar icon hidden β€” access Karabiner via Spotlight (Cmd + Space β†’ "Karabiner")

Troubleshooting πŸ”§

Keyboard not appearing in Bluetooth

  1. Ensure side toggle is on Bluetooth, not Cable
  2. Press any key to wake the keyboard
  3. Hold fn1 + Q/W/E for 4 seconds to enter pairing mode (LED blinks rapidly)
  4. If still not working, factory reset with fn1 + J + Z (hold 4s)

Karabiner remaps not working

  1. Check that the correct device is selected in Simple Modifications
  2. Verify device IDs match your keyboard (Devices tab)
  3. Try disconnecting and reconnecting the keyboard

ESC key remaps not applying

The fn1 + ESC and fn2 + ESC combinations are processed by the keyboard firmware before reaching macOS. Karabiner cannot intercept them. Use the workarounds described above.

References