void handle_event(SDL_Event event) { int key; if ( event.type == SDL_QUIT ) done = 1; if ( event.type == SDL_KEYDOWN ) { key = event.key.keysym.sym; if ( key == SDLK_ESCAPE || key == SDLK_q) done = 1; else if ( key == SDLK_UP) ui_key_down('w'); else if ( key == SDLK_DOWN) ui_key_down('s'); else if ( key == SDLK_r) starttime = (double) SDL_GetTicks() / 1000.0; else ui_key_down(key); } if ( event.type == SDL_KEYUP ) { key = event.key.keysym.sym; if ( key == SDLK_ESCAPE || key == SDLK_q) done = 1; else if ( key == SDLK_UP) ui_key_up('w'); else if ( key == SDLK_DOWN) ui_key_up('s'); else ui_key_up(key); } if ( event.type == SDL_MOUSEMOTION ) { if (!warp) ui_mouse_relmotion(event.motion.xrel, event.motion.yrel); else warp=0; if ((event.motion.x < 10) || (event.motion.x > g->r_viewport_w-10) || (event.motion.y < 10) || (event.motion.y > g->r_viewport_h-10)) { SDL_WarpMouse(g->r_viewport_w/2, g->r_viewport_h/2); /* center mouse */ warp = 1; /* set flag */ } } }
static LRESULT handle_WM_KEY(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { int scancode; int ext; int down; ext = HIWORD(lParam); scancode = ext; down = !(ext & 0x8000); scancode &= 0xff; if (scancode == 0) { scancode = get_scan_code_from_ascii(wParam); } ext &= 0x0100; if (scancode == 0x0045) /* num lock */ { ext &= ~0x0100; } if (down) { ui_key_down(scancode, ext); } else { ui_key_up(scancode, ext); } return 0; }
//--------------------------------------------------------------------------- // windowKeyboard //--------------------------------------------------------------------------- void windowKeyboard( MPKWindow *w, MPKEvent *event ) { if ( event->keyboard.state == MPK_PRESS ) { ui_key_down(event->keyboard.key); return; } ui_key_up(event->keyboard.key); switch (event->keyboard.key) { case XK_A: case XK_a: shared->stereo = !shared->stereo; break; } }