Пример #1
0
void input_dokeys (void)
{
	int i;

	// for each key defined, see if it's pressed, and whether we need to run its pressed function
	for (i = 0; keydefs [i].name; i++)
	{
		if (input_keydown (keydefs [i].name))
		{
			// run the function, if the last time this was pressed was more than a tick ago
			if (keydefs [i].last < curtick - 1)
			{
				if (SDL_GetModState () == KMOD_LSHIFT && keydefs [i].sfunc)
					keydefs [i].sfunc ();
				else
					keydefs [i].func ();
			}

			keydefs [i].last = curtick;
		}
	}
}
Пример #2
0
static LRESULT CALLBACK wndproc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
    int x, y, w, h;
    msg_t m;

    x = GET_X_LPARAM(lparam);
    y = GET_Y_LPARAM(lparam);
    w = LOWORD(lparam);
    h = HIWORD(lparam);

    switch (msg) {
    case WM_CLOSE:
        PostQuitMessage(0);
        break;
    case WM_SIZE:
        if (init_done)
            do_resize(w, h);
        break;
    case WM_MOVE:
        break;
    case WM_EXITSIZEMOVE:
        break;
    case WM_MOUSELEAVE:
        tracking = 0;
        break;
    case WM_MOUSEMOVE:
        if (clipcursor)
            update_clip(hwnd); //TODO: shouldnt be here

        if (!tracking) {
            TrackMouseEvent(&tme);
            tracking = 1;
        }
        input_mmove(&input, x, y, 0);
        break;
    case WM_LBUTTONDOWN:
        input_mdown(&input, x, y, 0, 0);
        break;
    case WM_LBUTTONUP:
        input_mup(&input, x, y, 0, 0);
        break;
    case WM_RBUTTONDOWN:
        input_mdown(&input, x, y, 0, 2);
        break;
    case WM_RBUTTONUP:
        input_mup(&input, x, y, 0, 2);
        break;
    case WM_MBUTTONDOWN:
        input_mdown(&input, x, y, 0, 1);
        break;
    case WM_MBUTTONUP:
        input_mup(&input, x, y, 0, 1);
        break;
    case WM_MOUSEWHEEL:
        input_mwheel(&input, (double) (int16_t)HIWORD(wparam) / 120.0);
        break;
    case WM_KEYDOWN:
        if (wparam == VK_F1) {
            if (!clipcursor)
                update_clip(hwnd);
            else
                ClipCursor(0);
            clipcursor = !clipcursor;
            break;
        }
        input_keydown(&input, wparam, wparam);
        break;
    case WM_KEYUP:
        input_keyup(&input, wparam);
        break;
    case WM_USER:
        m.v = wparam;
        do_msg(m.id, m.v8, m.v16, m.value, (void*)lparam);
        break;
    default:
        return DefWindowProc(hwnd, msg, wparam, lparam);
    }

    return 0;
}