Skip to content

4.2 DC22 Tri-mode (work in progress) ​

22-key tri-mode numeric keypad · USB / Bluetooth / 2.4G

Work in progress

The wired (USB) channel is verified on real hardware: enumeration, typing, VIA remapping and saving to flash all work.

The following are not yet verified on hardware, and specs / keymap may still change: Bluetooth (BLE), 2.4G, low power, audio-reactive lighting.

1. Basic specs ​

SpecValueNotes
Keys22Direct GPIO, no matrix, no diodes
Layers40 base / 1 FN / 2 lighting (FN2) / 3 user (empty from factory)
ConnectionTri-mode: USB wired / Bluetooth BLE / 2.4GBluetooth & 2.4G work in progress
MCUCH582M (RISC-V4A, 448K Flash / 32K RAM)In-house firmware (not QMK / ZMK)
PortType-CUSB2 path
C2CSupported
Scan period1 ms5 ms debounce
Polling rateTBD
LatencyTBD
N-Key rolloverSupportedNKRO bitmap report; FN + 7 toggles NKRO / 6KRO
Full keys customizableSupportedVIA online remap, USB channel only
Lighting22 per-switch RGB LEDs, bottom49 effects; audio-reactive needs a PC tool pushing the spectrum
BatteryBuilt-in Li-ion, Type-C chargingBattery measurement not implemented; reports a fixed 100% over BLE
Sleep timeoutTBD
Kit size / weightTBD
Firmware platformIn-house CH582 firmwareNot QMK / ZMK
Source code openWIPRepo is being cleaned up, not public yet

2. Shortcuts ​

Factory defaults. All of them can be changed in VIA (see section 6); changes persist across power loss.

2.1 Base layer ​

Standard numpad: 0~9, ., /, *, -, +, Enter, NumLock, Home, End, PgUp, PgDn, plus one FN key.

2.2 FN layer (hold FN) ​

ShortcutKeycode (VIA)FunctionNotes
FN + 1Mode BT1Switch to Bluetooth profile 1Broadcast name czm_dc22_ble1; LED blinks blue, solid once connected
FN + 2Mode BT2Switch to Bluetooth profile 2Broadcast name czm_dc22_ble2
FN + 3Mode BT3Switch to Bluetooth profile 3Broadcast name czm_dc22_ble3
FN + 4Mode USBBack to USB wiredLED under P4 stays green for 3 s
FN + 5Mode 2G4Switch to 2.4GWork in progress; LED under P5 stays purple for 3 s
FN + 8BT NextNext Bluetooth profileEquivalent to FN + 1/2/3, cycles through
FN + 6BT PairBluetooth re-pairAdvertises for 30 s; any host can pair during that window
FN + 7NKROToggle NKRO / 6KROSaved to flash
FN + 0BatteryReport battery levelWorks over Bluetooth; not implemented over USB
FN + .BootldrEnter bootloader (flashing)
FN + PgUpResetRestore the factory keymap
FN + /Volume -Media keyNot available over Bluetooth / 2.4G
FN + *Volume +Media keyNot available over Bluetooth / 2.4G
FN + -MuteMedia keyNot available over Bluetooth / 2.4G
FN + +Play / pauseMedia keyNot available over Bluetooth / 2.4G
FN + EnterCalculatorMedia keyNot available over Bluetooth / 2.4G
FN + HomePrevious trackMedia keyNot available over Bluetooth / 2.4G
FN + EndNext trackMedia keyNot available over Bluetooth / 2.4G

2.3 FN2 lighting layer (long-press P/) ​

A short press of P/ is divide; holding it for about 0.2 s enters the FN2 layer. The lighting keys deliberately avoid the handiest FN-layer positions P1–P4 — those are reserved for mode switching.

ShortcutKeycode (VIA)Function
Long-press P/ then 1LED +Brightness +
Long-press P/ then 2LED -Brightness -
Long-press P/ then 3LED TogLighting on / off
Long-press P/ then 4LED NextNext effect
Long-press P/ then 0BatteryReport battery level
Long-press P/ then .BootldrEnter bootloader

3. USB / Bluetooth / 2.4G ​

In one sentence: cable plugged in means USB; unplug and it returns to the last Bluetooth profile you used; once you switch manually it won't be pulled back.

3.1 Automatic switching ​

The firmware switches on the VBUS edge — you don't need to press FN + 4 in normal use:

EventBehavior
Plug inSwitches back to USB immediately and remembers the mode
Unplug while on USBReturns to the last used Bluetooth profile; profile 1 if Bluetooth was never used
Unplug while not on USB (2.4G)Stays put
  • You can switch to Bluetooth with the cable plugged in: after pressing FN + 1/2/3 it won't be pulled back to USB.
  • Powering up with the cable plugged in = USB first: you never boot into Bluetooth and have to press FN + 4.
  • VBUS has 20 ms debounce, so plug wobble won't trigger it.

3.2 What happens when switching ​

  • USB and Bluetooth are never connected at the same time. Switching to Bluetooth while plugged in makes the USB keyboard disappear from the host (the keyboard detaches from the bus); switching back re-enumerates.
  • Before switching, the keyboard releases every held key, so you never end up with a stuck repeating key.
  • VIA only works on the USB channel — over Bluetooth / 2.4G the device doesn't exist on the host. Press FN + 4 to return to USB before remapping.

