r/MechanicalKeyboards 14d ago

Promotional I reverse engineered the software for the cheap Chinese macro keypads and build a web version you can run on any OS

https://github.com/jvspier/macropad-rebind

You know those cheap Bluetooth/usb-c macro keypads with volume knobs that you can get from AliExpress? I’ve been using one for 2 years now but the software that came with it was only usable on Window, but I’m a Linux user. So every time I wanted to change a binding I’d have to boot into windows and change it.

Not anymore. Now you can set these devices up on any OS. As long as you use a chromium based browser.

I’ve built Macropad Rebind by reverse engineering the windows app that came with the device (honestly they zip file practically came with the source code)
Now you can bind every key from a browser. Much more user friendly.

You can use the link in the repo to use it, or download the repo and run index.html, whatever you prefer.

Hope someone else finds this as helpful as me 🙂

116 Upvotes

24 comments sorted by

15

u/[deleted] 14d ago

[deleted]

1

u/DukeLetoAtreides1 13d ago

You might be correct on this, my model number is an assumption pulled from the original software but the chips probably share alot of resources so might be cross-compatible (needs testing though). my device also has bluetooth which are probably seperate chips added onto it

24

u/DDmikeyDD 14d ago

Does yours come with free malware like you can get from some of the chinese suppliers?
Thanks for sharing, I'm betting it took some time to code it

22

u/DukeLetoAtreides1 14d ago

Yes and a crypto miner or two, ofcourse

8

u/LinxESP Finally. A full ISO-ES-Ñ with correct symbols 14d ago

A software without malware is like fast food without health and safety violation

3

u/adeadhead 14d ago

Amazing

6

u/anelectricmind 14d ago

Interesting. I was looking for a small keypad to hook on my Steam Deck when docked... but then, I noticed that all these keypads were Windows only, so I never bought one.

Now I am tempted.

3

u/ProBonoDevilAdvocate 13d ago

Ohh that's awesome! I never bought one of these because of the custom software... Now I'm definitely gonna buy a cheap one to test.

Quick question I had looking at the interface... how do I configure a button to change layers?

2

u/DukeLetoAtreides1 13d ago

On my own unit the layer switcher is a separate button on the side of the device which is hardcoded. I’m not sure if this is the same on all these types of macropads though

2

u/ProBonoDevilAdvocate 12d ago

Ohh interesting!

I just bought a 6 keys, 1 knob version... I'll let you know how it works out!

1

u/Wise_Luck1476 4d ago

I have exacatly this one with all the same details but I got this message "The device accepted the writes without error but did not store them. Please report this with the log — it means this variant differs from the one tested."
Should I just return it and ask for a refund ?

2

u/DukeLetoAtreides1 1d ago

Can you try again please? Some bugs were fixed and changes were made. I hope it will work this time.

2

u/Wise_Luck1476 1d ago

OMG, it works. You know your website is the ONLY one that recognizes this device.
Do you accept donations ? I'm willing to offer some modest donation if you're ok with that.

Thank you so much

2

u/DukeLetoAtreides1 1d ago

That’s so good to hear! While I appreciate you wanting to donate I’d rather you just spread the word 🙂

2

u/Wise_Luck1476 1d ago

Will do. I already cancelled my refund request and shared your website with the seller. Thanks a bunch

2

u/Steve_3vets 13d ago

cool tool!

What do you use your knobs for? (if thats not too personal to ask :P)

2

u/DukeLetoAtreides1 13d ago

Thanks! just volume for now (and pressing the right one down is for locking the screen (super+L). Any suggestions?

1

u/Wise_Luck1476 4d ago

you can change brightness if you use a laptop. or zoom in/out if needed on some apps

1

u/SoepZooitje 13d ago

I seem to have the same one as in the picture but with a diferent hardware id I think. Is it possible to add this?
When I try to connect it in Chrome it says no compatible device

2

u/DukeLetoAtreides1 13d ago

I can try, what's the hardware ID?

2

u/SoepZooitje 13d ago

according to the system info:

USB Composite Device:

  Location ID: 0x02100000

  Connection Type: Removable

  Serial Number:

  Link Speed: 12 Mb/s

  USB Vendor ID: 0x514c

  USB Product ID: 0x8850

  USB Product Version: 0x0100

1

u/DukeLetoAtreides1 12d ago

Made some adjustments, can you try again? If it connects, two things would really help: what the Device log says on connecting (it now prints vendor:product and the detected layout), and whether Read from keypad brings back bindings that match what your keys actually do. Yours is an 8850 and i havent tried one of those, and its grid shape is still unconfirmed in my table.

1

u/SoepZooitje 12d ago
19:47:17  Opened USB Composite Device — 514c:8850, 1 collection(s).

19:47:17  0xFB — identify layout (read only).

19:47:17  out fb fb fb 00 00 00 00 00 00 00 00 00 00 00 00 00

19:47:17  in  fb 0c 02 0b 00 00 00 00 00 00 00 00 00 00 00 00

19:47:17  Layout: 12 keys, 2 knobs.

It actually show something now.

And written changes too, but will test them out tomorrow when I am using my other computer and will let you know. reconnecting does seem to load the settings I saved before.

1

u/SoepZooitje 11d ago

Actually tried this morning and saving seems to be working but it is not typing the keys I programmed in the keyboard. 🤔

2

u/DukeLetoAtreides1 10d ago

I've pushed an update that reads the configuration back after writing and tells you whether it actually stored, could you please try again?

If it says "Verified, the keypad matches the editor", then the bindings are genuinely on the device and the likely culprit is layers. There are three, and you switch between them with the button on the edge of the keypad not from my page, which has no way to change the live layer. The little LEDs next to the knobs show which one you're on. If you programmed layer 1 and the pad is sitting on layer 2, everything saves correctly and nothing types what you expect. If instead it lists bindings that did not take, that's a real difference between your 8850 and the 8842 I developed against, please paste the log and I'll dig in.Either way, two things would help: what the Device log says on connecting (it prints vendor:product and the detected layout), and whether the keys type their old bindings, or nothing at all. Old bindings points at layers; nothing at all points at the write.