Comment modifier la disposition du clavier actuellement sélectionnée à partir de la ligne de commande?

12

J'ai mes dispositions de clavier (deux d'entre elles) et la commutation entre elles est configurée via la commande suivante:

setxkbmap -layout us,ru -option -option "grp:lctrl_lshift_toggle,ctrl:nocaps"

Maintenant, je veux passer à la usmise en page, en utilisant une commande de ligne de commande. Est-ce possible?

Rogach
la source

Réponses:

13

Vous pouvez utiliser xkb-switch ( -npasse à la disposition suivante):

xkb-switch -n

ou xkblayout-state (avec set +1pour boucler, dans votre cas):

xkblayout-state set +1

ou à xtepartir de xautomation pour simuler la pression / relâchement de la touche Control_L+ Shift_L:

xte 'keydown Control_L' 'keydown Shift_L' 'keyup Shift_L' 'keyup Control_L'
don_crissti
la source
xkblayout-state est super, merci! J'utilise simplement xkblayout-state set 1et j'obtiens instantanément la usmise en page.
Rogach
2

Les recherches de Stack Exchange pour kbdmap trouvent cette page sans mention de ce mot. Pour plus de clarté, voici une réponse (ne correspond pas exactement à la balise X11 de la question, mais cela devrait aider quelqu'un)…

Limité à une console virtuelle

- sans X.

kbdmap (1)

kbdmap, vidfont- frontal pour syscons et vt

… Permet de régler facilement les images clés disponibles…

Vraiment, c'est facile et (pour moi, passer à une disposition de clavier britannique) efficace.

Lors de l'utilisation de X

- par exemple, avec TrueOS Desktop basé sur FreeBSD.

De l' article 5 sous Modifier la disposition du clavier? | Les forums FreeBSD (2015-08-03):

kbdmapest pour la console. setxkbmapest l'utilitaire que vous souhaitez pour X11. …

Il y a un avertissement, par exemple lors du passage à U Royaum:

$ kbdmap
kbdcontrol: getting keymap: Inappropriate ioctl for device
You are not on a virtual console - expect certain strange side-effects
lang_default = en
dialect = en_...UTF-8
lang_abk = en

…

keymap="uk.kbd"
$ 
Graham Perrin
la source
1

En fonction de la distribution des dispositions de clavier, la commande est

loadkeys <path/to/file>

loadkey /lib/kbd/keymaps/i386/qwerty/pt_PT.map.gz

Si je me souviens bien. Vérifiez également la page de manuel pour les clés de charge si vous souhaitez attribuer des clés spécifiques à un comportement spécifique.

BitsOfNix
la source
Le problème est qu'après avoir fait (par exemple) loadkeys us, il réinitialise les paramètres que j'ai créés avec setxkbmap (deux dispositions et basculant entre elles)
Rogach
pour autant que je sache, c'est la commande pour changer les mises en page, si vous en avez un spécifique, alors je suppose que la meilleure façon serait d'avoir un alias dans votre shell qui appellera les loadkeys avec vos paramètres. ex: load_us chargerait le clavier américain et appellerait en fait la clé de chargement /lib/kbd/keymaps/i386/qwerty/us.map.gz ou similaire. Et de même pour l'autre mise en page.
BitsOfNix
Mais comment pourrais-je changer les paramètres du clavier par la suite? Actuellement, je modifie les mises en page en appuyant sur Ctrl-Maj, à l'aide des vis de chargement.
Rogach
faisons un pas en arrière ici, à partir de la ligne de commande, je suppose que vous mentionnez un terminal tty. Cela signifie que vous n'utilisez pas xterm / terminology / gnome-terminal ou tout autre émulateur mais en fait vous êtes dans un environnement sans serveur X. En prenant cela, vous devez utiliser des clés de charge, conformément à votre question, je vous ai donné la ligne de commande, ce que vous voulez réellement semble être un raccourci clavier. Si vous avez des clés spécifiques à mapper, vous devez créer vos propres dispositions et les charger, puis sur demande avec des clés de chargement d'un point de vue cli. Si vous souhaitez un raccourci à la place, mettez à jour votre question.
BitsOfNix
Non, j'utilise en effet un environnement graphique et gnome-terminal en particulier. C'est juste que j'ai besoin de changer la disposition X par programmation, en réaction à certains événements - ainsi, les trucs tty ne fonctionneront pas.
Rogach
0

Jetez un œil à cet article de forge intitulé: Modification de la disposition de la langue et du clavier sur diverses distributions , pour les différentes commandes permettant de modifier la disposition de votre clavier sur différentes distributions.

La plupart de ces commandes se présentent sous forme d'interfaces graphiques, mais si vous regardez la plupart d'entre elles peuvent également être exécutées à partir de la ligne de commande. Par exemple, j'utilise Fedora (une distribution basée sur Red Hat). La commande system-config-keyboardlorsqu'elle est exécutée sans arguments me montre une interface graphique.

Mais si je l'exécute, system-config-keyboard --helpil peut aussi être exécuté à partir de la ligne de commande:

$ system-config-keyboard --help
Usage: system-config-keyboard [--help] [--noui] [--text] [<keyboardtype>]
       --help            Print out this message.
       --noui            Run in command line mode.
       --text            Run in text interface mode.

       <keyboardtype> options are: ar-azerty, ar-azerty-digits, ar-digits, ar-qwerty, ar-qwerty-digits, be-latin1, ben, ben-probhat, bg_bds-utf8, bg_pho-utf8, br-abnt2, cf, croat, cz-lat2, cz-us-qwertz, de, de-latin1, de-latin1-nodeadkeys, dev, dk, dk-latin1, dvorak, es, et, fi, fi-latin1, fr, fr-latin1, fr-latin9, fr-pc, fr_CH, fr_CH-latin1, gr, guj, gur, hu, hu101, ie, is-latin1, it, it-ibm, it2, jp106, ko, la-latin1, mk-utf, nl, no, pl2, pt-latin1, ro, ro-cedilla, ro-std, ro-std-cedilla, ru, sg, sg-latin1, sk-qwerty, slovene, sr-cy, sr-latin, sv-latin1, tj, tml-inscript, tml-uni, trq, ua-utf, uk, us, us-acentos

Donc, pour changer la disposition de mon clavier en russe, je pouvais exécuter la commande suivante:

$ system-config-keyboard ru
slm
la source