Special function keys (Volume, Brigtness) are not detected

The Problem

I’ve been trying to configure volume and brightness keys in a fresh NixOS installation, and cannot get them to be detected at all. When pressing them I get the following seemingly useless output from xev:

MappingNotify event, serial 34, synthetic NO, window 0x0,
    request MappingKeyboard, first_keycode 8, count 248

FocusOut event, serial 34, synthetic NO, window 0x3400001,
    mode NotifyGrab, detail NotifyAncestor

FocusIn event, serial 34, synthetic NO, window 0x3400001,
    mode NotifyUngrab, detail NotifyAncestor

KeymapNotify event, serial 34, synthetic NO, window 0x0,
    keys:  155 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
           0   0   128 0   0   0   0   0   0   0   0   0   0   0   0   0 

No other keyboard binding software is running when I get this output.

My System


  • WM/DE: i3wm (with my dotfiles)
  • Other Utilities: Mostly xfce, including it’s power manager that I usually use for brightness control
  • Cinnamon DE is installed; The brightness keys work under it, but no special function keys are detected in tools like xev
  • Keyboard layout is Dvorak, but this shouldn’t have any effect on special function keys


  • Thinkpad T480

At the suggestion of someone on Discord, I ran sudo libinput debug-events --show-keycodes and see the following output:

-event6   KEYBOARD_KEY            +4.079s    KEY_BRIGHTNESSUP (225) pressed
 event6   KEYBOARD_KEY            +4.079s    KEY_BRIGHTNESSUP (225) released

Tell me if there is more information that is required. I have at attempted to do research on my own prior to making this post, but most results were either unhelpful and/or not something I could understand as a new user of NixOS (I have decent knowledge of Linux in general though).
Pages I’ve looked at (not complete):

This is the most major of only a few issues preventing me from using NixOS full-time.

It’s a classic. Immediately as I post this everything is working properly. I’ll close this post if it continues to function as expected, and with what fixed it if I find out.