Skip to content

Feature request: expose Pimax headset physical buttons as configurable SteamVR inputs #68

Description

@Marantzi123

Hello SBoys3,

Before explaining my request, I would like to sincerely thank you for the work you are doing with CustomHeadsetOpenVR.

I am currently using v1.3.0-beta.1 of your driver with two Pimax headsets:

  • Pimax Dream Air Lighthouse
  • Pimax Crystal Super with the Micro-OLED module and Lighthouse Faceplate

My system is primarily designed for VR simulation, especially iRacing, and uses:

  • SteamVR as the active OpenXR runtime
  • Lighthouse tracking
  • A 6DOF motion platform
  • A Vive Tracker 3.0 for motion compensation
  • Eye tracking
  • OpenXR applications such as iRacing

Your driver has produced excellent results on my system.

Thanks to CustomHeadsetOpenVR:

  • SteamVR recognizes the Pimax headsets as native SteamVR devices.
  • The pipeline feels lightweight and clean.
  • Lighthouse tracking works correctly.
  • I can retain motion compensation for my 6DOF platform using a Vive Tracker 3.0.
  • Eye tracking works in iRacing when the simulator is launched in OpenXR and SteamVR is configured as the active OpenXR runtime.
  • I have been able to integrate both the Crystal Super Micro-OLED and the Dream Air Lighthouse into the same SteamVR ecosystem.

For me, getting eye-tracking data into iRacing is especially important because it is essential for my configuration and potentially for current or future foveated-rendering implementations.

Your driver also directly influenced my decision to purchase the Pimax Dream Air Lighthouse. I used your affiliate code or link for the purchase as a way of thanking you for your work and so that you could also benefit from the sale.

The main issue that remains for me is the loss of the physical headset buttons while CustomHeadsetOpenVR is controlling the device.

With the standard Pimax runtime, the physical headset buttons, especially the + and - buttons, allow basic actions to be performed without using motion controllers, such as:

  • Opening or closing the dashboard
  • Accessing the desktop
  • Navigating some menus
  • Performing quick actions while wearing the headset

However, when I use Pimax Play EVO, OpenPort and CustomHeadsetOpenVR as a native SteamVR driver, these buttons are no longer available.

This creates a major ergonomic problem inside a simracing cockpit.

I am seated inside a motion platform with:

  • A steering wheel
  • Pedals
  • An active harness
  • A cockpit structure surrounding the user
  • Physical movement from the platform

To open the desktop or access SteamVR, I currently have to:

  1. Keep a Valve Index Controller inside the cockpit.
  2. Find it without being able to see it while wearing the headset.
  3. Turn it on.
  4. Wait for SteamVR to detect and track it.
  5. Hold it while the motion platform may be moving.
  6. Point at the menu and use the trigger.

Apart from being inconvenient, there is also a risk that the controller may fall inside the motion platform or interfere with the wheel, harness or cockpit structure.

For this reason, my main feature request is:

Would it be possible to expose the physical + and - buttons of the Pimax Crystal Super and Dream Air as configurable SteamVR inputs?

The ideal implementation would be:

  • Detect the physical HMD buttons.
  • Expose them as SteamVR Input actions.
  • Allow the user to configure their functions.
  • Assign actions such as:
    • Open or close the SteamVR Dashboard
    • Show the desktop
    • Confirm
    • Go back
    • Increase or decrease volume
    • Execute a configurable shortcut

Even a simple initial implementation would be extremely useful, for example:

  • Pressing the + button to open or close the SteamVR Dashboard
  • Pressing the - button to go back or show the desktop
  • Configurable long-press actions

It would also be very helpful to know whether the current limitation is caused by:

  1. CustomHeadsetOpenVR
  2. The OpenPort API
  3. The headset firmware
  4. Pimax not currently passing the physical button events through OpenPort

If OpenPort does not currently expose these buttons, I would appreciate confirmation. I could then provide Pimax with a precise technical request asking them to add this capability to OpenPort.

I am already discussing this issue with official Pimax Support as well.

For reference, I have personally confirmed the following:

  • CustomHeadsetOpenVR v1.3.0-beta.1 works with my Dream Air Lighthouse.
  • It works with my Crystal Super Micro-OLED and Lighthouse Faceplate.
  • SteamVR recognizes both headsets correctly.
  • Lighthouse tracking is stable.
  • Motion compensation works using a Vive Tracker 3.0.
  • Eye tracking works in iRacing OpenXR.
  • The physical headset buttons are unavailable while the driver is active.

I still need to validate eye tracking in other applications, particularly Assetto Corsa EVO.

I would be happy to provide:

  • Logs
  • Screenshots
  • Videos
  • Testing with both headsets
  • A/B testing between Pimax Play and CustomHeadsetOpenVR
  • Button event or input-code testing
  • Exact SteamVR, Pimax EVO, firmware and OpenPort versions

Thank you again for your work.

Your driver has turned these Pimax headsets into lightweight, flexible native SteamVR devices and has made possible a combination that is essential for me: Lighthouse tracking, eye tracking and motion compensation within the same pipeline.

Restoring access to the physical headset buttons would remove the main remaining ergonomic limitation of this configuration.

Technical environment:

  • Driver: CustomHeadsetOpenVR v1.3.0-beta.1
  • Headsets:
    • Pimax Dream Air Lighthouse
    • Pimax Crystal Super Micro-OLED with Lighthouse Faceplate
  • Tracking system: SteamVR Lighthouse
  • OpenXR runtime: SteamVR
  • Motion compensation device: Vive Tracker 3.0
  • Motion platform: 6DOF
  • Confirmed eye-tracking application: iRacing in OpenXR mode
  • Pimax software: Pimax Play EVO with OpenPort enabled
  • Main missing functionality: physical HMD + and - button input while the driver is active

Best regards.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions