Confirmed on the MK-09 (8808:660a, 9 keys): the vendor's .NET configurator was decompiled for the wire format and every frame was then written to a real pad and read back. Keys, media keys and multikey sequences are supported; lighting from the command line. The firmware acts on every other output report, so each report is sent twice (as the vendor software does) and every write is verified by reading the key back. The app now keeps one state file per pad and starts with a known layout for a known USB id, and the editor asks the backend whether a binding fits before offering to write it. The actions listener and the udev rule cover every supported vendor. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2.6 KiB
Adding a pad the app doesn't know yet
If MacroPad finds your pad but says it isn't supported, this is the whole process. It takes one command and one issue.
Start here: ask the pad
Install MacroPad, plug your pad in, and run:
macropad detect
On most pads in this family that's the whole job. It asks the pad how many keys and knobs it has, reads back what's currently bound, and prints a report. Paste that into an issue and your pad gets added to the known list.
The app offers the same thing: when it sees a pad it doesn't recognise, the panel has an Ask the pad what it is button.
How it decides
Detection is read only, and the pad has to pass two tests before the app will write anything to it:
- It answers the
0xFBquery with a sensible key and knob count. - It then reports a full layer, describing exactly the control slots that count implies.
A pad from a different family fails one of those, and the app leaves it alone rather than guessing.
The pad reports how many keys and knobs it has, but not how they're arranged, so the first guess at rows and columns may be wrong. Fix it with Edit layout and the drawing will match your hardware.
The same button works for the ITPROTECH pads (vendor id 8808): the app asks the pad for its key records and adopts it if they come back cleanly.
If it doesn't answer
Some pads in this family speak an older protocol and won't answer. Working those out needs a capture of the vendor software, the same process used for this one. You'll need MINI_KEYBOARD.exe and Wine.
Capture what the vendor software sends
-
See what your pad is:
python3 ~/.local/share/macropad/app/macropad-probe.pyThis only reads. It lists your pad's ID and its USB interfaces.
-
Start the capture (it watches USB traffic; it never sends anything):
cd ~/.local/share/macropad/app sudo python3 macropad-capture.py -
In a second terminal, open the vendor app with Wine:
wine MINI_KEYBOARD.exe -
In the vendor app, set key 1 to the letter
aand click its save/apply button. Then set each knob's turn left, press and turn right to different letters, and save again. -
Go back to the first terminal and press
Ctrl+C. You now have a file calledmacropad-capture.txt. -
Open an issue with that file, your
macropad-probe.pyoutput, and a photo of your pad. That's genuinely all it takes to get your pad supported.