Keychron Q60 · 3434:01C0 · QMK / VIA

Q60 HHKB

Your Q60 is set up like an HHKB Professional. This page covers what Fn does, the extra lighting layer, and how to back up or change the layout.

The board at a glance

Black legend: what the key types normally. Blue legend: what it types while you hold the outlined keys. A key with no blue legend types as normal.

Fn functions

Arrows and paging

Fn [
Up
Fn /
Down
Fn ;
Left
Fn '
Right
Fn K
Home
Fn ,
End
Fn L
Page Up
Fn .
Page Down

Editing

BS
Backspace
Fn BS
Delete (forward)
Fn `
Delete (forward)
Fn \
Insert
Fn Tab
Caps Lock

Function row

Fn 1 … 0
F1 to F10
Fn -
F11
Fn =
F12

Media

Fn A
Volume down
Fn S
Volume up
Fn D
Mute
Fn F
Eject (macOS)

Numpad

Fn H
Numpad *
Fn J
Numpad /
Fn N
Numpad +
Fn M
Numpad −
Fn Enter
Numpad Enter

System

Fn I
Print Screen
Fn O
Scroll Lock
Fn P
Pause
Fn Esc
Power (your OS may show a shutdown prompt)

Lighting and NKRO

A real HHKB has no backlight, so Keychron's lighting controls live on a layer of their own. Hold Fn, then also hold Right Shift, then tap the key.

Turn up

Tab
Backlight on / off
Q
Next effect
W
Brighter
E
Hue forward
R
More saturation
T
Faster effect

Turn down

A
Previous effect
S
Dimmer
D
Hue back
F
Less saturation
G
Slower effect

Other

N
NKRO on / off (lets every key register at once)

Mac / Windows switch

The slide switch on the side of the board picks which base layer is active. Both use the HHKB bottom row, Alt ◇ Space ◇ Alt; only what ◇ and Alt send changes.

Mac position (layer 0)

Option Cmd Space Cmd Option

Windows position (layer 1)

Alt Win Space Win Alt

Backing up and changing the layout

The layout lives in the keyboard's memory, so it works on any computer without software. To change it, use hhkb_q60.py from the Q60_HHKB repo, or VIA. Either one first needs permission to talk to the keyboard.

Allow access (do this first)

Linux only lets root write to the keyboard's settings interface. This udev rule gives your user access every time the board is plugged in, and lets VIA in Chrome connect too:

echo 'KERNEL=="hidraw*", ATTRS{idVendor}=="3434", ATTRS{idProduct}=="01c0", MODE="0660", TAG+="uaccess"' \
  | sudo tee /etc/udev/rules.d/99-keychron-q60.rules
sudo udevadm control --reload && sudo udevadm trigger

Quick one-off alternative, lost on every replug or reboot: sudo chmod a+rw /dev/hidraw9 (the number can vary).

Save a backup

Writes every layer to a timestamped JSON file in the current folder.

cd Q60_HHKB
python3 hhkb_q60.py backup

Restore a backup

Every apply saves a backup first, so to undo it, restore the backup that run made. Backups are never overwritten.

python3 hhkb_q60.py restore q60_backup_<timestamp>.json

Apply the HHKB layout again

Saves a backup first, then writes the layout and reads it back to confirm.

python3 hhkb_q60.py apply

Edit single keys in VIA

Open usevia.app in Chrome or Chromium, click Authorize device and pick the Q60. Layers 0 to 3 in VIA match this page: 0 Mac, 1 Windows, 2 Fn, 3 Fn + Right Shift. Changes save to the board as soon as you make them.