Мне интересно, есть ли инструмент командной строки, который возвращает текущую раскладку клавиатуры.
Я XkbLayout
настроен на us, ru
.
Обновление: setxkbmap
возвращает настройки макета, а не выбранный макет. Например:
$ setxkbmap -print | grep xkb_symbols
xkb_symbols { include "pc+us+ru:2+inet(evdev)+capslock(grouplock)+terminate(ctrl_alt_bksp)" };
Он будет возвращать один и тот же результат независимо от того, какой текущий макет
Ответы:
Возможно, это зависит от версии, но на моем компьютере, который использует
setxkbmap
1.3.0, работает следующая команда:Обратите внимание, что в зависимости от ваших потребностей может быть бесполезно знать только макет: например, вариант Dvorak для американского макета сильно отличается от стандартного QWERTY.
-query
Вариантsetxkbmap
дает как макет и вариант, так как различные поля:источник
-query
был добавлен в setxkbmap 1.2.0setxkbmap -print -verbose 10
setxkbmap -model pc104 -layout cz,us -variant ,dvorak
Есть xkb-switch, который описан так:
https://github.com/ierton/xkb-switch
Или, следуя совету nozimica, вы можете использовать:
Из этой темы на платах Arch Linux: https://bbs.archlinux.org/viewtopic.php?pid=539406
источник
xkb-switch
отлично работает, но надеюсь, что появилось более портативное решениеsetxkbmap
текущий активный макет не отображается, если определено более одного макета.Да, есть инструмент командной строки, который делает то, что вы хотите! Я только что обнаружил это 10 минут назад :)
Посмотрите здесь: https://github.com/nonpop/xkblayout-state
делает именно то, что вы хотите (он не выводит конец строки, поэтому добавьте,
; echo
если вам нужно). запустить инструмент без параметров для помощи.источник
Используйте это, чтобы получить код для текущего макета:
Это может быть необходимо преобразовать в форму, которую вы хотите, например:
источник
00000002
хотя мой макет "USA Dvorak International". Языка недостаточно ...00001004
на моей машине.Еще один более простой подход из-за фиксированных позиций вывода
xset -q
команды:Он печатает
00000002
или в00001002
зависимости от вашей текущей раскладки клавиатуры.источник
c59-66
,На более новых системах вы можете использовать
localectl status
Например, он покажет вам следующее:
источник
Ответы до сих пор не работают для меня. Я использую
setkbmap
с двумя макетами английский и чешский, так что любой-print
или-query
всегда будет возвращать два. Такжеxset -q
не работает подстройка статуса индикатора для , так как он показывает состояние всех светодиодных индикаторов клавиатуры.Лучше всего было быстро написать эту небольшую утилиту: https://gist.github.com/fikovnik/ef428e82a26774280c4fdf8f96ce8eeb
и скомпилировать используя
gcc -I/usr/include getxkblayout.c -lX11 -lxkbfile
источник
Вы можете использовать
xkbprint
для печати текущего макета.Например, чтобы распечатать текущий макет в формате PDF
который производит:
источник
Из Goosfrabaa в форумах Arch Linux :
Здесь это работает правильно и печатает
us(dvorak-intl)
(отображается как «USA Dvorak international» в меню выбора клавиатуры GNOME).источник
$ setxkbmap -v
>>Trying to build keymap using the following components: | keycodes: evdev+aliases(qwerty) | types: complete | compat: complete+ledscroll(group_lock) | symbols: pc+us+hu:2+inet(evdev)+group(alt_shift_toggle)+compose(rwin)+terminate(ctrl_alt_bksp) | geometry: pc(pc105)
В этом случае я каждый раз получал "нас"Частичный ответ: В KDE вы можете получить текущую раскладку клавиатуры с помощью
qdbus
команды:У меня настроено несколько макетов, но он показывает только тот, который используется в данный момент.
Протестировано на Kubuntu 18.04 (версия 4.8.7 для qdbus). Могут быть и другие решения на основе d-bus для не-Qt сред, но я не знаю о них.
источник
источник
Вы можете использовать:
источник
latam
.xkb_symbols
значение не зависит от выбранного макета, я всегда получаю 'нас'