I've done some research and figured out the reason: it is gnome-settings-daemon.
When layout is changed by xkb, it resets the layout to it's own. This behaviour is important to support IBus as input method.
The GNOME-way was to handle shortcuts with keyboard extension of GNOME Shell and change input method with DBus call.
Thus, ATM solution is to handle layout switch shortcuts in some other program (indicator-keyboard?).
Though, since GNOME 3.13.92 input sources handling was moved to keyboard extension of GNOME Shell completely, so if gnome-settings-daemon is updated (I hope, it will) it will be enough to apply settings from org.gnome.desktop.input-sources and use XKB grp: options.
BTW, Ctrl+Space changes IBus engines. You can change it in desktop.ibus.default.hotkey.triggers, but IBus engine is not displayed by indicator-keyboard, you cant change IBus engine while Slingshot is opened and modifiers-only shortcuts (alt+shift, ctrl+shift) are not supported.
I've done some research and figured out the reason: it is gnome-settings- daemon.
When layout is changed by xkb, it resets the layout to it's own. This behaviour is important to support IBus as input method.
The GNOME-way was to handle shortcuts with keyboard extension of GNOME Shell and change input method with DBus call. keyboard? ).
Thus, ATM solution is to handle layout switch shortcuts in some other program (indicator-
Though, since GNOME 3.13.92 input sources handling was moved to keyboard extension of GNOME Shell completely, so if gnome-settings- daemon is updated (I hope, it will) it will be enough to apply settings from org.gnome. desktop. input-sources and use XKB grp: options.
BTW, Ctrl+Space changes IBus engines. You can change it in desktop. ibus.default. hotkey. triggers, but IBus engine is not displayed by indicator-keyboard, you cant change IBus engine while Slingshot is opened and modifiers-only shortcuts (alt+shift, ctrl+shift) are not supported.