xkb "action" keys on keyboard level 3

sepharad sepharad at gmail.com
Wed Feb 8 03:29:10 PST 2012


Hello,

Sorry if this is not the place to ask for this. If it is not, I hope
somebody will kindly redirect me where appropriate.
I've been looking for a while to a solution for this problem but
haven't found much on it.

Basically I'm trying to modify one of XKB's keyboard distributions to
allow for less hand movement by
placing some keys (like the arrow keys) on level 3, so that I can
access them pressing the Caps key
(which I've remapped to work as the level 3 shift) in combination with
letters J,K,L,I. I've done that by
modifying one of the files in /usr/share/X11/xkb/symbols

It mostly works, but I have problems with quite a few applications,
which seem to be detecting that a modifier
key is pressed (Caps), and failing to recognize the other key:

GTK+ programs: I can use the remapped arrow keys by pressing Caps and
use them normally, but when I try to
select text by pressing (for example) Caps+Shift+J it will just move
the cursor as if the Shift key wasn't pressed
QT programs: The keys placed on level 3 are ignored

Other programs like Eclipse work perfectly, which seems to indicate
that the applications that don't work are
deciding to ignore the pressed keys because a modifier key is being
pressed at the same time.

My question is, is there a way to define a keyboard distribution so
that the level 3 shift will select level 3
but not produce any events? Basically I want its behavior to be
indistinguishable to a hardware switching,
very much like the Fn key. I've looked for this in several XKB
configuration manuals, but wasn't able to find
anything related.


These are my modifications to the base keyboard distribution I'm using
(the letters correspond to Dvorak distribution):

    key <AD07> { [  g,  G,  Home, Home ] };
    key <AD08> { [  c,  C,  Up, Up ] };
    key <AD09> { [  r,  R,  End, End ] };
    key <AD10> { [  l,  L,  Prior, Prior ] };

    include "level3(caps_switch)"


Thanks a lot.
Pablo



More information about the xorg mailing list