-
-
Notifications
You must be signed in to change notification settings - Fork 143
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
AntiMicroX unable to bind Xbox Series X controller Share button #307
Comments
Please use bug template for this kind of issues. |
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
Windows 10 21H2 |
The problem occurs on Linux (Fedora) as well, on the latest release. I can also post a log if needed. |
@I-G-E |
@blackwind |
Here’s my log: antimicrox.log This is from the Flatpak version. I realized the maintained package on my distro (Fedora) is actually one version behind (3.2.0). Unfortunately I didn’t get QJoyPad working. Compiled without problems, but there isn’t any kind of response when opening the program (no GUI, no logs, no anything). Jstest-gtx recognized every button and axis except for the share button. SDL2 Gamepad Tool does recognize the share button press when I map it to some other button, but that means one other button cannot be mapped at all, since the program expects only the amount of mappings you’d have on previous Xbox controller iterations (i.e. one button less). It’s the same with AntiMicroX’s mapping dialog. Had a glance at the start of the log myself, indeed it recognizes only 15 out of the 16 buttons.
|
I think this issue may be caused by SDL2. |
That seems to be the case. I compiled their test programs and used the provided
I’ll try posting some info on one of those threads. |
Closing, because this issue is out of scope of AntiMicroX. |
@pktiuk Can you reopen this issue? SDL does, in fact, support the share button of the controller. The "not recognized by SDL" error message was a red herring, which is caused by the Linux kernel driver translating the share button press into a (non-joypad) key press, resulting in SDL showing both the button press and the error for the unrecognized key press. AntiMicroX's log output was also lacking because of the kernel driver not directly supporting the button. As discovered here, AntiMicroX does not recognize the share button because it is not handling the The SDL mapping string looks like this when created with their mapping tool:
The Another closely related thing: I think the controller mapping dialog of AntiMicroX should be updated to support this additional button as well. The button should be shown in the mapping list and in the controller image. Here is how SDL's official mapping tool displays it: Of course, I can make this into a separate issue, if needed. |
This value is obtained with SDL API SDL_JoystickNumButtons(). Are you sure the If we are sure that Button linked with Sharing is missing then we can be sure, that SDL doesn't report number of buttons correctly. In terms of the first report #307 (comment) (about 21 buttons) |
I tried now with the latest version of AntiMicroX available on my distro (Fedora), which is 3.2.4, and also with the latest Flatpak release, which is 3.2.5. My results were the same for both. The reported button number is actually different from the log I posted in January (which was running on version 3.2.1). Now the number is 21, which matches the different issue you mentioned and that was apparent in the OP: Show log
To reiterate, my actual controller has exactly 16 buttons (all of which are visible in the image posted by the OP). Despite the different (and still incorrect) amount of buttons reported, I still cannot map the share button. Nothing is highlighted in the GUI and nothing is printed in the logs when I press the button. Here's me pressing all of my buttons: Show log
And here's a screenshot of the GUI: I did try to map all the shown extra buttons just in case, but none of those buttons 16–21 seem to be the share button since the mapped key is not inputted when I press the button.
I don't think the number thing is a problem with SDL (at least anymore?). I again compiled the latest version of their test mapper, and it shows the correct number of buttons: Show log
It is also using the exact API you mentioned. Is AntiMicroX maybe using a too old version of SDL or something? |
@Igetin Do you have
This is possible. (you can check used SDL version in logs and in Tomorrow I will also check filtering events. Maybe something is wrong there. Thank you for logs :) |
Yeah, the button count is now correct with that build. 👍 |
Have you checked all the buttons on the gamepad? Are you sure that none of them activates I added some new logs which could help with dealing with this issue. Build with these changes is here: Could you collect some logs for me? Just open an app and press |
Sorry, it took me some time to get back to this.
Yes, none of them activates that one.
Here is the full log: antimicrox_3.2.5-new-logs_button_test_2022-10-16.log. I used the AppImage build. It appears that the share button press generates events of the type |
I think we just figured out the source of this problem. I asked a question whether is it intended behavior or not and according to the answer, I will think about a solution. |
So, since the missing mapping is now included in SDL, it would seem like this problem should be fixed when SDL 2.26.0 is released (due by November 01, 2022), and after a new release of AntiMicroX is built against the new SDL release. I also noticed that AntiMicroX includes a copy of SDL_GameControllerDB. Should that be updated as well? |
Yes. |
I fixed the mapping on the DB a few days ago! What I meant is that AntiMicroX should probably update its local copy since it was last updated 10 months ago. :P |
I will do it now, anyway I should do it from time to time :) |
I think you could just test this fix now by swapping file |
Yes, that did indeed immediately make the button work. Although I noticed a weird quirk with it: for some reason, if I map a key to the share button, the event will fire noticably slower than for all the other buttons. I snagged a quick clip of it in action: antimicrox_xbox_series_x_share_button_lag.mp4As it is now, I wouldn't really map it to any action that requires an instant response. It's several hundred milliseconds slower than the other buttons. The lag only happens when I've mapped a key to the button. When nothing is mapped, the events fire at the same normal speed as with the other buttons. I tried the Could be a Linux-specific issue, I'll try to check later if it happens on Windows as well. |
has anyone been able to get this to work on windows 10? |
@Igetin Could you create separate issue for this problem? It seems to be a really tricky one. |
I can, but unfortunately I cannot help with testing that problem since I cannot reproduce the issue on my system anymore, after upgrading to Fedora 37. The issue was reproduced on AntiMicroX 3.2.5 running Fedora 35 (which is EOL in two weeks). Do you still want an issue to track the problem? |
If it does not happen anymore, then no (maybe they just fixed it in SDL) |
Still unable to map the Share button here with v3.3.4-with-SDL2.28.2. Does anyone have any pointers? |
I’m able to map it just fine with that version running on Fedora, so what you’re experiencing might be a Windows-specific problem. I’d suggest first sharing the application log here. |
This seems to be a really strange issue. I am running Windows and recently got a new Series X controller. The Share button is identified as b11, and I can successfully map it. The problem is AntimicroX doesn’t let me map an extra button for the controller. So I have to replace another mapping. For example, I could map the Share button (b11) to Guide, but now I couldn’t bind my Guide button to anything since it’s unmapped. I tried manually opening antimicrox_settings and adding misc1:b11 to my mapping string. Now my Share button works and functions as Button 16 in the GUI. I logged pressing the button and here is an excerpt:
|
Are you able to map this button using tools mentioned in this repository? : https://github.com/mdqinc/SDL_GameControllerDB If not, then you should report it directly to SDL |
One of the primary additions to Xbox Series X controllers over the classic Xbox One controller is a Share button:
In AntiMicro, Xbox Series X controllers connected via Bluetooth show up as two separate devices:
In the tab for the Bluetooth half of the device, the Share button corresponds to Button 12 and can successfully be bound.
AntiMicroX, on the other hand, instead displays these controllers as one device with 21 buttons for some reason:
This would be preferable if one of those extra six buttons corresponded to the Share button. Unfortunately, that's not the case. There's just six extra buttons there, for no reason, that don't actually exist on the controller, and I can no longer bind the Share button at all. Can this behavior be improved?
The text was updated successfully, but these errors were encountered: