#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>

void cleanup(void)
{
    system("stty sane");
    putc('\n', stderr);
}
int waitfor(int fd, int secs)
{
    fd_set fds;
    struct timeval tv = { secs, 0 };
    FD_ZERO(&fds);
    FD_SET(fd, &fds);
    return select(fd + 1, &fds, 0, 0, secs > 0 ? &tv : 0);
}
int main(void)
{
    int c = 0, timeout = 1;
    system("stty raw");
    atexit(cleanup);
    while (c != 'q')
        if (!waitfor(fileno(stdin), timeout))
            putc('a', stderr);
        else if ((c = getchar()) == 'p')
            timeout *= -1;
    return 0;
}
