https://bugs.kde.org/show_bug.cgi?id=516764
[email protected] changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |[email protected] --- Comment #1 from [email protected] --- Created attachment 197205 --> https://bugs.kde.org/attachment.cgi?id=197205&action=edit Evidence and Logs of my elite 2 controller I have the same experience with my Elite 2, here is info I gathered from Astra, I do not trust it to write any fixes but the info is useful I'm sure: Additional reproduction on an Xbox Elite Series 2: likely SDL button-enum / model-row mismatch I can reproduce a very similar combination-dependent display failure in Plasma 6.8.0 with an Xbox Elite Series 2 connected over Bluetooth using xpadneo 0.10.4. In System Settings > Game Controller, individual paddles are missing or inconsistent. Paddle 1 never appears by itself; pressing 1+2 shows 2, pressing 3+4 shows 4, and all four can show only 2, 3 and 4. The controller is on profile 0 (no profile LED). A simultaneous, read-only capture of the controller's Linux evdev device receives all four distinct paddle press/release events, the pairs, and all four together correctly, while the KDE display remains incorrect. SDL2 enumeration also recognises and maps all four paddles. This appears to be a KCM display-update problem, not a missing hardware input. Environment: - plasma-desktop 6.8.0-1.1 - Kernel 7.2.10-arch1-1 - xpadneo-dkms 0.10.4-1; loaded hid_xpadneo - sdl2-compat 2.32.74-1.1 - sdl3 3.4.18-1.1 - Elite Series 2 Bluetooth HID ID 045e:0b22 - xpadneo exposes compatibility input ID 045e:028e; SDL calls it Xbox 360 Controller - Latest controller firmware according to Xbox Accessories; exact firmware version not captured Steps: 1. Connect the Elite Series 2 over Bluetooth with xpadneo, selecting profile 0. 2. Open System Settings > Game Controller. 3. Press and release each paddle separately. 4. Press and release the two paddle pairs, then all four together. 5. Compare the displayed states against evdev events. Expected: Every paddle's row updates on its own press and release, independently of other paddles. Actual: Individual rows fail to update; combinations cause partial or inconsistent updates even though evdev reports the inputs correctly. Likely source-level cause (inspected in the upstream v6.8.0 tag, also present in master when checked): 1. Device::open compacts the supported SDL button enums into m_buttonType[row]. In this case SDL reports enums 0..14 and 16..19: enum 15 (Miscellaneous) is absent. Paddle enums 16..19 therefore occupy model rows 15..18. 2. Device::buttonState(row) correctly maps a model row back to the SDL button enum using m_buttonType.value(row). 3. However, Device::onControllerButtonEvent emits buttonStateChanged(event.button), passing the original SDL enum, not the compacted row. 4. ButtonModel::onButtonStateChanged treats that value as a row and emits dataChanged for it directly. Consequently, a paddle event refreshes the wrong row (or a row outside the model), explaining why simultaneous presses appear to make neighbouring buttons work. This also seems consistent with the original Xbox controller's combination-dependent symptoms in this report, although I have not tested that hardware. Source references: https://invent.kde.org/plasma/plasma-desktop/-/blob/v6.8.0/kcms/gamecontroller/device.cpp#L185-191 https://invent.kde.org/plasma/plasma-desktop/-/blob/v6.8.0/kcms/gamecontroller/device.cpp#L270-280 https://invent.kde.org/plasma/plasma-desktop/-/blob/v6.8.0/kcms/gamecontroller/device.cpp#L346-350 https://invent.kde.org/plasma/plasma-desktop/-/blob/v6.8.0/kcms/gamecontroller/buttonmodel.cpp#L40-44 Suggested fix direction: translate SDL controller-button enums back to model rows before notifying ButtonModel; retain the correct handling for raw joystick events. This is a source diagnosis, not a tested patch. Attached: kde-516764-evidence.txt, containing the captured evdev excerpt, SDL mapping and supported enums. No driver or system configuration was changed. -- You are receiving this mail because: You are watching all bug changes.
