DanielOgorchock / linux

Other
49 stars 7 forks source link

Support for the official NES and SNES controllers #14

Open photodiode opened 4 years ago

photodiode commented 4 years ago

Hi, Would it be possible to add in support for the official NES and SNES controllers?

@nadiaholmquist added them into an older version of this driver which worked fine, so I'm guessing any needed information can be found in there. (Links to the code: hid-ids.h, hid-nintendo.c)

Thanks for all the work put into this driver, it's immensely appreciated!

nadiaholmquist commented 4 years ago

Once the driver makes it into mainline, I'm going to try and submit my patches to add support for those controllers too.

photodiode commented 4 years ago

Thank you so much

v1993 commented 3 years ago

Relevant PR for SNES controller on DKMS version of this module: https://github.com/nicman23/dkms-hid-nintendo/pull/27

emilyst commented 2 years ago

Once the driver makes it into mainline, I'm going to try and submit my patches to add support for those controllers too.

It looks like the hid-nintendo driver hit mainline in 5.16 (congrats, Daniel!).

I'm aware of @nadiaholmquist's existing work to add support for the NES joycons and the SNES controller against an older version of hid-nintendo. These changes work great when I test them locally.

I'd love to help move NES and SNES support ahead, if that's possible, against the latest version of hid-nintendo. What would that entail? Applying @nadiaholmquist's patches to hid-nintendo and opening a pull request for each here? Or do I need to interact with the Linux Input Mailing List?

In addition, I have the Nintendo Switch Online Sega Genesis control pad. It has product ID 0x201e, so it unfortunately gets picked up by the hid-generic driver and does not work at all (e.g., jstest reports no events). I'd be happy to attempt to write a patch for it as well. And if I ever manage to get ahold of the N64 controller, I could try it as well.

Thanks to you both for the work you've done already. Let me know if or how I can help.

emilyst commented 2 years ago

I'd love to help move NES and SNES support ahead, if that's possible, against the latest version of hid-nintendo. What would that entail? Applying @nadiaholmquist's patches to hid-nintendo and opening a pull request for each here? Or do I need to interact with the Linux Input Mailing List?

In addition, I have the Nintendo Switch Online Sega Genesis control pad. It has product ID 0x201e, so it unfortunately gets picked up by the hid-generic driver and does not work at all (e.g., jstest reports no events). I'd be happy to attempt to write a patch for it as well. And if I ever manage to get ahold of the N64 controller, I could try it as well.

FYI: I have a draft of this work done, available to view in this pull request: https://github.com/DanielOgorchock/linux/pull/35. I've marked it as a draft to indicate that it's not fully done, but it's ready for input if desired. Hopefully this will speed up getting this support incorporated into kernel 5.17 or 5.18.

If I don't receive a response, I'll try emailing you, @DanielOgorchock, or going to the Linux Input list directly.

emilyst commented 2 years ago

I ended up closing that pull request since I got no response, but anyone who likes can install my work from here: https://github.com/emilyst/hid-nintendo.

nfp0 commented 9 months ago

Has there been any progress in getting the rest of the controllers mainlined?

SuperSamus commented 9 months ago

https://github.com/torvalds/linux/commit/94f18bb19945915fcdfd1903841020ef1b6af44a Will be merged for Linux 6.8.

nfp0 commented 9 months ago

Wow, I did not expect that. Great news! Thank you for everyone involved!