Semmu

Keypress visualizer for OpenDingux with SDL on GameGadget

Jan 26th, 2013
126
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. }
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×