chiark / gitweb /
Proper Subversion configuration.
[newkind] / keyboard.c
CommitLineData
84bbd123 1/*
2 * Elite - The New Kind.
3 *
4 * Allegro version of the keyboard routines.
5 *
6 * The code in this file has not been derived from the original Elite code.
7 * Written by C.J.Pinder 1999-2001.
8 * email: <christian@newkind.co.uk>
9 *
10 */
11
12/*
13 * keyboard.c
14 *
15 * Code to handle keyboard input.
16 */
17
18#include <stdlib.h>
19#include <string.h>
20
21#include "allegro.h"
22
23int kbd_F1_pressed;
24int kbd_F2_pressed;
25int kbd_F3_pressed;
26int kbd_F4_pressed;
27int kbd_F5_pressed;
28int kbd_F6_pressed;
29int kbd_F7_pressed;
30int kbd_F8_pressed;
31int kbd_F9_pressed;
32int kbd_F10_pressed;
33int kbd_F11_pressed;
34int kbd_F12_pressed;
35int kbd_y_pressed;
36int kbd_n_pressed;
1a8abebd 37int kbd_zoom_pressed;
84bbd123 38int kbd_fire_pressed;
39int kbd_ecm_pressed;
40int kbd_energy_bomb_pressed;
41int kbd_hyperspace_pressed;
42int kbd_ctrl_pressed;
43int kbd_jump_pressed;
44int kbd_escape_pressed;
45int kbd_dock_pressed;
46int kbd_d_pressed;
47int kbd_origin_pressed;
48int kbd_find_pressed;
49int kbd_fire_missile_pressed;
50int kbd_target_missile_pressed;
51int kbd_unarm_missile_pressed;
52int kbd_pause_pressed;
53int kbd_resume_pressed;
54int kbd_inc_speed_pressed;
1a8abebd 55int kbd_i_pressed;
84bbd123 56int kbd_dec_speed_pressed;
57int kbd_up_pressed;
58int kbd_down_pressed;
59int kbd_left_pressed;
60int kbd_right_pressed;
61int kbd_enter_pressed;
62int kbd_backspace_pressed;
63int kbd_space_pressed;
64
f17e8478 65char old_key[KEY_MAX];
84bbd123 66
67int kbd_keyboard_startup (void)
68{
69// set_keyboard_rate(2000, 2000);
70 return 0;
71}
72
73int kbd_keyboard_shutdown (void)
74{
75 return 0;
76}
77
78void kbd_poll_keyboard (void)
79{
1a8abebd 80 int i;
84bbd123 81 poll_keyboard();
1a8abebd 82 for (i = 0; i < KEY_MAX; i++) {
83 if (!key[i])
84 continue;
85 key[i] = 1;
86 if (key[i] && old_key[i])
87 key[i] |= 2;
88 }
89 memcpy(old_key, key, KEY_MAX);
84bbd123 90
91 kbd_F1_pressed = key[KEY_F1];
92 kbd_F2_pressed = key[KEY_F2];
93 kbd_F3_pressed = key[KEY_F3];
94 kbd_F4_pressed = key[KEY_F4];
95 kbd_F5_pressed = key[KEY_F5];
96 kbd_F6_pressed = key[KEY_F6];
97 kbd_F7_pressed = key[KEY_F7];
98 kbd_F8_pressed = key[KEY_F8];
99 kbd_F9_pressed = key[KEY_F9];
100 kbd_F10_pressed = key[KEY_F10];
101 kbd_F11_pressed = key[KEY_F11];
102 kbd_F12_pressed = key[KEY_F12];
103
104 kbd_y_pressed = key[KEY_Y];
105 kbd_n_pressed = key[KEY_N];
1a8abebd 106 kbd_zoom_pressed = key[KEY_Z];
84bbd123 107
108 kbd_fire_pressed = key[KEY_A];
109 kbd_ecm_pressed = key[KEY_E];
110 kbd_energy_bomb_pressed = key[KEY_TAB];
111 kbd_hyperspace_pressed = key[KEY_H];
112 kbd_ctrl_pressed = (key[KEY_LCONTROL]) || (key[KEY_RCONTROL]);
113 kbd_jump_pressed = key[KEY_J];
114 kbd_escape_pressed = key[KEY_ESC];
115
116 kbd_dock_pressed = key[KEY_C];
117 kbd_d_pressed = key[KEY_D];
118 kbd_origin_pressed = key[KEY_O];
119 kbd_find_pressed = key[KEY_F];
120
1a8abebd 121 kbd_i_pressed = key[KEY_I];
122
84bbd123 123 kbd_fire_missile_pressed = key[KEY_M];
124 kbd_target_missile_pressed = key[KEY_T];
125 kbd_unarm_missile_pressed = key[KEY_U];
126
127 kbd_pause_pressed = key[KEY_P];
128 kbd_resume_pressed = key[KEY_R];
129
130 kbd_inc_speed_pressed = key[KEY_SPACE];
131 kbd_dec_speed_pressed = key[KEY_SLASH];
132
133 kbd_up_pressed = key[KEY_S] || key[KEY_UP];
134 kbd_down_pressed = key[KEY_X] || key[KEY_DOWN];
135 kbd_left_pressed = key[KEY_COMMA] || key[KEY_LEFT];
136 kbd_right_pressed = key[KEY_STOP] || key[KEY_RIGHT];
137
138 kbd_enter_pressed = key[KEY_ENTER];
139 kbd_backspace_pressed = key[KEY_BACKSPACE];
140 kbd_space_pressed = key[KEY_SPACE];
141
142 while (keypressed())
143 readkey();
144}
145
146
147int kbd_read_key (void)
148{
149 int keynum;
150 int keycode;
151 int keyasc;
152
153 kbd_enter_pressed = 0;
154 kbd_backspace_pressed = 0;
155
156 keynum = readkey();
157 keycode = keynum >> 8;
158 keyasc = keynum & 255;
159
160 if (keycode == KEY_ENTER)
161 {
162 kbd_enter_pressed = 1;
163 return 0;
164 }
165
166 if (keycode == KEY_BACKSPACE)
167 {
168 kbd_backspace_pressed = 1;
169 return 0;
170 }
171
172 return keyasc;
173}
174
175
176void kbd_clear_key_buffer (void)
177{
178 while (keypressed())
179 readkey();
180}
181