Gostaria de saber se existe alguma ferramenta de linha de comando que retorne o layout atual do teclado.
Eu XkbLayout
configurei para us, ru
.
Atualizar: setxkbmap
retorna configurações de layout, não layout selecionado. Por exemplo:
$ setxkbmap -print | grep xkb_symbols
xkb_symbols { include "pc+us+ru:2+inet(evdev)+capslock(grouplock)+terminate(ctrl_alt_bksp)" };
Ele retornará o mesmo resultado, independentemente do layout atual.
Respostas:
Talvez isso seja dependente da versão, mas na minha máquina que usa a
setxkbmap
1.3.0, o seguinte comando funciona:Observe que, dependendo da sua necessidade, pode ser inútil conhecer apenas o layout: por exemplo, a variante Dvorak do layout dos EUA é bem diferente do QWERTY padrão. A
-query
opção desetxkbmap
fornece o layout e a variante, como campos diferentes:fonte
-query
foi adicionado no setxkbmap 1.2.0setxkbmap -print -verbose 10
setxkbmap -model pc104 -layout cz,us -variant ,dvorak
Há xkb-switch que é descrito assim:
https://github.com/ierton/xkb-switch
Ou, seguindo a sugestão de nozimica, você pode usar:
A partir desta discussão nas placas do Arch Linux: https://bbs.archlinux.org/viewtopic.php?pid=539406
fonte
xkb-switch
funciona bem, mas espero que não havia solução mais portátilsetxkbmap
não mostra o layout ativo no momento quando mais de um layout é definido.Sim EXISTE UMA ferramenta de linha de comando que faz o que você deseja! Acabei de descobri-lo há 10 minutos :)
Veja aqui: https://github.com/nonpop/xkblayout-state
faz exatamente o que você deseja (não gera um final de linha, então adicione
; echo
se precisar). execute a ferramenta sem parâmetros para obter ajuda.fonte
Use isto para obter o código para o layout atual:
Isso pode precisar ser convertido para o formulário desejado, como:
fonte
00000002
mesmo que meu layout seja "USA Dvorak international". A língua não é suficiente ...00001004
na minha máquina.Outra abordagem mais simples, devido às posições fixas da saída do
xset -q
comando, é esta:Ele imprime
00000002
ou00001002
depende do seu layout de teclado atual.fonte
c59-66
.Em sistemas mais novos, você pode usar
localectl status
Por exemplo, mostrará o seguinte:
fonte
As respostas até agora não funcionaram para mim. Eu uso
setkbmap
com dois layouts inglês e tcheco, para que qualquer um-print
ou-query
sempre retorne os dois. Cumprir o status do LEDxset -q
também não funciona, pois esse mostra o status de todos os leds do teclado.O melhor até agora foi escrever rapidamente este pequeno utilitário: https://gist.github.com/fikovnik/ef428e82a26774280c4fdf8f96ce8eeb
e compilar usando
gcc -I/usr/include getxkblayout.c -lX11 -lxkbfile
fonte
Você pode usar
xkbprint
para imprimir o layout atual.Por exemplo, para imprimir o layout atual como PDF, use
que produz:
fonte
De Goosfrabaa nos fóruns do Arch Linux :
Isso funciona corretamente aqui e é impresso
us(dvorak-intl)
(exibido como "USA Dvorak international" no menu de seleção do teclado GNOME).fonte
$ setxkbmap -v
>>Trying to build keymap using the following components: | keycodes: evdev+aliases(qwerty) | types: complete | compat: complete+ledscroll(group_lock) | symbols: pc+us+hu:2+inet(evdev)+group(alt_shift_toggle)+compose(rwin)+terminate(ctrl_alt_bksp) | geometry: pc(pc105)
nesse casoResposta parcial: No KDE , você pode aparentemente obter o layout atual do teclado através do
qdbus
comando:Eu tenho vários layouts configurados, mas mostra apenas o que está atualmente em uso.
Testado no Kubuntu 18.04 (qdbus versão 4.8.7). Pode haver outras soluções baseadas em d-bus para ambientes que não sejam Qt, mas eu não as conheço.
fonte
fonte
Você pode usar:
fonte
latam
.xkb_symbols
valor não depende de layout selecionado, eu sempre chegar 'nós'