Useful scripts for handling receiving information about input device and reading that information. supports GM:S-1.4 joysticks on top of keyboard and gamepads. There is a simple project with some comments so it's easy to understand how to utilize the system. EDIT: 1.4 doesn't connect to marketplace for udates, so scr_button_map() 24th line change (var i=0; i<13; i++).
I'm storing information as an array - device, device index, button type, button, "button name".
For GM:S 2 simply remove parts about joystick and increase for loops on gamepads to 12.