static int setkeymapping_js(int i, int keypr) { int b, b2; while (!(b = js_readbtn(i))) { if (inputdevs_fd[i+1] == -1) return STARTBTN; if (b = getkeypress_select(100, SINGLE_PL)) { if (b == ESC) { js_rmmapping(i, keypr); return MVDOWN; } return b; } sleep_msec(55); } b2 = js_readbtn(i); if (b > b2 && b2) b = b2; if (!key_is_valid(b, keypr)) return b; if (b == MVUP && keypr == MVUP && js_getbtnfor(i, MVUP) == MVUP) return MVUP; js_setmapping(i, b, keypr); return MVDOWN; }
int js_getpress(int i, int flags) { struct btns *js = btns_joyst+i; int b, ret; int ingame = flags & IN_GAME; next: b = js_readbtn(i); if (!b) return 0; js_dead = 0; ret = transl_btn(js, b & 0x7F, flags); if (!ret) { if (ingame) goto next; return '.'; } if (b > MVDOWN && (ret <= MVRIGHT || !ingame && ret <= MVDOWN)) { js_pressbtn(i, b); js_releasebtn(i, *getbtnfor(js, (ret%4)%2 ? ret+1 : ret-1)); } else if (ingame) { if (!test_up_rotate(js, b, ret)) goto next; } else if (autorep_a_b_btns && b > MVDOWN && (ret == A_BTN || ret == B_BTN)) js_pressbtn(i, b); return ret; }