Introduction - how are controllers implemented in FutureDecks/FutureDJ
Every fully-supported controller is implemented using a .js (JavaScript) script file that resides in the controllers folder on Windows or in the app bundle on Mac (inside the app itself). You can also place controller scripts in the Documents/FutureDecks/controllers folder. This folder is user-accessible and all the controllers here take priority over the ones the software comes with. So, you can basically override a default controller script if you want to.
When FutureDecks starts, all the scripts are detected and compiled (you can use DebugView on Windows / Console on Mac to see any error/debug messages from the scripts). Also at startup, all MIDI and HID controllers are scanned and connected to the software. The software then tries to match every connected hardware controller to a script (it basically detects which of the scripts are meant to implement that specific controller). To do this the software must somehow identify the hardware controller. This is done differently for MIDI and HID controllers.