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 good 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. At the Newport News Shipyard, They often need to hold equipment in one hand while scrolling through build plans (the original challenge being to help builders navigate through documentation on a laptop while wearing big bulky gloves). 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? There was consideration for that too, but is utilizes a different controller that didn't end up being reliable enough to use in the finished product. (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 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 a hand full of wires and the other holding 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 have to do much. 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 be developed that doesn't rely on JoyToKey, and a full piece of custom hardware could have been made with 3D printing or some such thing, which would be super cool (though I have no experience with this, so something to learn). Trying to work with the Myo armband was fun, and while functional, it is still an early piece of technology that I'm glad I was able to integrate and learn more about it.

What I learned

Learned a lot about programming in AutoHotKey and how XInput vs Dinput 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 got to develop around additional problems that they threw my way.

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: