comparison test/checkkeys.c @ 0:74212992fb08

Initial revision
author Sam Lantinga <slouken@lokigames.com>
date Thu, 26 Apr 2001 16:45:43 +0000
parents
children 30466f501b77
comparison
equal deleted inserted replaced
-1:000000000000 0:74212992fb08
1
2 /* Simple program: Loop, watching keystrokes
3 Note that you need to call SDL_PollEvent() or SDL_WaitEvent() to
4 pump the event loop and catch keystrokes.
5 */
6
7 #include <stdio.h>
8 #include <stdlib.h>
9 #include <string.h>
10
11 #include "SDL.h"
12
13 static void print_modifiers(void)
14 {
15 int mod;
16 printf(" modifiers:");
17 mod = SDL_GetModState();
18 if(!mod) {
19 printf(" (none)");
20 return;
21 }
22 if(mod & KMOD_LSHIFT)
23 printf(" LSHIFT");
24 if(mod & KMOD_RSHIFT)
25 printf(" RSHIFT");
26 if(mod & KMOD_LCTRL)
27 printf(" LCTRL");
28 if(mod & KMOD_RCTRL)
29 printf(" RCTRL");
30 if(mod & KMOD_LALT)
31 printf(" LALT");
32 if(mod & KMOD_RALT)
33 printf(" RALT");
34 if(mod & KMOD_LMETA)
35 printf(" LMETA");
36 if(mod & KMOD_RMETA)
37 printf(" RMETA");
38 if(mod & KMOD_NUM)
39 printf(" NUM");
40 if(mod & KMOD_CAPS)
41 printf(" CAPS");
42 if(mod & KMOD_MODE)
43 printf(" MODE");
44 }
45
46 static void PrintKey(SDL_keysym *sym, int pressed)
47 {
48 /* Print the keycode, name and state */
49 if ( sym->sym ) {
50 printf("Key %s: %d-%s ", pressed ? "pressed" : "released",
51 sym->sym, SDL_GetKeyName(sym->sym));
52 } else {
53 printf("Unknown Key (scancode = %d) %s ", sym->scancode,
54 pressed ? "pressed" : "released");
55 }
56
57 /* Print the translated character, if one exists */
58 if ( sym->unicode ) {
59 /* Is it a control-character? */
60 if ( sym->unicode < ' ' ) {
61 printf(" (^%c)", sym->unicode+'@');
62 } else {
63 #ifdef UNICODE
64 printf(" (%c)", sym->unicode);
65 #else
66 /* This is a Latin-1 program, so only show 8-bits */
67 if ( !(sym->unicode & 0xFF00) )
68 printf(" (%c)", sym->unicode);
69 #endif
70 }
71 }
72 print_modifiers();
73 printf("\n");
74 }
75
76 int main(int argc, char *argv[])
77 {
78 SDL_Event event;
79 int done;
80
81 /* Initialize SDL */
82 if ( SDL_Init(SDL_INIT_VIDEO) < 0 ) {
83 fprintf(stderr, "Couldn't initialize SDL: %s\n",SDL_GetError());
84 exit(1);
85 }
86 atexit(SDL_Quit);
87
88 /* Set 640x480 video mode */
89 if ( SDL_SetVideoMode(640, 480, 0, SDL_SWSURFACE) == NULL ) {
90 fprintf(stderr, "Couldn't set 640x480 video mode: %s\n",
91 SDL_GetError());
92 exit(2);
93 }
94
95 /* Enable UNICODE translation for keyboard input */
96 SDL_EnableUNICODE(1);
97
98 /* Enable auto repeat for keyboard input */
99 SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY,
100 SDL_DEFAULT_REPEAT_INTERVAL);
101
102 /* Watch keystrokes */
103 done = 0;
104 while ( !done ) {
105 /* Check for events */
106 SDL_WaitEvent(&event);
107 switch (event.type) {
108 case SDL_KEYDOWN:
109 PrintKey(&event.key.keysym, 1);
110 break;
111 case SDL_KEYUP:
112 PrintKey(&event.key.keysym, 0);
113 break;
114 case SDL_MOUSEBUTTONDOWN:
115 /* Any button press quits the app... */
116 case SDL_QUIT:
117 done = 1;
118 break;
119 default:
120 break;
121 }
122 }
123 return(0);
124 }