| Summary: | XBox Series X game controller inputs not updating in Game Controller Settings app | ||
|---|---|---|---|
| Product: | [Applications] systemsettings | Reporter: | cenon.delrosario |
| Component: | kcm_joystick | Assignee: | Plasma Bugs List <plasma-bugs-null> |
| Status: | RESOLVED FIXED | ||
| Severity: | normal | CC: | duha.bugs, josh, jpwhiting |
| Priority: | NOR | ||
| Version First Reported In: | 6.2.0 | ||
| Target Milestone: | --- | ||
| Platform: | Arch Linux | ||
| OS: | Linux | ||
| Latest Commit: | https://invent.kde.org/plasma/plasma-desktop/-/commit/9c0c319d635f2758d1d310a2a413b7af335c4005 | Version Fixed/Implemented In: | 6.3.0 |
| Sentry Crash Report: | |||
|
Description
cenon.delrosario
2024-10-13 23:53:10 UTC
Git commit ee38a393959e6172fec5e06a083c14e587cbb132 by Joshua Goins, on behalf of Arthur Kasimov. Committed on 14/12/2024 at 15:43. Pushed by redstrate into branch 'master'. kcms/gamecontroller: Show positions of POV hats under Axes table On many gamepads D-pad is actually exposed as a joystick POV hat instead of four regular buttons. Unfortunately, the current implementation completely ignores POV hats / D-pads and doesn't show them in UI. This commit adds new class HatModel that provides raw position data from POV hats. Each POV hat is mapped to a pair of X/Y model rows. Both axes values and hat positions are now displayed under Axes table using new class AxesProxyModel. M +2 -0 kcms/gamecontroller/CMakeLists.txt A +44 -0 kcms/gamecontroller/axesproxymodel.cpp [License: GPL(v2.0+)] A +33 -0 kcms/gamecontroller/axesproxymodel.h [License: GPL(v2.0+)] M +30 -0 kcms/gamecontroller/device.cpp M +6 -0 kcms/gamecontroller/device.h M +5 -0 kcms/gamecontroller/devicemodel.cpp A +91 -0 kcms/gamecontroller/hatmodel.cpp [License: GPL(v2.0+)] A +39 -0 kcms/gamecontroller/hatmodel.h [License: GPL(v2.0+)] M +4 -0 kcms/gamecontroller/kcm.cpp M +1 -1 kcms/gamecontroller/ui/main.qml https://invent.kde.org/plasma/plasma-desktop/-/commit/ee38a393959e6172fec5e06a083c14e587cbb132 Git commit 9c0c319d635f2758d1d310a2a413b7af335c4005 by Joshua Goins, on behalf of Arthur Kasimov. Committed on 14/12/2024 at 15:43. Pushed by redstrate into branch 'master'. kcms/gamecontroller: Replace SDL Game Controller API with Joystick API Currently the KCM uses a mix of higher-level SDL "Game Controller" API and lower-level "Joystick" API. Unfortunately, this results in numerous bugs. The state of some buttons/axes, such as D-pad or right trigger, is not displayed properly. This happens due to the mismatch between Game Controller API and Joystick API that report different number and order of buttons/axes. Another issue is that some non-standard devices like racing wheels or handbrakes and not detected at all. The Game Controller API seems to be limited to standard gamepads only. This commit introduces new Device class that encapsulates SDL_Joystick object. Both ButtonModel and AxesModel now use Device object to report raw values from buttons and axes. DeviceModel now manages Device objects and shows them in the combo box. This ensures SDL Joystick API is used consistently across all code and avoids API mismatch issues. This should also properly detect joysticks, wheels and handbrakes. Unfortunately I don't have any of these devices and can't really test them. The Gamepad class encapsulates SDL_GameController object and provides higher-level access to gamepads. For now it is only used to display the coordinate of left stick in PositionWidget. In future it can be used to revamp the UI and show the symbolic view of standard gamepads. Related: bug 484046, bug 487694, bug 494913 M +1 -0 kcms/gamecontroller/CMakeLists.txt M +33 -14 kcms/gamecontroller/axesmodel.cpp M +10 -7 kcms/gamecontroller/axesmodel.h M +27 -28 kcms/gamecontroller/buttonmodel.cpp M +10 -12 kcms/gamecontroller/buttonmodel.h A +90 -0 kcms/gamecontroller/device.cpp [License: GPL(v2.0+)] A +49 -0 kcms/gamecontroller/device.h [License: GPL(v2.0+)] M +71 -30 kcms/gamecontroller/devicemodel.cpp M +16 -5 kcms/gamecontroller/devicemodel.h M +23 -32 kcms/gamecontroller/gamepad.cpp M +7 -20 kcms/gamecontroller/gamepad.h M +8 -3 kcms/gamecontroller/ui/main.qml https://invent.kde.org/plasma/plasma-desktop/-/commit/9c0c319d635f2758d1d310a2a413b7af335c4005 |