1 /* 2 * Copyright (C) Volition, Inc. 1999. All rights reserved. 3 * 4 * All source code herein is the property of Volition, Inc. You may not sell 5 * or otherwise commercially exploit the source or things you created based on the 6 * source. 7 * 8 */ 9 10 11 12 #ifndef _KEY_H 13 #define _KEY_H 14 15 #include "globalincs/pstypes.h" 16 17 #define NUM_KEYS 256 18 19 const size_t SIZE_OF_ASCII_TABLE = 128; 20 extern int shifted_ascii_table[SIZE_OF_ASCII_TABLE]; 21 extern int ascii_table[SIZE_OF_ASCII_TABLE]; 22 23 extern ubyte keyd_pressed[NUM_KEYS]; 24 25 // O/S level hooks... 26 void key_init(); 27 void key_level_init(); 28 void key_lost_focus(); 29 void key_got_focus(); 30 void key_mark( uint code, int state, uint latency ); 31 int key_getch(); 32 void key_flush(); 33 34 // Routines/data you can access: 35 float key_down_timef( uint code ); 36 37 int key_to_ascii(int keycode ); 38 int key_inkey(); 39 40 // global flag that will enable/disable the backspace key from stopping execution 41 //extern int Backspace_debug; 42 43 uint key_get_shift_status(); 44 int key_down_count(int scancode); 45 int key_checkch(); 46 47 extern int Cheats_enabled; 48 extern int Key_normal_game; 49 50 #define KEY_SHIFTED 0x1000 51 #define KEY_ALTED 0x2000 52 #define KEY_CTRLED 0x4000 53 #define KEY_DEBUGGED 0x8000 54 #define KEY_DEBUGGED1 0x0800 // Cheat bit in release version of game. 55 #define KEY_MASK 0x00FF 56 57 #define KEY_DEBUG_KEY 0x29 // KEY_LAPOSTRO (shifted = tilde, near upper-left of keyboard) 58 59 #define KEY_0 0x0B 60 #define KEY_1 0x02 61 #define KEY_2 0x03 62 #define KEY_3 0x04 63 #define KEY_4 0x05 64 #define KEY_5 0x06 65 #define KEY_6 0x07 66 #define KEY_7 0x08 67 #define KEY_8 0x09 68 #define KEY_9 0x0A 69 70 #define KEY_A 0x1E 71 #define KEY_B 0x30 72 #define KEY_C 0x2E 73 #define KEY_D 0x20 74 #define KEY_E 0x12 75 #define KEY_F 0x21 76 #define KEY_G 0x22 77 #define KEY_H 0x23 78 #define KEY_I 0x17 79 #define KEY_J 0x24 80 #define KEY_K 0x25 81 #define KEY_L 0x26 82 #define KEY_M 0x32 83 #define KEY_N 0x31 84 #define KEY_O 0x18 85 #define KEY_P 0x19 86 #define KEY_Q 0x10 87 #define KEY_R 0x13 88 #define KEY_S 0x1F 89 #define KEY_T 0x14 90 #define KEY_U 0x16 91 #define KEY_V 0x2F 92 #define KEY_W 0x11 93 #define KEY_X 0x2D 94 #define KEY_Y 0x15 95 #define KEY_Z 0x2C 96 97 #define KEY_MINUS 0x0C 98 #define KEY_EQUAL 0x0D 99 #define KEY_DIVIDE 0x35 100 #define KEY_SLASH 0x2B 101 #define KEY_SLASH_UK 0x56 102 #define KEY_COMMA 0x33 103 #define KEY_PERIOD 0x34 104 #define KEY_SEMICOL 0x27 105 106 #define KEY_LBRACKET 0x1A 107 #define KEY_RBRACKET 0x1B 108 109 #define KEY_RAPOSTRO 0x28 110 #define KEY_LAPOSTRO 0x29 111 112 #define KEY_ESC 0x01 113 #define KEY_ENTER 0x1C 114 #define KEY_BACKSP 0x0E 115 #define KEY_TAB 0x0F 116 #define KEY_SPACEBAR 0x39 117 118 #define KEY_NUMLOCK 0x45 119 #define KEY_SCROLLOCK 0x46 120 #define KEY_CAPSLOCK 0x3A 121 122 #define KEY_LSHIFT 0x2A 123 #define KEY_RSHIFT 0x36 124 125 #define KEY_LALT 0x38 126 #define KEY_RALT 0xB8 127 128 #define KEY_LCTRL 0x1D 129 #define KEY_RCTRL 0x9D 130 131 #define KEY_F1 0x3B 132 #define KEY_F2 0x3C 133 #define KEY_F3 0x3D 134 #define KEY_F4 0x3E 135 #define KEY_F5 0x3F 136 #define KEY_F6 0x40 137 #define KEY_F7 0x41 138 #define KEY_F8 0x42 139 #define KEY_F9 0x43 140 #define KEY_F10 0x44 141 #define KEY_F11 0x57 142 #define KEY_F12 0x58 143 144 #define KEY_PAD0 0x52 145 #define KEY_PAD1 0x4F 146 #define KEY_PAD2 0x50 147 #define KEY_PAD3 0x51 148 #define KEY_PAD4 0x4B 149 #define KEY_PAD5 0x4C 150 #define KEY_PAD6 0x4D 151 #define KEY_PAD7 0x47 152 #define KEY_PAD8 0x48 153 #define KEY_PAD9 0x49 154 #define KEY_PADMINUS 0x4A 155 #define KEY_PADPLUS 0x4E 156 #define KEY_PADPERIOD 0x53 157 #define KEY_PADDIVIDE 0xB5 158 #define KEY_PADMULTIPLY 0x37 159 #define KEY_PADENTER 0x9C 160 161 #define KEY_INSERT 0xD2 162 #define KEY_HOME 0xC7 163 #define KEY_PAGEUP 0xC9 164 #define KEY_DELETE 0xd3 165 #define KEY_END 0xCF 166 #define KEY_PAGEDOWN 0xD1 167 #define KEY_UP 0xC8 168 #define KEY_DOWN 0xD0 169 #define KEY_LEFT 0xCB 170 #define KEY_RIGHT 0xCD 171 172 #define KEY_PRINT_SCRN 0xB7 173 #define KEY_PAUSE 0x45 //DOS: 0x61 174 #define KEY_BREAK 0xc6 175 176 #endif 177