Получить текущую активную раскладку клавиатуры (язык) в Linux

В моей программе на C/C++ я хочу знать, какой язык будет печатать пользователь. Я имею в виду язык, идентификатор которого отображается в углу панели задач. Как EN или RU или ZH или FR или IT.

Я знаю, как получить список возможных макетов:

$ setxkbmap -query | grep layout

выход:

layout:     us,ru

Но как узнать, какой из них выбран сейчас? (для текущего окна)

1 ответ

setxkbmap -print не помогает в этом случае, что также было моей первой идеей. Я нашел маленький инструмент, очень легко скомпилировать

sudo apt-get install git
mkdir -p `~/src`
cd `~/src`
git clone https://github.com/nonpop/xkblayout-state.git 
cd xkblayout-state
make

Теперь вы можете запустить команду ./xkblayout-state чтобы получить текущий макет, например

./xkblayout-state print "%n"                          
German%

или перечислите все установленные макеты

./xkblayout-state print "%N"
German
English
English

В этом случае без трейлинга % , Я бы ожидал, потому что я не добавил \n ,

Другие вопросы по тегам