Comment contrôler le mouvement de la souris sous Linux?
J'essaie de contrôler la souris sous Linux. Xlib semble fonctionne, mais lorsque j'essaie de l'utiliser avec OpenCV, il conserve son retour:
Resource temporarily unavailable
Je décide donc d'écrire "/dev/psaux". Le code est comme suit:
#include <unistd.h>
#include <string.h>
#include <stdio.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main() {
unsigned char a[5]={0, 0xff, 0, 0x28, 0xff};
int fp = open ("/dev/psaux", O_WRONLY);
if(!fp)printf("open error:%s\n", strerror(errno));
for(int i = 0; i < 10; i++)
printf("write:%d\t\t%s\n", write(fp, a, 5), strerror(errno));
close(fp);
return 0;
}
Le compiler avec:
gcc my_psaux.c -o my_psaux -std=gnu99 -g
Courir et obtenir
$sudo ./my_psaux
write:5 Success
write:5 Success
write:5 Success
write:5 Success
write:5 Success
write:5 Success
write:5 Success
write:5 Success
write:5 Success
write:5 Success
Cependant, la souris ne bouge pas. Puis-je ouvrir un nouveau terminal, tapez "sudo cat /dev/psaux" et exécuter "my_psaux".
Mais je viens de chat rien. Rien n'est écrit dans "/dev/psaux" ?
Quelqu'un pourrait-il m'aider?
Si ce n'est pas une bonne méthode pour le contrôle de la souris, quelqu'un pourrait-il me dire une autre?
source d'informationauteur thundertrick
Vous devez vous connecter pour publier un commentaire.
Un grand merci à @R..
pour me rappeler de certains autres moyens au lieu de
/dev/psaux
J'ai donc essayé
/dev/input/mouse*
et/dev/input/event*
En utilisant
J'obtiens ceci:
Après le test, seulement
/dev/input/event10
œuvres. Le code est comme suit:La souris n'est pas un bouclage/l'écho de l'appareil. C'est plus comme un terminal. Vous attendez-vous à l'écriture de données sur un terminal (qui apparaît sur l'écran) pour faire les mêmes caractères de revenir à vous comme entrée? La même chose s'applique à la souris; le seul point dans l'écriture, c'est pour envoyer des séquences d'échappement que changer son mode de fonctionnement (par exemple, le protocole utilisé, ou de la résolution).
Si vous voulez "contrôle" de la souris, vous devez vous injecter des événements d'une autre manière, ou de fournir une fifo (tube nommé) ou pseudo-tty en place de
/dev/psaux
pour le système d'entrée pour la lecture. Cependant, c'est probablement un plutôt erronées de la façon de faire les choses...Si vous expliquer pourquoi vous avez besoin pour le contrôle de la souris, peut-être que nous pourrions vous proposer de meilleures approches alternatives à ce que vous essayez de faire.