Kyles Sofle
Published: 3 October 2026
This is my Eyelash Sofle, a wireless split keyboard with a knob on the left half, a joystick on the right and a nice!view screen on each. I wrote its ZMK config and the code behind both screens.
The screens
The left screen shows the batteries, layer, Bluetooth slots and held modifiers, and a clock. An app on my Mac fills the rest with Claude Code’s usage limits and the latest GitHub Actions result for the three repos I’ve used Claude Code in most recently. From half an hour before a meeting, the meeting takes the repos’ place. The right screen shows the keys on whichever layer I’m holding.

macOS lets any app send a keyboard the same report that sets Caps Lock and Num Lock, so the app sends its data through the lights macOS doesn’t use, two bits at a time with a checksum. Windows blocks that, so the Windows version, in Rust, writes to a second HID interface on the left half instead.
Tetris
Hold SYSTEM and tap T, and the right screen plays Tetris with the joystick. The best score survives restarts.