Como posso manter as ligações de tecla do modo padrão em um novo modo?

2

Eu tenho vários modos "menores" na minha configuração do i3, que tem apenas alguns atalhos de teclado para tarefas específicas. Por exemplo, o modo do Skype:

mode "skype" {
        bindsym $mod+1 exec xdotool mousemove 90 70; exec xdotool click 1
        bindsym $mod+2 exec xdotool mousemove 90 110; exec xdotool click 1
        bindsym $mod+3 exec xdotool mousemove 90 150; exec xdotool click 1
        bindsym $mod+4 exec xdotool mousemove 90 190; exec xdotool click 1
        bindsym $mod+5 exec xdotool mousemove 90 230; exec xdotool click 1
        bindsym $mod+6 exec xdotool mousemove 90 270; exec xdotool click 1
        bindsym $mod+7 exec xdotool mousemove 90 310; exec xdotool click 1
        bindsym $mod+8 exec xdotool mousemove 90 350; exec xdotool click 1
        bindsym $mod+9 exec xdotool mousemove 90 390; exec xdotool click 1
        bindsym $mod+0 exec xdotool mousemove 90 430; exec xdotool click 1

        ...
}

que altera os números Alt + para alternar chats do Skype em vez de espaços de trabalho.

No entanto, enquanto no modo Skype, eu não posso mais usar as outras combinações de teclas que eu configurei no meu .i3 / config (como Alt + hjkl, dmenu e mais notavelmente as chaves de brilho, volume e PrtSc) .

Eu prefiro não copiar cada um dos bindsym s e bindcode s do modo padrão para cada um dos meus outros modos, o que resultaria em uma bagunça insustentável 1 . Existe alguma maneira de "herdar" keybindings do modo padrão para outro?

1: bem, os valores de pixel codificados para o modo Skype já são uma bagunça inamovível, mas eu prefiro não torná-lo ainda mais. ;)

    
por Doorknob 05.06.2015 / 02:55

1 resposta

1

Como é óbvio que não existe uma maneira "vanilla" para fazer isso, eu criei um pequeno pré-processador chamado i3bang que me permite alcançar isso.

Simplesmente

  1. Faça o download e configure o i3bang.

  2. Envolva todos os seus atalhos de teclado no modo padrão da seguinte forma:

    !@<+default_keybindings
    bindsym ...
    >
    
  3. Agora inclua uma referência a essa seção no final do modo em que você gostaria de manter as atalhos de teclado padrão:

    mode "skype" {
            bindsym $mod+!!1..9,0 exec xdotool mousemove 90 !<70+40*!!<0..9>>; \
                                  exec xdotool click 1
            ...
            !@default_keybindings
    }
    

    Como o i3 (pouco intuitivo) usa a ocorrência primeiro de uma ligação a uma determinada chave se houver várias ligações que usam a mesma chave, colocando a referência a default_keybindings último significa que quaisquer atalhos de teclado conflitantes em seu novo modo substituirão o padrão.

Divulgação completa : no caso de ainda não estar claro, esta é a minha própria ferramenta.

    
por 10.06.2015 / 03:19