diff --git a/input.cpp b/input.cpp index 79eea47..bdaf3ed 100644 --- a/input.cpp +++ b/input.cpp @@ -2660,13 +2660,17 @@ int input_test(int getchar) int timeout = 0; if (is_menu_core() && video_fb_state()) timeout = 25; - int return_value = poll(pool, NUMDEV + 3, timeout); - if (return_value < 0) - { - printf("ERR: poll\n"); - } - else if (return_value > 0) + while (1) { + int return_value = poll(pool, NUMDEV + 3, timeout); + if (!return_value) break; + + if (return_value < 0) + { + printf("ERR: poll\n"); + break; + } + if ((pool[NUMDEV].revents & POLLIN) && check_devs()) { printf("Close all devices.\n"); @@ -2679,7 +2683,7 @@ int input_test(int getchar) return 0; } - for (int i = 0; i= 0) && (pool[i].revents & POLLIN)) { @@ -2697,6 +2701,8 @@ int input_test(int getchar) } else if (ev.type) { + if (ev.type == EV_KEY && ev.value > 1) continue; + int dev = i; if (input[dev].bind >= 0) dev = input[dev].bind; @@ -3043,7 +3049,7 @@ int input_test(int getchar) if (cur_leds != leds_state) { cur_leds = leds_state; - for (int i = 0; i