• [^] # Re: Evénements clavier/souris

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

    Chez moi: Slackware-current, kernel 2.6.5

    $ uname -a
    Linux localhost 2.6.5 #1 Sun Apr 4 13:23:09 CEST 2004 i686 unknown unknown GNU/Linux
    $ lsmod
    [...]
    evdev 9632 0
    evbug 2912 0
    [...]

    $ ls -al /dev/input/event*
    crw-r--r-- 1 root root 13, 64 Jan 8 2001 /dev/input/event0
    crw-r--r-- 1 root root 13, 65 Jan 8 2001 /dev/input/event1
    [...]

    Tu peux peut-être essayer de les mknod-er ? On peut remplacer event0 (souris, chez moi) par /dev/psaux, mais pour le clavier... je n'ai rien trouvé...

    Sinon, voici une nouvelle version, qui doit résoudre les segfaults :'( (j'avais oublié les flags de open)

    # cat pastouchai2.c
    #include <sys/select.h>
    #include <stdio.h>
    #include <sys/time.h>
    #include <sys/types.h>
    #include <unistd.h>
    #include <sys/stat.h>
    #include <fcntl.h>

    int main() {
    int ev0;
    int ev1;
    int mfd;
    int s;
    struct timeval tv;
    fd_set rfds;

    ev0=open("/dev/psaux",O_RDONLY);
    if (!ev0)
    perror("open() sur psaux");
    ev1=open("/dev/input/event1",O_RDONLY);
    if (!ev1)
    perror("open() sur event1");

    tv.tv_sec = 1; /* 1 seconde */
    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);
    return 0;
    }