2 * Elite - The New Kind.
4 * Allegro version of the keyboard routines.
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>
15 * Code to handle keyboard input.
40 int kbd_energy_bomb_pressed
;
41 int kbd_hyperspace_pressed
;
44 int kbd_escape_pressed
;
47 int kbd_origin_pressed
;
49 int kbd_fire_missile_pressed
;
50 int kbd_target_missile_pressed
;
51 int kbd_unarm_missile_pressed
;
52 int kbd_pause_pressed
;
53 int kbd_resume_pressed
;
54 int kbd_inc_speed_pressed
;
56 int kbd_dec_speed_pressed
;
60 int kbd_right_pressed
;
61 int kbd_enter_pressed
;
62 int kbd_backspace_pressed
;
63 int kbd_space_pressed
;
65 static char old_key
[KEY_MAX
];
67 int kbd_keyboard_startup (void)
69 // set_keyboard_rate(2000, 2000);
73 int kbd_keyboard_shutdown (void)
78 void kbd_poll_keyboard (void)
82 for (i
= 0; i
< KEY_MAX
; i
++) {
86 if (key
[i
] && old_key
[i
])
89 memcpy(old_key
, key
, KEY_MAX
);
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
];
104 kbd_y_pressed
= key
[KEY_Y
];
105 kbd_n_pressed
= key
[KEY_N
];
106 kbd_zoom_pressed
= key
[KEY_Z
];
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
];
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
];
121 kbd_i_pressed
= key
[KEY_I
];
123 kbd_fire_missile_pressed
= key
[KEY_M
];
124 kbd_target_missile_pressed
= key
[KEY_T
];
125 kbd_unarm_missile_pressed
= key
[KEY_U
];
127 kbd_pause_pressed
= key
[KEY_P
];
128 kbd_resume_pressed
= key
[KEY_R
];
130 kbd_inc_speed_pressed
= key
[KEY_SPACE
];
131 kbd_dec_speed_pressed
= key
[KEY_SLASH
];
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
];
138 kbd_enter_pressed
= key
[KEY_ENTER
];
139 kbd_backspace_pressed
= key
[KEY_BACKSPACE
];
140 kbd_space_pressed
= key
[KEY_SPACE
];
147 int kbd_read_key (void)
153 kbd_enter_pressed
= 0;
154 kbd_backspace_pressed
= 0;
157 keycode
= keynum
>> 8;
158 keyasc
= keynum
& 255;
160 if (keycode
== KEY_ENTER
)
162 kbd_enter_pressed
= 1;
166 if (keycode
== KEY_BACKSPACE
)
168 kbd_backspace_pressed
= 1;
176 void kbd_clear_key_buffer (void)