Skip to content

Latest commit

 

History

History
146 lines (131 loc) · 3.02 KB

checkkeys.c

File metadata and controls

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