Framework 16 Keyboard HHKB Layout via VIA
The Framework Laptop 16 keyboard supports remapping via VIA, but Linux requires udev rules for browser access.
Linux Permissions Fix
VIA communicates with the keyboard over USB HID. Without proper udev rules, you’ll see:
NotAllowedError: Failed to open the device.
Received invalid protocol version from device
Diagnosis
Check for existing rules:
cat /etc/udev/rules.d/*framework* 2>/dev/null
cat /etc/udev/rules.d/*qmk* 2>/dev/null
If empty, create the rules.
Create udev Rules
sudo tee /etc/udev/rules.d/50-framework-keyboard.rules << 'EOF'
# Framework Laptop 16 Keyboard Module - ANSI
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="32ac", ATTRS{idProduct}=="0012", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="32ac", ATTRS{idProduct}=="0012", MODE="0666"
# Framework Laptop 16 Keyboard Module - Bootloader
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="32ac", ATTRS{idProduct}=="0013", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="32ac", ATTRS{idProduct}=="0013", MODE="0666"
EOF
Reload rules:
sudo udevadm control --reload-rules && sudo udevadm trigger
HHKB-Style Layout
The Happy Hacking Keyboard layout optimizes for Unix users:
- Control on Caps Lock position (home row access)
- Backspace closer to home row
- Fn layer for navigation and F-keys

Key remaps on Layer 0:
| Standard Key | HHKB Remap |
|---|---|
| Caps Lock | Left Ctrl |
| Left Ctrl | Caps Lock |
| Left Win | Left Alt |
| Left Alt | Left Win |
| Backspace | \| |
| \| | Backspace |
| Right Alt | Right Win |
| Right Ctrl | Right Alt |
| ~` | Esc |
| Insert (Del) | ~` |
Layer 1 provides F-keys, navigation (Home/End/PgUp/PgDn), and media controls.
Import Configuration
This exact configuration is saved and directly importable:
- Open keyboard.frame.work
- Authorize the keyboard device
- Go to Settings (gear icon) → Load Saved Layout
- Import: framework-keyboard-hhkb.json
Changes save directly to keyboard EEPROM—no software needed after configuration.