static void gdk_mir_event_source_queue_event (GdkDisplay *display, GdkWindow *window, const MirEvent *event) { const MirInputEvent *input_event; // FIXME: Only generate events if the window wanted them? switch (mir_event_get_type (event)) { case mir_event_type_input: input_event = mir_event_get_input_event (event); switch (mir_input_event_get_type (input_event)) { case mir_input_event_type_key: handle_key_event (window, input_event); break; case mir_input_event_type_touch: handle_touch_event (window, mir_input_event_get_touch_event (input_event)); break; case mir_input_event_type_pointer: handle_motion_event (window, input_event); break; default: break; } break; case mir_event_type_key: handle_key_event (window, mir_event_get_input_event (event)); break; case mir_event_type_motion: handle_motion_event (window, mir_event_get_input_event (event)); break; case mir_event_type_window: handle_window_event (window, mir_event_get_window_event (event)); break; case mir_event_type_resize: handle_resize_event (window, mir_event_get_resize_event (event)); break; case mir_event_type_prompt_session_state_change: break; case mir_event_type_orientation: break; case mir_event_type_close_window: handle_close_event (window); break; case mir_event_type_keymap: break; case mir_event_type_window_output: handle_window_output_event (window, mir_event_get_window_output_event (event)); break; case mir_event_type_input_device_state: break; case mir_event_type_window_placement: handle_window_placement_event (window, mir_event_get_window_placement_event (event)); break; default: g_warning ("Ignoring unknown Mir event %d", mir_event_get_type (event)); break; } }
void handle_events(const SDL_Event& event) { switch (event.type) { #ifdef USE_SDL2 case SDL_WINDOWEVENT: handle_window_event(event); break; case SDL_TEXTINPUT: handle_text_event(event); break; case SDL_MOUSEWHEEL: handle_mouse_event(event); break; case SDL_FINGERMOTION: handle_mouse_event(event); break; case SDL_FINGERUP: handle_mouse_event(event); break; case SDL_FINGERDOWN: handle_mouse_event(event); break; #endif case SDL_KEYDOWN: handle_key_event(event); break; case SDL_KEYUP: handle_key_event(event); break; case SDL_MOUSEMOTION: handle_mouse_event(event); break; case SDL_MOUSEBUTTONUP: handle_mouse_event(event); break; case SDL_MOUSEBUTTONDOWN: handle_mouse_event(event); break; case SDL_JOYAXISMOTION: handle_joy_event(event); break; case SDL_JOYBUTTONDOWN: handle_joy_event(event); break; case SDL_JOYBUTTONUP: handle_joy_event(event); break; case SDL_QUIT: quit(0); break; default: #ifdef OUYA if(event.type == OuyaControllerManager::BUTTON_DOWN_EVENT) { if(OuyaController::ButtonEnum(int(event.user.data1)) == OuyaController::BUTTON_O) input_continue = true; else if(OuyaController::ButtonEnum(int(event.user.data1)) == OuyaController::BUTTON_DPAD_UP) scroll_amount = 5; else if(OuyaController::ButtonEnum(int(event.user.data1)) == OuyaController::BUTTON_DPAD_DOWN) scroll_amount = -5; else if(OuyaController::ButtonEnum(int(event.user.data1)) == OuyaController::BUTTON_MENU) sendFakeKeyDownEvent(SDLK_ESCAPE); key_press_event = 1; } else if(event.type == OuyaControllerManager::AXIS_EVENT) { const OuyaController& c = OuyaControllerManager::getController(event.user.code); // This should not be in an event or else it's jerky. float v = c.getAxisValue(OuyaController::AXIS_LS_Y) + c.getAxisValue(OuyaController::AXIS_RS_Y); if(fabs(v) > OuyaController::DEADZONE) scroll_amount = -5*v; } #endif break; } }