KVM/Scroll Lock behavior
tppytel at sophrosune.org
Wed Jan 18 20:07:10 PST 2012
I'm digging around at a quirk involving Scroll Lock and KVM switching
that I think X is responsible for and hoping someone here can explain
it. At this point I can work around it myself. But I'd really like to
understand it, or perhaps provoke a change to make it work better for
others less inclined to dig at this than I am.
Like many other KVM's out there, mine triggers switches through double
Scroll Lock taps. This has often required some fiddling to get working
properly in the past, usually by adding Scroll_Lock to mod3 using
xmodmap. But sometime recently, (I think) something changed in X11's key
handling. A while back, my GNOME desktop stopped switching on Scroll
Lock (even with the xmodmap) but still switched on Num Lock. Then it
stopped working entirely in GNOME, XFCE, or Openbox.
What I found after poking around some more tonight is that I can get the
KVM trigger working by twiddling the LED's with xset...
xset led 3 && sleep 0.2 && xset -led 3
That toggles the LED's and triggers the KVM.
In some sense, this solves my problem. I can put that in a script and
bind it to a key. But I'd like to actually understand what's going on.
Also, since Scroll Lock is the most common KVM trigger, it would be nice
to fix this so that it "just works" for people with less enthusiasm for
this sort of detective work. It seems like this shouldn't be an
earth-shaking architectural change, but I admit I don't know jack about
the internals of X.
Specifically, here's what I see on Debian Sid...
1) In the console, Scroll Lock and KVM switching work properly with no
2) In an untweaked X session, the Num Lock LED works while the Scroll
Lock one does not. Both keys register in xev output.
3) After "xmodmap -e 'add mod3 = Scroll_Lock'", the Scroll Lock LED
works. But it still doesn't trigger the KVM.
4) Even without the xmodmap line, twiddling the LED's via xset both
toggles the LED's and triggers the KVM.
What I'd really like to understand is what's different internally
between toggling the LED via xset and doing it through an xmodmap'd
Scroll Lock. Clearly the KVM is seeing those events differently and I
don't know enough about X to understand why.
If it's not too much of an undertaking, I'd also suggest that Scroll
Lock should work as expected, or at least have an easy xorg.conf option
to make it work as expected. A little Googling will show a decade's
worth of posts across the web from KVM users trying to get their boxes
to switch properly. And since the old xmodmap solution doesn't work
anymore, it would be helpful to have a solution that doesn't involve
hacky scripts and keybinding.
More information about the xorg