Emula o clique do mouse ao apertar uma tecla

6

Estou tentando emular o botão esquerdo do mouse para baixo quando a tecla Home está inativa e a esquerda para cima quando a tecla Home é liberada.

A razão por trás disso são os botões do meu touchpad são terríveis e eu gostaria de usar o track-point (bico vermelho) com o botão esquerdo do mouse para destacar texto (cópia). Em vez de usar o botão do touchpad, quero usar a tecla "Home". Eu sou capaz de emular a parte do mouse, mas eu não sei como liberar o clique quando a tecla 'Home' é liberada.

Aqui está o que eu tenho para. primeiro eu uso a ferramenta xbindkeys. Eu adicionei esta entrada ao .xbindkeysrc:

"~/bin/mouse-click"
  m:0x0 + c:110

clique do mouse é este script bash:

#!/bin/bash
xdotool mousedown 1

O problema é que o clique nunca é liberado, então eu preciso encontrar uma maneira de detectar o lançamento do 'Home'. Aqui está o script que estou tentando escrever. Os comentários descrevem o que estou tentando fazer:

#!/bin/bash

# not sure how to do that:
exit if Home key is in a pressed state (to avoid more mousedown actions)

xdotool mousedown 1

# not sure how to do that: (if Home key is released, release the mouse click)
while xinput query-state <device name> | grep -Flq 'key[9]=up'
xdotool mouseup 1

Então é isso que eu estou tentando descobrir:

  1. Consulta o estado da tecla 'Home' (pressionada ou não).
  2. Ouça os eventos do teclado e detecte uma versão da tecla "Início".

Se houver uma abordagem melhor para conseguir isso, eu adoraria ouvir sobre eles. Obrigado!

Edit: a solução é uma linha: xmodmap -e "keycode 115 = Pointer_Button2"
então agora minha tecla Home está fazendo clique esquerdo e se comporta como se eu apertasse o botão do mouse e eu pudesse manter a tecla pressionada e realçar (copiar) como esperado.

Eu também mapeei minha tecla End para ser o clique do meio, para que eu possa usá-lo para colar: xmodmap -e "keycode 110 = Pointer_Button1"

    
por user3538541 25.11.2014 / 08:57

2 respostas

2

A solução é

xmodmap -e "keycode 115 = Pointer_Button2"

Agora, minha tecla Home está clicando com o botão esquerdo do mouse e se comporta como se eu apertasse o botão do mouse e posso manter a tecla pressionada e realça (cópias) como esperado.

Eu também mapeei minha chave End para ser o clique do meio, para que eu possa usá-la para colar:

xmodmap -e "keycode 110 = Pointer_Button1"

Observe que é necessário ter "mousekeys" (emulação de mouse usando o teclado numérico) ativados para que isso funcione. "mousekeys" podem ser alternados pressionando Shift + NumLock ou definindo explicitamente executando:

dconf write /org/gnome/desktop/a11y/keyboard/mousekeys-enable true
dconf write /org/gnome/desktop/a11y/keyboard/mousekeys-enable false
    
por user3538541 26.11.2014 / 05:34
1

A maioria dos desktops tem algumas configurações de acessibilidade que controlam o mouse com o teclado já incorporado, como o XFCE as possui em Todas as configurações - > Acessibilidade - > Mouse - > Mouse Emulation, que usa o teclado numérico para que a tecla 5 faça exatamente o que você está tentando fazer.

Se bem me lembro, gnome, canela e mate possuem características semelhantes sob algo como "Acessibilidade" ou tecnologia assistiva, etc. Ou um programa / pacote instalável como mousetweaks ("aprimoramentos de acessibilidade do mouse para a área de trabalho GNOME") ou keynav (mas Eu não consegui fazer isso funcionar no xfce).

Ou, se o touchpad ainda funcionar bem (mas não os botões), basta tocar para um único clique, tocar em & amp; segure por um clique & amp; Arrastar, um toque duplo = duplo clique ... e se eles não funcionam, deve haver uma ou duas linhas no terminal que deve levá-los a trabalhar (não se lembra deles agora). Eu não gostaria de escrever meu próprio script quando houver algumas outras opções que devem funcionar

    
por Xen2050 25.11.2014 / 10:49