Had a retro game night with a few friends and still had my usb SNES controller in my backpack. Fast forward to RamHacks and it sounds to me like the Newport News Shipyard had a challenge that just needed a controller!
What it does
Using JoyToKey.exe, the SNES controller has it's buttons mapped to keyboard-mouse functionality. There are swappable profiles for a few different functionalities for certain use cases: Two handed precision mode (default), Two handed speed, One handed default, and One Handed Speed. Yes One handed! At the Newport News Shipyard, They often need to hold equipment in one hand while scrolling through build plans. By simply turning the SNES controller vertical, I was able to make another mapping that allows for one handed functionality. But wait, what about no handed? Technically, there is inclusion for that too, but is utilizes a different controller. (see "challenges I ran into").
How I built it
Just used programs already available on the internet, BUT I did create a document that could lead someone towards creating a custom controller and then programming that on their own, either using AutoHotKey (a ?language? that allows customization of input-output devices, or XInput, the gaming device API from Microsoft.
Challenges I ran into
Couldn't actually create a perfect custom controller. I have no experience in hardware development, and even if I did I don't think we had the materials or the time to design the perfect custom controller. One of the specifications of the project is that the ship builders need to be able to use the controller with their big ole gloves on, and you can use the SNES controller with the gloves on but it's not perfect. A larger D-pad or just a joystick type movement option would add to the ease of use. Another problem is the "no hands" use case!! This was actually solved, but not in a way I particularly... like? It works for sure, but it's not super user friendly (at least, I don't really think so). Using the Myo armband (a device that reads muscle contractions and translates that to key commands) and it's built in mouse functionality, a no hands solution was reached. It works but it's a bit frustrating to use, and it's not ideal. However, if you have both hands full of wires and a soldering gun, it might make things a bit _ easier _ for the builders.
Accomplishments that I'm proud of
Very user friendly device. The SNES controller is quite user friendly and the button mappings aren't too hard to figure out and learn quickly. I'm also proud of the simplicity, in a way. It's more of a proof of concept, and I like that there is much more to do with this project. A custom script could still be developed that doesn't rely on JoyToKey.exe, and a full piece of custom hardware could be made, which would be super cool.The Myo armband, while functional is still an early piece of technology, and I'm glad that I was able to integrate it and learn about this product.
What I learned
Learned a lot about programming in AutoHotKey and how XInput works. I'm very interested in the hardware-software interactions so this was really cool for me. I got to talk to the shipyard guys about use cases, and it was awesome when they kept throwing new challenges my way (sometimes we have to go one handed, etc).
What's next for SNENNS Controller
Next steps include creating a custom piece of hardware that comes packaged with it's own code.