Исправление KivApple, (текущая версия) :
Смог всё сделать с помощью Xkb. Если интересно, как именно, то см. этот файл - https://github.com/KivApple/qvkbd/blob/master/src/x11support.cpp.
Разве что я не понял, как узнать общее количество доступных раскладок клавиатуры, чтобы после последней перейти к первой. Сейчас делаю так:
if (!XkbLockGroup(QX11Info::display(), XkbUseCoreKbd, m_privateData->cur_layout + 1)) {
XkbLockGroup(QX11Info::display(), XkbUseCoreKbd, 0);
}
То есть пытаюсь переключиться на раскладку с номером на 1 больше, чем текущая, а если получаю ошибку, то на 0-ую раскладку.
Исходная версия KivApple, :
Смог всё сделать с помощью Xkb. Если интересно, как именно, то см. этот файл - https://github.com/KivApple/qvkbd/blob/master/src/x11support.cpp.