Для использования в скрипте bash мне нужно получить раскладку клавиатуры gnome, которую использует пользователь. Например, если пользователь устанавливает раскладку клавиатуры на en-us
, мне нужна команда bash, которая выводит мне это.
Как я могу получить эту информацию?
Обновить:
setxkbmap -query
к сожалению, не работает. Ниже приведены выходные данные с активированной раскладкой en
(первая команда) и de
(вторая команда). Переключение раскладки клавиатуры, похоже, связано с настройкой сеанса gnome.
setxkbmap -query
rules: evdev
model: pc105
layout: us,de
variant: ,
options: terminate:ctrl_alt_bksp,lv3:ralt_switch,grp:alts_toggle
setxkbmap -query
rules: evdev
model: pc105
layout: us,de
variant: ,
options: terminate:ctrl_alt_bksp,lv3:ralt_switch,grp:alts_toggle
Update2:
setxkbmap -print #with en-us layout
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+us+de:2+inet(evdev)+level3(ralt_switch_for_alts_toggle):1+level3(ralt_switch_for_alts_toggle):2+group(alts_toggle)+level3(ralt_switch)+terminate(ctrl_alt_bksp)" };
xkb_geometry { include "pc(pc105)" };
};
setxkbmap -print #after switching to german layout
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+us+de:2+inet(evdev)+level3(ralt_switch_for_alts_toggle):1+level3(ralt_switch_for_alts_toggle):2+group(alts_toggle)+level3(ralt_switch)+terminate(ctrl_alt_bksp)" };
xkb_geometry { include "pc(pc105)" };
};
command-line
keyboard-layout
ftiaronsem
источник
источник
Ответы:
Согласно аналогичному вопросу о Stackoverflow , следующее должно быть сделано:
Я не смог проверить это, так как в настоящее время у меня нет машины * nix с X (я не дома) ...
источник
xkb_keymap { xkb_keycodes { include "evdev+aliases(qwerty)" }; xkb_types { include "complete" }; xkb_compat { include "complete" }; xkb_symbols { include "pc+us+inet(evdev)" }; xkb_geometry { include "pc(pc105)" }; };
-v
параметр (несколько раз), который увеличивает многословие и, таким образом, дает больше информации. Должно работать на обоих,-query
а также-print
. Поскольку у меня нет многоязыковой настройки, я не могу сказать, предоставляет ли она детали, которые вам нужны, но при трехкратном-v
выводе здесь разделены на «применяемые правила» и «раскладку ключей». Последняя представляется полной информацией, поэтому первая часть может иметь «активную в данный момент часть».Для Ubuntu 17.10 или новее
В Ubuntu 17.10 с GNOME текущее значение gsettings не изменяется при переключении источника ввода. Вместо этого есть MRU-источники ключ , который перечисляет м ОСТ г ecently у СЭД входных источников.
Первый источник в этом списке является текущим, поэтому единый источник для получения текущего макета может выглядеть так:
Обратите внимание, что этот ответ не применяется, если вы используете Unity в системе Ubuntu 17.10. С Unity он продолжает работать как раньше.
источник
Для Ubuntu 13.04 и ниже
Вы можете использовать
xkblayout-state
инструмент. См. Файл README.md для описания, компиляции, установки и использования.Следующая команда сделает именно то, что вы хотите:
Для Ubuntu 13.10 и выше
В этом смысле Ubuntu 13.10 имеет несколько хороших улучшений, и вы можете использовать следующую простую функцию bash:
Следующие команды также работают в 13.10:
или:
источник
Просто нажмите Ctrl+ Alt+ Tна клавиатуре, чтобы открыть терминал. Когда он откроется, выполните команду ниже.
Это то, что вы должны увидеть
источник
Используя терминал, я запустил тест, меняющий между 'pt' и 'us', и после каждого изменения я успешно собирал раскладку клавиатуры:
Получить активную раскладку клавиатуры
setxkbmap -print
grep xkb_symbols
awk -F"+" '{print $2}'
Вывод с активным макетом «us»:
us
Swith между макетами
Передайте, где это читает 'pt', код языка, чтобы переключиться.
Примечание: я использую Gnome в Ubuntu 12.04 (Precise Pangolin)
источник
Для Ubuntu 13.10 или новее
(Не уверен, работает ли он в предыдущих выпусках)
Чтобы увидеть больше вариантов:
источник