The Badger 2040 keypad is an inexpensive programmable USB macro keypad with keymap display. The firmware is based on CircuitPython and can be easily extended by yourself. If you just want to customize key bindings, you don't even need to know how to program, as there is a configuration file for this that you can easily edit in a text editor.
Since the firmware is an extension of my PicoSplit firmware, it offers the possibility to assign multiple functions to keys. You can store key assignments for several programs and each program can also have several key assignments. You can easily switch between programs and their key assignments.
You can output keystrokes depending on how long you press a key. This allows you to get by with only a few keys. For example, to go back and forth in the list of key layouts you only need one key. A short press jumps to the next layout. A longer press jumps to the previous layout.
If you just want to try it out on your badge, you can find the firmware on GitHub: https://github.com/akaenner/Badger2040Keypad
With my Badger 2040 enclosure you get tactile buttons, but it works with the original badge or other enclosures as well.
What if you need more keys?
If you need more keys than the five on the badge, and you have a 3D printer, then I have something for you: an extension with 12 mechanical keys. You can use regular sized MX-keys (right picture) as well as the low profile keys from Kailh (left picture). The whole thing is wired by hand, but it's really easy to make.
The badge is held magnetically on the keypad and can be easily attached or removed, because Pogo Pins are used for the electrical connection. You can even do this while the badge is connected to the computer. The badge will then automatically switch to the appropriate mode. When plugged in, it shows the keyboard mapping of the additional keys and when operated without the external keyboard, it shows the mapping of its built-in keys.
You can find the STL files for this design on printables.com: https://www.printables.com/de/model/216306-badger-2040-keypad