just like bioskey(),indeed I want to detect if someone touch the keyboard and unblock the function.
Most likely that means you want to poll, which means that you are on the wrong track.
If you insist however, create a thread that reads the keyboard and fills up a buffer. Then implement a mutex protected interface that has calls to 1) read from the buffer, 2) See if the buffer has any data. This second call is equivalent to bioskey().