static int SDLCALL event_sdl_filter(void *userdata, SDL_Event *event) { int cmd, action; printf("event_sdl_filter()\n"); switch(event->type) { // user clicked on window close button case SDL_QUIT: printf("SDL_QUIT\n"); ok = 0; break; case SDL_KEYDOWN: #if SDL_VERSION_ATLEAST(1,3,0) if (event->key.repeat) return 0; event_sdl_keydown(event->key.keysym.scancode, event->key.keysym.mod); #else event_sdl_keydown(event->key.keysym.sym, event->key.keysym.mod); #endif return 0; case SDL_KEYUP: #if SDL_VERSION_ATLEAST(1,3,0) event_sdl_keyup(event->key.keysym.scancode, event->key.keysym.mod); #else event_sdl_keyup(event->key.keysym.sym, event->key.keysym.mod); #endif return 0; } }
void X11_PumpEvents() { XEvent xev; while (RPI_NextXEvent(&xev) ) { // check for events from the x-server switch (xev.type) { case MotionNotify: // if mouse has moved //xev.xmotion.x,xev.xmotion.y break; case ButtonPress: // xev.xbutton.state, xev.xbutton.button << endl; break; case KeyPress: event_sdl_keydown(xev.xkey.keycode, xev.xkey.state); break; case KeyRelease: event_sdl_keyup(xev.xkey.keycode, xev.xkey.state); //TODO is this correct? break; default: break; } } }
/********************************************************************************************************* * sdl event filter */ static int event_sdl_filter(const SDL_Event *event) { int cmd, action; switch(event->type) { // user clicked on window close button case SDL_QUIT: main_stop(); break; case SDL_KEYDOWN: event_sdl_keydown(event->key.keysym.sym, event->key.keysym.mod); return 0; case SDL_KEYUP: event_sdl_keyup(event->key.keysym.sym, event->key.keysym.mod); return 0; // if joystick action is detected, check if it's mapped to a special function case SDL_JOYAXISMOTION: case SDL_JOYBUTTONDOWN: case SDL_JOYBUTTONUP: case SDL_JOYHATMOTION: for (cmd = 0; cmd < NumJoyCommands; cmd++) { action = MatchJoyCommand(event, (eJoyCommand) cmd); if (action == 1) /* command was just activated (button down, etc) */ { if (cmd == joyFullscreen) changeWindow(); else if (cmd == joyStop) main_stop(); else if (cmd == joyPause) main_toggle_pause(); else if (cmd == joySave) main_state_save(0, NULL); /* save in mupen64plus format using current slot */ else if (cmd == joyLoad) main_state_load(NULL); /* load using current slot */ else if (cmd == joyIncrement) main_state_inc_slot(); else if (cmd == joyScreenshot) main_take_next_screenshot(); else if (cmd == joyMute) { volumeMute(); main_draw_volume_osd(); } else if (cmd == joyDecrease) { volumeDown(); main_draw_volume_osd(); } else if (cmd == joyIncrease) { volumeUp(); main_draw_volume_osd(); } else if (cmd == joyForward) main_set_fastforward(1); } else if (action == -1) /* command was just de-activated (button up, etc) */ { if (cmd == joyForward) main_set_fastforward(0); } } return 0; break; } return 1; }
/********************************************************************************************************* * sdl event filter */ static int SDLCALL event_sdl_filter(void *userdata, SDL_Event *event) { int cmd, action; switch(event->type) { // user clicked on window close button case SDL_QUIT: main_stop(); break; case SDL_KEYDOWN: #if SDL_VERSION_ATLEAST(1,3,0) if (event->key.repeat) return 0; event_sdl_keydown(event->key.keysym.scancode, event->key.keysym.mod); #else event_sdl_keydown(event->key.keysym.sym, event->key.keysym.mod); #endif return 0; case SDL_KEYUP: #if SDL_VERSION_ATLEAST(1,3,0) event_sdl_keyup(event->key.keysym.scancode, event->key.keysym.mod); #else event_sdl_keyup(event->key.keysym.sym, event->key.keysym.mod); #endif return 0; #if SDL_VERSION_ATLEAST(2,0,0) case SDL_WINDOWEVENT: switch (event->window.event) { case SDL_WINDOWEVENT_RESIZED: // call the video plugin. if the video plugin supports resizing, it will resize its viewport and call // VidExt_ResizeWindow to update the window manager handling our opengl output window gfx.resizeVideoOutput(event->window.data1, event->window.data2); return 0; // consumed the event break; } break; #else case SDL_VIDEORESIZE: // call the video plugin. if the video plugin supports resizing, it will resize its viewport and call // VidExt_ResizeWindow to update the window manager handling our opengl output window gfx.resizeVideoOutput(event->resize.w, event->resize.h); return 0; // consumed the event break; #endif // if joystick action is detected, check if it's mapped to a special function case SDL_JOYAXISMOTION: case SDL_JOYBUTTONDOWN: case SDL_JOYBUTTONUP: case SDL_JOYHATMOTION: for (cmd = 0; cmd < NumJoyCommands; cmd++) { action = MatchJoyCommand(event, (eJoyCommand) cmd); if (action == 1) /* command was just activated (button down, etc) */ { if (cmd == joyFullscreen) gfx.changeWindow(); else if (cmd == joyStop) main_stop(); else if (cmd == joyPause) main_toggle_pause(); else if (cmd == joySave) main_state_save(1, NULL); /* save in mupen64plus format using current slot */ else if (cmd == joyLoad) main_state_load(NULL); /* load using current slot */ else if (cmd == joyIncrement) main_state_inc_slot(); else if (cmd == joyScreenshot) main_take_next_screenshot(); else if (cmd == joyMute) main_volume_mute(); else if (cmd == joyDecrease) main_volume_down(); else if (cmd == joyIncrease) main_volume_up(); else if (cmd == joyForward) main_set_fastforward(1); else if (cmd == joyGameshark) event_set_gameshark(1); } else if (action == -1) /* command was just de-activated (button up, etc) */ { if (cmd == joyForward) main_set_fastforward(0); else if (cmd == joyGameshark) event_set_gameshark(0); } } return 0; break; } return 1; }