Como altero o layout do teclado atualmente selecionado na linha de comando?


12

Eu tenho meus layouts de teclado (dois deles) e alterno entre eles configurados através do seguinte comando:

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

Agora eu quero mudar para o uslayout, usando algum comando da linha de comando. Isso é possível?

Respostas:


13

Você pode usar o xkb-switch ( -nalterna para o próximo layout):

xkb-switch -n

ou xkblayout-state (com set +1para contornar, no seu caso):

xkblayout-state set +1

ou xtede xautomation para simular Control_L+ Shift_Lpressionar / soltar a tecla:

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

xkblayout-state é ótimo, obrigado! Eu apenas uso xkblayout-state set 1e instantaneamente obtenho uslayout.
— Rogach 12/06

2

As pesquisas do Stack Exchange para kbdmap encontram esta página sem mencionar essa palavra. Para maior clareza, aqui está uma resposta (não exatamente adequada à tag X11 da pergunta, mas deve ajudar alguém)…

Quando limitado a um console virtual

- sem X.

kbdmap (1)

kbdmap, vidfont- front end para syscons e vt

… Permite fácil configuração dos mapas de teclado disponíveis…

Na verdade, é fácil e (para mim, mudar para um layout de teclado no Reino Unido) eficaz.

Ao usar o X

- por exemplo, com o TrueOS Desktop baseado no FreeBSD.

Da postagem 5 em Alterar layout do teclado? | Os fóruns do FreeBSD (03/08/2015):

kbdmapé para o console. setxkbmapé o utilitário que você deseja para o X11. ...

Há um aviso, por exemplo quando se muda para U Nited Unido:

$ 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

Dependendo da distribuição dos layouts de teclado, o comando é

loadkeys <path/to/file>

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

Se eu me lembro bem. Verifique também a página de manual para carregar chaves, se desejar atribuir chaves específicas a comportamentos específicos.


O problema é que depois de eu fazer (por exemplo) loadkeys us, ele redefine as configurações que eu criei com setxkbmap (dois layouts e alternar entre eles)
— Rogach

Até onde eu sei, esse é o comando para alterar os layouts, se você tiver um específico, acho que a melhor maneira seria ter um apelido em seu shell que chamaria as teclas de carregamento com suas configurações. ex: load_us carregaria o teclado americano e, na verdade, chamaria a loadkey /lib/kbd/keymaps/i386/qwerty/us.map.gz ou similar. E o mesmo para o outro layout.
— BitsOfNix

Mas como eu mudaria as configurações do teclado depois? Atualmente, altero os layouts pressionando Ctrl-Shift, usando as teclas de carga.
— Rogach

vamos dar um passo para trás aqui, na linha de comando, estou assumindo que você está mencionando um terminal tty. Significa que você não está usando o xterm / terminology / gnome-terminal ou qualquer outro emulador, mas na verdade você está em um ambiente sem o servidor X. Tomando isso, então você precisa usar as teclas de carga, conforme sua pergunta, eu lhe dei a linha de comando, o que você realmente quer parece ser um atalho de tecla. Se você tiver chaves específicas a serem mapeadas, precisará criar seus próprios layouts e carregá-las em uma solicitação com as chaves de carregamento do ponto de vista do CLI. Se você deseja um atalho, atualize sua pergunta.
— BitsOfNix

Não, de fato, estou usando o ambiente gráfico e o gnome-terminal em particular. É só que eu preciso alterar o layout do X programaticamente, em reação a alguns eventos - assim, coisas tty não vão funcionar.
— Rogach

0

Dê uma olhada neste artigo do howto forge intitulado: Alterando o idioma e o layout do teclado em várias distribuições , para os vários comandos para alterar o layout do teclado em diferentes distros.

A maioria desses comandos se apresenta como GUIs, mas se você procurar a maioria deles também pode ser executada na linha de comando. Por exemplo, estou usando o Fedora (uma distribuição baseada no Red Hat). O comando system-config-keyboardquando executado sem argumentos me mostra uma GUI.

Mas se eu executar, system-config-keyboard --helptambém pode ser executado na linha de 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

Então, para alterar meu layout de teclado para russo, eu poderia executar o seguinte comando:

$ system-config-keyboard ru
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.