From 5b7bf9dadd554d93b925b97d153c37a313b603a0 Mon Sep 17 00:00:00 2001
From: Mohamed Mahjoub <75433420+Probler-Yt@users.noreply.github.com>
Date: Fri, 11 Sep 2026 21:08:24 +0100
Subject: [PATCH] Add files via upload
---
README.md | 83 +++++++++++++++++++++++++++--------
docs/images/flat-view.png | Bin 248693 -> 250949 bytes
docs/images/hero.png | Bin 244529 -> 246488 bytes
docs/images/permission.png | Bin 310542 -> 312474 bytes
docs/images/step-media.png | Bin 275639 -> 277496 bytes
docs/images/step-nothing.png | Bin 0 -> 248820 bytes
docs/images/step-pending.png | Bin 246926 -> 249916 bytes
docs/images/step-record.png | Bin 296603 -> 299541 bytes
docs/images/step-type.png | Bin 274718 -> 277367 bytes
docs/images/step-written.png | Bin 239008 -> 241745 bytes
docs/images/unsupported.png | Bin 356448 -> 378030 bytes
docs/make_screenshots.py | 15 ++++++-
install.sh | 4 +-
macropad_gui/app.py | 35 ++++++++++++---
macropad_gui/core.py | 36 ++++++++++++---
macropad_gui/padview.py | 6 ++-
tests/test_core.py | 21 +++++++++
17 files changed, 164 insertions(+), 36 deletions(-)
create mode 100644 docs/images/step-nothing.png
diff --git a/README.md b/README.md
index 0d1168f..151ddec 100644
--- a/README.md
+++ b/README.md
@@ -45,11 +45,15 @@
I left Windows.
-It went fine. Games ran. My editor ran. Everything I cared about had a Linux version or a good replacement. Then I picked up the little AliExpress macro pad on my desk, the one with twelve keys and two knobs, and realised the only way to change what its keys do was a Windows program called `MINI_KEYBOARD.exe` that looks like it was designed during a power cut.
+It went fine. Games ran. My editor ran. Everything I cared about had a Linux version or a good replacement. Then I picked up the little AliExpress macro pad on my desk, the one with twelve keys and two knobs, and remembered that the software it came with is a Windows program called `MINI_KEYBOARD.exe` that looks like it was designed during a power cut.
People online were running **entire Windows virtual machines** just to change one key. Others kept a Windows partition alive for it. That is a lot of Windows for a thing that costs less than a pizza.
-So I sat down with the vendor's software, the Linux kernel's USB sniffer, and a lot of stubbornness, and worked out exactly what bytes that program sends to the pad. Then I built the program I actually wanted:
+So I sat down with the vendor's software, the Linux kernel's USB sniffer, and a lot of stubbornness, and worked out exactly what bytes that program sends to the pad.
+
+Once it worked, I found out I wasn't the first. **[ch57x-keyboard-tool](https://github.com/kriomant/ch57x-keyboard-tool)** has handled these pads from the command line since 2023, on Linux, macOS and Windows, and it's excellent. If you're happy editing a YAML file and running a command, go and use it.
+
+But I wanted something a friend on their first week of Linux could use without ever seeing a config file. So this is the other half, the program I actually wanted:
- **It looks like your pad.** You click on a drawing of the real thing, not a settings list.
- **It's honest.** The pad can't tell anyone what's on it, so the app never pretends to know.
@@ -78,7 +82,7 @@ Bus 001 Device 011: ID 1189:8840 Acer Communications & Multimedia USB Composite
The important bit is **`1189:8840`**. Don't worry about the "Acer" part: it isn't made by Acer, these pads just borrow that ID.
> [!NOTE]
-> **Different number, like `1189:8890` or `1189:8830`?** That's a sibling of this pad with a different layout. The app will spot it and tell you it isn't supported yet, rather than risk sending it the wrong thing. [You can help add it!](#-other-pads-in-this-family)
+> **Different number, like `1189:8890` or `1189:8842`?** That's a sibling of this pad with a different layout. MacroPad will spot it and tell you it isn't supported yet, rather than risk sending it the wrong thing. [ch57x-keyboard-tool](https://github.com/kriomant/ch57x-keyboard-tool) supports several of them today, and [you can help add yours here](#-other-pads-in-this-family).
---
@@ -89,6 +93,7 @@ The important bit is **`1189:8840`**. Don't worry about the "Acer" part: it isn'
| 🎹 **Click the drawing** | The window shows your pad as it really is. Click a key, or any part of a knob (turn left, press, turn right). |
| ⌨️ **Keyboard shortcuts** | Anything like `Ctrl+C`, `Ctrl+Shift+T`, `Meta+Ctrl+Right`, `F5`. Type it or press **Record** and just do the combo. |
| 🎵 **Media keys** | Play/pause, next, previous, stop, volume, mute, **screen brightness**, calculator, email, browser, my computer. |
+| 🚫 **Nothing** | Switch a key off completely, so a stray press does nothing. |
| 🔄 **Rotate view** | Stand your pad up or lay it flat. The drawing turns to match. |
| 🧠 **Remembers what it wrote** | The pad can't be read back, so the app keeps its own notes and marks anything it doesn't know. |
| 🩺 **Tells you what's wrong** | Unplugged? No permission? Wrong pad? You get a plain explanation and the exact fix, with a copy button. |
@@ -107,6 +112,25 @@ The important bit is **`1189:8840`**. Don't worry about the "Acer" part: it isn'
The tiny `0x04` in each corner is that key's **action byte**, the number the pad uses for it internally. You can ignore it forever. It's there for anyone [adding support for another pad](#-other-pads-in-this-family).
+### MacroPad or ch57x-keyboard-tool?
+
+Both write straight to the pad's own memory, so you can even use both. Pick whichever suits you:
+
+| | MacroPad | [ch57x-keyboard-tool](https://github.com/kriomant/ch57x-keyboard-tool) |
+|---|---|---|
+| How you use it | Click a drawing of your pad | Write a YAML file, run a command |
+| Pads | `1189:8840` (12 keys, 2 knobs) | `1189:8840`, `8842`, `8890`, several layouts |
+| Systems | Linux | Linux, macOS, Windows |
+| Shortcuts and media keys | Yes | Yes |
+| Key sequences with delays | Not yet | Yes |
+| Mouse actions, LED modes, extra layers | Not yet | Yes |
+| Record a shortcut by pressing it | Yes | No |
+| Install and permissions | One line does both | AUR, a download or `cargo install`; rule by hand |
+
+**Short version:** new to Linux, or just want to click things? MacroPad. Want every feature, a different pad, or a config file you can keep in git? ch57x-keyboard-tool.
+
+Other people have built GUIs for these pads too, mostly for the smaller 3 and 6 key models, including one that runs in a web browser. You'll find them under the [ch57x topic on GitHub](https://github.com/topics/ch57x). The more of these there are, the fewer people are stuck running Windows for a macro pad.
+
---
## 🚀 Install it (the whole world is counting on you)
@@ -220,6 +244,14 @@ Click **Media key** and pick from the list. Volume and brightness on the knobs i
+### Or make it do nothing
+
+Bound something you don't want any more? Click **Nothing**, then write it. The key goes quiet: pressing it does nothing at all. Keys set this way show **Nothing** in grey on the drawing.
+
+
+
+
+
### 3. Write it to the pad
Click **Write to pad**. Changed a few things? The orange **Write N changes** button at the bottom right sends them all at once.
@@ -386,9 +418,12 @@ A few ideas for KDE Plasma, where these are the default shortcuts:
## 🧬 Other pads in this family
-This app is **confirmed on `1189:8840`**, the 12 key, 2 knob pad. It's the only one anyone has captured so far.
+This app is **confirmed on `1189:8840`**, the 12 key, 2 knob pad. It's the only one it knows so far.
-Siblings come in other sizes (the original Windows project was built around a 3 key, 1 knob version), and several share vendor ID `1189`. The original Windows project this work builds on lists `1189:8890`, `8830`, `8831`, `8832`, `8897` and `8874`. **They don't all speak the same language.** This pad alone turned out to differ from the documented protocol in four separate places (see [the findings](#what-we-found)), and none of those could have been guessed. That's why the app won't write to a pad it doesn't know.
+> [!TIP]
+> **Have a different pad right now?** [ch57x-keyboard-tool](https://github.com/kriomant/ch57x-keyboard-tool) supports `1189:8840`, `1189:8842` and `1189:8890` in several layouts (3, 6, 9, 12 and 15 keys) from the command line, today.
+
+Siblings come in other sizes, and several share vendor ID `1189`. **They don't all speak the same language:** ch57x-keyboard-tool has separate code for different families, and rOzzy1987's Windows project lists yet more IDs (`8830`, `8831`, `8832`, `8897`, `8874`) with their own formats. That's why MacroPad won't write to a pad it doesn't know.
@@ -396,7 +431,7 @@ Siblings come in other sizes (the original Windows project was built around a 3
### You can add yours
-If you have a different pad, you're exactly who this project needs, and it's the same process that cracked this one. You'll need the vendor software (`MINI_KEYBOARD.exe`) and Wine.
+If you'd like your pad in MacroPad too, you're exactly who this project needs. It's the same process used for this one. You'll need the vendor software (`MINI_KEYBOARD.exe`) and Wine.
#### Capture what the vendor software sends
@@ -427,7 +462,7 @@ If you have a different pad, you're exactly who this project needs, and it's the
## 🪟 What about Windows?
-Windows already has the vendor app, ugly as it is. **Linux is the gap, so Linux comes first.**
+Windows already has the vendor app, ugly as it is, and [ch57x-keyboard-tool](https://github.com/kriomant/ch57x-keyboard-tool) runs there too. **A friendly app on Linux was the gap, so Linux comes first.**
That said, the app is built on Qt, which runs on Windows and macOS too. The only Linux specific parts are the small pieces that talk to USB and check permissions. Swapping it for a cross platform one is on the [roadmap](#-roadmap), and once that's tested on real hardware, one app will work everywhere. If you'd like to help test on Windows, open an issue.
@@ -441,7 +476,9 @@ That said, the app is built on Qt, which runs on Windows and macOS too. The only
1. **Probe.** `macropad-probe.py` walks `/sys/class/hidraw` and decodes each HID report descriptor. The pad shows up as two interfaces: a normal keyboard (`Generic Desktop`) and a vendor defined one (usage page `0xff00`) with a 64 byte input and output report, ID 3. That's the config channel.
2. **Guess.** The upstream project documents two protocols, "Legacy" and "Extended". Both were tried. The pad accepted the reports and then quietly ignored them. Educated guessing had run out.
3. **Watch.** The breakthrough was noticing `MINI_KEYBOARD.exe` runs under Wine. Linux's `usbmon` can record every USB transfer, so `macropad-capture.py` watched the real software write a single key. Twenty minutes of watching beat hours of guessing.
-4. **Repeat.** Separate captures of the knobs and of media keys each turned up something new. Every packet from every capture is now replayed by the test suite.
+4. **Repeat.** Separate captures of the knobs and of media keys filled in the rest. Every packet from every capture is now replayed by the test suite.
+
+Lesson learned the hard way: [ch57x-keyboard-tool](https://github.com/kriomant/ch57x-keyboard-tool) had already worked out most of this, and its source is the best reference for these pads. Search before you sniff.
@@ -456,7 +493,7 @@ Every binding is two 65 byte writes to `/dev/hidrawN`: a config report, then a c
│ │ │ │ │ │ │ │ └───── modifier bitmask
│ │ │ │ │ │ │ └──────── count
│ │ │ │ │ │ └───────────── unused
-│ │ │ │ │ └──────────────────── delay, little endian (not yet verified)
+│ │ │ │ │ └──────────────────── delay? (unverified, see below)
│ │ │ │ └────────────────────────── type: 1 keys, 2 media, 3 mouse, 8 LED
│ │ │ └───────────────────────────── layer, counted from 1
│ │ └──────────────────────────────── action: which control
@@ -484,20 +521,26 @@ Every binding is two 65 byte writes to `/dev/hidrawN`: a config report, then a c
The vendor app sometimes sends several configs and one commit at the end. Both styles work. This app commits after every binding, so it always knows exactly which ones landed.
+**Delays** are the open question. The byte field above comes from rOzzy1987's format and hasn't been seen on this pad. ch57x-keyboard-tool sends a delay as a separate report of type `5` instead, which is probably right. That's why sequences are switched off in the app until a capture settles it.
+
-What we found (and what upstream had different)
+Three sources, compared
-| | Upstream "Extended" | 1189:8840 |
-|---|---|---|
-| Magic byte | `0xFE` | **`0xFD`** |
-| First layer | `0` | **`1`** (layer 0 is accepted, then silently thrown away) |
-| First knob action | `13` (derived) | **`0x10`** (keys get 1 to 15, knobs start on the next hex boundary) |
-| Media packing | leading zero, usage at offset 12, count from payload | **count `2`, usage at offset 11** |
+What each source sends to a `1189:8840`. The pad accepts the ch57x-keyboard-tool style and the vendor style, so it's evidently tolerant. Nothing here is a new discovery about the hardware; the last column is simply what the vendor's own software does, captured independently.
-None of these were guessable. Each one was found by watching the real software.
+| | rOzzy1987 "Extended" | [ch57x-keyboard-tool](https://github.com/kriomant/ch57x-keyboard-tool) | Vendor app (captured) |
+|---|---|---|---|
+| Byte 1 of a config report | `0xFE` | `0xFE` | **`0xFD`** |
+| Layers counted from | `0` | `1` | `1` |
+| First knob action | `13` | `0x10` | `0x10` |
+| Media: count, usage offset | from payload, 12 | `0`, 11 | **`2`**, 11 |
+| Delay | bytes 5 and 6 | separate report, type `5` | not captured yet |
+| Finishing a write | flash command | `aa aa`, `fd fe ff`, `aa aa` | `fd fe ff` |
+
+rOzzy1987's format is for different product IDs, which is why porting it to this pad failed until the capture.
@@ -604,7 +647,8 @@ tests/ real captures and the tests that replay them
- [x] Both knobs, all three actions each
- [x] Upright and flat views
- [x] One line installer for any distro
-- [ ] **Key sequences with delays** (waiting on one more capture to verify the format)
+- [ ] **Key sequences with delays** (ch57x-keyboard-tool shows the likely format; one capture to confirm)
+- [ ] Layers 2 and 3, and LED modes
- [ ] AUR package, so Arch users can install it like anything else
- [ ] Knob press to toggle brightness between 0% and 100%
- [ ] Save and switch between named profiles (gaming, editing, streaming)
@@ -615,7 +659,8 @@ tests/ real captures and the tests that replay them
## 🙏 Credits
-- **[rOzzy1987/MacroPad](https://github.com/rOzzy1987/MacroPad)**, whose Windows project did the original reverse engineering this whole thing stands on. Go give it a star.
+- **[kriomant/ch57x-keyboard-tool](https://github.com/kriomant/ch57x-keyboard-tool)**, the MIT licensed command line tool that has supported these pads since 2023. It does more than MacroPad does today (layers, sequences, mouse, LEDs, more pads, every OS), and its source is the best reference there is. Go give it a star.
+- **[rOzzy1987/MacroPad](https://github.com/rOzzy1987/MacroPad)**, whose Windows project this app's protocol code started from.
- Everyone on forums who documented running a whole VM to change a key. Your suffering was noted.
## ⚖️ Licence
diff --git a/docs/images/flat-view.png b/docs/images/flat-view.png
index a0ee2a138a1ef2f5a8b5dd5769bf8ed21dc2978b..42d431e91bf52803b7117f075acd8f87329c5304 100644
GIT binary patch
delta 219657
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