Live layer tracking
Follows MO, TO, TG, OSL, TT, LT, DF and tap dances by watching the switch matrix, or uses the exact state if the firmware reports it.
A layer HUD for your QMK / VIA / Vial keyboard. An always-on-top overlay that shows which layer your keyboard is on, what every key does on that layer, and how to get to the other layers.
On a keyboard with layers, you keep track of which layer you are on and what each key types. CoCoKey keeps that on screen for you, together with the keys that take you to the other layers.
It reads the keymap straight from the keyboard, so there is nothing to configure: plug in a Vial or VIA keyboard and the HUD draws it.
Follows MO, TO, TG, OSL, TT, LT, DF and tap dances by watching the switch matrix, or uses the exact state if the firmware reports it.
Vial keyboards are drawn from the layout stored in their firmware. VIA keyboards (including ones set up with Remap) use VIA’s public definition catalog, or a definition file you drop on the window.
When you type on an ordinary keyboard, the HUD switches to a standard US or JIS layout and shows Shift and held keys.
Shows what every macro does, on the keys and in a full list. Lists every key on the current layer that changes the layer, including each tap dance gesture (tap / hold / double tap).
Keys that fall through to a lower layer are shown dimmed. Turn on “Highlight pressed keys” to dim the board and light up only the keys you press.
Keyboards that jump to a mouse layer when their built-in trackball or trackpoint moves are followed too: Svalboard, Keyball, cocot, Charybdis / Dilemma, torabo-tsuki and mtk64erp. Where the keyboard ships with the feature off, switch it on for that keyboard in the menu.
CoCoKey tells which keyboard you typed on last. Type on a Vial or VIA keyboard and it shows that keyboard; type on an ordinary keyboard and it switches to a standard US or JIS layout.
Start CoCoKey and connect the keyboard; it is picked up automatically.
| Action | How |
|---|---|
| Move | drag the top bar |
| Resize | drag any edge or corner |
| Preview another layer | click its number in the top bar (click again or press Esc to go back) |
| Rename a layer | double-click the layer name |
| Macro list | “M” button |
| Keep on top | pin button |
| Add a VIA definition | drop the .json file on the window |
| Settings | “⋯” button |
| Light up only the keys you press | “Highlight pressed keys” in the settings or the tray icon menu |
| Open CoCoKey when you sign in to Windows | “Start with Windows” in the settings (off at first) |
| Click-through, pause, reload, quit | tray icon menu |
Opacity is adjustable too.
CoCoKey_0.1.0_x64-setup.exe from the Releases page on GitHub. To remove it, open Settings → Apps in Windows and uninstall CoCoKey.
| Operating system | Windows 10 / 11 (64-bit) |
|---|---|
| Layer tracking | A keyboard running Vial or VIA firmware. Firmware older than QMK 0.19 is supported |
| Vial keyboards | Must be unlocked in Vial (keyboards built with VIAL_INSECURE are always unlocked) |
| Network | Only to download a VIA keyboard’s layout definition |
| Price | Free |
| License | GPL-3.0 (the firmware add-on is GPL-2.0 or later) |
| Latest version | 0.1.0 (released 2026-11-14, 2.3 MB) |
Yes. The layout definition is downloaded from VIA’s public catalog by the keyboard’s USB id. If your keyboard is not in the catalog, drop its VIA JSON file (as distributed for VIA / Remap) onto the window.
While the Vial or VIA desktop app is running, CoCoKey stops talking to the keyboard and reloads the keymap when it closes.
Web configurators (Vial web, VIA web, Remap) cannot be detected. Choose Pause from the tray menu before editing and Reload keymap afterwards.
Unlock the keyboard in Vial. Vial blocks reading the switch matrix while locked.
Layer tracking by key presses is a replay, so combos, key overrides and custom firmware code that change layers are not seen. Use the firmware extension for exact tracking.
No. To tell which keyboard you typed on last, CoCoKey listens to raw keyboard input. It only keeps the set of keys that are held right now; nothing is recorded or saved. Nothing is written to the keyboard.
The only network access is downloading a VIA keyboard’s layout definition from VIA’s public catalog (usevia.app), by the keyboard’s USB id.
Labels assume a US keyboard layout in the operating system.
The source code is on GitHub.
License: GPL-3.0
Copyright © 2026 Pifto Works