Получить текущую активную раскладку клавиатуры (язык) в 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
,