Это не проблема X11. Это проблема Ubuntu и прочих дистрибутивов, которые перешли на переключение языка при помощи gtk-im (не помню как точно называется) — то есть на стороннее гномовское криворукоподелие. И баги соответствующие уже заведены в багтрекерах уже более 10 лет, но воз и ныне там.
Как раз X переключает языки моментально (в gtk-im есть ощутимая задержка, при быстрой печати можно еще успеть один-два символа в старой раскладке напечатать, это тоже раздражает) и без потери фокуса.
И решается все просто, без всяких макросов: выкидывается gtk-im и используется стандартное переключение раскладок X. Как именно это делается уже не подскажу, так как давно ушел со всяких гномообразных DE на dwm. А в X11 настройка выглядит так:
Section "InputClass"
Identifier "system-keyboard"
MatchIsKeyboard "on"
Option "XkbLayout" "us,ru"
Option "XkbModel" "pc105"
Option "XkbVariant" "os_winkeys"
Option "XkbOptions" "grp:caps_toggle,compose:ralt"
EndSection
Переключение по CapsLock, Compose Key (для различных спецсимволов типа кавычек-ёлочек) на правом Alt.
"Значит я неверно понял проблему, так как каждый раз боролся с глюками и тормозами gtk-im в Ubuntu, и с каждым релизом ожидал, что они, наконец, исправят хотя бы пропажу фокуса."
автор тот же))