Trinus PSVR can take FreePIE input data and use it for head positioning and/or left and right VR controllers. To do so, it reads from FreePIE IO, an array of up to 4 elements (from 0 to 3) containing xyz and yawpitchroll data.
While FPIO[0-2] can be used for head and controllers rotation and position, FPIO is used for button mapping. FPIO.y and z are read as 8 bits to indicate the state of a button press on the left and right controllers, respectively.
These buttons can be mapped within Trinus PSVR (Advanced tab) to different SteamVR buttons, including the touch controller (acting as a directional pad).
While the input data can come from any FreePIE IO compatible device (or a script, using the FreePIE application), the mapping is designed with PSMove controllers in mind. This is why the input buttons are named as the buttons present on those controllers. The 8 bits are assigned (low to high bit) as square, triangle, cross, circle, move button, PS button, start and select.
FPIO.pitch and roll are read as left and right triggers, respectively.
To use the mapping in combination with PSMove controllers, you will need the following software:
- PSMoveService (setup instructions here)
- PSMove FreePIE Bridge (note that button data is only available from alpha8 version)
If not using PSMove, you can create a FreePIE script to convert data from another source (keyboard and mouse, for example). See below an sample script for left controller:
if starting: x = 0 y = 0 z = 0 t = 0 b = 0 if keyboard.getPressed(Key.A): x += 0.1 if keyboard.getPressed(Key.D): x -= 0.1 if keyboard.getPressed(Key.R): y += 0.1 if keyboard.getPressed(Key.F): y -= 0.1 if keyboard.getPressed(Key.W): z += 0.1 if keyboard.getPressed(Key.S): z -= 0.1 if keyboard.getKeyDown(Key.D2): t = 1 if keyboard.getKeyDown(Key.D3): b = 1 if keyboard.getKeyDown(Key.D4): b = 2 if keyboard.getKeyDown(Key.D5): b = 4 if keyboard.getKeyDown(Key.D6): b = 8 if keyboard.getKeyDown(Key.D7): b = 16 if keyboard.getKeyDown(Key.D8): b = 32 if keyboard.getKeyDown(Key.D9): b = 64 if keyboard.getKeyDown(Key.D0): b = 128 freePieIO.x = x freePieIO.y = y freePieIO.z = z freePieIO.y = b freePieIO.pitch = t