Eu gostaria de um script bash que alterna entre:
setxkbmap se
e setxkbmap us
.
Então, minhas intenções são mapear esse script CtrlEscatravés dos atalhos personalizados Teclado>.
O ponto é que eu quero mudar o layout do teclado CtrlEscape. Como posso implementar isso?
shell-script
x11
keyboard-layout
xkb
Fredrik
fonte
fonte
Respostas:
Não sei qual ambiente de área de trabalho você está executando, como pode atribuir uma tecla de atalho pode variar, mas esse script funciona globalmente, pelo menos no meu
Ubuntu 12.04 box
eArch Linux
:fonte
xmodmap
como na minha resposta abaixo.setxkbmap
. O mesmo acontece se eu alternar layouts usando um atalho configurado através dakeyboard shortcuts
GUI no meu LMDE.setxkbmap
só muda quando eu troco de usá-lo.Existem várias respostas para perguntas semelhantes . No entanto, nenhum deles funciona robusta para mim.
O script a seguir deve funcionar em todos os casos. Certamente funciona no meu sistema debian ao alternar layouts com
setxkbmap
:O script analisa a saída do xmodmap para ver se o layout atual é "us" ou "se". No layout "us", SHIFT+ 7é mapeado para "e comercial". Se você alternar apenas entre os layouts "us" e "se", ativar "e comercial" 7significa que você está usando o layout "us" e o script será alterado para "se". Se você não tiver "e comercial" ativado 7, o script mudará para "us".
fonte
a melhor maneira seria não usar um script, mas carregar um teclado de duas camadas (por exemplo :)
setxmodmap "us,se"
e redefinir o Ctrl- Escpara enviar ISO_Next_GroupVeja esta resposta no xkb para redefinir algumas chaves sem precisar editar os arquivos padrão principais (portanto, não precisa ser root). No arquivo de símbolos locais (por exemplo
~/.xkb/symbols/mysymbols
:), coloque uma pequena seção como:o PC_CONTROL_LEVEL2 informa que o símbolo sencond para essa chave é obtido com Control (em vez de Shift).
e no arquivo de mapa de chaves local (por exemplo :;
~/.xkb/keymap/mykbd
você pode criá-lo comsetxkbmap "us,se" ; setxkbmap -print > ~/.xkb/keymap/mykbd
) altere a linha xkb_symbols para adicionar "mysymbols (ctr_esc_toggle)" para que você tenha algo como:(observe o "se: 2", o ": 2" indica para carregar as definições de símbolos "se" como Grupo2; você pode empilhar vários grupos).
agora você pode carregá-lo com:
xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY
Ctrl-Esc alternará entre os layouts "us" e "se".NOTA, no entanto, é necessário pressionar Ctrl (e segurar) antes de Esc; da outra maneira, não funciona (seria necessário definir um modificador virtual para o Escape, e não sei como fazê-lo)
fonte
leftwin+leftalt+space
?{ include "pc+us+ru:2+inet(evdev)+group(win_space_toggle)" };