Как получить раскладку клавиатуры (язык) в терминале (консоль, командная строка) [закрыто]

Можно ли получить текущую раскладку клавиатуры в командной строке? Я уже пробовал разные способы:

  1. localectl ( status ) и т. Д.
  2. cat / etc / default / locale
  3. cat / etc / default / keyboard
  4. setxkbmap -query
  5. gsettings ...
  6. setxkbmap -print | grep xkb_symbols ( setxkbmap -v | awk -F "+" '/ symbols / {print $ 2}' )
  7. Пытался установить 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

Итак ... как видите, это меняется. В общем, понятен ли способ получить текущий макет?

2
задан 5 November 2017 в 22:20

1 ответ

Что касается 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 .

3
ответ дан 2 December 2019 в 02:45

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

Похожие вопросы: