web-dev-qa-db-fra.com

Comment compter les clics des boutons de la souris?

Comment compter les clics des boutons de la souris depuis le début d'Ubuntu?

Je voudrais faire des statistiques sur les clics des boutons de la souris, donc j'en ai besoin.

Merci

6
lukasz

xinput peut faire ce dont vous avez besoin, Lukasz. Vous pouvez avoir un one-liner (enfin, pas exactement un one-liner, mais vous n’appuierez qu'une seule fois sur ENTREE :-D), mais vous devez d’abord travailler. Je jure que c'est assez facile, je vais simplement expliquer la plupart des choses ici pour plus de clarté.

Ouvrez un terminal et tapez:

xinput list

Vous obtiendrez une belle liste de pointeurs, de boutons de clavier, etc., comme cet extrait du mien:

⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ USB+PS/2 Optical Mouse                    id=10   [slave  pointer  (2)]
⎜   ↳ PS/2 Mouse                                id=13   [slave  pointer  (2)]
⎜   ↳ AlpsPS/2 ALPS GlidePoint                  id=14   [slave  pointer  (2)]

Ma souris USB est juste à la deuxième ligne, et vous voyez que son identifiant est 1. Localisez votre souris dans la liste et notez son ID, vous en aurez besoin pour la commande principale de ce que vous voulez.

Si vous voulez vérifier si vous avez le bon ID, lancez xinput test <id>. Si vous déplacez la souris, cliquez sur des boutons, etc., vous devriez voir apparaître de nombreuses lignes d’information sur votre terminal. Il répertorie tout ce que vous faites avec votre souris. Si rien ne se passe, essayez un autre identifiant qui ait du sens dans votre liste de pointeurs, vous avez probablement choisi le mauvais au début (cela ne devrait vraiment pas être si difficile).

Lorsque vous avez enfin trouvé le bon identifiant, exécutez cette commande:

xinput test <id>|sed -une '/release/ {      x
     /^$/ s/^.*$/1/
     G
     h
     s/^/      /
     s/^ *\(......\)\n/\1  /p
     x
     s/\n.*$//
     /^9*$/ s/^/0/
     s/.9*$/x&/
     h
     s/^.*x//
     y/0123456789/1234567890/
     x
     s/x.*$//
     G
     s/\n//
     h
}'

Copiez le texte ci-dessus et collez-le. Avant de taper ENTER, remplacez <id> par cet identifiant que vous avez trouvé. Lorsque vous l'exécutez, vous le laissez là pendant que vous continuez à utiliser le système. Chaque fois que vous souhaitez vérifier le nombre de clics enregistrés, il vous suffit de jeter un coup d'œil au terminal.

Quelques commentaires importants:

  • Malheureusement, je ne suis pas très doué pour la console, Shell, les commandes, etc. Je suis sûr que quelqu'un peut améliorer cela ou fournir une meilleure solution. Ma solution présente un inconvénient: vous n’avez pas vraiment de résultats en temps réel. Pour une raison quelconque, il semble y avoir une mise en mémoire tampon et vous devez générer davantage d’événements de souris pour lire les plus anciens. Donc, si vous faites un clic et que ce n’est pas affiché, déplacez un peu votre souris et bientôt le dernier clic s’affiche. Désolé, mais j'ai essayé certaines choses, mais je ne sais pas encore comment résoudre ce problème. J'espère que ce n'est pas si grave pour toi.
  • Comme vous le voyez, tout clic est compté. Si vous souhaitez ne compter les clics que pour l'un des boutons, remplacez "release" par "release 1", "release 2", "release 3", et bien vous avez eu l'idée. Si vous souhaitez les compter tous, mais avec des statistiques distinctes, exécutez la commande (avec l'indication appropriée du bouton) dans un terminal séparé.

L’approche que j’ai utilisée: xinput list <id> fait le sale boulot en montrant tout ce qui se passe avec la souris. Ensuite, je redirige cette sortie vers sed, qui analysera uniquement les lignes avec les événements 'release'. J'imagine qu'il est normal de considérer qu'un événement 'release' met fin au processus 'click' (bouton enfoncé, puis haut). Le script sed montre non seulement les lignes avec 'release', mais les numérote également. Ce script a été directement copié de info sed (section 4.7) et pourrait certainement être amélioré.

4

Bien que ce ne soit pas tout à fait ce que vous voulez, WhatPulse est quelque chose de sympa pour garder une trace de ce genre de choses + un classement en ligne avec des équipes, des pays, ...

0
Ward Muylaert

Vous pouvez utiliser evtest fourni par le projet linux-input .

Mais vous devez être sûr d’avoir CONFIG_INPUT_EVBUG = y dans le noyau (probablement la valeur par défaut si vous installez la version de débogage) et définir le niveau de débogage sur 8.

echo 8 > /proc/sys/kernel/printk

À ce stade, à partir de la console, vous verrez plusieurs messages que vous pouvez analyser.

evbug.c: Event. Dev: gpio-keys/input0, Type: 0, Code: 0, Value: 0
evbug.c: Event. Dev: gpio-keys/input0, Type: 1, Code: 103, Value: 1

Vous pouvez ensuite installer les paquets bitbake et evtest

Sudo apt-get install bitbake evtest

Vous pouvez ensuite utiliser evtest sur votre appareil. Vous aurez besoin de quelques tests pour déterminer le bon événement dont vous avez besoin et vous pourrez compter l'occurrence de cet événement.

evtest /dev/input/eventXX

Sinon, si vous ne voulez compter que le clic depuis que vous vous êtes connecté à GDM/XDM, vous pouvez développer ou demander à quelqu'un de le faire, une application utilisant GTK, Qt ou wxWidgets, Enlightenment ou ce que vous voulez, pour surveiller les événements de souris et démarrez cette application dès que le poste de travail apparaît.

0
tmow