Pour une utilisation dans un script bash, j'ai besoin d'obtenir la disposition du clavier gnome que l'utilisateur utilise actuellement. Par exemple, si l'utilisateur définit sa disposition de clavier sur en-us
, j'ai besoin d'une commande bash qui m'imprime cela.
Comment puis-je obtenir ces informations?
Mise à jour:
setxkbmap -query
ne fonctionne malheureusement pas. Vous trouverez ci-dessous la sortie avec la en
(première commande) et la de
(deuxième commande) disposition activées. Changer la disposition du clavier semble avoir une certaine relation avec la configuration de la session 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
la source
la source
Réponses:
Selon une question similaire sur Stackoverflow , ce qui suit devrait faire l'affaire:
Je n'ai pas pu le vérifier, car je n'ai actuellement pas de machine * nix avec X disponible (je ne suis pas chez moi) ...
la source
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
paramètre (plusieurs fois), ce qui augmente la verbosité et donne ainsi plus d'informations. Devrait fonctionner pour les deux,-query
ainsi que-print
. Comme je n'ai pas de configuration multilingue, je ne peux pas dire s'il fournit les détails dont vous avez besoin - mais avec une-v
sortie 3 fois ici, il est divisé en "règles appliquées" et "carte de touches". Ce dernier semble être l'information complète, donc la première partie pourrait avoir la "partie actuellement active".Pour Ubuntu 17.10 ou version ultérieure
Dans Ubuntu 17.10, avec GNOME, la valeur actuelle de gsettings n'est pas modifiée lorsque vous changez de source d'entrée. Au lieu de cela il y a une source de MRU- clé qui indique la m ost r écemment u sed sources d' entrée.
La première source de cette liste est la source actuelle, donc un oneliner pour obtenir la disposition actuelle peut ressembler à ceci:
Veuillez noter que cette réponse ne s'applique pas si vous utilisez Unity sur un système Ubuntu 17.10. Avec Unity, il continue de fonctionner comme précédemment.
la source
Pour Ubuntu 13.04 et inférieur
Vous pouvez utiliser l'
xkblayout-state
outil. Voir le fichier README.md pour la description, la compilation, l'installation et l'utilisation.La commande suivante fera exactement ce que vous voulez:
Pour Ubuntu 13.10 et supérieur
Ubuntu 13.10 a apporté de bonnes améliorations dans ce sens, et vous pouvez utiliser la fonction bash simple suivante:
Les commandes suivantes fonctionnent également dans 13.10:
ou:
la source
Appuyez simplement sur Ctrl+ Alt+ Tsur votre clavier pour ouvrir Terminal. Lorsqu'il s'ouvre, exécutez la commande ci-dessous.
Voilà ce que vous devriez voir
la source
En utilisant le terminal, j'ai exécuté un test en changeant entre 'pt' et 'us', et après chaque changement, j'ai collecté la disposition du clavier utilisée avec succès:
Obtenez la disposition du clavier actif
setxkbmap -print
grep xkb_symbols
awk -F"+" '{print $2}'
La sortie ayant la disposition «us» active est:
us
Swith entre les dispositions
Passez là où il lit «pt», le code de langue vers lequel basculer.
Remarque: j'utilise Gnome sur Ubuntu 12.04 (Precise Pangolin)
la source
Pour Ubuntu 13.10 ou version ultérieure
(Je ne sais pas si cela fonctionne dans les versions précédentes)
Pour voir plus d'options:
la source