denilsonsa / udev-joystick-blacklist

Fix for keyboard/mouse/tablet being detected as joystick in Linux
118 stars 27 forks source link

Switch Pro Controller over USB #35

Open TheRealDxRed opened 6 years ago

TheRealDxRed commented 6 years ago

The Nintendo Switch Pro Controller recently got USB functionality and messes up joystick input, could you add this to the blacklist?

denilsonsa commented 6 years ago

Hello! What do you mean by "recently got USB functionality" and by "messes up joystick input"? If it is a joystick that is recognized as a USB joystick, why do we want to blacklist it?

Also, we need the vendor_id and product_id of the device.

TheRealDxRed commented 6 years ago

Thank you for your response.

I do not know the exact update number, but the Nintendo Switch Pro Controller had it's firmware updated to allow play through USB as well as bluetooth. Plugging it into a PC shows a joystick on which some of the buttons are permanently pressed. There is a way to use the controller on UNIX-like OS's using the git repository HID-Joy-Con-Whispering, but it does not disable the original joystick input therefore causing problems when mapping buttons in games.

The Nintendo Switch Pro Controller's idVendor is 057e and it's idProduct is 2009

Leeo97one commented 6 years ago

I can confirm what @TheRealDxRed said. Here is what happens when I plug the controller:

mai 03 00:42:27 leeo-arch-msi kernel: usb 1-4: new full-speed USB device number 19 using xhci_hcd
mai 03 00:42:27 leeo-arch-msi kernel: usb 1-4: New USB device found, idVendor=057e, idProduct=2009
mai 03 00:42:27 leeo-arch-msi kernel: usb 1-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
mai 03 00:42:27 leeo-arch-msi kernel: usb 1-4: Product: Pro Controller
mai 03 00:42:27 leeo-arch-msi kernel: usb 1-4: Manufacturer: Nintendo Co., Ltd.
mai 03 00:42:27 leeo-arch-msi kernel: usb 1-4: SerialNumber: 000000000001
mai 03 00:42:27 leeo-arch-msi kernel: input: Nintendo Co., Ltd. Pro Controller as /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0/0003:057E:2009.000D/input/input48
mai 03 00:42:27 leeo-arch-msi kernel: hid-generic 0003:057E:2009.000D: input,hidraw1: USB HID v1.11 Joystick [Nintendo Co., Ltd. Pro Controller] on usb-0000:00:14.0-4/input0

Also, I tried with these rules:

SUBSYSTEM=="input", ATTRS{idVendor}=="057e", ATTRS{idProduct}=="2009", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
SUBSYSTEM=="input", ATTRS{idVendor}=="057e", ATTRS{idProduct}=="2009", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""

But without success. :disappointed: