I am not sure about switching input methods. What you see works for my Hebrew keymap, which uses EIGHT_LEVEL. ctrl-space interpretation is done at a higher level, not at xkb level.