I use xkbset to turn on sticky keys with latch locking. What "sticky keys" is supposed
to do is, when I press and release a modifier key (shift, control, or alt), the modifier
is applied to the next key I press, rather than requiring me to hold down the modifier
while I press the key. What "latch locking" is supposed to do is, when I press
and release a modifier key twice, apply the modifier to every key that is pressed, until
that same modifier is pressed and released again.
I use .xsession to set up my keyboard:
xsetroot -solid black
xset -b
xset s off
xset -dpms
xset r rate 250 30
setxkbmap -keycodes evdev -types default -compat 'basic+misc+iso9995+ledcaps(group_lock)' -symbols 'pc+us+kh:2+level3(ralt_switch)+ctrl(nocaps)' -geometry 'thinkpad(us)'
xkbset -bell -feedback sticky -twokey latchlock
xkbset exp '=sticky'
kinput2 -xim &
export XMODIFIERS="@im=kinput2"
export LC_CTYPE=ja_JP.UTF-8
exec ratpoison
I just upgraded from stable to testing, and the sticky keys work, but
latch locking no longer works. That is, pressing a modifier once "sticks",
but pressing a modifier twice does not "lock".
Here are a couple examples:
If I press:
shift, f, o, o
I get, as expected:
Foo
If I press:
shift, shift, f, o, o
I expect to get:
FOO
but instead I get:
foo
Presumably the second shift is merely cancelling the first shift instead
of locking. The behavior with control and alt is exactly the same.
Running "xkbset q" to check the XKB settings indicates that the settings
are as I expect them to be ("Latch to Lock Mask" is on):
Audible Bell = Off
Repeat Keys = On
Repeat Delay = 250
Repeat Interval = 33
Per Key Repeat =
00ffffffdffffbbf
fadfffefffedffff
9fffffffffffffff
fff7ffffffffffff
Mouse-Keys = Off
Mouse-Keys Default Button = 1
Mouse-Keys Acceleration = On
Mouse-Keys Acceleration Delay = 160
Mouse-Keys Acceleration Interval = 40
Mouse-Keys Acceleration Time to Max = 30
Mouse-Keys Acceleration Max Speed = 30
Mouse-Keys Acceleration Curve = 500
Accessibility Features (AccessX) = Off
Sticky-Keys = On
Two Keys Mask = Off
Latch to Lock Mask = On
Slow-Keys = Off
Slow Keys Delay = 300
Bounce-Keys = Off
Debounce Delay = 300
AccessX Feedback = Off
Use Fixed Pitch Bell = On
Beep when LED changes = Off
Beep on Controls on/off = On
Beep if Slow/Bounce-Keys about to be turned off = On
Beep on Slow-Key Press = On
Beep on Slow-Key Accept = On
Beep on Slow-Key Reject = Off
Beep on Slow-Key Release = Off
Beep on Bounce-Key Reject = On
Beep on Sticky-Key Actions = On
Keyboard Overlay 1 = Off
Keyboard Overlay 2 = Off
Groups Wrap Type = wrap
Groups Wrap Value = 1
Ignore Group Lock = On
Nullify Shift = Off
Nullify Caps-Lock = Off
Nullify Control = Off
Nullify Mod1 = Off
Nullify Mod2 = Off
Nullify Mod3 = Off
Nullify Mod4 = Off
Nullify Mod5 = Off
Ignore Lock of Shift = Off
Ignore Lock of Caps-Lock = Off
Ignore Lock of Control = Off
Ignore Lock of Mod1 = Off
Ignore Lock of Mod2 = Off
Ignore Lock of Mod3 = Off
Ignore Lock of Mod4 = Off
Ignore Lock of Mod5 = Off
When I downgrade all the X server packages back to stable (xserver-xorg
1:7.5+8+squeeze1, xserver-xorg-core 2:1.7.7-14, etc.), the problem
disappears.