Advertisement
Semmu

Keypress visualizer for OpenDingux with SDL on GameGadget

Jan 26th, 2013
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.52 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <SDL/SDL.h>
  3. #include <time.h>
  4.  
  5. #define GG_UP SDLK_UP
  6. #define GG_DOWN SDLK_DOWN
  7. #define GG_LEFT SDLK_LEFT
  8. #define GG_RIGHT SDLK_RIGHT
  9. #define GG_A SDLK_LCTRL
  10. #define GG_B SDLK_LALT
  11. #define GG_X SDLK_SPACE
  12. #define GG_Y SDLK_LSHIFT
  13. #define GG_START SDLK_RETURN
  14. #define GG_SELECT SDLK_ESCAPE
  15. #define GG_LS SDLK_TAB
  16. #define GG_RS SDLK_BACKSPACE
  17.  
  18. #define KI_UP 0
  19. #define KI_DOWN 1
  20. #define KI_LEFT 2
  21. #define KI_RIGHT 3
  22. #define KI_A 4
  23. #define KI_B 5
  24. #define KI_X 6
  25. #define KI_Y 7
  26. #define KI_START 8
  27. #define KI_SELECT 9
  28. #define KI_LS 10
  29. #define KI_RS 11
  30.  
  31. int x = 0, y = 0;
  32.  
  33. int main()
  34. {
  35.     srand(time(NULL));
  36.     SDL_Init(SDL_INIT_EVERYTHING);
  37.     SDL_ShowCursor(SDL_DISABLE);
  38.     SDL_Event e;
  39.     Uint8 keys[12] = {0};
  40.     SDL_Surface *screen = SDL_SetVideoMode(320, 240, 16, SDL_SWSURFACE);
  41.     int c_up = SDL_MapRGB(screen->format, 60, 60, 60);
  42.     int c_down = SDL_MapRGB(screen->format, 30, 100, 230);
  43.     int quit = 0;
  44.  
  45.     while (!quit)
  46.     {
  47.         while (SDL_PollEvent(&e))
  48.         {
  49.             switch (e.type)
  50.             {
  51.                 case SDL_KEYDOWN:
  52.                     switch (e.key.keysym.sym)
  53.                     {
  54.                         case GG_UP: keys[KI_UP] = 1; break;
  55.                         case GG_LEFT: keys[KI_LEFT] = 1; break;
  56.                         case GG_RIGHT: keys[KI_RIGHT] = 1; break;
  57.                         case GG_DOWN: keys[KI_DOWN] = 1; break;
  58.  
  59.                         case GG_X: keys[KI_X] = 1; break;
  60.                         case GG_Y: keys[KI_Y] = 1; break;
  61.                         case GG_A: keys[KI_A] = 1; break;
  62.                         case GG_B: keys[KI_B] = 1; break;
  63.  
  64.                         case GG_LS: keys[KI_LS] = 1; break;
  65.                         case GG_RS: keys[KI_RS] = 1; break;
  66.                         case GG_SELECT: keys[KI_SELECT] = 1; break;
  67.                         case GG_START: keys[KI_START] = 1; break;
  68.  
  69.  
  70.                         default: break;
  71.                     }
  72.                 break;
  73.  
  74.                 case SDL_KEYUP:
  75.                     switch (e.key.keysym.sym)
  76.                     {
  77.                         case GG_UP: keys[KI_UP] = 0; break;
  78.                         case GG_LEFT: keys[KI_LEFT] = 0; break;
  79.                         case GG_RIGHT: keys[KI_RIGHT] = 0; break;
  80.                         case GG_DOWN: keys[KI_DOWN] = 0; break;
  81.  
  82.                         case GG_X: keys[KI_X] = 0; break;
  83.                         case GG_Y: keys[KI_Y] = 0; break;
  84.                         case GG_A: keys[KI_A] = 0; break;
  85.                         case GG_B: keys[KI_B] = 0; break;
  86.  
  87.                         case GG_LS: keys[KI_LS] = 0; break;
  88.                         case GG_RS: keys[KI_RS] = 0; break;
  89.                         case GG_SELECT: keys[KI_SELECT] = 0; break;
  90.                         case GG_START: keys[KI_START] = 0; break;
  91.  
  92.                         default: break;
  93.                     }
  94.                 break;
  95.  
  96.                 default: break;
  97.             }
  98.         }
  99.  
  100.         SDL_FillRect(screen, NULL, 0);
  101.  
  102.         SDL_Rect r;
  103.         r.w = r.h = 20;
  104.  
  105.         r.x = 50;
  106.         r.y = 100;
  107.         SDL_FillRect(screen, &r, keys[KI_UP] ? c_down : c_up);
  108.  
  109.         r.x = 30;
  110.         r.y = 120;
  111.         SDL_FillRect(screen, &r, keys[KI_LEFT] ? c_down : c_up);
  112.  
  113.         r.x = 70;
  114.         SDL_FillRect(screen, &r, keys[KI_RIGHT] ? c_down : c_up);
  115.  
  116.         r.x = 50;
  117.         r.y = 140;
  118.         SDL_FillRect(screen, &r, keys[KI_DOWN] ? c_down : c_up);
  119.  
  120.         r.x = 250;
  121.         r.y = 100;
  122.         SDL_FillRect(screen, &r, keys[KI_Y] ? c_down : c_up);
  123.  
  124.         r.x = 230;
  125.         r.y = 120;
  126.         SDL_FillRect(screen, &r, keys[KI_X] ? c_down : c_up);
  127.  
  128.         r.x = 270;
  129.         SDL_FillRect(screen, &r, keys[KI_B] ? c_down : c_up);
  130.  
  131.         r.x = 250;
  132.         r.y = 140;
  133.         SDL_FillRect(screen, &r, keys[KI_A] ? c_down : c_up);
  134.  
  135.         r.w = 60;
  136.         r.h = 5;
  137.         r.x = 30;
  138.         r.y = 50;
  139.         SDL_FillRect(screen, &r, keys[KI_LS] ? c_down : c_up);
  140.  
  141.         r.x = 230;
  142.         SDL_FillRect(screen, &r, keys[KI_RS] ? c_down : c_up);
  143.  
  144.         r.w = 25;
  145.         r.y = 65;
  146.         SDL_FillRect(screen, &r, keys[KI_SELECT] ? c_down : c_up);
  147.  
  148.         r.x = 265;
  149.         SDL_FillRect(screen, &r, keys[KI_START] ? c_down : c_up);
  150.  
  151.  
  152.  
  153.         if (keys[KI_X] && keys[KI_LS] && keys[KI_RS])
  154.             quit = 1;
  155.  
  156.         SDL_Flip(screen);
  157.         SDL_Delay(10);
  158.     }
  159.  
  160.     return 0;
  161. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement