コード例 #1
0
ファイル: input.c プロジェクト: williamiced/SocketTetris
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;
}
コード例 #2
0
ファイル: joystick.c プロジェクト: gsrr/Python
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;
}