Estou ciente de várias maneiras de remapear as combinações de teclas no Ubuntu em uma base global (por exemplo, remapear globalmente Ctrl + S para enviar Ctrl + D ou algo assim), como o aplicativo xbindkeys . O que eu preciso, no entanto, é uma maneira de fazer isso apenas para um aplicativo específico . Por exemplo, algo como "Remapear Ctrl + S para enviar Ctrl + D, mas apenas no Chrome ". Existe alguma maneira de conseguir isso?
shortcut-keys
x11
Derek Thurn
fonte
fonte
Respostas:
Sua ideia de usar xbindkeys parece boa:
no seu
.xbindkeysrc
adicione uma nova combinação de teclas:Isso será executado
"app_specific_keys.sh"
quando você pressionarctrl+s
.Agora você precisa definir o script. Ele deve obter a janela ativa e a partir daí o nome do aplicativo que atualmente tem o foco:
Isso faria o truque: solicita ao xdotool a janela ativa, solicita ao xprop todas as propriedades da janela com o ID fornecido e reduz a saída muito detalhada ao nome do aplicativo (na verdade, sua classe). Se você rodar isso em um terminal gnome, você receberá
Agora você precisa definir ações para seus aplicativos:
Então, juntos, o script
"app_specific_keys.sh"
pode ficar assim:Isso deve funcionar, mas, como nesta pergunta , devo admitir que não. Provavelmente porque um dos menus globais do Compiz, Unity, não funciona bem com a
--clearmodifiers
opção do xdotool. Uma solução alternativa seria adicionar um sono na frente do seu script para poder liberar as chaves você mesmo: Na sua.xbindkeysrc
alteração para esta combinação de teclas:Como nota de rodapé: isso não funcionará, se você desejar alterar as teclas dos programas executados em um terminal (por exemplo, vi ou emacs no modo de console). A classe de aplicativo retornada ainda seria "Gnome-terminal".
Espero que ajude.
fonte
xvkbd -xsendevent -text "\Cs"
. Isso não parece sofrer com os problemas que você estava vendo com o xdotool.f
ligarxdotool key f
. Ainda procurando uma maneira de fazer isso.xdotool type --window $(xdotool getwindowfocus) [keys]
usar a opção --window e enviar para a janela ativa no momento NÃO levará a um comportamento recursivo.autokey é como o AutoHotkey para Ubuntu. Você pode escrever scripts em python e executá-los via atalho de teclado e um filtro do Windows (tornando-o específico para a pseudo-aplicação). Seu script pode controlar eventos de teclado e mouse e até mover janelas como um toque adicional.
fonte
autokey
é MUITO mais rápido quexbindkeys
, mesmo com o modo de detecção de janela ativado - ação imediata executada. Desvantagem: atribuições dos botões do rato parece não trabalho (eu acho que é um bug)