LINUX.ORG.RU

Как получить текущую раскладку клавиатуры из Python?

 , , , ,


0

2

Здравствуйте! Нужно получить раскладку клавиатуры из Python. Пробовал просто из консоли через setxkbmap (и пробовал из Python запускать), работает, но очень громоздко:

setxkbmap -print | grep xkb_symbols | awk '{print $4}' | awk -F"+" '{print $2}'

Собственно, вопрос, можно ли покороче, или есть может какая-нибудь библиотека для Python, которая это умеет? Если в Wayland это проще, то как?



Последнее исправление: xaizek (всего исправлений: 2)

На Wayland это делается так. К сожалению, не знаю, есть ли что-то готовое для Python.

Siborgium ★★★★★
()

Посмотреть, как сделано в kbdd. Если лень, то запустить kbdd и дёргать через DBus.

anonymous
()

Если в Гноме, то так :)

gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().currentSource.index"
Im_not_a_robot ★★★★★
()

можно ли покороче

setxkbmap -query | awk '/layout/ { print $2 }'
begss
()

Ну или просто xkb-switch, который сразу возвращает лейаут. Но это лишняя зависимость, которая далеко не везде есть, и пакетировать ее неудобно из-за cmake.

begss
()
Ответ на: комментарий от begss

про xkb-switch знаю, он даже есть в AUR, но программа должна работать везде (а эта утилита есть не везде), поэтому стандартный setkxbmap предподчительнее. Команда выше возвращает не раскладку, а us,ru,us. А нужно текущая раскладка. Дело в том, что я пишу окружение рабочего стола, и думаю, может лучше сразу под Wayland, потому встал вопрос насчет того, может в Wayland это проще.

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

Как оказалось, даже эта команда нормально не отрабатывает. на любой раскладке возвращает us.

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

может в Wayland это проще

Не поверите, но почти во всех Wayland-композиторах тоже xkb.

Команда выше возвращает не раскладку, а us,ru,us

У меня работало… Тогда setxkbmap -print | awk -F"+" '/xkb_symbols/ { print $2 }'.

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

в кедах так qdbus --literal org.kde.keyboard /Layouts getLayoutsList

ukr_unix_user ★★★★
()

можно ли покороче

а профит?

anonymous
()

я открою сакральную тайну, но в xkb, в общем случае, нет понятия «текущая раскладка»

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.