Linux System Info:
OS: GNU/Linux x86_64
Kernel: 3.13.0-24-generic
Distro: Linux Mint 17 Qiana, Cinnamon 64-bit 2.2.16
[Based On: Ubuntu 14.04.5 LTS, Trusty Tahr]
Devido a uma deficiência (lesão na coluna vertebral) que inclui o comprometimento dos dedos, fiz algumas alterações para poder usar a tecla CapsLock do meu teclado como meu botão esquerdo do mouse. NumLock é remapeado para funcionar como CapsLock.
Quase tudo funciona bem ao usar o CapsLock como um clique com o botão esquerdo e um clique duplo com a esquerda, mas algumas coisas, listadas abaixo, não funcionam. Alguém pode sugerir alterações que eu possa fazer, ou uma abordagem alternativa, para que eu possa fazer funcionar totalmente o CapsLock como um clique com o botão esquerdo.
As seguintes coisas todas FALHAM ao usar a tecla CapsLock como um clique com o botão esquerdo do mouse, tudo o mais que você pode usar um clique com o botão esquerdo funciona bem e eu tentei tudo o que posso pensar.
As alterações do sistema que fiz foram:
1) As linhas a seguir foram adicionadas ao ~/.xbindkeysrc
para enviar o clique com o botão esquerdo do mouse para pressionar e liberar eventos quando o CapsLock for pressionado e liberado.
# c:66 is Caps_Lock and in the xdotool commands the 1 specifies the left button.
"xdotool mousedown 1"
c:66
"xdotool mouseup 1"
Release+c:66
2) A funcionalidade CapsLock foi desativada com o comando setxkbmap -option caps:none
(adicionado a ~/.profile
). O CapsLock não funciona mais como uma tecla modificadora e sua luz indicadora do teclado não é alternada quando pressionada.
3) Tecla NumLock re-mapeada como CapsLock, para que NumLock atue exatamente como CapsLock usado.
Editou o arquivo /usr/share/X11/xkb/symbols/pc
:
Replaced this line: key <NMLK> { [ Num_Lock ] };
With this line: key <NMLK> { [ Caps_Lock ] };
Excluiu os arquivos de mapa de teclado armazenados em cache, *.xkm
, em /var/lib/xkb/
(reinicialização do sistema necessária para carregar os novos mapas de teclado).
EDIT @ 2018-03-01 13:27:
Eu instalei o pacote PyAutoGUI do Python e escrevi dois programas em Python, um para chamar pyautogui.mouseDown()
e outro para chamar pyautogui.mouseUp()
e ~/.xbindkeysrc
modificado para executar os 2 programas em Python em vez dos comandos xdotool
. Os mesmos problemas persistem, ou seja, a maioria dos cliques esquerdos é boa, mas o arrastamento para mover / redimensionar janelas e menus falha.
Como xdotool
e PyAutoGUI
usam Xlib
, suspeito que seja necessária uma solução que ignore Xlib
. Existe alguma forma de baixo nível para iniciar eventos de botão para baixo / para cima do mouse?
EDIT @ 2018-03-06 15:57:
Como minha hipótese era de que Xlib
era o problema, tentei ignorá-lo ao escrever algum código para escrever diretamente no dispositivo de entrada do mouse, especificamente /dev/input/event5
. Eu enviei o código C para um GitHub . O código postado pelo thundertrick em este post no StackoOverflow foi útil para mim.
Eu então criei /etc/udev/rules.d/80-input.rules
- o único liner abaixo - para permitir a escrita não-sudo de eventos de mouse ...
KERNEL=="event*", NAME="input/%k", MODE="660", GROUP="input"
... então criei o grupo input
e adicionei-me ao grupo.
sudo groupadd -f input
sudo gpasswd -a MY_USER_NAME input
... então alterei meu arquivo ~/.xbindkeysrc
para chamar meu programa compilado write-mouse-events.
O resultado foi exatamente o mesmo problema - usando o CapsLock como um botão esquerdo do mouse funciona bem, mas arrastando para mover / redimensionar janelas e menus falham.