Project files for DIY HTC Vive motion controllers, using the Leap Motion mounted to VR headset for positional tracking:
https://github.com/fmaurer/FreePIE-VR-Controls
https://www.youtube.com/watch?v=S1-FHn2ySXA
Over the weekend I finished 3D printing a second DIY motion controller and playing a few Steam VR apps. There were a few glitches that were very specific to developer implementation, but overall very satisfying to finally have access to the Steam VR stuff with motion controllers. Without any industry standards for VR controllers, your mileage will vary in app support. Rec Room didn't recognize the pickup action, but paintball was fun.
While researching and reading through forums I found a lot of people with wii nunchucks trying to do this. With a few edits to the FreePIE script, it should be easily converted to any device/buttons/orientation data they want. The hard part was figuring out the 3D transforms, now it's just a matter of mapping the data.
More info and photos: http://flrnmrr.com/2016/11/30/arduino-vive-controller-emulation
The biggest limitation is the 2014 FreePIE plugin for the Leap Motion. It outputs the normalized (and cropped) hand positions of the interaction box: https://developer.leapmotion.com/documentation/csharp/devguide/Leap_Coordinate_Mapping.html#the-interaction-box. Developer thread: http://www.mtbs3d.com/phpBB/viewtopic.php?f=139&t=19753
The x,y,z positions of Left and Right hands are given in the InteractionBox's normalized space instead of the raw millimeter values of the full FOV from the Leap sensor. Until the driver is updated/recreated we're stuck using the limited InteractionBox volume to emulate Vive controllers.
If anyone with Windows DLL plugin development experience thinks it's straightforward, this driver could enable a flurry of VR applications for FreePIE community. Thank you again for everyone here helping out and the developer of FreePIE for such an awesome tool.