示例#1
0
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;
    }
}
示例#2
0
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;
    }
}