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; }
const char *getkeyfor_str(int dev, int keypr) { const char *name; int c = 0; #if JOYSTICK if (dev) { c = js_getbtnfor(dev-1, keypr); name = js_btnname(c); } else #endif name = getkeyfor_str_keybd(keypr, &c); if (name) return name; if (c > 0 && c < 10) return input_chr9[c-1]; return ""; }
int js_getbtnfor(int i, int keypress) { struct btns *js = btns_joyst+i; int b; keypress &= 63 | IN_GAME; b = *getbtnfor(js, keypress); if (b) return b; if ((keypress & 63) == HARDDROP || keypress == (MVUP | IN_GAME)) return 0; if (keypress & IN_GAME) { b = js_getbtnfor(i, keypress ^ IN_GAME); if (!b || getbtn(b, js->ingame_btns, 5)) return 0; return b; } return 0; }
void js_setifnull(int i, int btn, int keypress) { if (!js_getbtnfor(i, keypress)) js_setmapping(i, btn, keypress); }