3.3 Status LED ​

There is no dedicated status LED; the per-switch LED under the relevant key is used instead (deliberately dimmed, indication only):

EventLEDPattern
Switched to Bluetooth / not yet connectedUnder the matching number key (FN+1 → the 1 key)Blinks blue until connected (no timeout)
Bluetooth connectedSameSolid for 1.5 s, then back to the effect
Bluetooth droppedSameBack to blinking blue
Back to USBUnder the 4 keySolid green for 3 s
Switched to 2.4GUnder the 5 keySolid purple for 3 s

"Connected" gets its own solid blink on purpose: "stopped blinking" and "the indicator gave up" look identical, so users can't tell from a non-blinking LED whether they are actually connected.

4. Bluetooth ​

4.1 Three pairing slots ​

The keyboard remembers 3 hosts, one per slot. A slot is not "the Nth device you paired" — the three slots are independent:

  • Switching to a slot broadcasts with that slot's name: czm_dc22_ble1 / czm_dc22_ble2 / czm_dc22_ble3;
  • Bonding info is stored in the keyboard (survives power loss), so reconnecting the same computer needs no re-pairing — switching to that slot reconnects automatically;
  • Whichever slot is active shows as connected on that host; the other two show as disconnected.

⚠ Work in progress: switching slots only changes the broadcast name — directed reconnect to a specific host isn't implemented yet, so any already-paired host may connect. Per-slot directed reconnect waits on the "slot ↔ host address" table.

4.2 Pairing a new host ​

  1. Hold FN and press 1 / 2 / 3 to pick a slot — the LED under that number key starts blinking blue;
  2. In your computer's / phone's Bluetooth settings, find czm_dc22_ble1 (or 2 / 3) and connect;
  3. The LED goes solid for 1.5 s and returns to the effect — connected, ready to type.

4.3 Re-pairing ​

FN + 6: the keyboard advertises "anyone can connect" for 30 seconds. Useful for a new computer or when bonding info got messy. If no host connects within 30 s, advertising stops (saves power and keeps the keyboard out of other people's Bluetooth lists).

4.4 Known limitations ​

  • Media keys don't work: volume / playback / calculator do nothing over Bluetooth. The stack's keyboard service has no consumer report; adding it means changing the HID report descriptor, scheduled after the basic channels are verified on hardware.
  • Idle disconnect: Bluetooth disconnects after 60 seconds of idle to save power; any key press reconnects.
  • Never verified on hardware: everything above comes from the firmware code; the first hardware run may still need changes.

5. 2.4G wireless ​

Work in progress. FN + 5 currently only switches the channel and lights the purple LED once — it produces no input; RF transmit and the USB receiver aren't done.

6. Remap with VIA ​

  1. Connect the keyboard to the computer with a Type-C cable and press FN + 4 to make sure you're on the USB channel (VIA only works over USB);
  2. Open usevia.app (or via.micah.vip);
  3. Load this keyboard's JSON, then remap.

Keymaps are stored in the keyboard — they survive power loss and moving to another computer. FN + PgUp restores the factory keymap.

Besides regular keycodes, the VIA picker also offers this keyboard's own functions (VIA names):

VIA nameFunction
Mode USBSwitch to USB wired
Mode BT1 / BT2 / BT3Switch to Bluetooth profile 1 / 2 / 3
BT NextNext Bluetooth profile
BT PairBluetooth re-pair
Mode 2G4Switch to 2.4G (work in progress)
NKROToggle NKRO / 6KRO
BatteryReport battery level
LED Tog / LED + / LED - / LED NextLighting on-off / brightness up-down / next effect
BootldrEnter bootloader
ResetRestore the factory keymap

7. Lighting ​

  • 22 per-switch LEDs, 49 effects; brightness / effect / speed / hue / saturation are all saved across power loss;
  • Effects are switched in the FN2 layer (long-press P/);
  • Audio reactive (listed as Audio Reactive in the effect list) is driven by a spectrum pushed from the PC — there is no microphone on the keyboard, so a PC tool has to run once; USB channel only.

8. Firmware ​

Work in progress: the firmware is being cleaned up and there is no public download yet. For firmware or usage questions, join the QQ group 677654482 (files are shared there).

For common flashing and remapping issues, see the FAQ.

9. Known limitations ​

ItemStatus
USB wired✅ Verified on real hardware (enumeration / typing / VIA / saving)
Bluetooth BLE⚠ Code complete, not verified on hardware; media keys unusable; no per-slot directed reconnect
2.4G⚠ Skeleton; RF transmit and receiver missing
Low power / sleep❌ Not implemented
Battery measurement❌ Not implemented (reports a fixed 100% over BLE)
Audio reactive⚠ Needs a PC tool, not verified on hardware
VIA remap✅ Works over USB; not over Bluetooth / 2.4G

评论 / 提问 (填个昵称就能留言,无需注册;邮箱选填,填了能收到回复通知)

Released under the MIT License.