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 SNENNS (Super Nintendo Entertainment Newport News Shipyard) 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 liked, which is why it's not included in the final project. It "works" for sure, but it's not user friendly at all. 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 frustrating to use, and it's not ideal. However, if you have both hands full of wires and a soldering gun, it could make things a bit easier for the builders, and will definitely be more viable once the technology advances a bit more.

Accomplishments that I'm proud of

Very user friendly device. The SNES controller is easy to pick up and the button mappings aren't too hard to figure out and learn quickly. I'm also proud of the simplicity, in a way. Although I truthfully didn't do . 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 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 (like the one handed problem, etc).

What's next for SNENNS Controller

Next steps include creating a custom piece of hardware that comes packaged with it's own code, perfectly designed for the workers to use easily on the job.

Built With

  • autohotkey
Share this project: