static void * ThreadforKeyGet(void * lpParam) #endif /* not _WIN32*/ { /* * 方向键(←): 0xe04b * 方向键(↑): 0xe048 * 方向键(→): 0xe04d * 方向键(↓): 0xe050 */ unsigned char key; #ifndef _WIN32 sigset_t sigmask, oldmask; /* set the getchar without buffer */ sigfillset(&sigmask); pthread_sigmask(SIG_BLOCK, &sigmask, &oldmask); set_stty(); #endif (void)lpParam; //prevent compiler warnings for (;;) { key = getch(); #ifdef _WIN32 if (key == 0xE0) { key = getch(); if (key == 0x48) //up key , 0x1b 0x5b 0x41 { SAVEKEY(0x1b); SAVEKEY(0x5b); SAVEKEY(0x41); } else if (key == 0x50)//0x1b 0x5b 0x42 { SAVEKEY(0x1b); SAVEKEY(0x5b); SAVEKEY(0x42); } else if (key == 0x4b)//<- 0x1b 0x5b 0x44 { SAVEKEY(0x1b); SAVEKEY(0x5b); SAVEKEY(0x44); } else if (key == 0x4d)//<- 0x1b 0x5b 0x43 { SAVEKEY(0x1b); SAVEKEY(0x5b); SAVEKEY(0x43); } continue; } #endif SAVEKEY(key); } } /*** ThreadforKeyGet ***/
static void * ThreadforKeyGet(void * lpParam) #endif /* not _WIN32*/ { /* * left key(��)�� 0xe04b * up key(��)�� 0xe048 * right key(��)�� 0xe04d * down key(��)�� 0xe050 */ unsigned char key; #ifndef _WIN32 sigset_t sigmask, oldmask; /* set the getchar without buffer */ sigfillset(&sigmask); pthread_sigmask(SIG_BLOCK, &sigmask, &oldmask); set_stty(); #endif (void)lpParam; //prevent compiler warnings for (;;) { key = getch(); #ifdef _WIN32 if (key == 0xE0) { key = getch(); if (key == 0x48) //up key , 0x1b 0x5b 0x41 { SAVEKEY(0x1b); SAVEKEY(0x5b); SAVEKEY(0x41); } else if (key == 0x50)//0x1b 0x5b 0x42 { SAVEKEY(0x1b); SAVEKEY(0x5b); SAVEKEY(0x42); } else if (key == 0x4b)//<- 0x1b 0x5b 0x44 { SAVEKEY(0x1b); SAVEKEY(0x5b); SAVEKEY(0x44); } else if (key == 0x4d)//<- 0x1b 0x5b 0x43 { SAVEKEY(0x1b); SAVEKEY(0x5b); SAVEKEY(0x43); } continue; } #endif SAVEKEY(key); /* Notfiy serial ISR */ rt_hw_serial_isr(&_serial, RT_SERIAL_EVENT_RX_IND); } } /*** ThreadforKeyGet ***/