At some point in the past, a very cheap USB keyboard died on me (spacebar malfunction IIRC), so I disassembled it to re-use the two USB ports which were built-in to use them as a kind of USB extension cord to my desk. However, one of the PCBs with the ports also controlled the three keyboard LEDs.
Now, wouldn't it be nice if I could re-use those LEDs for something else than redundantly showing me Num, Caps Lock and Scroll Lock from the main keyboard?
After some research...
In /etc/X11/xorg.conf, I disabled input device hot-plug, so every input device now has a constant ID:
Section "ServerLayout" Identifier "X.org Configured" Screen 0 "Screen0" 0 0 InputDevice "Mouse0" "CorePointer" InputDevice "Keyboard0" "CoreKeyboard" InputDevice "Keyboard1" "BlinkenLights" EndSection ... Section "InputDevice" Identifier "Keyboard1" Driver "evdev" Option "Device" "/dev/input/by-id/usb-04f3_0103-event-kbd" Option "XkbLayout" "drahflow" Option "XkbVariant" "dvorakprog" Option "XkbModel" "pc105" EndSection Section "ServerFlags" Option "AutoAddDevices" "false" Option "AllowEmptyInput" "false" EndSection
And via .initrc, I set specific keycodes for that one "keyboard":
setxkbmap -device 8 -keycodes miscleds
... where miscleds refers to /usr/share/X11/xkb/keycodes/miscleds:
xkb_keycodes "miscleds" { minimum = 8; maximum = 255; <TLDE> = 49; indicator 1 = "Misc"; indicator 2 = "Mail"; indicator 3 = "Charging"; };
And a small shell-script to use the ex-keyboard, now display device, which I use to signal completion of long-running background tasks:
#!/bin/sh on() { xset led named 'Mail' xset led named 'Misc' xset led named 'Charging' } off() { xset -led named 'Mail' xset -led named 'Misc' xset -led named 'Charging' } on sleep 0.05 off sleep 0.05 on sleep 0.05 off