Advertisement
Guest User

keyboard_test.c

a guest
Feb 15th, 2020
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.50 KB | None | 0 0
  1. /*
  2.     File name:      
  3.         keyboard_test.c
  4.        
  5.     Compile with:
  6.         gcc -lSDLmain -lSDL -lcairo keyboard_test.c -o keyboard_test
  7.        
  8.     Run:
  9.         ./keyboard_test
  10. */
  11.  
  12. #include <SDL/SDL.h>
  13. #include <cairo/cairo.h>
  14.  
  15. int W = 500, H = 500;
  16. char *FONT = "Liberation Mono";
  17. int KEYS_PRESSED_CNT = 0;
  18.  
  19. void draw(cairo_t *c) {
  20.     cairo_set_source_rgb(c, 0.1, 0.1, 0.1);
  21.     cairo_paint(c);
  22.  
  23.     char str[3];
  24.     sprintf(str, "%i", KEYS_PRESSED_CNT);
  25.    
  26.     cairo_set_source_rgb(c, 0, 1, 1);
  27.     cairo_move_to(c, 145, 365);
  28.     cairo_show_text(c, str);
  29. }
  30.  
  31. int main() {
  32.     SDL_Init(SDL_INIT_VIDEO);
  33.     SDL_Surface *screen = SDL_SetVideoMode(W, H, 32, 0);
  34.    
  35.     cairo_surface_t *cairo_s;
  36.     cairo_s = cairo_image_surface_create_for_data(screen->pixels,
  37.               CAIRO_FORMAT_ARGB32, W, H, screen->pitch);
  38.     cairo_t *c = cairo_create(cairo_s);
  39.     cairo_select_font_face(c, FONT, 0, 0);
  40.     cairo_set_font_size(c, 350);
  41.    
  42.     SDL_Event event;
  43.  
  44.     while (1) {
  45.         draw(c); SDL_Flip(screen);
  46.  
  47.         SDL_WaitEvent(&event);
  48.         switch (event.type) {
  49.             case SDL_QUIT:  return 0;
  50.             case SDL_KEYDOWN:
  51.                 if (event.key.keysym.sym == SDLK_ESCAPE)
  52.                     return 0;
  53.                 KEYS_PRESSED_CNT += 1;
  54.                 break;
  55.             case SDL_KEYUP:
  56.                 KEYS_PRESSED_CNT -= 1;
  57.                 if (KEYS_PRESSED_CNT < 0)
  58.                     KEYS_PRESSED_CNT = 0;
  59.         }
  60.     }
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement