12 unsigned char scancode2ascii[256] = {
13 0, 0, 49, 50, 51, 52, 53, 54, 55, 56, /* 0-9 */
14 57, 48, 45, 0, 0, 0, 113, 119, 101, 114, /* 10-19 */
15 116, 121, 117, 105, 111, 112, 0, 0, 0, 0, /* 20-29 */
16 97, 115, 100, 102, 103, 104, 106, 107, 108, 0, /* 30-39 */
17 0, 0, 0, 0, 122, 120, 99, 118, 98, 110, /* 40-49 */
18 109, 44, 46, 47, 0, 0, 0, 32, 0, 0, /* 50-59 */
19 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
20 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
21 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
22 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
23 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
24 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
25 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
26 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
27 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
28 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
29 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
30 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
31 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
32 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
33 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
34 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
35 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
36 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
37 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
41 int hook_keyb_handler(void)
44 memset((void *) last_keys, 0, sizeof(last_keys));
50 void remove_keyb_handler(void)
55 int key_pressed(int key)
57 return keyb[(unsigned char) key];
60 int addkey(unsigned int key)
64 if (!(key & 0x8000)) {
65 keyb[key & 0x7fff] = 1;
66 for (c1 = 48; c1 > 0; c1--)
67 last_keys[c1] = last_keys[c1 - 1];
68 last_keys[0] = key & 0x7fff;
70 keyb[key & 0x7fff] = 0;
78 static Uint32 now, then = 0;
80 while (SDL_PollEvent(&e)) {
82 case SDL_MOUSEBUTTONDOWN:
86 switch (e.key.keysym.sym) {
88 if (e.type == SDL_KEYDOWN) {
94 if (e.type == SDL_KEYDOWN) {
99 if (e.type == SDL_KEYUP)
105 e.key.keysym.sym &= 0x7f;
106 if (e.type == SDL_KEYUP)
107 e.key.keysym.sym |= 0x8000;
108 addkey(e.key.keysym.sym);
119 now = SDL_GetTicks();
123 then = (1000 / 60) - (now - then);
124 if (then > 0 && then < 1000)