Okay, if you're running one of the versions of MacOS that still supports 32-bit apps then do I have the application for you:
ControllerMate is a controller-rebinding... hotkey... automation... MIDI... visual programming... uhh... I don't even know how to describe this app because I have never seen anything else like it. It takes input from basically any sort of control device: keyboards, mice, game controllers, MIDI; and can give (mostly) the same collection of outputs. What makes it special is that between the input and output is not some normal collection of menus that maps one thing to another, or some series of json files you have to write yourself, but an elaborate block-based programming language.
It's completely absurd. It feels like I'm being given entirely too much power here. It's 100% ridiculous, and yet, this is the only program I've ever tried that actually makes the "make buttons do anything" dream real. Game controller rebinders only take input from game controllers and are fairly limited; Karabiner-Elements only likes physical keyboards and is a slight pain to work out how to do anything complicated in (the program itself doesn't even provide the slightest implication that you can make your own "Complex Modifications", only suggesting you download pre-made ones off the internet); X-Mouse Button Control, as much as I love it, of course only works with mice; and upon opening AutoHotkey you are directed to a help page that looks like this:
AutoHotkey Beginner Tutorial by tidbit
Table of Contents
- The Basics
- Hotkeys & Hotstrings
- Sending Keystrokes
- Running Programs & Websites
- Commands vs. Functions()
- Variables
- Objects
- Other Helpful Goodies
1 - The Basics
Before we begin our journey, let me give some advice. Throughout this tutorial you will see a lot of text and a lot of code. For optimal learning power, it is advised that you read the text and try the code. Then, study the code. You can copy and paste most examples on this page. If you get confused, try reading the section again.
Oh god, where am I? What's going on? Do I seriously have to read all this?? Why does this documentation viewer have smooth scrolling that I can't turn off‽
...
Anyway. ControllerMate is a truly incredible program. It's not without its flaws: the UI is a bit idiosyncratic, even beyond the whole block-based thing, and the "Cursor" output blocks don't work on my device so I've had to make a "Virtual Mouse", which I struggled with making it move slower than its minimum speed (because the programming system only supports integer values and movement at "1" was way too fast) until I discovered that you can change its speed in MacOS System Preferences. Because of course that's how that works I guess. But it does work.
I found ControllerMate originally while attempting to solve one very small input issue that was preventing one game (Vectronom) from working properly with a dance pad. It worked, where nothing else did, and then looking at ControllerMate's vast array of abilities gave me a terrible idea. I would create dance pad controller bindings for Minecraft. Now yes, obviously this is something that various Minecraft youtubers have done before. But the thing is, mapping any game which expects a mouse to something with just a few buttons isn't going to be easy, and by my count you need about 19 buttons for Minecraft, while the pad only has 11 (and one of those is the centre which doesn't count). I decided to not look up any prior art before beginning my attempt but checking now... I can't find anybody else who has managed to map everything to work on one pad! Hah!
...what I did was use the programming in ControllerMate to make many less common functions conditional on holding down a specific button. Movement is basically the control scheme in Noctis, where forward/back move and left/right turn unless you're holding the button down, which swaps them. Applying the conditional to other buttons almost gets them all in there... and then with some more complex programming I made the "sneak" key activated by physically crawling on the pad and the jump button by physically jumping, without having their own dedicated buttons. It all works! I could do an entire playthrough like this, but probably won't because combat is an absolute nightmare and I'm not sure the novelty of "playing game with ridiculous control scheme" will last long enough.
I'm sure ControllerMate could be applied to less absurd things too. The thing is, even worse than being Mac-only, it apparently doesn't work for MacOS versions past 10.14. I never updated past 10.14 myself because I like my 32-bit apps, so that's fine, but even if I'm able to run the program it's no longer possible to actually buy a license key for the full version of the application which lets you have more than 10 outputs. How this fact can possibly be consistent with the rest of this post is something I'll leave for you to solve on your own. Though my use case is ridiculous, the fact that it works is a miracle, and more so that I was able to do all this without having to write code. I think the potential for this is fantastic, and it seems a shame to me that system updates have left it behind.
If you're as determined to stay in the past as I am, and for some unknowable reason wish to experience Minecraft Dance Mat Edition for yourself, the ControllerMate configuration I made is here.