2 e mais grupos de layout de teclado no Linux alterados por teclas de atalho diferentes

2

Então, isso é algo que eu tenho sonhado há anos. Eu procurei esporadicamente por uma solução no Google, mas nunca encontrei nada. Foi-me dito uma vez por alguém no IRC que é possível, mas nunca vi realmente como isso poderia ser feito.

Aqui está o que eu quero.

Eu uso layouts de teclado en e ru como dois idiomas primários de entrada com os quais trabalho diariamente. Eu uso Shift + Caps_Lock para alternar esses layouts. Às vezes eu preciso digitar ua e pl, e eu quero tê-los em um grupo separado de layouts que seriam alternados pressionando: L_Win + Caps_Lock .

Então, sempre que pressiono L_Win + Caps_Lock eu inicio o ciclo entre ua e pl, e quando preciso voltar ao meu grupo padrão de en e ru eu pressione Shift + Caps_Lock .

Esta descrição não está de forma alguma vinculada a qualquer entendimento real de como funciona o framework de comutação de layout de teclado existente. Sou eu imaginando o cenário ideal.

Bem, queridos superusuários, isso pode ser feito no Linux? Se sim, como?

    
por ILIV 14.11.2012 / 11:05

2 respostas

2

Eu fiz uma pequena melhoria para este script. Agora não quebra o comutador de teclado WM. Funciona um pouco diferente, como TS quer, mas eu acho que é mais conveniente, pelo menos para mim

Você deve alterar o modelo e as opções do teclado, se desejar

#!/bin/sh
current='setxkbmap -query | grep layout|cut  -d ',' -f 2'
if [ "$current" == 'pl' ]
then 
    notify-send -t 1500 -i keyboard "Keyboard layouts: EN / RU"
    setxkbmap -model logitech_base -layout en,ru -variant , -option grp:caps_toggle,compose:rwin
else 
    notify-send -t 1500 -i keyboard "Keyboard layouts: UA / PL"
    setxkbmap -model logitech_base -layout ua,pl -variant , -option grp:caps_toggle,compose:rwin
fi
    
por 15.05.2013 / 14:16
1

A maneira mais fácil provavelmente seria usar o alternador de layout de teclado do seu gerenciador de janelas para seus layouts principais (en e ru) e então usar o seguinte script mapeado para L_Win + Caps_Lock :

#!/bin/bash 

current='setxkbmap -query | grep layout | fold -s2 | tail -n 1'
if [ "$current" == 'ua' ]
then
    setxkbmap -layout pl
else
    setxkbmap -layout ua
fi

Se você salvar o script como toggle_layout.sh , torná-lo executável e mapeá-lo para o atalho de teclado desejado usando as ferramentas do gerenciador de janelas, ele deverá fazer o que você precisa. O script apenas verifica se você está usando o layout ua e, se não, muda para pl .

ATUALIZAÇÃO:

Eu consegui que funcione da seguinte maneira:

  1. Mapeie o script acima para Ctrl + 8 (que é o teclado 8 ).
  2. Crie outro script para alternar entre os layouts principais:

    #!/bin/bash 
    
    current='setxkbmap -query | grep layout | fold -s2 | tail -n 1'
    if [ "$current" == 'en' ]
    then
        setxkbmap -layout ru
    else
        setxkbmap -layout en
    fi
    
  3. Mapeie o script da etapa 2 para Ctrl + 2 (esse é o teclado 2 ).

Certifique-se de usar chaves que não mudam quando o layout é alterado (é por isso que usei o teclado neste exemplo). Eu não sei se você pode fazer isso sem quebrar a maneira nativa WM de alterar layouts, mas pelo menos isso deve funcionar.

    
por 14.11.2012 / 15:44