Пример #1
0
int event_parse(SDL_Event ev)
{
  switch(ev.type) {
  case SDL_KEYDOWN:
    return event_key(ev.key, EVENT_PRESS);
  case SDL_KEYUP:
    return event_key(ev.key, EVENT_RELEASE);
  case SDL_MOUSEMOTION:
    return event_mouse(ev.motion);
  case SDL_MOUSEBUTTONDOWN:
    return event_button(ev.button, EVENT_PRESS);
  case SDL_MOUSEBUTTONUP:
    return event_button(ev.button, EVENT_RELEASE);
  case SDL_JOYAXISMOTION:
    return event_joystick(ev.jaxis);
  case SDL_JOYBUTTONDOWN:
  case SDL_JOYBUTTONUP:
    return event_fire(ev.jbutton);
  case SDL_WINDOWEVENT:
    if(ev.window.windowID == screen_window_id) {
      if(ev.window.event == SDL_WINDOWEVENT_RESIZED) {
        if((ev.window.data1 % 512) == 0 && (ev.window.data2 % 314) == 0)
          screen_make_texture(SDL_SCALING_NEAREST);
        else
          screen_make_texture(SDL_SCALING_LINEAR);
      }
    }
    break;
  case SDL_QUIT:
    if(debugger)
      return EVENT_DEBUG;
    else {
      SDL_Quit();
      exit(0);
    }
  }

  return EVENT_NONE;
}
Пример #2
0
int main(int argc, char** argv)
{
  if (argc == 1)
  {
    print_help(argv[0]);
    exit(1);
  }

  // SDL2 will only report events when the window has focus, so set
  // this hint as we don't have a window
  SDL_SetHint(SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS, "1");

  // FIXME: We don't need video, but without it SDL will fail to work in SDL_WaitEvent()
  if(SDL_Init(SDL_INIT_TIMER | SDL_INIT_VIDEO | SDL_INIT_JOYSTICK | SDL_INIT_GAMECONTROLLER | SDL_INIT_HAPTIC) < 0)
  {
    fprintf(stderr, "Unable to init SDL: %s\n", SDL_GetError());
    exit(1);
  }
  else
  {
    atexit(SDL_Quit);

    if (argc == 2 && (strcmp(argv[1], "--help") == 0 ||
                      strcmp(argv[1], "-h") == 0))
    {
      print_help(argv[0]);
    }
    if (argc == 2 && (strcmp(argv[1], "--version") == 0))
    {
      printf("sdl-jstest 0.2.0\n");
      exit(EXIT_SUCCESS);
    }
    else if (argc == 2 && (strcmp(argv[1], "--list") == 0 ||
                           (strcmp(argv[1], "-l") == 0)))
    {
      list_joysticks();
    }
    else if (argc == 3 && (strcmp(argv[1], "--gamecontroller") == 0 ||
                           strcmp(argv[1], "-g") == 0))
    {
      int idx;
      if (!str2int(argv[2], &idx))
      {
        fprintf(stderr, "Error: JOYSTICKNUM argument must be a number, but was '%s'\n", argv[2]);
        exit(1);
      }
      else
      {
        test_gamecontroller(idx);
      }
    }
    else if (argc == 3 && (strcmp(argv[1], "--test") == 0 ||
                           strcmp(argv[1], "-t") == 0))
    {
      int joy_idx;
      if (!str2int(argv[2], &joy_idx))
      {
        fprintf(stderr, "Error: JOYSTICKNUM argument must be a number, but was '%s'\n", argv[2]);
        exit(1);
      }
      else
      {
        test_joystick(joy_idx);
      }
    }
    else if (argc == 3 && (strcmp(argv[1], "--event") == 0 ||
                           strcmp(argv[1], "-e") == 0))
    {
      int joy_idx;
      if (!str2int(argv[2], &joy_idx))
      {
        fprintf(stderr, "Error: JOYSTICKNUM argument must be a number, but was '%s'\n", argv[2]);
        exit(1);
      }
      event_joystick(joy_idx);
    }
    else if (argc == 3 && (strcmp(argv[1], "--rumble") == 0 ||
                           strcmp(argv[1], "-r") == 0))
    {
      int idx;
      if (!str2int(argv[2], &idx))
      {
        fprintf(stderr, "Error: JOYSTICKNUM argument must be a number, but was '%s'\n", argv[2]);
        exit(1);
      }
      else
      {
        test_rumble(idx);
      }
    }
    else
    {
      fprintf(stderr, "%s: unknown arguments\n", argv[0]);
      fprintf(stderr, "Try '%s --help' for more informations\n", argv[0]);
    }
  }
}