• # Re: Evénements clavier/souris

    Posté par . En réponse au journal Evénements clavier/souris. Évalué à 1.

    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.

    #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);
    }