kbhit () в Mac - PullRequest
       28

kbhit () в Mac

0 голосов
/ 23 ноября 2008

Я новичок в cpp в mac. Я получил ошибку, когда я использовал kbhit () в моей программе. Я использовал #include, но тоже получил ошибку, поэтому я искал и тестировал #include, но ошибка все еще осталась. так что плз помогите мне. заранее спасибо.

Ответы [ 2 ]

1 голос
/ 23 ноября 2008

Не знаю, сработает ли это на Mac, но вот код, который я использовал для однократного нажатия клавиш в Linux.

int mygetch() {
    char ch;
    int error;
    static struct termios Otty, Ntty;

    fflush(stdout);
    tcgetattr(0, &Otty);
    Ntty = Otty;

    Ntty.c_iflag  =  0;     /* input mode       */
    Ntty.c_oflag  =  0;     /* output mode      */
    Ntty.c_lflag &= ~ICANON;    /* line settings    */

#if 1
    /* disable echoing the char as it is typed */
    Ntty.c_lflag &= ~ECHO;  /* disable echo     */
#else
    /* enable echoing the char as it is typed */
    Ntty.c_lflag |=  ECHO;  /* enable echo      */
#endif

    Ntty.c_cc[VMIN]  = CMIN;    /* minimum chars to wait for */
    Ntty.c_cc[VTIME] = CTIME;   /* minimum wait time    */

#if 1
    /*
    * use this to flush the input buffer before blocking for new input
    */
    #define FLAG TCSAFLUSH
#else
    /*
    * use this to return a char from the current input buffer, or block if
    * no input is waiting.
    */
    #define FLAG TCSANOW

#endif

    if ((error = tcsetattr(0, FLAG, &Ntty)) == 0) {
        error  = read(0, &ch, 1 );        /* get char from stdin */
        error += tcsetattr(0, FLAG, &Otty);   /* restore old settings */
    }

    return (error == 1 ? (int) ch : -1 );
}
1 голос
/ 23 ноября 2008

kbhit () нестандартно. На самом деле, я не верю, что есть стандартная функция для обнаружения ввода с клавиатуры. Лучшее, что вы можете сделать, это прочитать символ из stdin, например, используя fgetc, и надеюсь, что он не перенаправлен откуда-то еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...