-/* wait for input, do autorepeat */\r
-int wait_for_input(int interesting)\r
-{\r
- static int inp_prev = 0;\r
- static int repeats = 0, wait = 20;\r
- int ret, release = 0, i;\r
-\r
- if (repeats == 2) wait = 3;\r
- else if (repeats == 4) wait = 2;\r
- else if (repeats == 6) wait = 1;\r
-\r
- for (i = 0; i < wait; i++) {\r
- ret = in_update_menu(30);\r
- if (ret != inp_prev) break;\r
- if (i == 0) repeats++;\r
- }\r
-\r
- while (!(ret & interesting)) {\r
- ret = in_update_menu(0);\r
- release = 1;\r
- }\r
-\r
- if (release || ret != inp_prev) {\r
- repeats = 0;\r
- wait = 20;\r
- }\r
- if (wait > 6 && (ret & (PBTN_UP|PBTN_DOWN|PBTN_LEFT|PBTN_RIGHT)))\r
- wait = 6;\r
- inp_prev = ret;\r
-\r
- // we don't need diagonals in menus\r
- if ((ret & PBTN_UP) && (ret & PBTN_LEFT)) ret &= ~PBTN_LEFT;\r
- if ((ret & PBTN_UP) && (ret & PBTN_RIGHT)) ret &= ~PBTN_RIGHT;\r
- if ((ret & PBTN_DOWN) && (ret & PBTN_LEFT)) ret &= ~PBTN_LEFT;\r
- if ((ret & PBTN_DOWN) && (ret & PBTN_RIGHT)) ret &= ~PBTN_RIGHT;\r
-\r
- return ret;\r
-}\r
-\r