Pause/Play button not working in 26.04?

Hi all - after upgrading from 24.04 to 26.04, the play/pause key on my Microsoft Natural Ergonomic Keyboard 4000 stopped working. They worked fine under 24.04.

Hardware
Microsoft Natural Ergonomic Keyboard 4000 (USB, 045e:00db)

Troubleshooting done

I traced the issue through the full input stack:

  1. evtest - the key registers correctly at the kernel level as KEY_PLAYPAUSE (164), scancode c00cd, on /dev/input/event5
  2. libinput - also sees the key fine on event5
  3. hwdb - KEYBOARD_KEY_c00cd=playpause is present in udevadm info output after manually adding a rule, confirming the mapping is correct
  4. XKB - <I172> → XF86AudioPlay exists in /usr/share/X11/xkb/symbols/inet at line 143
  5. xkbcli interactive-wayland - shows nothing when the key is pressed, meaning the key never reaches the XKB/Wayland layer
  6. Budgie Control Center → Keyboard → Sound and Media — all media shortcuts show as Disabled, and the Set Shortcut dialog does not capture the key when pressed
  7. labwc rc.xml keybinds for XF86AudioPlay etc. - do not fire (tested with notify-send)

Suspected cause

The keyboard exposes two input interfaces. The media keys come through /dev/input/event5, which has both keyboard and pointer capabilities. My suspicion is that labwc is treating event5 as a pointer device and routing its events through a different pipeline, bypassing keyboard binding entirely. This would explain why the key is visible to evtest and libinput but invisible to xkbcli and labwc keybinds.

This was not an issue under 24.04, which used X11/Xorg where input handling worked differently.

Questions

  • Is this a known labwc issue with combo keyboard+pointer devices?
  • Is there a supported way in 26.04 to bind keys that don’t reach the XKB layer?
  • Should this be reported upstream to the labwc project?

Happy to provide any additional debug output. Thanks!

Basically rc.xml playpause keybind needs a dbus mpris type command to play/pause audio

dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause

I think we might be saying the same thing but I wanted to post how I resolved this in case someone else is equally confused.

Disclaimer: I’ve done a lot of random testing so there’s a possibility that my conclusions could be flawed and exacerbated by other changes I made.

It seems like Ubuntu Budgie’s auto-generated Labwc configuration creates a specific bridge for media keys, but it explicitly maps the Play/Pause key to a completely blank action. Because the window manager technically “grabs” the key, tools like wev won’t even see you pressing it, making it look like a hardware issue when it’s actually just a broken default shortcut.

My primary source of confusion was a result of me trying to edit the wrong file. The changes need to go in~/.config/budgie-desktop/labwc/rc.xml, not ~/.config/labwc/rc.xml. I was editing the wrong file this whole time (*cue long sigh). The key WAS being grabbed by labwc (which is why wev never saw it), but the action was intentionally blank in Budgie’s default config.

The Fix

To get your media key back, you just need to edit Budgie’s specific Labwc configuration file and give the key a command to run.

Step 1: Open your terminal and edit the Budgie Labwc config file:
nano ~/.config/budgie-desktop/labwc/rc.xml

Step 2: Press Ctrl+W to search the file, type XF86AudioPlay, and hit Enter.

Step 3: You will see a block of code that looks like this:

<keybind bridge="plugins.media-keys/play" key="XF86AudioPlay">
    <action name="" command="" />
</keybind>

Step 4: Edit the <action> line to execute playerctl, so the block looks exactly like this:

<keybind bridge="plugins.media-keys/play" key="XF86AudioPlay">
    <action name="Execute" command="playerctl play-pause" />
</keybind>

(Note: If your XF86AudioPause key is also broken just above it, you can apply the exact same fix to that block too).

Step 5: Save the file by pressing Ctrl+O and then Enter, and exit nano with Ctrl+X.

Step 6: Finally, tell the window manager to reload your configuration by running: labwc -r

(I’ll go ahead and cross-post this to the github page in case it’s helpful).

I have an upstream PR that reworks this area Rework media keys and other rc.xml defaults handling by fossfreedom · Pull Request #921 · BuddiesOfBudgie/budgie-desktop · GitHub

I’m just polishing some changes to rework the existing raven mpris control to allow dbus type commands to be sent rather than having to depend on playerctl.

We’ll make a decision later whether this is a suitable SRU candidate for 26.04 - or just to target 26.10.