Skip to content

HyperX Studio 1.0.0

Choose a tag to compare

@Shehtman Shehtman released this 26 Aug 16:53
· 6 commits to main since this release
Initial release: per-key RGB control for HyperX Alloy Origins on Linux

A self-contained alternative to NGENUITY, which is Windows-only. The keyboard
is driven directly over /dev/hidraw, so neither OpenRGB nor any background
service is required. The binary is statically linked and embeds its own
interface: ldd reports "not a dynamic executable".

Why software rendering: OpenRGB exposes this device with a single mode,
Direct. No firmware effects are reachable on Linux, so every animation is
computed here and pushed frame by frame. Nothing is limited by what the
firmware happens to support.

Features:
- 12 effects plus a reactive overlay layer with independent speed, fade
  and colour
- Interactive layout: click, Ctrl-click and rubber-band selection, per-key
  fill, ANSI and ISO variants including the L-shaped ISO Enter
- Global keypress reaction read through evdev without grabbing the device,
  so typing is unaffected
- Settings persist across restarts, written atomically 1.5s after a change,
  so even SIGKILL loses nothing
- English and Russian interface and CLI, switchable at runtime
- Debian package shipping a udev rule; access is granted via the uaccess
  tag, no input group membership needed

Protocol notes:
- A frame is nine 65-byte HID feature reports: one switching the keyboard
  into direct mode, eight carrying colours (16 per packet, 4 bytes each,
  0x81 marker plus RGB)
- The mode switch is sent with every frame. Sending it only once lets the
  keyboard fall back to the scheme stored in its own memory and override
  what the program draws
- A frame has 126 positions but only 107 LEDs; the 19 absent positions must
  still receive zeroes or the layout shifts onto neighbouring keys
- The device is located by USB identifiers and interface 00, never by path:
  the /dev/hidrawN number changes on replug. Failed writes trigger an
  automatic reopen
- Keypresses are stamped in the same clock as frames; mixing an absolute
  clock with time-since-start drives hit ages negative, which silently
  breaks ripple and flash

Tests cover frame slot expansion, LED and evdev bindings, reactive timing,
settings persistence and translation completeness. None of them need the
hardware.

Hardware knowledge comes from OpenRGB (GPLv2); this is an independent
implementation and contains none of its source. Licensed under MIT.