xkb should be extended to be able to recognize a sequence of key presses and key releases and fire action upon it. Again, this would be an extension, not a violation of current standard.
Currently, the group switching is defined in /usr/share/X11/xkb/symbols/group with parts like partial modifier_keys xkb_symbols "lalt_lshift_toggle" { virtual_modifiers Alt; key <LALT> { symbols[Group1] = [ NoSymbol, ISO_Next_Group ], virtualMods= Alt }; key <LFSH> { type[Group1]="PC_ALT_LEVEL2", symbols[Group1] = [ Shift_L, ISO_Next_Group ] }; }; The following is what this part of the file would look like after appropiate changes in xkb code: xkb_sequences "lalt_lshift_toggle" { sequence { keydown <LALT>, keydown <LFSH>, keyup <LFSH> } = ISO_Next_Group; sequence { keydown <LFSH>, keydown <LALT>, keyup <LALT> } = ISO_Next_Group; } For this to work 1) http://www.x.org/docs/XKB/XKBproto.pdf need to be extended with a small chapter 2) http://cgit.freedesktop.org/xorg/xserver/tree/xkb - code the run time check for sequences; changes to xkm format required 3) http://cgit.freedesktop.org/xorg/app/xkbcomp/tree/ - code the parsing of "xkb_sequences", "keydown", and "keyup" keywords At least this is my impression after a day of investigation. I know this seems like unnecessarily big change compared to Ilya's patch. But, basically, that is what I mean by "clean solution". Unfortunatelly, it is more of a "dream solution", since I feel I will hardly be able to code this.. -- You received this bug notification because you are a member of Ubuntu-X, which is subscribed to the bug report. https://bugs.launchpad.net/bugs/36812 Title: Keyboard layout change on hotkeys press instead of release and do not work well with shortcuts To manage notifications about this bug go to: https://bugs.launchpad.net/gnome-control-center/+bug/36812/+subscriptions _______________________________________________ Mailing list: https://launchpad.net/~ubuntu-x-swat Post to : ubuntu-x-swat@lists.launchpad.net Unsubscribe : https://launchpad.net/~ubuntu-x-swat More help : https://help.launchpad.net/ListHelp