void *key_in_loop(void* data){ char inp; while(1){ fseek(stdin,0,SEEK_END); scanf("%c", &inp); handle_key_input(inp); usleep(10000); //fflush(stdin); //printf("The char you typed was %c\n", inp); } return 0; }
/** * Process the next input event. */ static int32_t engine_handle_input(struct android_app* app, AInputEvent* event) { pthread_t thisthread = pthread_self(); LOG_EVENTS_DEBUG("engine_handle_input(%X, %X), pthread_self() = %X", app, event, thisthread); struct engine* engine = (struct engine*)app->userData; if (AInputEvent_getType(event) == AINPUT_EVENT_TYPE_MOTION) { engine->animating = 1; engine->state.x = AMotionEvent_getX(event, 0); engine->state.y = AMotionEvent_getY(event, 0); return handle_touch_input(event); } else return handle_key_input(event); return 0; }
static void input_loop(int portfd) { if (portfd >= FD_SETSIZE) { destroy_screen(); fputs("File descriptor too large\n", stderr); exit(1); } for (;;) { fd_set fds; FD_ZERO(&fds); FD_SET(STDIN_FILENO, &fds); FD_SET(portfd, &fds); int rc = select(portfd + 1, &fds, 0, 0, 0); if (rc <= 0) { if (rc < 0 && errno != EINTR) exit_error("select", errno); continue; } if (FD_ISSET(portfd, &fds)) receive_kctext(portfd, win_output); if (FD_ISSET(STDIN_FILENO, &fds) && handle_key_input(portfd, win_input)) break; wnoutrefresh(win_input); doupdate(); } }