Python driver for Nintendo Switch Joy-Con
Project description
Python driver for Nintendo Switch Joy-Con
We are referring to dekuNukem/Nintendo_Switch_Reverse_Engineering
Install
pip install joycon-python hidapi pyglm
Usage
Quick status check
cd joycon-python/
python -m pyjoycon.joycon
or use as module
from pyjoycon import JoyCon, get_R_id joycon_id = get_R_id() joycon = JoyCon(*joycon_id) joycon.get_status()
Status values
{ 'battery': { 'charging': 0, 'level': 2 }, 'buttons': { 'right': { 'y': 0, 'x': 0, 'b': 0, 'a': 0, 'sr': 0, 'sl': 0, 'r': 0, 'zr': 0 }, 'shared': { 'minus': 0, 'plus': 0, 'r-stick': 0, 'l-stick': 0, 'home': 0, 'capture': 0, 'charging-grip': 0 }, 'left': { 'down': 0, 'up': 0, 'right': 0, 'left': 0, 'sr': 0, 'sl': 0, 'l': 0, 'zl': 0 } }, 'analog-sticks': { 'left': { 'horizontal': 0, 'vertical': 0 }, 'right': { 'horizontal': 2170, 'vertical': 1644 } }, 'accel': { 'x': 879, 'y': 1272, 'z': 549 }, 'gyro': { 'x': -354, 'y': -7, 'z': 281 } }
You need cython-hidapi
to use Bluetooth / HID connection in Python.
Alternatively, you can use hid
instead if cython-hidapi
fails to find your JoyCons.
Gyroscope
We have a specialized class which tracks the gyroscope for you, and exposes this tracked state in a simplified manner:
from pyjoycon import GyroTrackingJoyCon, get_R_id import time joycon_id = get_R_id() joycon = GyroTrackingJoyCon(*joycon_id) for i in range(20): print("joycon pointer: ", joycon.pointer) print("joycon rotation: ", joycon.rotation) print("joycon direction:", joycon.direction) print() time.sleep(0.05)
Button events
We have a specialized class which tracks the state of the JoyCon buttons and
provides changes as events. Here is an example of how it could be used with pygame
:
from pyjoycon import ButtonEventJoyCon, get_R_id import pygame joycon_id = get_R_id() joycon = ButtonEventJoyCon(*joycon_id) ... while 1: pygame.time.wait(int(1000/60)) ... for event_type, status in joycon.events(): print(event_type, status) ... pygame.display.flip()
Combining multiple JoyCon helper classes
import pyjoycon class MyJoyCon( pyjoycon.GyroTrackingJoyCon, pyjoycon.ButtonEventJoyCon, ): pass
Environments
- macOS Mojave (10.14.6)
- Python (3.7.4)
- hidapi (0.7.99.post21)
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size joycon_python-0.2.4-py3-none-any.whl (10.6 kB) | File type Wheel | Python version py3 | Upload date | Hashes View |
Filename, size joycon-python-0.2.4.tar.gz (9.1 kB) | File type Source | Python version None | Upload date | Hashes View |
Close
Hashes for joycon_python-0.2.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1695cf10d875db2183c7abea464c6e7715684087d5d14ccbfb42eb56a7e4c968 |
|
MD5 | 6f926b517c0c3004010dcbc0864a4d6a |
|
BLAKE2-256 | c23638ff84089ad583b7b0f82f33fba61bfeccf037a624d41b7cfe185f966823 |