Hi,
I write input remapping software and our aim is to allow people to remap any form of input to any other form of (virtual/faked) input.
It has uses in gaming, and I do work with the disabled community to allow people with physical disabilities to play games. Basically I want to support various Arduino-based input devices in my software.
Now at this point, you may be thinking "Oh, just emulate a virtual joystick or keyboard or whatever with the arduino" - but this approach has a number of drawbacks - Consider the following use-case.
An extremely disabled user wishes to use a combination of an arduino set up that allows him to operate buttons and axes that would constitute most of an xbox controller (For example a QuadStick), but lets say for example he has no real comfortable way to operate the right stick (usually controls view)
He does, however, also own a Tobii Eye tracker, which can effectively report eye position on the screen as X and Y axes, so he could use that to control view just nicely.
Now the arduino emulating an xbox pad in this situation is not much use - only one process or device can own an xbox pad, so his options to add the Tobii eye tracking on to the Arduino emulated xbox pad is not really a goer.
So people tend to emulate a DirectInput or generic HID stick with the Arduino, then use software to read the stick via DI or RawInput or whatever, read the Tobii, and merge it into a (software) xbox pad. This can then cause it's own problems (Some games might take input from the wrong stick, input "ghosting" etc)
What I am seeking is a better way without intermediate steps.
With my software, as long as I can read the state of inputs from C# code, I can expose it as a device that can be remapped to any of the other forms of IO that we support (It's plugin based, so theoretically anything).
So in the above scenario, my code would directly read the Arduino buttons and axes, without going via DirectInput or any of the Microsoft input related APIs, then directly read the Tobii Eye tracker via the Tobii API, then create a virtual xbox pad with the input merged from both hardware devices.
I do not yet own an Arduino, I am wondering which one I need - there are a number of projects going on using Arduinos that I would like to support, so ideally something as universal as possible. I am totally clueless on Arduinos in general and how they interop with PCs, though I am not clueless with electronics, I am quite happy with a soldering iron.
Essentially what I want is a universal way to get at switch/potentiometer type values on an arduino, without having to go via windows' input APIs. Can anyone advise?
For more info on our project, see the main UCR repo
The back-end which handles input detection is here
If anyone knows a little C# and would be interested in getting involved, I would be more than happy to collaborate, I have lots of other forms of input/output on the list too.