Idéias para * temporariamente * mudar o layout do teclado?

2

Eu sou um digitador de toque dvorak. Nas minhas máquinas, o dvorak é o padrão; em outras máquinas, uso regularmente setxkbmap (quando usando X) ou loadkeys (caso contrário). Mas e os sistemas "compartilhados"?

Ao trabalhar em sistemas, por exemplo sendo preparado para um cliente (Linux, principalmente baseado em RH), às vezes compartilhamos a conta do administrador. E se eu esquecer de voltar depois de fazer a minha parte ... todo o inferno se solta. Compreensivelmente, já que ninguém pode escrever mais nada!

Eu estava pensando em iniciar um at -job no início da minha sessão de trabalho; mas o (s) sistema (s) em questão não tem um atd em execução (e eu não posso mudar isso). : - (

Idealmente, gostaria de abrir um terminal, alternar o layout do teclado e fazer com que o sistema "esqueça" a alteração quando eu fechar o terminal. Por outro lado, setxkbmap e loadkeys alteram o layout em um nível "superior".

Alguém tem uma ideia?
(Tudo bem que eu tenha que digitar comandos extras e coisas assim, é que não posso presumir que os outros estejam dispostos a isso.)

    
por NicApicella 25.10.2017 / 15:06

3 respostas

1

A maneira mais fácil é sair depois que você terminar. Suas alterações pessoais duram apenas até você sair. Dito isto, intervir na conta de alguém é um caso de uso comum.

Digite / cole isso no seu terminal (executando bash ou zsh):

xkb=$(xkbcomp :0 -); trap 'xkbcomp - :0 <<<"$xkb"' 0 1 2 15; setxkbmap dvorak

Se você sair do shell normalmente ( exit , Ctrl + D ) ou fechar o terminal normalmente (que enviará um SIGHUP), ou seja, sob condições normais para sair da sessão de shell, o trap recuperará o mapa de teclado original.

Não faça isso em vários terminais ao mesmo tempo: o primeiro a sair restauraria a configuração original e o último a sair restauraria a configuração que estava em vigor quando você executou esse comando.

Se você sabe que mapa de teclado restaurar e deseja apenas lidar com o encerramento normal do terminal, simplifique isso para, por exemplo,

trap 'setxkbmap us' 0 1; setxkbmap dvorak

Tenha em atenção que isto não restaura as personalizações que as pessoas possam ter feito através de um configurador GUI de definições de teclado típico! (Que é essencialmente opções presentes em mapas XKB padrão.) Se você deseja restaurar as personalizações do usuário, é necessário salvar o mapa de teclado original com xkbcomp :0 - como acima.

Como alternativa, use uma interface que forneça layout de comutação por janela e atenha-se à janela de um terminal (lembre-se de não iniciar nenhum aplicativo de GUI). Alguns ambientes de desktop fornecem esse recurso (por exemplo, XFCE ), assim como kbdd . É improvável que o Kbdd esteja disponível, e muito menos configurado, em uma instalação padrão, mas talvez seu ambiente de área de trabalho padrão tenha esse recurso.

Algumas observações que não se aplicam ao seu caso de uso, mas se aplicam ao caso de uso de intervenção na máquina de um usuário enquanto você faz login em sua conta:

  • Isso pode introduzir diferenças sutis nos layouts que foram originalmente definidos por xmodmap , mas as pessoas que dependem dessas sutilezas saberiam como restaurar seu mapa de teclado criado a partir de um layout no qual o básico funciona.
  • Não tenho certeza se o nível ativo atual é restaurado corretamente na configuração de vários níveis (ou seja, vários idiomas), mas, novamente, as pessoas que alternam rotineiramente entre os layouts usariam o método usual para alternar os layouts.
  • Isso pode interferir negativamente na comutação de layout fornecida por meio de um aplicativo em segundo plano que altera o layout do XKB (em vez de alterar os níveis). Nesse caso, você deve pedir a eles que mudem para Dvorak através do método de mudança de layout.
por 25.10.2017 / 15:32
0

Configuração .profile ou similar a

(1) Teste se X está em execução ( $DISPLAY ).

(2) Salva o mapeamento de teclado atual em algum arquivo ( setxkbmap -print para XKB ou modmap -pke para X, dumpkeys para console)

(3) Defina o mapa do seu teclado.

(4) Restaure o mapa do teclado antigo quando o shell sair, veja por exemplo aqui .

Isso não funcionará com vários terminais, você terá que usar algum arquivo de "bloqueio" para determinar quando o primeiro terminal inicia o shell e as últimas saídas.

    
por 25.10.2017 / 15:22
0

Gostaria de saber se existe uma solução orientada para o hardware. setxkbmap usa a opção -device para afetar apenas um determinado teclado, onde existem vários, em vez do dispositivo X11 principal.

Então, se você tivesse que carregar um teclado dvorak real com você e conectá-lo, mantendo o teclado original também, você poderia executar um setxkbmap para ele que simplesmente se tornaria irrelevante quando você desconectasse seu teclado. Use xinput -list para obter o id de cada dispositivo. (Não precisa ser um teclado dvorak real , apenas outro teclado.) Uma vantagem é que duas pessoas podem digitar em seu próprio teclado e não há conflito de mapeamento.

Você pode experimentar um único teclado: se usar explicitamente o id desse teclado, em vez do núcleo padrão, quando você desconectá-lo e conectá-lo novamente, ele perderá sua alteração de configuração?

    
por 25.10.2017 / 18:05