Можно ли получить текущую раскладку клавиатуры в командной строке? Я уже пробовал разные способы:
localectl
( status
) и т. Д. cat / etc / default / locale
cat / etc / default / keyboard
setxkbmap -query
gsettings ...
setxkbmap -print | grep xkb_symbols
( setxkbmap -v | awk -F "+" '/ symbols / {print $ 2}'
) xkblayout-state
, но он не хочет устанавливаться ( make
не работает) Итак ... все это показывает одно и то же событие вывода, если раскладка клавиатуры была изменена на другую ... они показывают нам макет. Между прочим, я проверил дюжину тем и ничего не дал ... так что, пожалуйста, не помечайте это как дубликат. Давайте узнаем, как этого добиться.
uname -a
показывает Linux x4 4.4.0-97-generic # 120-Ubuntu SMP Вт, 19 сентября 17:28:18 UTC 2017 x86_64 x86_64 x86_64 GNU / Linux
Распространяется KDE Neon 5.8
, основанный на Ubuntu
Оконная система - X11
Кстати, я нашел вот это: xset -q | grep -A 0 'LED' | cut -c59-67
здесь .Это понятный способ сделать это?
Результаты вышеперечисленных команд:
$ localectl status
:
System Locale: LANG=en_US.UTF-8
LC_NUMERIC=ru_RU.UTF-8
LC_TIME=ru_RU.UTF-8
LC_MONETARY=ru_RU.UTF-8
LC_PAPER=ru_RU.UTF-8
LC_NAME=ru_RU.UTF-8
LC_ADDRESS=ru_RU.UTF-8
LC_TELEPHONE=ru_RU.UTF-8
LC_MEASUREMENT=ru_RU.UTF-8
LC_IDENTIFICATION=ru_RU.UTF-8
VC Keymap: n/a
X11 Layout: us
X11 Model: pc105
$ cat / etc / default / locale
:
# File generated by update-locale
LANG="en_US.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
$ cat / etc / по умолчанию / клавиатура
:
# KEYBOARD CONFIGURATION FILE
# Consult the keyboard(5) manual page.
XKBMODEL="pc105"
XKBLAYOUT="us"
XKBVARIANT=""
XKBOPTIONS=""
BACKSPACE="guess"
$ setxkbmap -query
:
rules: evdev
model: pc101
layout: us,ru
options: grp:alt_shift_toggle
$ setxkbmap -print | grep xkb_symbols
:
xkb_symbols { include "pc+us+ru:2+inet(evdev)+group(alt_shift_toggle)" };
$ setxkbmap -v | awk -F "+" '/ symbols / {print $ 2}'
:
us
$ cat ~ / .config / kxkbrc
:
[Layout]
DisplayNames=,
LayoutList=us,ru
LayoutLoopCount=-1
Model=pc101
Options=grp:alt_shift_toggle
ResetOldOptions=true
ShowFlag=false
ShowLabel=true
ShowLayoutIndicator=true
ShowSingle=false
SwitchMode=Global
Use=true
Все эти команды выполнялись два раза (до и после клавиатуры изменение макета). Так что никакого результата.
Кстати:
$ xset -q | grep -A 0 'LED' | вырезать -c59-67
(английский язык включен):
00000000
$ xset -q | grep -A 0 'LED' | cut -c59-67
(Русский язык включен):
00001000
Итак ... как видите, это меняется. В общем, понятен ли способ получить текущий макет?
Что касается Ubuntu 17.10 , я только что понял, что текущая раскладка клавиатуры в сеансе рабочего стола сохраняется по-другому.
У меня есть шведский и английский (США) макет. Ранее я мог сделать:
$ gsettings get org.gnome.desktop.input-sources sources
[('xkb', 'se'), ('xkb', 'us')]
$ gsettings get org.gnome.desktop.input-sources current
uint32 0
Значение current 0 (ноль) сообщило мне, что текущий макет был первым макетом в списке sources . Однако в 17.10 текущее значение не изменяется, если я переключаю раскладку.
Вместо этого 17.10 включает клавишу mru-sources , в которой перечислены источники входных данных m ost r ecently u sed. Следовательно, когда шведским является мой текущий макет, он выглядит следующим образом:
$ gsettings get org.gnome.desktop.input-sources mru-sources
[('xkb', 'se'), ('xkb', 'us')]
, и если я переключаюсь на английский, он выглядит следующим образом:
$ gsettings get org.gnome.desktop.input-sources mru-sources
[('xkb', 'us'), ('xkb', 'se')]
Таким образом, текущий макет просто первый входной источник в списке mru-sources .