I use my emulators to take some of my console games on the go.

I want to write some scripts to use with my controllers/emulators.

I am running Windows 7x64. I use several usb devices (game controllers and drawing tablet being the two main ones I'm concerned with).

I have controllers which use xinput, dinput and the tablet has some hid buttons... one of the controllers has a gyro (and maybe a compass as well?), and (the gyro at least) works properly (I can, for example, drive a car in game using motion controls). These settings are kinda scattered around my driver program and individual games...

I need a utility that can display what input is active (what button I'm pressing, or axis is active), without having to go looking for it. This makes mapping the buttons/axis properly to their counter parts rights... sometimes, I just get confused (the mixture of xinputs, dinputs and hid inputs)

i.e.: when I have my motion sensor controller plugged in, I want to see what each button pressed is (LButton, Button1 or ButtonOne or whatever the command name of the button is, etc) including the axis (the 2 sticks and gyro), so I can use them in scripts more easily (I just always forget which is which, and which names for dinput and xinput since I do things like things infrequently). Sort of like the "display keystrokes" utilities, but that includes controller inputs as well. If it includes the exact stick movement that'd be great.

I really only need this for the dinput/xinput (I assume the gyro function is covered n there?), but it would be great if such a thing also exists that can show me what the hid input commands are (though I understand this might be another matter altogether, a link to info on this would be appreciated as well).

To be clear: I am not looking for raw data, unless I can get that from the same utility (without added hardware) or anything low level, I just want to see what the inputs are recognized as by Windows. I would also take a reference sheet of xinput/dinput commands that show what buttons/axis names are for use in mapping and scripting.

Sorry if this should be obvious or easy to find, it seems to bring up a lot of more technical work (involving arduinos and other stuff) when I try to research it. Maybe I am just being dense or obtuse.