Skip to content

About

OpenVR server driver that maps Nintendo Joy-Con controllers over hidapi to SteamVR left and right hand controllers.

Resources

Stars

1 star

Watchers

0 watching

Forks

 
 

Repository files navigation

JoyConInput OpenVR Driver

OpenVR server driver that maps Nintendo Joy-Con controllers over hidapi to SteamVR left and right hand controllers.

Features

  • Separate left and right Joy-Con devices in SteamVR.
  • Index-style controller emulation for compatibility with existing SteamVR bindings.
  • Per-hand button mapping in config/config.json.
  • Raw Joy-Con buttons exposed as bindable SteamVR inputs.
  • Analog stick calibration loading from config/joyconcal.json.
  • Standalone calibration tool at joycon_calibrate.exe.

Requirements

  • Windows
  • Visual Studio 2022 C++ build tools
  • CMake 3.21 or newer

The project can auto-fetch OpenVR, hidapi, and nlohmann/json during CMake configure, so a separate SDK install is optional.

Build

cmake -S . -B build -A x64
cmake --build build --config Release

Build outputs:

  • build/bin/win64/Release/driver_joyconinput.dll
  • build/bin/win64/Release/joycon_calibrate.exe

Packaged Driver Folder

This repository already includes a ready-to-register SteamVR driver folder at steamvr_driver/joyconinput.

Expected layout:

steamvr_driver/joyconinput/
  driver.vrdrivermanifest
  bin/win64/driver_joyconinput.dll
  bin/win64/joycon_calibrate.exe
  config/config.json
  config/joyconcal.json
  resources/input/joycon_left_profile.json
  resources/input/joycon_right_profile.json

Register it with SteamVR:

"C:/Program Files (x86)/Steam/steamapps/common/SteamVR/bin/win64/vrpathreg.exe" adddriver "C:/Users/LogicCuteGuy/Downloads/JoyconInputOpenVR/steamvr_driver/joyconinput"

After changing controller profile files or controller identity properties, fully restart SteamVR so it reloads the driver metadata.

Configuration

Main configuration file: config/config.json

Supported Joy-Con button names:

  • minus, plus, capture, home
  • a, b, x, y
  • up, down, left, right
  • l, r, zl, zr, sl, sr, stick

Supported mapped actions:

  • system
  • menu
  • a
  • b
  • x
  • y
  • grip
  • trigger_click
  • thumbstick_click
  • unused, unuse, or none

Per-hand options:

  • button_bindings
  • invert_x
  • invert_y
  • analog_deadzone

Calibration

The driver reads JoyConCal-style data from config/joyconcal.json.

Expected format:

{
  "left": {
    "x_min": 1260,
    "x_center": 2048,
    "x_max": 2860,
    "y_min": 1240,
    "y_center": 2048,
    "y_max": 2870,
    "deadzone": 120
  },
  "right": {
    "x_min": 1260,
    "x_center": 2048,
    "x_max": 2860,
    "y_min": 1240,
    "y_center": 2048,
    "y_max": 2870,
    "deadzone": 120
  }
}

If the file is missing, built-in defaults are used.

Calibration Tool

Run the calibration tool from the packaged driver bin/win64 folder or pass an explicit output path.

Default output path:

  • ../../config/joyconcal.json

Example:

.\joycon_calibrate.exe

Or:

.\joycon_calibrate.exe C:\path\to\joyconcal.json

License

This project is licensed under the MIT License. See LICENSE.

About

OpenVR server driver that maps Nintendo Joy-Con controllers over hidapi to SteamVR left and right hand controllers.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages