K811 Macropad - EV Test Events (Ubuntu Linux)

April 17, 2026 · View on GitHub

alt text

The K811 is a hot-swappable mechanical keyboard sold on Aliexpress. As it has a joystick and a thumbwheel, it is ideal as a simple but effective PTZ controller (camera shortcuts can be mapped onto keys or side buttons).

Driver Download: K811 Driver (ZIP)
User Manual: K811 User Manual (PDF)

These are the button events as captured with evtest on Ubuntu 25.04 on September 7, 2025, and re-verified on Ubuntu 25.10 in April 2026 — every mapping below was unchanged between captures, so the firmware defaults appear stable across hosts and over time.

Identifying the device

On Linux the K811 enumerates as a composite HID device under VID:PID 5566:000a, advertising itself as "YJS MicroChip Mechanical Keyboard" (YJS MicroChip is the HID chipset supplier, not the device brand). Detect it with:

lsusb | grep 5566:000a

Stable device paths

Event-node numbers (/dev/input/eventN) are not stable across reboots or hosts. Use the /dev/input/by-id/ symlinks instead — these resolve by device serial and interface and remain stable:

Role in this documentStable path
Main keys + joystick (event0 below)/dev/input/by-id/usb-YJS_MicroChip_Mechanical_Keyboard_*-event-kbd
Side / knob / media keys (event1 below)/dev/input/by-id/usb-YJS_MicroChip_Mechanical_Keyboard_*-event-if01
Mouse wheel (event2 below)/dev/input/by-id/usb-YJS_MicroChip_Mechanical_Keyboard_*-if01-event-mouse

(The * is the device's per-unit serial, e.g. 5B3A101561Z2.)

Key behaviour gotcha — the joystick

The joystick is the single most counter-intuitive thing about this device. Even though:

  • the product listing describes it as a "game joystick which allows the computer cursor to move", and
  • the mouse HID interface advertises REL_X and REL_Y capabilities in its evtest capability dump,

the default firmware mapping does not use either of those. Pushing the joystick emits plain arrow keys (KEY_UP, KEY_DOWN, KEY_LEFT, KEY_RIGHT) on the keyboard interface (event0 / -event-kbd), with standard keyboard autorepeat while held.

Practical consequences:

  • You can bind the joystick like any arrow-key input. No joystick/gamepad library needed, no mouse-cursor behaviour to suppress.
  • If you want cursor-like behaviour (REL_X / REL_Y) you would need to reflash the mapping via the vendor Windows config tool — default firmware will not produce it.
  • On a running desktop session the joystick will move text cursors, scroll lists, and interact with anything keyboard-focused unless you exclusively grab -event-kbd (which would also kill the 19 keypad keys, so rarely what you want).

Input Areas

alt text

Event Type Legend

  • EV_KEY: Keyboard and button press events (type 1)
  • EV_REL: Relative movement events like mouse wheel (type 2)
  • EV_MSC: Miscellaneous events including scan codes (type 4)

Use As PTZ Controller:

alt text

Notes

  • Each key press generates both press (value 1) and release (value 0) events
  • Mouse wheel events include both standard resolution (REL_WHEEL) and high resolution (REL_WHEEL_HI_RES) data
  • Scan codes are hardware-specific identifiers for each key
  • Key codes are Linux input subsystem standard codes (Ubuntu Linux)

Main Keys

Event 0 — /dev/input/by-id/usb-YJS_MicroChip_Mechanical_Keyboard_*-event-kbd

Joystick

Event 0 — same interface as the main keys. Emits arrow keys, not mouse movement or joystick axes. See "Key behaviour gotcha" above.

Mouse Wheel

Event 2 — /dev/input/by-id/usb-YJS_MicroChip_Mechanical_Keyboard_*-if01-event-mouse

Side Controls

Event 1 — /dev/input/by-id/usb-YJS_MicroChip_Mechanical_Keyboard_*-event-if01


Event Summary Table

Event DeviceKey/ControlKey CodeScan CodeEvent TypeDescription
event0 (Main Keys)ESC170029EV_KEYEscape key
event0W177001aEV_KEYLetter W
event0E1870008EV_KEYLetter E
event0R1970015EV_KEYLetter R
event0T2070017EV_KEYLetter T
event0DELETE1117004cEV_KEYDelete key
event0TAB157002bEV_KEYTab key
event0A3070004EV_KEYLetter A
event0S3170016EV_KEYLetter S
event0D3270007EV_KEYLetter D
event0ENTER2870028EV_KEYEnter/Return key
event0LEFT SHIFT42700e1EV_KEYLeft Shift modifier
event0Z447001dEV_KEYLetter Z
event0X457001bEV_KEYLetter X
event0C4670006EV_KEYLetter C
event0LEFT CTRL29700e0EV_KEYLeft Control modifier
event0LEFT ALT56700e2EV_KEYLeft Alt modifier
event0SPACE577002cEV_KEYSpacebar
event0KEYPAD DOT8370063EV_KEYNumeric keypad dot/period
event0 (Joystick)RIGHT ARROW1067004fEV_KEYRight arrow/directional key
event0LEFT ARROW10570050EV_KEYLeft arrow/directional key
event0UP ARROW10370052EV_KEYUp arrow/directional key
event0DOWN ARROW10870051EV_KEYDown arrow/directional key
event1 (Side Keys)VOLUME UP115c00e9EV_KEYVolume increase button
event1VOLUME DOWN114c00eaEV_KEYVolume decrease button
event1PREVIOUS SONG165c00b6EV_KEYMedia previous track
event1NEXT SONG163c00b5EV_KEYMedia next track
event1PLAY/PAUSE164c00cdEV_KEYMedia play/pause toggle
event2 (Mouse Wheel)WHEEL UP--EV_RELMouse wheel scroll up (REL_WHEEL value: 1)
event2WHEEL DOWN--EV_RELMouse wheel scroll down (REL_WHEEL value: -1)