comparison test/checkkeys.c @ 1895:c121d94672cb

SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
author Sam Lantinga <slouken@libsdl.org>
date Mon, 10 Jul 2006 21:04:37 +0000
parents 7c7ddaf195bf
children dbc6d1893869
comparison
equal deleted inserted replaced
1894:c69cee13dd76 1895:c121d94672cb
9 #include <string.h> 9 #include <string.h>
10 10
11 #include "SDL.h" 11 #include "SDL.h"
12 12
13 /* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ 13 /* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */
14 static void quit(int rc) 14 static void
15 quit(int rc)
15 { 16 {
16 SDL_Quit(); 17 SDL_Quit();
17 exit(rc); 18 exit(rc);
18 } 19 }
19 20
20 static void print_modifiers(void) 21 static void
22 print_modifiers(void)
21 { 23 {
22 int mod; 24 int mod;
23 printf(" modifiers:"); 25 printf(" modifiers:");
24 mod = SDL_GetModState(); 26 mod = SDL_GetModState();
25 if(!mod) { 27 if (!mod) {
26 printf(" (none)"); 28 printf(" (none)");
27 return; 29 return;
28 } 30 }
29 if(mod & KMOD_LSHIFT) 31 if (mod & KMOD_LSHIFT)
30 printf(" LSHIFT"); 32 printf(" LSHIFT");
31 if(mod & KMOD_RSHIFT) 33 if (mod & KMOD_RSHIFT)
32 printf(" RSHIFT"); 34 printf(" RSHIFT");
33 if(mod & KMOD_LCTRL) 35 if (mod & KMOD_LCTRL)
34 printf(" LCTRL"); 36 printf(" LCTRL");
35 if(mod & KMOD_RCTRL) 37 if (mod & KMOD_RCTRL)
36 printf(" RCTRL"); 38 printf(" RCTRL");
37 if(mod & KMOD_LALT) 39 if (mod & KMOD_LALT)
38 printf(" LALT"); 40 printf(" LALT");
39 if(mod & KMOD_RALT) 41 if (mod & KMOD_RALT)
40 printf(" RALT"); 42 printf(" RALT");
41 if(mod & KMOD_LMETA) 43 if (mod & KMOD_LMETA)
42 printf(" LMETA"); 44 printf(" LMETA");
43 if(mod & KMOD_RMETA) 45 if (mod & KMOD_RMETA)
44 printf(" RMETA"); 46 printf(" RMETA");
45 if(mod & KMOD_NUM) 47 if (mod & KMOD_NUM)
46 printf(" NUM"); 48 printf(" NUM");
47 if(mod & KMOD_CAPS) 49 if (mod & KMOD_CAPS)
48 printf(" CAPS"); 50 printf(" CAPS");
49 if(mod & KMOD_MODE) 51 if (mod & KMOD_MODE)
50 printf(" MODE"); 52 printf(" MODE");
51 } 53 }
52 54
53 static void PrintKey(SDL_keysym *sym, int pressed) 55 static void
56 PrintKey(SDL_keysym * sym, int pressed)
54 { 57 {
55 /* Print the keycode, name and state */ 58 /* Print the keycode, name and state */
56 if ( sym->sym ) { 59 if (sym->sym) {
57 printf("Key %s: %d-%s ", pressed ? "pressed" : "released", 60 printf("Key %s: %d-%s ", pressed ? "pressed" : "released",
58 sym->sym, SDL_GetKeyName(sym->sym)); 61 sym->sym, SDL_GetKeyName(sym->sym));
59 } else { 62 } else {
60 printf("Unknown Key (scancode = %d) %s ", sym->scancode, 63 printf("Unknown Key (scancode = %d) %s ", sym->scancode,
61 pressed ? "pressed" : "released"); 64 pressed ? "pressed" : "released");
62 } 65 }
63 66
64 /* Print the translated character, if one exists */ 67 /* Print the translated character, if one exists */
65 if ( sym->unicode ) { 68 if (sym->unicode) {
66 /* Is it a control-character? */ 69 /* Is it a control-character? */
67 if ( sym->unicode < ' ' ) { 70 if (sym->unicode < ' ') {
68 printf(" (^%c)", sym->unicode+'@'); 71 printf(" (^%c)", sym->unicode + '@');
69 } else { 72 } else {
70 #ifdef UNICODE 73 #ifdef UNICODE
71 printf(" (%c)", sym->unicode); 74 printf(" (%c)", sym->unicode);
72 #else 75 #else
73 /* This is a Latin-1 program, so only show 8-bits */ 76 /* This is a Latin-1 program, so only show 8-bits */
74 if ( !(sym->unicode & 0xFF00) ) 77 if (!(sym->unicode & 0xFF00))
75 printf(" (%c)", sym->unicode); 78 printf(" (%c)", sym->unicode);
76 else 79 else
77 printf(" (0x%X)", sym->unicode); 80 printf(" (0x%X)", sym->unicode);
78 #endif 81 #endif
79 } 82 }
80 } 83 }
81 print_modifiers(); 84 print_modifiers();
82 printf("\n"); 85 printf("\n");
83 } 86 }
84 87
85 int main(int argc, char *argv[]) 88 int
89 main(int argc, char *argv[])
86 { 90 {
87 SDL_Event event; 91 SDL_Event event;
88 int done; 92 int done;
89 Uint32 videoflags; 93 Uint32 videoflags;
90 94
91 /* Initialize SDL */ 95 /* Initialize SDL */
92 if ( SDL_Init(SDL_INIT_VIDEO) < 0 ) { 96 if (SDL_Init(SDL_INIT_VIDEO) < 0) {
93 fprintf(stderr, "Couldn't initialize SDL: %s\n",SDL_GetError()); 97 fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError());
94 return(1); 98 return (1);
95 } 99 }
96 100
97 videoflags = SDL_SWSURFACE; 101 videoflags = SDL_SWSURFACE;
98 while( argc > 1 ) { 102 while (argc > 1) {
99 --argc; 103 --argc;
100 if ( argv[argc] && !strcmp(argv[argc], "-fullscreen") ) { 104 if (argv[argc] && !strcmp(argv[argc], "-fullscreen")) {
101 videoflags |= SDL_FULLSCREEN; 105 videoflags |= SDL_FULLSCREEN;
102 } else { 106 } else {
103 fprintf(stderr, "Usage: %s [-fullscreen]\n", argv[0]); 107 fprintf(stderr, "Usage: %s [-fullscreen]\n", argv[0]);
104 quit(1); 108 quit(1);
105 } 109 }
106 } 110 }
107 111
108 /* Set 640x480 video mode */ 112 /* Set 640x480 video mode */
109 if ( SDL_SetVideoMode(640, 480, 0, videoflags) == NULL ) { 113 if (SDL_SetVideoMode(640, 480, 0, videoflags) == NULL) {
110 fprintf(stderr, "Couldn't set 640x480 video mode: %s\n", 114 fprintf(stderr, "Couldn't set 640x480 video mode: %s\n",
111 SDL_GetError()); 115 SDL_GetError());
112 quit(2); 116 quit(2);
113 } 117 }
114 118
115 /* Enable UNICODE translation for keyboard input */ 119 /* Enable UNICODE translation for keyboard input */
116 SDL_EnableUNICODE(1); 120 SDL_EnableUNICODE(1);
117 121
118 /* Enable auto repeat for keyboard input */ 122 /* Enable auto repeat for keyboard input */
119 SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, 123 SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY,
120 SDL_DEFAULT_REPEAT_INTERVAL); 124 SDL_DEFAULT_REPEAT_INTERVAL);
121 125
122 /* Watch keystrokes */ 126 /* Watch keystrokes */
123 done = 0; 127 done = 0;
124 while ( !done ) { 128 while (!done) {
125 /* Check for events */ 129 /* Check for events */
126 SDL_WaitEvent(&event); 130 SDL_WaitEvent(&event);
127 switch (event.type) { 131 switch (event.type) {
128 case SDL_KEYDOWN: 132 case SDL_KEYDOWN:
129 PrintKey(&event.key.keysym, 1); 133 PrintKey(&event.key.keysym, 1);
130 break; 134 break;
131 case SDL_KEYUP: 135 case SDL_KEYUP:
132 PrintKey(&event.key.keysym, 0); 136 PrintKey(&event.key.keysym, 0);
133 break; 137 break;
134 case SDL_MOUSEBUTTONDOWN: 138 case SDL_MOUSEBUTTONDOWN:
135 /* Any button press quits the app... */ 139 /* Any button press quits the app... */
136 case SDL_QUIT: 140 case SDL_QUIT:
137 done = 1; 141 done = 1;
138 break; 142 break;
139 default: 143 default:
140 break; 144 break;
141 } 145 }
142 } 146 }
143 147
144 SDL_Quit(); 148 SDL_Quit();
145 return(0); 149 return (0);
146 } 150 }