web-dev-qa-db-fra.com

Simuler un clic de souris lorsque vous appuyez sur une touche

J'essaie d'émuler lorsque la touche Accueil est enfoncée et lorsque la touche Accueil est relâchée.

La raison derrière cela est que les boutons de mon pavé tactile sont terribles et j'aime utiliser le point de suivi (mamelon rouge) avec le clic gauche de la souris pour mettre en surbrillance (copier) le texte. Au lieu d'utiliser le bouton du pavé tactile, je souhaite utiliser la touche 'Accueil'. Je peux émuler la partie enfoncée avec la souris, mais je ne sais pas comment relâcher le clic lorsque la touche "Accueil" est relâchée.

Voici ce que j'ai donc pour. J'utilise d'abord l'outil xbindkeys. J'ai ajouté cette entrée au .xbindkeysrc:

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

clic de souris est ce script bash:

#!/bin/bash
xdotool mousedown 1

Le problème, c'est que le clic n'est jamais publié. Je dois donc trouver un moyen de détecter la sortie de "Home". Voici le script que j'essaye d'écrire. Les commentaires décrivent ce que j'essaie de faire:

#!/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

C'est ce que j'essaie de comprendre:

  1. Interroger l'état de la touche 'Home' (enfoncée ou non).
  2. Écoutez les événements du clavier et détectez une version de la touche 'Home'.

S'il existe une meilleure approche pour y parvenir, j'aimerais en entendre parler. Merci!

Edit: la solution est une ligne: xmodmap -e "keycode 115 = Pointer_Button2"
Alors maintenant, ma touche Accueil fait un clic gauche et se comporte comme si je cliquais avec la souris et je pouvais maintenir la touche enfoncée et la surligner (copier) comme prévu.

J'ai également mappé ma clé de fin sur un clic du milieu afin que je puisse l'utiliser pour coller: xmodmap -e "keycode 110 = Pointer_Button1"

6
user3538541

La solution est

xmodmap -e "keycode 115 = Pointer_Button2"

Maintenant, ma touche Accueil est en train de faire un clic gauche et se comporte comme si je cliquais avec la souris et je pouvais maintenir la touche appuyée et la surbrillance (copie) comme prévu.

J'ai également mappé ma clé de fin sur un clic du milieu afin de pouvoir l'utiliser pour coller:

xmodmap -e "keycode 110 = Pointer_Button1"

Notez qu'il est nécessaire d'activer "mousekeys" (émulation de la souris à l'aide du pavé numérique) pour que cela fonctionne. "souris" peut être basculé en appuyant sur Shift+NumLock ou défini explicitement en exécutant:

dconf write /org/gnome/desktop/a11y/keyboard/mousekeys-enable true
dconf write /org/gnome/desktop/a11y/keyboard/mousekeys-enable false
2
user3538541

La plupart des ordinateurs de bureau ont des paramètres d'accessibilité qui contrôlent la souris avec le clavier déjà intégré, comme XFCE les a tous dans Tous les paramètres -> Accessibilité -> Souris -> Émulation de la souris, qui utilise le pavé numérique du clavier de sorte que la touche 5 fonctionne exactement ce que vous essayez de faire.

Si je me souviens bien, gnome, cannelle et mate ont des fonctionnalités similaires sous quelque chose comme "Accessibilité" ou technologie d'assistance, etc. pas le faire fonctionner sur xfce).

Ou, si votre pavé tactile fonctionne toujours correctement (mais pas les boutons), vous pouvez simplement appuyer sur un clic, appuyer et maintenir enfoncé pendant un clic-glisser, appuyer deux fois = double-cliquer ... 't work Il devrait y avoir une ligne ou deux dans le terminal qui devrait les faire fonctionner (ne vous en souvenez plus tout de suite). Je ne voudrais pas écrire mon propre script quand il y a quelques autres options qui devraient fonctionner

1
Xen2050