Avec le module evdev :
/dev/input/event0 et /dev/input/event1 correspondent aux entrées-souris. Il suffit de les ouvrir et de mettre leur fds dans un select(), avec le bon timeout.
int main() {
int ev0;
int ev1;
int mfd;
int s;
struct timeval tv;
fd_set rfds;
char tmpbuf[1024];
ev0=open("/dev/input/event0");
if (!ev0)
perror("open() sur event0");
ev1=open("/dev/input/event1");
if (!ev1)
perror("open() sur event1");
read(ev1, tmpbuf, 1024); /* au cas où.... */
read(ev0, tmpbuf, 1024);
# Re: Evénements clavier/souris
Posté par cassecou . En réponse au journal Evénements clavier/souris. Évalué à 1.
/dev/input/event0 et /dev/input/event1 correspondent aux entrées-souris. Il suffit de les ouvrir et de mettre leur fds dans un select(), avec le bon timeout.
#include <sys/select.h>
#include <stdio.h>
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>
int main() {
int ev0;
int ev1;
int mfd;
int s;
struct timeval tv;
fd_set rfds;
char tmpbuf[1024];
ev0=open("/dev/input/event0");
if (!ev0)
perror("open() sur event0");
ev1=open("/dev/input/event1");
if (!ev1)
perror("open() sur event1");
read(ev1, tmpbuf, 1024); /* au cas où.... */
read(ev0, tmpbuf, 1024);
tv.tv_sec = 5; /* 5 secondes */
tv.tv_usec = 0;
FD_ZERO(&rfds);
FD_SET(ev0, &rfds);
FD_SET(ev1, &rfds);
if (ev1 > ev0)
mfd=ev1+1;
else
mfd=ev0+1;
s=select(mfd, &rfds, NULL, NULL, &tv);
/* printf("s=%d mfd=%d ev0=%d ev1=%d", s, mfd, ev0, ev1); */
if (s == -1)
perror("select()");
else if (!s)
printf("Pas touchai ni clavai ni souri !\n");
close(ev0);
close(ev1);
}