Obtenir de la souris deltas à l'aide de Python! (sous Linux)
Je sais que Linux vous donne un 9-bit 2 du compliment de données à partir de /dev/input/mice. Je sais aussi que vous pouvez obtenir les données via /dev/hidraw0 où hidraw est votre périphérique USB de donner des données brutes de l'CACHÉ. Je sais que les données envoyées à l'est du delta du mouvement (déplacement) plutôt que de la position. Par la par la, je peux également afficher le charabia de données via la commande "cat /dev/input/mice". Ma question est :
Pouvez vous s'il vous plaît dites-moi, en utilisant le langage Python comment puis-je lire ces données? J'ai vraiment plutôt que des données comme dans de simples entiers. Mais il s'est avéré difficile. Le vrai problème est la lecture de la putain de données. Est-il un moyen pour lire les bits et faire peu d'arithmétique? ( Actuellement, je ne suis pas inquiet en utilisateur root questions connexes. Veuillez prendre le script est exécuté en root.)
(Ma référence principale était http://www.computer-engineering.org/ps2mouse/)
OriginalL'auteur JohnRoach | 2011-01-31
Vous devez vous connecter pour publier un commentaire.
Je suis sur un appareil de base et n'ayant pas accès à l'X ou ... donc event.py elle ne fonctionne pas.
Voici donc mes plus simple de décoder le code de la partie pour interpréter "obsolète" de "/dev/input/mice':
J'ai été à la chasse autour d'une structure qui définit ces 3 octets, mais peut-être que ça n'existe pas. Merci pour cet exemple.
doit être de type string (chaîne de cette ligne:
button = ord( str(buf[0])[0] );
Mais la façon de l'utiliser sans les droits root?/dev/input/mice est lisible que par root. Si vous avez un temps d'accès root, vous pouvez modifier les droits d'être "r" pour l'utilisateur. Mais sur le matériel que j'ai, fichier les droits sur ce fichier ont été rewrotten après chaque redémarrage.
OriginalL'auteur Alexandre Mazel
Les données du système d'entrée en tant que structures, et non pas de simples entiers. La souris de l'appareil est obsolète, je crois. La méthode préférée est le cas des interfaces de périphérique, où la souris (et d'autres) les événements d'entrée peuvent également être obtenus. J'ai écrit un code qui fait cela, le Event.py module Vous pouvez l'utiliser, ou commencer à partir de là.
Merci! Droit maintenant, je n'ai pas de souris d'exemple précis, mais je vais voir si je peux en fournir un. Pour l'instant, Il y a un de béton périphérique d'interface exemple pour un PowerMate bouton, qui est un semblable mouvement relatif de l'appareil. L'auto-test au bas est un autre exemple. Ensuite, il y a un petite app construit avec celle qui l'utilise comme un contrôle du volume, avec affichage à l'écran.
Je viens de constater que vous m'avez envoyé une réponse. Je vais le vérifier.Avez-vous été en mesure de trouver une souris exemple précis?
Ok, de base interface de la souris.
OriginalL'auteur Keith
Oui, Python, il est possible de lire un fichier au format binaire. Il suffit d'utiliser un
'b'
drapeau lorsque vous ouvrez un fichier, par exempleopen('dev/input/mice', 'rb')
.Python prend également en charge tous les typiques bit à bit des opérations arithmétiques: les quarts de travail, les inversions, au niveau du bit et, ou, xor, et non pas, etc.
Vous seriez probablement mieux servi en utilisant une bibliothèque pour traiter ces données, au lieu de le faire sur votre propre, cependant.
struct
.Merci pour votre prompte réponse. Une question cependant dev/input/mice change continuellement depuis la position de la souris change continuellement est-il un moyen de lire en temps réel?
Je ne suis pas sûr. En général, vous ne voulez pas être la lecture de données qui est en train de changer comme vous le lisez, si. Encore une fois, la meilleure idée serait d'utiliser une bibliothèque qui fait tout le travail dur pour vous
Kettler j'ai essayé à l'aide de open() ça ne fonctionne pas. J'ai simplement utilisé f=open('/dev/input/mice', 'rb') for ligne in f: ligne d'impression, Et il semble données en temps réel ne peut pas être lu à partir de ce fichier 🙁 Pouvez-vous recommander une bibliothèque? Bien sûr, cela a été le tout dans une boucle. 🙂
ce qui va arriver, c'est sans doute qu'il acquiert un verrou sur le fichier, puis utilise les données lorsque le verrou a été acquis. C'est comment fichier IO fonctionne dans la plupart des langues. Vous aurez besoin de quelque chose au-delà de simplement e / s de fichier pour gérer les données de la souris en temps réel, malheureusement
OriginalL'auteur Rafe Kettler