https://bugs.kde.org/show_bug.cgi?id=484046
Joshua Goins <j...@redstrate.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|REPORTED |RESOLVED Latest Commit| |https://invent.kde.org/plas | |ma/plasma-desktop/-/commit/ | |9c0c319d635f2758d1d310a2a41 | |3b7af335c4005 Resolution|--- |FIXED --- Comment #12 from Joshua Goins <j...@redstrate.com> --- 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 487694, bug 494705, 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 -- You are receiving this mail because: You are watching all bug changes.