LINUX.ORG.RU

Получение текущей раскладки клавиатуры C++/Qt [РЕШЕНО]

 , , ,


0

2

Здравствуйте. Имеем C++, Qt, Xorg, setxkbmap. Подскажите, пожалуйста, как получить текущую раскладку клавиатуры вида us или ru. Пробовал разные варианты:

  • Стандартными функциями Qt (возвращает us вне зависимости от реальной раскладки)

  • https://github.com/nonpop/xkblayout-state (дает результат, но запрашивать данные с него, пусть даже раз в 0.5 сек, сильно потребляет ресурсы)

  • setxkbmap -print | awk -F"+" ‘/xkb_symbols/ {print $2}’ (также дает результат, но костыльно и также потребляет ресурсы)

Собственно, вопрос, как средствами Qt или чем-то другим (но желательно не очень костыльно) получить текущую раскладку в системе? Спасибо



Последнее исправление: thm (всего исправлений: 6)
Ответ на: комментарий от SR_team

Посмотрел. Одновременная поддержка Xorg и Wayland даже лучше. Использование xkb не обязательно.

thm
() автор топика
Ответ на: комментарий от AKonia

Первый вариант, слишком длинно, да и много зависимостей прибавляется, второй вариант не работает, всегда выдает us.

thm
() автор топика

Найдено решение. Проект https://github.com/luminousmen/xkblang. Как раз то, что надо с аргументами -p -s. Если перенести нужный кусок кода в проект, то думаю, что получать эти значения раз в 0.5 секунды, например, будет нормально.

thm
() автор топика
Ответ на: комментарий от anonymous

да, Qt, но тут много лишнего. Я сократил код по ссылке, что я оставил, до 12 строк, оставив только то, что надо.

thm
() автор топика
Последнее исправление: thm (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.