-
Notifications
You must be signed in to change notification settings - Fork 118
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
question: Xbox Elite Wireless Controller Series 2 support for paddles #427
Comments
Currently you cannot adjust this without hacking the source code. But the infrastructure is there. If you're somewhat into coding, you could hard-code a remapping yourself - it shouldn't be to difficult. We already can see and identify the paddles in the HID reports, and we do report them back to user-space in profile 0 mode. Some more advanced, I'd like to reverse engineer how MS actually programs remappings into the controller via HID. I think I identified which HID reports do that but I didn't setup a packet capture yet. Mapping LT to a paddle may be a bit more difficult because one is analog while the other is digital. But converting from a digital input to analog (as you probably want to do) should be easy because the value is either 0 or 1023. I'm currently working on doing it the other way around, too, for mouse emulation (converting analog to digital with some fuzzy logic). So I'm all in for making this a perfect fit for your use-case. |
There's a proven working example in the source code how to suppress some HID events and synthesize others from it (for the Guide button and emulated profile switching). It's actually this code you want to change: xpadneo/hid-xpadneo/src/hid-xpadneo.c Lines 893 to 901 in 13dd267
Instead of reporting paddle 0,1,2,3 if a value bit is set, you may want to report the trigger axis or shoulder button instead. You may actually need to suppress reporting the native trigger axis so it doesn't generate input events that mess up the result if you accidentally push on the trigger. In profiles other than 0, the controller reports remappings from its internal programming which is mapping to A,B,X,Y by default (unless you changed that with the Windows Xbox Acc app). |
Makes sense! I didn' t think about the paddles being digital or analog, tbh I had no idea of which one they were haha I'm sold on the idea, when I finally get the controller I will be back then :) Thank you for the detailed response! |
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
If you have access to a Windows machine the Xbox Accessories app lets you write profiles, everything seems to work just fine for me (see above mention, #429). Not ideal of course, say you decide you want a different mapping, well it's back to the Windows machine and reconfigure. But at least it's possible, and evidently bringing support for this to XPadNeo is being worked on. |
I'm planning to reverse engineer that protocol, so we can have a profile programming app in Linux, too. |
I just purchased an Xbox Series 2 Elite - Is there a way to make the back paddles report under jstest as events 11, 12, 13, 14 without modifying the source code/recompiling? Then I could remap them to any key(s) I desire using something like antimicrox - currently they are returning as XABY (events 0 to 3). I have not used Windows, so no HID remapping - I assume the XABY is the profile 0/default support noted on the readme. |
I'm going to try editing the source, but how do I compile this? Does install.sh actually compile? configure.sh did not produce a makefile for me, nor do I see a top level build file I'm familiar with (Makefile, or cmake stuff etc.)
Ah, I'm dumb, I see it exists in hid-xpadneo sub-directory 😄 (though my change seems to have no effect, time to read and grok more...) Edit: Ok, clearly I should learn more about the controller itself - I see how to switch profiles there, and what I wanted was already present. Thanks for an awesome project! |
@ahungry Yeah, profile 0 is hard-coded in the firmware to report the paddles as native paddles. If you switch to profile 1-3, it will use whatever was programmed into the controller, in case of factory defaults, that's reporting as ABXY for the paddles. While we can still see in the HID reports that a paddle was pressed, it will "press" ABXY at the same time, so for profile 1-3 I actually mask the paddle bits. We'll have to reconsider that after I figured out how programming the firmware works. The Your patch actually applies to profile 0 only, and moves the buttons to Compiling can be done with |
Hi! Love the project but I have a quick question that I would like to confirm before pulling the trigger on such an expensive controller haha
I understand that profiles and profile switching are still a bit iffy, but besides that is there any other feature missing for this controller? I really need the ability to remap LB and LT to the elite series 2 right hand paddles due to limited mobility in my left hand, my understanding is that xpadneo currently does not provide button remapping functionality but if it enables the use of the paddles I guess I could do the remapping inside of the game or through steam. Am I correct in my understanding? I never had an elite controller so I'm a bit loss about what functionalities could be missing or even exist haha
I read the docs but wasn' t sure if I was understanding it write. Also, if I buy this controller I would love to help further develop support for it :) (although I never got involved with coding for the kernel or drivers haha)
The text was updated successfully, but these errors were encountered: