
On Суббота 20 июня 2009 07:37:03 you wrote:
According to X11/extensions/XKB.h, modifier mask bits starting at (1<<13) indicate group state. (See XkbBuildCoreState() which builds an event value when Xkb is active.) I think you want this; while I don't know the Russian keyboard layout, xmonad's default key bindings are less than mnemonic if you're using the Hebrew or Arabic layouts :) so you may want to define a separate, mnemonic key mapping for use in Russian.
(The flip side of this is if you change the group number the Russian layout maps to, you need to make the same change to your xmonad key bindings; this strikes me as bad.)
I think key binding should work regardless of current layout. At least normal (not Submap based) key bindings works this way. So masks >= (1<<13) should be filtered out. I'm not sure where groupmasks should be stripped. It's possible either in xmonad's core function 'cleanMask' or in Submap itself. I coded latter variant and it works.