Gostaria de poder aplicar os mesmos atalhos de teclado e atalhos personalizados que uso em meus editores de texto em todo o meu ambiente de área de trabalho.
Eu quero basicamente remapear meu teclado em todo o sistema, não apenas em uma janela de aplicativo específica. Ou seja, quando eu remapear alt + j = Down
, eu quero pressionar alt + j
para ser o mesmo que pressionar a tecla "down", no que diz respeito ao meu ambiente de desktop.
Os atalhos que eu uso são otimizados para manter as mãos em uma posição natural perto da linha inicial em todos os momentos:
# Note how
# system-wide remapping of *single* keys is possible with xmodmap.
Caps Lock --> Escape
Escape --> Caps Lock # Switch caps lock with
# the more useful escape key.
# As far as *all* applications
# are concerned, pressing caps lock
# is actually pressing Escape.
# However, I've not found a good way do the same for multiple keys:
alt + space --> Right Arrow
alt + Escape --> Enter
shift + alt + h --> Backspace
alt + x --> Delete
shift + alt + l --> Delete
ctrl + alt --> Alt # Default alt functionalities
# remapped to ctrl + alt
No meu editor de texto, isso fez maravilhas pela minha precisão, velocidade e me ajudou tremendamente com dores no tendão que eu estava tendo, já que minhas mãos agora mal precisam deixar sua posição natural de descanso.
Primeira tentativa quase bem-sucedida de uma solução:
Usando xbindkeys para chamar xvkbd (x teclado virtual). Este é um exemplo do meu .xbindkeysrc
:
# h-j-k-l Movement
###################
"xvkbd -xsendevent -text "\[Down]""
alt + j
"xvkbd -xsendevent -text "\[Up]""
alt + k
"xvkbd -xsendevent -text "\[Left]""
alt + h
"xvkbd -xsendevent -text "\[Right]""
alt + l
Problemas:
A tecla alt
é geralmente a chave padrão para chamar o menu de um aplicativo (por exemplo, alt + F
exibe o menu suspenso * F * ile na maioria dos aplicativos).
Além disso, isso parece funcionar com alguns aplicativos, enquanto outros parecem ignorá-lo.
xbindkeys não está realmente fazendo o remapeamento do teclado, é apenas dizer ao xvkbd para enviar um sinal, que às vezes pode criar conflitos com o aplicativo ativo (ao contrário do xmodmap, que realmente remapeia o teclado).
Meta
Um remapeamento em todo o sistema do meu teclado, implementado de uma maneira que é facilmente portável (um arquivo rc ou algo similar).
alt
é a chave ideal de escolha, já que ctrl
é muito usado em todos os aplicativos, e a tecla mod é ocupada pelo meu gerenciador de janelas (Xmonad).
Minha configuração
Estou executando o Ubuntu 12.10, com o ambiente de desktop Xmonad.
Isso é factível? Eu ainda não sei muito sobre as coisas no nível do sistema operacional e como ele processa as entradas.