All Projects → sam0x17 → Xjoy

sam0x17 / Xjoy

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

Projects that are alternatives of or similar to Xjoy

Windows Auto Night Mode
Automatically switches between the dark and light theme of Windows 10 and Windows 11
Stars: ✭ 3,375 (+1462.5%)
Mutual labels:  windows-10
Go Win64api
Windows API wrappers for Go - useful for SysOps
Stars: ✭ 187 (-13.43%)
Mutual labels:  windows-10
Caliburn.micro
A small, yet powerful framework, designed for building applications across all XAML platforms. Its strong support for MV* patterns will enable you to build your solution quickly, without the need to sacrifice code quality or testability.
Stars: ✭ 2,404 (+1012.96%)
Mutual labels:  windows-10
Executivecallbackobjects
Research on Windows Kernel Executive Callback Objects
Stars: ✭ 169 (-21.76%)
Mutual labels:  windows-10
Win10script
Win 10 Powershell Script to tweak and change windows settings
Stars: ✭ 184 (-14.81%)
Mutual labels:  windows-10
Winappdriver
Windows Application Driver
Stars: ✭ 2,577 (+1093.06%)
Mutual labels:  windows-10
Windows 10 Dark
Dark variant of Windows 10 theme
Stars: ✭ 163 (-24.54%)
Mutual labels:  windows-10
Cve 2020 16898
CVE-2020-16898 (Bad Neighbor) Microsoft Windows TCP/IP Vulnerability Detection Logic and Rule
Stars: ✭ 207 (-4.17%)
Mutual labels:  windows-10
Win10clean
Cleanup your Windows 10 environment
Stars: ✭ 187 (-13.43%)
Mutual labels:  windows-10
Meterpeter
C2 Powershell Command & Control Framework with BuiltIn Commands (Modules)
Stars: ✭ 201 (-6.94%)
Mutual labels:  windows-10
Win10 Secure Baseline Gpo
Windows 10 and Server 2016 Secure Baseline Group Policy
Stars: ✭ 170 (-21.3%)
Mutual labels:  windows-10
Wslinstall
Install any GNU/Linux userspace in WSL
Stars: ✭ 178 (-17.59%)
Mutual labels:  windows-10
Methanekit
🎲 Modern 3D graphics made simple with cross-platform C++17 meta-API on top of DirectX 12 & Metal (Vulkan is coming)
Stars: ✭ 197 (-8.8%)
Mutual labels:  windows-10
Puremvc Csharp Multicore Framework
PureMVC MultiCore Framework for C#
Stars: ✭ 166 (-23.15%)
Mutual labels:  windows-10
Alpinewsl
Alpine Linux based WSL distribution. Supports multi-install. Lightest WSL distribution.
Stars: ✭ 203 (-6.02%)
Mutual labels:  windows-10
Windowstemplatestudio
Windows Template Studio quickly builds a UWP app, using a wizard-based UI to turn your needs into a foundation of Windows 10 patterns and best practices.
Stars: ✭ 2,089 (+867.13%)
Mutual labels:  windows-10
Youtube Dl Gui
A cross-platform GUI for youtube-dl made in Electron and node.js
Stars: ✭ 183 (-15.28%)
Mutual labels:  windows-10
Arsenic
Async WebDriver implementation for asyncio and asyncio-compatible frameworks
Stars: ✭ 209 (-3.24%)
Mutual labels:  windows-10
Lcow
Linux containers on Windows built with LinuxKit
Stars: ✭ 204 (-5.56%)
Mutual labels:  windows-10
Windows Terminals
Repository with some awesome Windows Terminals themes
Stars: ✭ 199 (-7.87%)
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

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].