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.

Reply via email to