Alternar entre dvorak e qwerty

3

Recentemente, comecei a aprender o layout do teclado dvorak , mas ainda preciso usar qwerty às vezes.

Estou procurando um script para alternar entre os dois layouts de teclado.

Além disso, eu gostaria de invocar este script com uma tecla de atalho que funcionará em todos os lugares (no meu DE e no meu console.) Como pressionar o desligamento em esta postagem .

    
por Stefan 08.10.2010 / 14:07

4 respostas

3

Você terá que fazer isso separadamente para X e para todo tipo de console de texto que você se importa.

Se você quiser alternar entre mapas de teclado arbitrários, será necessário manter o estado, pois normalmente o console não o fará por você. Isso é o que os comutadores de layout, como o Gnome e o KDE, fazem. Mas se você quiser apenas alternar entre alguns mapas de teclado conhecidos, poderá consultar o console (supondo que esse recurso esteja disponível em seu tipo de console), obter o código atual enviado por uma chave e decidir com o que mudar com base nisso. Aqui estão algumas possibilidades:

  • Se o código de acesso 24 (o número variará entre os tipos de console) envia atualmente q , o mapa de teclado atual se parece com qwerty, então mude para dvorak, caso contrário mude para qwerty.
  • Se Q e W tiverem códigos de teclas adjacentes, provavelmente é um layout qwerty.
  • Adicione uma chave falsa nos mapas de teclado e procure sua ligação.

Aqui está uma implementação para X e Linux, usando o teste de W = Q +1. Cuidado, eu não testei isso. Observe que o script geralmente não pode ser usado por meio de logins remotos no modo de texto.

if [ -n "$DISPLAY" ]; then
  if xmodmap -pke | awk '$3=="=" && $4=="q" {q=$2}
                         $3=="=" && $4=="w" {w=$2}
                         END {exit w-q==1}'; then
    setxkbmap us
  else
    setxkbmap dvorak
  fi
elif [ "$TERM" = "linux" ]; then
  if dumpkeys | awk '$3=="=" && $4=="q" {q=$2}
                     $3=="=" && $4=="w" {w=$2}
                     END {exit w-q==1}'; then
    loadkeys us
  else
    loadkeys dvorak
  fi
fi

No X Window, o melhor lugar para vincular isso a uma chave é usar o ambiente de área de trabalho ou o recurso de ligação de teclas do gerenciador de janelas. Você pode fazer a chave executar apenas a parte específica do X. É claro que, se o seu DE / WM tiver um recurso de mudança de layout, você também pode usá-lo.

No console do Linux, as possibilidades de associações de teclas são muito limitadas. Você pode vincular uma chave ao símbolo KeyboardSignal . Se você estiver usando o SysVinit, coloque kb::kbrequest:/path/to/script em /etc/inittab para executar seu script (como root!) Quando o sinal for pressionado. Eu não sei como configurar a ação desta chave com o Upstart.

    
por 08.10.2010 / 20:47
2

O setxkbmap não funciona fora do X?

setxkbmap \
  -model pc105 \
  -layout 'us(dvorak-intl),us(alt-intl)' \
  -option \
  -option grp:alt_shift_toggle \
  -option compose:rwin

Eu uso no X e nos meus terminais. Texto "-option grp: alt_shift_toggle" diz ao setxkbmap para mudar os layouts quando você pressiona Alt + Shift. Veja /usr/share/X11/xkb/rules/base.lst (Debian Squeeze ... ymmv) para mais opções de alternância / troca para mudar layouts na hora.

    
por 20.02.2013 / 08:08
1

Crie um script:

#!/bin/bash
if [[ -e ~/.my.kb.not.dvorak ]] ; then
    setxkbmap dvorak
    touch ~/.my.kb.is.dvorak 
    rm ~/.my.kb.not.dvorak
fi 
if [[ -e ~/.my.kb.is.dvorak ]] ; then
    setxkbmap <YOURLAYOUT>
    touch ~/.my.kb.not.dvorak 
    rm ~/.my.kb.is.dvorak
fi 

Substitua <YOURLAYOUT> pelos dados relevantes. Agora configure um xbindkeys hotkey-combo para executar este script.

    
por 08.10.2010 / 14:47
0

Como o layout do teclado é uma propriedade do dispositivo de entrada, você pode defini-lo via xinput . Use xbindkeys para definir teclas de atalho arbitrárias.

    
por 08.10.2010 / 14:36