Come posso modificare il layout di tastiera attualmente selezionato dalla riga di comando?


12

Ho i miei layout di tastiera (due) e il passaggio tra loro configurato tramite il seguente comando:

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

Ora voglio passare al uslayout, usando alcuni comandi da riga di comando. È possibile?

Risposte:


13

È possibile utilizzare xkb-switch ( -npassa al layout successivo):

xkb-switch -n

o xkblayout-state (con set +1per concludere, nel tuo caso):

xkblayout-state set +1

o xteda xautomation per simulare Control_L+ Shift_Ltasto premere / rilasciare:

xte 'keydown Control_L' 'keydown Shift_L' 'keyup Shift_L' 'keyup Control_L'

xkblayout-state è fantastico, grazie! Uso solo xkblayout-state set 1e ottengo immediatamente il uslayout.
Rogach,

2

Le ricerche di Stack Exchange per kbdmap trovano questa pagina senza menzionare quella parola. Per chiarezza, ecco una risposta (che non corrisponde esattamente al tag X11 della domanda, ma dovrebbe aiutare qualcuno) ...

Se limitato a una console virtuale

- senza X.

kbdmap (1)

kbdmap, vidfont- front-end per syscons e vt

... consente una facile impostazione delle keymap disponibili ...

Davvero, è facile e (per me, passare a un layout di tastiera del Regno Unito) efficace.

Quando si utilizza X

- ad esempio, con TrueOS Desktop basato su FreeBSD.

Dal post 5 in Modifica layout tastiera? | I forum di FreeBSD (03-08-2015):

kbdmapè per la console. setxkbmapè l'utilità desiderata per X11. ...

C'è un avviso, ad esempio quando si cambia a U NITI regno:

$ 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"
$ 

1

A seconda della distro per i layout di tastiera, il comando è

loadkeys <path/to/file>

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

Se ricordo bene. Controllare anche la manpage per loadkey se si desidera assegnare chiavi specifiche a comportamenti specifici.


Il problema è che dopo averlo fatto (ad esempio) loadkeys us, ripristina le impostazioni che ho creato con setxkbmap (due layout e il passaggio da uno all'altro)
Rogach,

per quanto ne so questo è il comando per cambiare layout, se ne hai uno specifico, quindi immagino che il modo migliore sarebbe quello di avere un alias nella tua shell che chiamerebbe i loadkey con le tue impostazioni. es: load_us caricherà la tastiera americana e in realtà chiamerebbe loadkey /lib/kbd/keymaps/i386/qwerty/us.map.gz o simile. E lo stesso per l'altro layout.
BitsOfNix

Ma come cambierei le impostazioni della tastiera in seguito? Attualmente, cambio layout premendo Ctrl-Shift, usando loadkeys lo avvita.
Rogach,

facciamo un passo indietro qui, dalla riga di comando presumo che stai citando un terminale tty. Ciò significa che non stai usando xterm / terminology / gnome-terminal o qualsiasi altro emulatore ma in realtà ti trovi in ​​un ambiente senza X server. Prendendo questo quindi è necessario utilizzare loadkeys, secondo la tua domanda, ti ho dato la riga di comando, quello che in realtà vuoi sembra essere un tasto di scelta rapida. Se hai delle chiavi specifiche da mappare, devi creare i tuoi layout e caricarli su una richiesta con le chiavi di caricamento da un punto di vista cli. Se invece desideri un collegamento, aggiorna la tua domanda.
BitsOfNix

No, in effetti sto usando l'ambiente grafico e gnome-terminal in particolare. È solo che ho bisogno di cambiare il layout X a livello di codice, in reazione ad alcuni eventi - quindi, roba tty non funzionerà.
Rogach,

0

Dai un'occhiata a questo howto forge l'articolo intitolato: Modifica del layout di lingua e tastiera in varie distribuzioni , per i vari comandi di modificare il layout della tastiera in diverse distribuzioni.

La maggior parte di questi comandi si presenta come GUI ma se si guarda la maggior parte di essi può essere eseguita anche dalla riga di comando. Ad esempio sto usando Fedora (una distribuzione basata su Red Hat). Il comando system-config-keyboardquando eseguito senza argomenti mi mostra una GUI.

Ma se lo eseguo system-config-keyboard --help, può essere eseguito anche dalla riga di comando:

$ 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

Quindi, per cambiare il layout della tastiera in russo, potrei eseguire il seguente comando:

$ system-config-keyboard ru
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.