1 /* 2 Copyright (C) 1997-2001 Id Software, Inc. 3 4 This program is free software; you can redistribute it and/or 5 modify it under the terms of the GNU General Public License 6 as published by the Free Software Foundation; either version 2 7 of the License, or (at your option) any later version. 8 9 This program is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 13 See the GNU General Public License for more details. 14 15 You should have received a copy of the GNU General Public License 16 along with this program; if not, write to the Free Software 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 19 */ 20 21 // 22 // these are the key numbers that should be passed to Key_Event 23 // 24 #define K_TAB 9 25 #define K_ENTER 13 26 #define K_ESCAPE 27 27 #define K_SPACE 32 28 29 // normal keys should be passed as lowercased ascii 30 31 #define K_BACKSPACE 127 32 #define K_UPARROW 128 33 #define K_DOWNARROW 129 34 #define K_LEFTARROW 130 35 #define K_RIGHTARROW 131 36 37 #define K_ALT 132 38 #define K_CTRL 133 39 #define K_SHIFT 134 40 #define K_F1 135 41 #define K_F2 136 42 #define K_F3 137 43 #define K_F4 138 44 #define K_F5 139 45 #define K_F6 140 46 #define K_F7 141 47 #define K_F8 142 48 #define K_F9 143 49 #define K_F10 144 50 #define K_F11 145 51 #define K_F12 146 52 #define K_INS 147 53 #define K_DEL 148 54 #define K_PGDN 149 55 #define K_PGUP 150 56 #define K_HOME 151 57 #define K_END 152 58 59 #define K_NUMLOCK 153 60 #define K_CAPSLOCK 154 61 #define K_SCROLLOCK 155 62 #define K_LWINKEY 156 63 #define K_RWINKEY 157 64 #define K_MENU 158 65 66 #define K_KP_HOME 160 67 #define K_KP_UPARROW 161 68 #define K_KP_PGUP 162 69 #define K_KP_LEFTARROW 163 70 #define K_KP_5 164 71 #define K_KP_RIGHTARROW 165 72 #define K_KP_END 166 73 #define K_KP_DOWNARROW 167 74 #define K_KP_PGDN 168 75 #define K_KP_ENTER 169 76 #define K_KP_INS 170 77 #define K_KP_DEL 171 78 #define K_KP_SLASH 172 79 #define K_KP_MINUS 173 80 #define K_KP_PLUS 174 81 #define K_KP_MULTIPLY 175 82 83 #define K_PAUSE 255 84 85 // 86 // joystick buttons 87 // 88 #define K_JOY1 203 89 #define K_JOY2 204 90 #define K_JOY3 205 91 #define K_JOY4 206 92 93 // 94 // aux keys are for multi-buttoned joysticks to generate so they can use 95 // the normal binding process 96 // 97 #define K_AUX1 207 98 #define K_AUX2 208 99 #define K_AUX3 209 100 #define K_AUX4 210 101 #define K_AUX5 211 102 #define K_AUX6 212 103 #define K_AUX7 213 104 #define K_AUX8 214 105 #define K_AUX9 215 106 #define K_AUX10 216 107 #define K_AUX11 217 108 #define K_AUX12 218 109 #define K_AUX13 219 110 #define K_AUX14 220 111 #define K_AUX15 221 112 #define K_AUX16 222 113 #define K_AUX17 223 114 #define K_AUX18 224 115 #define K_AUX19 225 116 #define K_AUX20 226 117 #define K_AUX21 227 118 #define K_AUX22 228 119 #define K_AUX23 229 120 #define K_AUX24 230 121 #define K_AUX25 231 122 #define K_AUX26 232 123 #define K_AUX27 233 124 #define K_AUX28 234 125 #define K_AUX29 235 126 #define K_AUX30 236 127 #define K_AUX31 237 128 #define K_AUX32 238 129 130 #define K_MWHEELDOWN 239 131 #define K_MWHEELUP 240 132 133 // 134 // mouse buttons generate virtual keys 135 // 136 #define K_MOUSE1 241 137 #define K_MOUSE2 242 138 #define K_MOUSE3 243 139 #define K_MOUSE4 244 140 #define K_MOUSE5 245 141 #define K_MOUSE6 246 142 #define K_MOUSE7 247 143 #define K_MOUSE8 248 144 145 typedef enum keydest_e { 146 KEY_GAME = 0, 147 KEY_CONSOLE = ( 1 << 0 ), 148 KEY_MESSAGE = ( 1 << 1 ), 149 KEY_MENU = ( 1 << 2 ) 150 } keydest_t; 151 152 typedef struct keyAPI_s { 153 qboolean (*GetOverstrikeMode)( void ); 154 void (*SetOverstrikeMode)( qboolean overstrike ); 155 keydest_t (*GetDest)( void ); 156 void (*SetDest)( keydest_t dest ); 157 158 qboolean (*IsDown)( int key ); 159 qboolean (*AnyKeyDown)( void ); 160 void (*ClearStates)( void ); 161 162 char *(*KeyNumToString)( int keynum ); 163 void (*SetBinding)( int keynum, const char *binding ); 164 char *(*GetBinding)( const char *binding ); 165 int (*EnumBindings)( int key, const char *binding ); 166 } keyAPI_t; 167 168 extern keyAPI_t keys; 169 170