web-dev-qa-db-fra.com

Comment obtenir la disposition du clavier (langue) dans le terminal (console, ligne de commande)

Est-il possible d'obtenir la configuration de clavier actuelle en ligne de commande? J'ai déjà essayé différentes manières:

  1. localectl (status) etc.
  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. J'ai essayé d'installer xkblayout-state, mais il ne veut pas être installé (make échoue)

Donc ... tout cela montre le même événement de sortie si la disposition du clavier a été changée en une autre ... ils montrent nous disposition. Btw j'ai vérifié des dizaines de sujets et aucun résultat ... alors s'il vous plaît ne le marquez pas comme un doublon. Voyons comment y parvenir correctement.

uname -a affiche Linux x4 4.4.0-97-generic #120-Ubuntu SMP Tue Sep 19 17:28:18 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

La distribution est KDE Neon 5.8 qui est basée sur Ubuntu

Le système de fenêtre est X11

En passant, j'ai trouvé ceci: xset -q | grep -A 0 'LED' | cut -c59-67ici . Est-ce une façon claire de faire cela?


Les sorties des commandes ci-dessus:

$ 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/default/keyboard:

# 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

Toutes ces commandes ont été exécutées deux fois (avant et après modification de la disposition du clavier). Donc pas de résultat.


Au fait:

$ xset -q | grep -A 0 'LED' | cut -c59-67 (la langue anglaise est activée):

00000000

$ xset -q | grep -A 0 'LED' | cut -c59-67 (la langue russe est activée):

00001000

Alors ... comme vous voyez celui-ci change. Dans l'ensemble, est-ce un moyen clair d'obtenir la mise en page actuelle?

2
V.7

En ce qui concerne buntu 17.1, je viens de comprendre que la disposition de clavier actuelle dans une session de bureau est enregistrée différemment.

J'ai une disposition en suédois et en anglais (US) disponible. Auparavant je pouvais faire:

$ gsettings get org.gnome.desktop.input-sources sources
[('xkb', 'se'), ('xkb', 'us')]
$ gsettings get org.gnome.desktop.input-sources current
uint32 0

La valeur actuelle 0 (zéro) m'a indiqué que la mise en page actuelle était la première mise en page dans les sources liste. Cependant, dans 17.10, la valeur actuelle n'est pas modifiée si je change de présentation.

Au lieu de cela, 17.10 inclut la clé mru-sources , qui répertorie le m ost r ecently - sources d'entrée sed. Par conséquent, lorsque le suédois est ma mise en page actuelle, cela ressemble à ceci:

$ gsettings get org.gnome.desktop.input-sources mru-sources
[('xkb', 'se'), ('xkb', 'us')]

et si je passe en anglais, cela ressemble à ceci:

$ gsettings get org.gnome.desktop.input-sources mru-sources
[('xkb', 'us'), ('xkb', 'se')]

La présentation actuelle est donc simplement la première source d'entrée dans la liste mru-sources .

3