Como obter o layout do teclado atual a partir da linha de comando?

5

Como obter o layout atual do teclado na linha de comando em todas as distribuições? É possível?

Ou seja. xset -q | grep LED| awk '{ print $10 }' mostra uma saída diferente com diferentes layouts de teclado para mim, mas eu perguntei a outras pessoas e notei que elas mostram a mesma saída mesmo que o layout delas tenha sido alterado. É possível, ou eles fizeram algo errado? Existe uma maneira clara de obter o layout atual do teclado?

Eu já iniciei o tópico aqui , mas é claro que a solução depende da distribuição. Lá você pode ver que eu tentei várias variantes para conseguir isso, mas apenas xset funcionou.

A propósito, qual comando para cada distribuição? Ou seja para o script que executará o comando para obter o layout do teclado atual, dependendo da distribuição. Ou seja qual comando produzirá o layout CURRENT para o Fedora, qual deles para o Ubuntu, KDE Neon, Arch, Gentoo, etc.

    
por V.7 05.11.2017 / 21:39

1 resposta

3

O motivo pelo qual você não encontrou uma solução é que não há uma. Não existe o “layout de teclado atual”, se por isso você quer dizer algo como “layout QWERTY dos EUA”. O layout do teclado não precisa ser nenhum layout pré-definido específico. A única maneira de descrevê-lo sem ambiguidade é despejar todo o conjunto de mapeamentos (o que você pode fazer com xkbcomp :0 - ).

Você pode descobrir qual layout está configurado nesta ou nessa interface de configuração. Tudo o que você dirá é qual layout está configurado nessa interface específica. Não vai te dizer se esse layout é atual. O usuário pode ter usado uma interface diferente para alterar o layout ou pode ter definido um mapa de teclas totalmente personalizado com uma ferramenta como xmodmap ou xkbcomp .

A saída obtida de setxkbmap -query é a mais próxima possível. Ele obtém informações do servidor X, portanto, você não se depara com o problema de arquivos de configuração que podem ou não ter sido aplicados. No entanto, existem duas maneiras de informar ao servidor X para alterar o layout do teclado: fornecendo um nome de layout (e opções) ou definindo chaves individuais. Se setxkbmap -query diz us , significa que a última vez que alguém solicitou com êxito ao servidor X para carregar um layout específico, a solicitação foi carregar o layout us . Mas, se houver uma solicitação subsequente para alterar a configuração de chaves individuais, o layout poderá ser completamente diferente.

Ninguém está fazendo nada errado. É só que não há nenhum conceito de “layout atual” no sistema em geral, porque o layout do teclado não precisa ser um layout pré-definido.

    
por 06.11.2017 / 01:01