All Projects → DuroSoft → XJoy

DuroSoft / XJoy

Licence: MIT license
Use Nintendo Switch JoyCons as a virtual Xbox 360 controller in Windows

Programming Languages

C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to XJoy

BetterJoyForDolphin
Allows the Nintendo Switch Pro Controller and Joycons to be used with the Dolphin Emulator
Stars: ✭ 44 (-85.76%)
Mutual labels:  xbox360-controller, joycon
xbox360-controller-manager
Turn OFF your wireless xbox 360 controller on PC and see the battery status of the connected controllers.
Stars: ✭ 38 (-87.7%)
Mutual labels:  windows-10, xbox360-controller
joy-con-webhid
Use the Nintendo Switch Joy-Cons via the WebHID API
Stars: ✭ 61 (-80.26%)
Mutual labels:  joycon, joy-cons
mi-360
Xbox360 controller emulation for Xiaomi Gamepad, with vibration support
Stars: ✭ 118 (-61.81%)
Mutual labels:  xbox360-controller, vigem
ControllerBuddy
Highly advanced game controller mapping
Stars: ✭ 47 (-84.79%)
Mutual labels:  xbox360-controller
reboot to rcm
A small app to reboot 1.0 Switches into RCM mode
Stars: ✭ 32 (-89.64%)
Mutual labels:  nintendo-switch-hacking
DropPoint
Make drag-and-drop easier using DropPoint. Drag content without having to open side-by-side windows
Stars: ✭ 303 (-1.94%)
Mutual labels:  windows-10
argus
Argus Advanced Remote & Local Keylogger For macOS and Windows
Stars: ✭ 87 (-71.84%)
Mutual labels:  windows-10
SwiTAS
A usable toolkit for creating Nintendo Switch TASes with homebrew
Stars: ✭ 54 (-82.52%)
Mutual labels:  joycon
WindowsCommunityToolkit
The Windows Community Toolkit is a collection of helpers, extensions, and custom controls. It simplifies and demonstrates common developer tasks building UWP and .NET apps for Windows 10 and Windows 11. The toolkit is part of the .NET Foundation.
Stars: ✭ 4,934 (+1496.76%)
Mutual labels:  windows-10
joycon
Device access library for Joycon(Nintendo Switch)
Stars: ✭ 59 (-80.91%)
Mutual labels:  joycon
react-windows-ui
Build Windows fluent UI apps using ReactJS. Provides a set of accessible, reusable, and composable React components that make it super easy to create websites and apps.
Stars: ✭ 383 (+23.95%)
Mutual labels:  windows-10
mmap-io
Clean straight forward mmap-bindings for node.js
Stars: ✭ 62 (-79.94%)
Mutual labels:  windows-10
webi-installers
Primary and community-submitted packages for webinstall.dev
Stars: ✭ 421 (+36.25%)
Mutual labels:  windows-10
Windows-On-Reins
Wor is a Powershell script to harden, debloat, optimize, enhance privacy, avoid fingerprinting and improve performance on Windows 10 and 11.
Stars: ✭ 170 (-44.98%)
Mutual labels:  windows-10
WSLackware
Slackware for WSL!
Stars: ✭ 38 (-87.7%)
Mutual labels:  windows-10
xbox360wirelesschatpad
Xbox 360 Wireless Chatpad for Windows
Stars: ✭ 58 (-81.23%)
Mutual labels:  xbox360-controller
Steam-Tiles
Pin Tiles of your games from Steam to the Windows 10 Start Menu
Stars: ✭ 20 (-93.53%)
Mutual labels:  windows-10
ImmersiveColors
Easy way to access Windows 10 Immersive colors
Stars: ✭ 64 (-79.29%)
Mutual labels:  windows-10
d2dx
D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions.
Stars: ✭ 214 (-30.74%)
Mutual labels:  windows-10

XJoy

XJoy allows you to use a pair of Nintendo Joy-Cons as a virtual Xbox 360 controller on Windows. XJoy is made possible by ViGEm and hidapi.

Support this project

XJoy is a free product that I work on in my free time, so any contributions are greatly appreciated.

Note

Currently the newer versions containing analog support appear to have some issues. I recommend using the last version before analog support was introduced v0.1.8.

Installation

  1. Install the ViGEm Bus Driver (install all requirements as well)
  2. Install the Visual C++ Redistributable for Visual Studio 2017
  3. Download the latest zip from the releases page and extract it somewhere permanent like your Documents folder
  4. That's it!

Usage

  1. Pair each of your Joy-Cons with Windows (hold down the button on the side to put into pairing mode, then go to add bluetooth device in Windows)
  2. Ensure that both Joy-Cons show as "Connected" in your bluetooth devices page
  3. Run XJoy.exe
  4. Start playing games with your Joy-Cons. A virtual xbox controller should show up as soon as XJoy.exe starts running (you will hear the USB device inserted sound).
  5. To confirm that it is working, try pressing some buttons on your Joy-Cons. You should see the names of the buttons currently being pressed printed in the terminal.
  6. To exit, press [ENTER] in the terminal window. You can also simply close the window however this may not disconnect from the Joy-Cons and the virtual controller properly.

When you launch XJoy.exe, you should get output similar to this:

XJoy v0.1.0

initializing emulated Xbox 360 controller...
 => connected successfully
 => added target Xbox 360 Controller

initializing threads...
 => created report mutex
 => left Joy-Con thread started
 => found left Joy-Con
 => successfully connected to left Joy-Con
 => right Joy-Con thread started
 => found right Joy-Con
 => successfully connected to right Joy-Con

Customization

Right now all buttons are hard-coded to their "default" xbox equivalents. If you wish to customize these mappings, feel free to modify the process_button method in XJoy.cpp and recompile yourself. I plan to add support for a configuration file and maybe a GUI in later versions. The default mappings are shown below:

Joy-Con Button Xbox Button
A B
B A
X Y
Y X
Left Trigger Left Trigger
Right Trigger Right Trigger
Left Shoulder Left Shoulder
Right Shoulder Right Shoulder
D-PAD D-PAD
Left Analog Left Analog
Right Analog Right Analog
Left Stick Left Thumb
Right Stick Right Thumb
Home Start
Capture Back
Plus Start
Minus Back
SL on Joy-Con (L) A
SR on Joy-Con (L) X
SL on Joy-Con (R) B
SR on Joy-Con (R) Y

Building

If you wish to build XJoy yourself, simply install the ViGEm Bus Driver as outlined in the installation steps, open the XJoy.sln file in Visual Studio 2017, and build. Everything should work out of the box but if it does not feel free to submit an issue. Note that at least on my end it seems to be working in Visual Studio 2019 as well, which is good.

Contributing

  1. create a fork for your feature/bugfix/whatever
  2. make your additions/modifications, following our C++ Coding Style Guidelines
  3. test your changes, doing your best to ensure you aren't introducing any environment-specific behavior that may cause issues for users without your exact setup. XJoy's target audience is freshly installed Windows 10 users who have followed the ViGEm installation instructions.
  4. submit a pull request
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].