Hoje encontrei este artigo muito legal de Steven Losh, no qual ele apresenta um par de mapeamentos de teclado que aumentam a produtividade. Entre eles, está um mapeamento dinâmico das teclas shift esquerda e direita.
A ideia
Quando Shift_L ou Shift_R são pressionados sem uma chave adicional, eles são mapeados para '(' e ')' respectivamente, caso contrário, eles funcionam normalmente.
O problema
Ele faz tudo isso sob o OSX. Eu estou tentando conseguir o mesmo no Linux. Não existe um caminho direto para isso, pois, como eu entendo, você não pode usar o xmodmap para configurar uma chave apenas para Shift_L e outra para Shift quando usada como uma tecla modificadora.
Eu pesquisei um pouco e encontrei pessoas tentando fazer o mesmo no Windows, o que é aparentemente possível usando o AutoHotKey, mas não consegui encontrar nada para o Linux.
Existe uma maneira de resolver isso no Linux?
Respostas:
Uau! Comentário do usuário teika kazura sobre a questão original é bastante correto - não só é efetivamente uma duplicata dessa outra questão , mas a resposta fornecida lá ("use xcape ") resolve este problema!
Depois de clonar o repositório xpo e compilar (eu tive que instalar o libXtst-devel na minha caixa do Fedora, primeiro), consegui obter o comportamento exato solicitado com o seguinte comando:
Depois de testes reconhecidamente superficiais, parece funcionar muito bem. Agradável!
Outras opções
Se você usar a tecla Shift como um modificador do mouse (ou seja, se você clicar em qualquer coisa), você provavelmente desejará incluir a opção de tempo limite do xcape e encontrar um valor de tempo limite confortável, para que as teclas Shift sejam usadas em combinação com o mouse don geram parênteses espúrios. A partir do xcape README:
Assim, ao incluir o
-t
sinalizador com um valor de tempo limite que funcione para você, você ainda poderá clicar com o mouse enquanto você mantiver pressionada a tecla Shift por pelo menostimeout ms
milissegundos.(Crédito, novamente, para teika kazura por apontar a outra questão, e também para don_crissti pela resposta original lá.)
fonte
-t <timeout ms>
Se você mantiver uma chave por mais tempo do que esse tempo limite, o xcape não gerará um evento de chave. O padrão é 500 ms." ... A menos que o xcape interfira no evento de teclas do modificador (não me lembro), isso deve impedir que ele gere pressionamentos de tecla falsos, enquanto ainda permite usá-lo como um modificador de seleção de mouse, desde que você o mantenha por tempo suficiente .-t
bandeira!É um desafio interessante, e eu concordo que o xinput não parece ser perfeitamente adequado. Passei algum tempo mexendo nas habilidades do xmodmap, e cheguei tão frustrantemente perto de conseguir o que você quer fazer ... sem realmente conseguir chegar lá.
Usando o xmodmap, é possível atribuir o parenleft como um símbolo de teclas na tecla left-shift:
qual sorta funciona, pelo menos em testes na minha caixa do Fedora 17, mas não de forma satisfatória. Descobri que, com esse mapeamento em vigor, a tecla Shift ainda funcionava normalmente e não apresentava nenhum parêntese espúrio, mas (frustrantemente) não produzia de forma confiável os parênteses esquerdos. Por alguma razão, a chave não aparecem para modificar de forma confiável em si , que quebra sua atribuição mudou ... inicialmente. Por alguma razão, bater o deslocamento para a esquerda algumas vezes sucessivas acabaria fazendo com que ele começasse a produzir parêntesis esquerdos, mas somente após a quarta ou quinta impressão.
Um comportamento que notei, no entanto, é que você poderia trabalhar com um analógico "próximo o suficiente": descobri que depois de mapear parenleft e parenright para Shift_L e Shift_R, eu poderia digitar parens de maneira confiável "rolando" em ambas as teclas shift - em outras palavras, com esse mapeamento:
pressionando Shift_L seguido por Shift_R, então liberando ambos, produziria um parênquima direito, ou um parênquima esquerdo na outra direção. (É claro que os mapeamentos de parêntese poderiam ser revertidos; eu não conseguia decidir qual caminho me pareceria mais "natural".)
Isso foi o mais perto que cheguei de alcançar o comportamento exato que você está procurando; não parece ser possível usar o xmodmap sozinho.
Eu estava meio convencido de que simplesmente não é possível, mas eu percebi que há pelo menos uma tecla que funciona exatamente como você descreve: A tecla Super ("Windows"). Sob o Gnome Shell, é uma tecla modificadora (mod4), que produz um efeito diferente (triggering Overview) quando pressionada sozinha. Assim, pelo menos em teoria, pode ser possível implementar a sobrecarga de teclas de deslocamento desejada da mesma maneira.
... Mas, eu não tenho absolutamente nenhuma idéia de como isso seria feito, ou o quão invasivo seria ficar atolado no processamento necessário toda vez que você apertar a tecla Shift. :-)
fonte
talvez pareça um xbindkeys para alterar o mapeamento de chaves ou apenas encontrar um bom plugin de codificação para o vim ou gedit ou o que você quiser usar ou codificar o seu próprio.
ferramentas para alterar mapas de teclado https://stackoverflow.com/questions/6812/mapping-my-custom-keys-in-debian
talvez http://www.tldp.org/HOWTO/Keyboard-and-Console-HOWTO-14.html
e escreva um script para habilitá-lo.
fonte