public OpenVRControllerInput(CVRSystem hmd, int index, EVREventType eventType, VREvent_Controller_t contEvent) { State = eventType == EVREventType.VREvent_ButtonPress ? InputState.Start : InputState.Finish; // CONTROLLER KEY BINDINGS ARE HERE switch ((EVRButtonId)contEvent.button) { case EVRButtonId.k_EButton_System: // used by system, dont handle break; case EVRButtonId.k_EButton_ApplicationMenu: Input = InputType.Pause; break; case EVRButtonId.k_EButton_Grip: break; case EVRButtonId.k_EButton_DPad_Left: break; case EVRButtonId.k_EButton_DPad_Up: break; case EVRButtonId.k_EButton_DPad_Right: break; case EVRButtonId.k_EButton_DPad_Down: break; case EVRButtonId.k_EButton_A: break; case EVRButtonId.k_EButton_Axis2: break; case EVRButtonId.k_EButton_Axis3: break; case EVRButtonId.k_EButton_Axis4: break; case EVRButtonId.k_EButton_SteamVR_Touchpad: Input = hmd.ControllerState(index).rAxis0.y > 0 ? InputType.SpeedUp : InputType.SlowDown; break; case EVRButtonId.k_EButton_SteamVR_Trigger: Input = InputType.PrimarySelect; break; case EVRButtonId.k_EButton_Max: // should never fire break; default: break; } }