SUMMARY Game Contoller settings app not updating inputs when I test with an XBox Series X controller. STEPS TO REPRODUCE 1. Connect an XBox Series X controller 2. Go into System Settings -> Game Controller 3. Press D-Pad Left/Right/Down or Left Trigger OBSERVED RESULT The Game Controller settings app will not register the button presses. EXPECTED RESULT The button presses should show up in the Game Controller settings app. SOFTWARE/OS VERSIONS Linux/KDE Plasma: 6.2.0 KDE Plasma Version: 6.2.0 KDE Frameworks Version: 6.6.0 Qt Version: 6.7.3 ADDITIONAL INFORMATION I used a third party app (https://controllertest.com/xbox-controller-tester) to check if the button presses actually work and they do so I am 100% it is a problem with the Game Controller settings app.
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