Looking for Testers: Game Controller Plugin for KWin ๐ŸŽฎ

Iโ€™m working on a KWin plugin that enables game controller support in Plasma. I need testers to help validate it works across different hardware.

What Does This Plugin Do?

  • Allows game controllers to navigate the Plasma desktop (mouse/keyboard emulation)

  • Automatically disables emulation when a game is using the controller

  • Prevents system suspend while the controller is active

  • Supports hotplugging (connect/disconnect detection)

How to Test

1. Set Up Environment

2. Run Nested KWin Instance

Launch a nested KWin instance from your source build, then enable the plugin:

kwriteconfig6 --file kwinrc --group Plugins --key gamecontrollerEnabled true
qdbus6 org.kde.KWin /KWin reconfigure
qdbus6 org.kde.KWin /Plugins org.kde.KWin.Plugins.LoadedPlugins

Press Right Ctrl to have the nested KWin instance grab input.

3. Test These Behaviors

Test Expected Result
Hotplugging Connecting/disconnecting controller appears in logs
App detection Logs show โ€œcontroller used by 1+ appsโ€ โ†’ emulation disabled
Desktop mode Logs show โ€œcontroller used by 0 appsโ€ โ†’ emulation enabled
Idle prevention With emulation enabled, controller input prevents system suspend (set sleep to 1 min to test)
Steam Deck If you have one, verify built-in controls work as expected

Default Button Mappings

Currently using steamdeck-style layout. Other layouts coming later.

Analog Sticks
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
Right Stick (ABS_RX/RY) โ†’ Mouse cursor movement

Face Buttons
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
A (BTN_SOUTH) โ†’ Enter
B (BTN_EAST) โ†’ Escape

Bumpers
โ”€โ”€โ”€โ”€โ”€โ”€โ”€
LB (BTN_TL) โ†’ Alt
RB (BTN_TR) โ†’ Ctrl

Triggers
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
LT (ABS_Z) โ†’ Right Click
RT (ABS_RZ) โ†’ Left Click

D-Pad
โ”€โ”€โ”€โ”€โ”€
D-Pad โ†’ Arrow Keys

Center Buttons
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
Select โ†’ On-Screen Keyboard (planned)
Start โ†’ Meta/Super

Report Your Results

Please comment with your results using this format:

Controller: [e.g., Xbox One Wireless, DualSense, 8BitDo Pro 2]
Connection: [USB / Bluetooth]
Result: [Pass / Fail]
Notes: [Any issues, unexpected behavior, or logs you feel worth including]

Known Limitations

  • modern game controller layout assumed (more layouts coming later)

  • On-screen keyboard binding not yet implemented

Thanks for helping test! :folded_hands:

2 Likes

Update: @yorisoftโ€™s plugin has now been merged into Plasma proper, enabled by default for anyone who uses KWin as built on 2026-01-03 or later (UTC timezone, approximately). You can disable it with a new switch in System Settings โ†’ Game Controller if you find that anything isnโ€™t working out for you.

If you are testing Plasma built from source, or the Plasma 6.6 beta thatโ€™s coming up in about two weeks, then you get this functionality. I figure testers are still appreciated :slight_smile:

3 Likes

6.5.90 arch kde-unstable

Controller: [DualSense, dualshock 4]
Connection: [USB / Bluetooth]
Result: Fail
Notes: currently the layout seems to be wrong with playstation controllers, mouse movement might be mapped to triggers . The toggle in settings doesnโ€™t seem to do anything atm. Manually editing kwinrc and fresh login to disable plugin works fine.