CnC_Remastered_Collection

Command and Conquer: Red Alert
Log | Files | Refs | README | LICENSE

KEY.H (18897B)


      1 //
      2 // Copyright 2020 Electronic Arts Inc.
      3 //
      4 // TiberianDawn.DLL and RedAlert.dll and corresponding source code is free 
      5 // software: you can redistribute it and/or modify it under the terms of 
      6 // the GNU General Public License as published by the Free Software Foundation, 
      7 // either version 3 of the License, or (at your option) any later version.
      8 
      9 // TiberianDawn.DLL and RedAlert.dll and corresponding source code is distributed 
     10 // in the hope that it will be useful, but with permitted additional restrictions 
     11 // under Section 7 of the GPL. See the GNU General Public License in LICENSE.TXT 
     12 // distributed with this program. You should have received a copy of the 
     13 // GNU General Public License along with permitted additional restrictions 
     14 // with this program. If not, see https://github.com/electronicarts/CnC_Remastered_Collection
     15 
     16 /* $Header: /CounterStrike/KEY.H 1     3/03/97 10:25a Joe_bostic $ */
     17 /***********************************************************************************************
     18  *                                                                                             *
     19  *                 Project Name : Westwood Keyboard Library                                    *
     20  *                                                                                             *
     21  *                    File Name : KEYBOARD.H                                                   *
     22  *                                                                                             *
     23  *                   Programmer : Philip W. Gorrow                                             *
     24  *                                                                                             *
     25  *                   Start Date : 10/16/95                                                     *
     26  *                                                                                             *
     27  *                  Last Update : October 16, 1995 [PWG]                                       *
     28  *                                                                                             *
     29  *---------------------------------------------------------------------------------------------*
     30  * Functions:                                                                                  *
     31  * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
     32 
     33 #ifndef KEYBOARD_H
     34 #define KEYBOARD_H
     35 
     36 #ifndef WIN32
     37 #include	"..\wwflat32\include\keyboard.h"
     38 #else
     39 
     40 #include	<windows.h>
     41 
     42 /*
     43 **	The "bool" integral type was defined by the C++ comittee in
     44 **	November of '94. Until the compiler supports this, use the following
     45 **	definition.
     46 */
     47 #ifndef __BORLANDC__
     48 #ifndef TRUE_FALSE_DEFINED
     49 #define TRUE_FALSE_DEFINED
     50 enum {false=0,true=1};
     51 typedef int bool;
     52 #endif
     53 #endif
     54 
     55 
     56 typedef enum {
     57 	WWKEY_SHIFT_BIT	= 0x100,
     58 	WWKEY_CTRL_BIT		= 0x200,
     59 	WWKEY_ALT_BIT		= 0x400,
     60 	WWKEY_RLS_BIT		= 0x800,
     61 	WWKEY_VK_BIT		= 0x1000,
     62 	WWKEY_DBL_BIT		= 0x2000,
     63 	WWKEY_BTN_BIT		= 0x8000,
     64 } WWKey_Type;
     65 
     66 
     67 class WWKeyboardClass
     68 {
     69 	public:
     70 		/* Define the base constructor and destructors for the class			*/
     71 		WWKeyboardClass();
     72 
     73 		/* Define the functions which work with the Keyboard Class				*/
     74 		unsigned short Check(void) const;
     75 		unsigned short Get(void);
     76 		bool Put(unsigned short key);
     77 		void Clear(void);
     78 		char To_ASCII(unsigned short num);
     79 		bool Down(unsigned short key);
     80 
     81 		/* Define the main hook for the message processing loop.					*/
     82 		bool Message_Handler(HWND hwnd, UINT message, UINT wParam, LONG lParam);
     83 
     84 		/* Define the public access variables which are used with the			*/
     85 		/*   Keyboard Class.																	*/
     86 		int MouseQX;
     87 		int MouseQY;
     88 
     89 	private:
     90 
     91 		/*
     92 		**	This is a keyboard state array that is used to aid in translating
     93 		**	KN_ keys into KA_ keys.
     94 		*/
     95 		unsigned char KeyState[256];
     96 
     97 		/*
     98 		**	This is the circular keyboard holding buffer. It holds the VK key and
     99 		**	the current shift state at the time the key was added to the queue.
    100 		*/
    101 		unsigned short Buffer[256];		// buffer which holds actual keypresses
    102 
    103 		unsigned short Buff_Get(void);
    104 		unsigned short Fetch_Element(void);
    105 		unsigned short Peek_Element(void) const;
    106 		bool Put_Element(unsigned short val);
    107 		bool Is_Buffer_Full(void) const;
    108 		bool Is_Buffer_Empty(void) const;
    109 		static bool Is_Mouse_Key(unsigned short key);
    110 		void Fill_Buffer_From_System(void);
    111 		bool Put_Key_Message(unsigned short vk_key, bool release = false);
    112 		bool Put_Mouse_Message(unsigned short vk_key, int x, int y, bool release = false);
    113 		int Available_Buffer_Room(void) const;
    114 
    115 		/*
    116 		**	These are the tracking pointers to maintain the
    117 		**	circular keyboard list.
    118 		*/
    119 		int Head;
    120 		int Tail;
    121 };
    122 
    123 
    124 #define	VK_NONE				  0x00
    125 #define	VK_LBUTTON          0x01
    126 #define	VK_RBUTTON          0x02
    127 #define	VK_CANCEL           0x03
    128 #define	VK_MBUTTON          0x04
    129 #define	VK_NONE_05			  0x05
    130 #define	VK_NONE_06			  0x06
    131 #define	VK_NONE_07			  0x07
    132 #define	VK_BACK             0x08
    133 #define	VK_TAB              0x09
    134 #define	VK_NONE_0A			  0x0A
    135 #define	VK_NONE_0B			  0x0B
    136 #define	VK_CLEAR            0x0C
    137 #define	VK_RETURN           0x0D
    138 #define	VK_NONE_0E			  0x0E
    139 #define	VK_NONE_0F			  0x0F
    140 #define	VK_SHIFT            0x10
    141 #define	VK_CONTROL          0x11
    142 #define	VK_MENU             0x12
    143 #define	VK_PAUSE            0x13
    144 #define	VK_CAPITAL          0x14
    145 #define	VK_NONE_15			  0x15
    146 #define	VK_NONE_16			  0x16
    147 #define	VK_NONE_17			  0x17
    148 #define	VK_NONE_18			  0x18
    149 #define	VK_NONE_19			  0x19
    150 #define	VK_NONE_1A			  0x1A
    151 #define	VK_ESCAPE           0x1B
    152 #define	VK_NONE_1C			  0x1C
    153 #define	VK_NONE_1D			  0x1D
    154 #define	VK_NONE_1E			  0x1E
    155 #define	VK_NONE_1F			  0x1F
    156 #define	VK_SPACE            0x20
    157 #define	VK_PRIOR            0x21
    158 #define	VK_NEXT             0x22
    159 #define	VK_END              0x23
    160 #define	VK_HOME             0x24
    161 #define	VK_LEFT             0x25
    162 #define	VK_UP               0x26
    163 #define	VK_RIGHT            0x27
    164 #define	VK_DOWN             0x28
    165 #define	VK_SELECT           0x29
    166 #define	VK_PRINT            0x2A
    167 #define	VK_EXECUTE          0x2B
    168 #define	VK_SNAPSHOT         0x2C
    169 #define	VK_INSERT           0x2D
    170 #define	VK_DELETE           0x2E
    171 #define	VK_HELP             0x2F
    172 #define	VK_0					  0x30
    173 #define	VK_1					  0x31
    174 #define	VK_2					  0x32
    175 #define	VK_3					  0x33
    176 #define	VK_4					  0x34
    177 #define	VK_5					  0x35
    178 #define	VK_6					  0x36
    179 #define	VK_7					  0x37
    180 #define	VK_8					  0x38
    181 #define	VK_9					  0x39
    182 #define	VK_NONE_3B			  0x3B
    183 #define	VK_NONE_3C			  0x3C
    184 #define	VK_NONE_3D			  0x3D
    185 #define	VK_NONE_3E			  0x3E
    186 #define	VK_NONE_3F			  0x3F
    187 #define	VK_NONE_40			  0x40
    188 #define	VK_A					  0x41
    189 #define	VK_B					  0x42
    190 #define	VK_C					  0x43
    191 #define	VK_D					  0x44
    192 #define	VK_E					  0x45
    193 #define	VK_F					  0x46
    194 #define	VK_G					  0x47
    195 #define	VK_H					  0x48
    196 #define	VK_I					  0x49
    197 #define	VK_J					  0x4A
    198 #define	VK_K					  0x4B
    199 #define	VK_L					  0x4C
    200 #define	VK_M					  0x4D
    201 #define	VK_N					  0x4E
    202 #define	VK_O					  0x4F
    203 #define	VK_P					  0x50
    204 #define	VK_Q					  0x51
    205 #define	VK_R					  0x52
    206 #define	VK_S					  0x53
    207 #define	VK_T					  0x54
    208 #define	VK_U					  0x55
    209 #define	VK_V					  0x56
    210 #define	VK_W					  0x57
    211 #define	VK_X					  0x58
    212 #define	VK_Y					  0x59
    213 #define	VK_Z					  0x5A
    214 #define	VK_NONE_5B			  0x5B
    215 #define	VK_NONE_5C			  0x5C
    216 #define	VK_NONE_5D			  0x5D
    217 #define	VK_NONE_5E			  0x5E
    218 #define	VK_NONE_5F			  0x5F
    219 #define	VK_NUMPAD0          0x60
    220 #define	VK_NUMPAD1          0x61
    221 #define	VK_NUMPAD2          0x62
    222 #define	VK_NUMPAD3          0x63
    223 #define	VK_NUMPAD4          0x64
    224 #define	VK_NUMPAD5          0x65
    225 #define	VK_NUMPAD6          0x66
    226 #define	VK_NUMPAD7          0x67
    227 #define	VK_NUMPAD8          0x68
    228 #define	VK_NUMPAD9          0x69
    229 #define	VK_MULTIPLY         0x6A
    230 #define	VK_ADD              0x6B
    231 #define	VK_SEPARATOR        0x6C
    232 #define	VK_SUBTRACT         0x6D
    233 #define	VK_DECIMAL          0x6E
    234 #define	VK_DIVIDE           0x6F
    235 #define	VK_F1               0x70
    236 #define	VK_F2               0x71
    237 #define	VK_F3               0x72
    238 #define	VK_F4               0x73
    239 #define	VK_F5               0x74
    240 #define	VK_F6               0x75
    241 #define	VK_F7               0x76
    242 #define	VK_F8               0x77
    243 #define	VK_F9               0x78
    244 #define	VK_F10              0x79
    245 #define	VK_F11              0x7A
    246 #define	VK_F12              0x7B
    247 #define	VK_F13              0x7C
    248 #define	VK_F14              0x7D
    249 #define	VK_F15              0x7E
    250 #define	VK_F16              0x7F
    251 #define	VK_F17              0x80
    252 #define	VK_F18              0x81
    253 #define	VK_F19              0x82
    254 #define	VK_F20              0x83
    255 #define	VK_F21              0x84
    256 #define	VK_F22              0x85
    257 #define	VK_F23              0x86
    258 #define	VK_F24              0x87
    259 #define	VK_NONE_88          0x88
    260 #define	VK_NONE_89          0x89
    261 #define	VK_NONE_8A          0x8A
    262 #define	VK_NONE_8B          0x8B
    263 #define	VK_NONE_8C          0x8C
    264 #define	VK_NONE_8D          0x8D
    265 #define	VK_NONE_8E          0x8E
    266 #define	VK_NONE_8F          0x8F
    267 #define	VK_NUMLOCK          0x90
    268 #define	VK_SCROLL           0x91
    269 #define	VK_NONE_92			  0x92
    270 #define	VK_NONE_93			  0x93
    271 #define	VK_NONE_94			  0x94
    272 #define	VK_NONE_95			  0x95
    273 #define	VK_NONE_96			  0x96
    274 #define	VK_NONE_97			  0x97
    275 #define	VK_NONE_98			  0x98
    276 #define	VK_NONE_99			  0x99
    277 #define	VK_NONE_9A			  0x9A
    278 #define	VK_NONE_9B			  0x9B
    279 #define	VK_NONE_9C			  0x9C
    280 #define	VK_NONE_9D			  0x9D
    281 #define	VK_NONE_9E			  0x9E
    282 #define	VK_NONE_9F			  0x9F
    283 #define	VK_NONE_A0			  0xA0
    284 #define	VK_NONE_A1			  0xA1
    285 #define	VK_NONE_A2			  0xA2
    286 #define	VK_NONE_A3			  0xA3
    287 #define	VK_NONE_A4			  0xA4
    288 #define	VK_NONE_A5			  0xA5
    289 #define	VK_NONE_A6			  0xA6
    290 #define	VK_NONE_A7			  0xA7
    291 #define	VK_NONE_A8			  0xA8
    292 #define	VK_NONE_A9			  0xA9
    293 #define	VK_NONE_AA			  0xAA
    294 #define	VK_NONE_AB			  0xAB
    295 #define	VK_NONE_AC			  0xAC
    296 #define	VK_NONE_AD			  0xAD
    297 #define	VK_NONE_AE			  0xAE
    298 #define	VK_NONE_AF			  0xAF
    299 #define	VK_NONE_B0			  0xB0
    300 #define	VK_NONE_B1			  0xB1
    301 #define	VK_NONE_B2			  0xB2
    302 #define	VK_NONE_B3			  0xB3
    303 #define	VK_NONE_B4			  0xB4
    304 #define	VK_NONE_B5			  0xB5
    305 #define	VK_NONE_B6			  0xB6
    306 #define	VK_NONE_B7			  0xB7
    307 #define	VK_NONE_B8			  0xB8
    308 #define	VK_NONE_B9			  0xB9
    309 #define	VK_NONE_BA			  0xBA	//	;
    310 #define	VK_NONE_BB			  0xBB	// =
    311 #define	VK_NONE_BC			  0xBC	// ,
    312 #define	VK_NONE_BD			  0xBD	// -
    313 #define	VK_NONE_BE			  0xBE	// .
    314 #define	VK_NONE_BF			  0xBF	// /
    315 #define	VK_NONE_C0			  0xC0	// `
    316 #define	VK_NONE_C1			  0xC1
    317 #define	VK_NONE_C2			  0xC2
    318 #define	VK_NONE_C3			  0xC3
    319 #define	VK_NONE_C4			  0xC4
    320 #define	VK_NONE_C5			  0xC5
    321 #define	VK_NONE_C6			  0xC6
    322 #define	VK_NONE_C7			  0xC7
    323 #define	VK_NONE_C8			  0xC8
    324 #define	VK_NONE_C9			  0xC9
    325 #define	VK_NONE_CA			  0xCA
    326 #define	VK_NONE_CB			  0xCB
    327 #define	VK_NONE_CC			  0xCC
    328 #define	VK_NONE_CD			  0xCD
    329 #define	VK_NONE_CE			  0xCE
    330 #define	VK_NONE_CF			  0xCF
    331 #define	VK_NONE_D0			  0xD0
    332 #define	VK_NONE_D1			  0xD1
    333 #define	VK_NONE_D2			  0xD2
    334 #define	VK_NONE_D3			  0xD3
    335 #define	VK_NONE_D4			  0xD4
    336 #define	VK_NONE_D5			  0xD5
    337 #define	VK_NONE_D6			  0xD6
    338 #define	VK_NONE_D7			  0xD7
    339 #define	VK_NONE_D8			  0xD8
    340 #define	VK_NONE_D9			  0xD9
    341 #define	VK_NONE_DA			  0xDA
    342 #define	VK_NONE_DB			  0xDB		// [
    343 #define	VK_NONE_DC			  0xDC		// '\'
    344 #define	VK_NONE_DD			  0xDD		// ]
    345 #define	VK_NONE_DE			  0xDE		// '
    346 #define	VK_NONE_DF			  0xDF
    347 #define	VK_NONE_E0			  0xE0
    348 #define	VK_NONE_E1			  0xE1
    349 #define	VK_NONE_E2			  0xE2
    350 #define	VK_NONE_E3			  0xE3
    351 #define	VK_NONE_E4			  0xE4
    352 #define	VK_NONE_E5			  0xE5
    353 #define	VK_NONE_E6			  0xE6
    354 #define	VK_NONE_E7			  0xE7
    355 #define	VK_NONE_E8			  0xE8
    356 #define	VK_NONE_E9			  0xE9
    357 #define	VK_NONE_EA			  0xEA
    358 #define	VK_NONE_EB			  0xEB
    359 #define	VK_NONE_EC			  0xEC
    360 #define	VK_NONE_ED			  0xED
    361 #define	VK_NONE_EE			  0xEE
    362 #define	VK_NONE_EF			  0xEF
    363 #define	VK_NONE_F0			  0xF0
    364 #define	VK_NONE_F1			  0xF1
    365 #define	VK_NONE_F2			  0xF2
    366 #define	VK_NONE_F3			  0xF3
    367 #define	VK_NONE_F4			  0xF4
    368 #define	VK_NONE_F5			  0xF5
    369 #define	VK_NONE_F6			  0xF6
    370 #define	VK_NONE_F7			  0xF7
    371 #define	VK_NONE_F8			  0xF8
    372 #define	VK_NONE_F9			  0xF9
    373 #define	VK_NONE_FA			  0xFA
    374 #define	VK_NONE_FB			  0xFB
    375 #define	VK_NONE_FC			  0xFC
    376 #define	VK_NONE_FD			  0xFD
    377 #define	VK_NONE_FE			  0xFE
    378 #define	VK_NONE_FF			  0xFF
    379 
    380 #define	VK_UPLEFT			  VK_HOME
    381 #define	VK_UPRIGHT			  VK_PRIOR
    382 #define	VK_DOWNLEFT			  VK_END
    383 #define	VK_DOWNRIGHT		  VK_NEXT
    384 #define	VK_ALT				  VK_MENU
    385 
    386 typedef enum KeyASCIIType {
    387 	//
    388 	// Define all the KA types as variations of the VK types.  This is
    389 	// so the KA functions will work properly under windows 95.
    390 	//
    391 	KA_NONE				= 0,
    392 	KA_MORE 				= 1,
    393 	KA_SETBKGDCOL 		= 2,
    394 	KA_SETFORECOL 		= 6,
    395 	KA_FORMFEED 		= 12,
    396 	KA_SPCTAB 			= 20,
    397 	KA_SETX 				= 25,
    398 	KA_SETY 				= 26,
    399 
    400 	KA_SPACE				= 32,					/*   */
    401 	KA_EXCLAMATION,							/* ! */
    402 	KA_DQUOTE,									/* " */
    403 	KA_POUND,									/* # */
    404 	KA_DOLLAR,									/* $ */
    405 	KA_PERCENT,									/* % */
    406 	KA_AMPER,									/* & */
    407 	KA_SQUOTE,									/* ' */
    408 	KA_LPAREN,									/* ( */
    409 	KA_RPAREN,									/* ) */
    410 	KA_ASTERISK,								/* * */
    411 	KA_PLUS,										/* + */
    412 	KA_COMMA,									/* , */
    413 	KA_MINUS,									/* - */
    414 	KA_PERIOD,									/* . */
    415 	KA_SLASH,									/* / */
    416 
    417 	KA_0, KA_1, KA_2, KA_3, KA_4, KA_5, KA_6, KA_7, KA_8, KA_9,
    418 	KA_COLON,									/* : */
    419 	KA_SEMICOLON,								/* ; */
    420 	KA_LESS_THAN,								/* < */
    421 	KA_EQUAL,									/* = */
    422 	KA_GREATER_THAN,							/* > */
    423 	KA_QUESTION,								/* ? */
    424 
    425 	KA_AT,										/* @ */
    426 	KA_A,											/* A */
    427 	KA_B,											/* B */
    428 	KA_C,											/* C */
    429 	KA_D,											/* D */
    430 	KA_E,											/* E */
    431 	KA_F,											/* F */
    432 	KA_G,											/* G */
    433 	KA_H,											/* H */
    434 	KA_I,											/* I */
    435 	KA_J,											/* J */
    436 	KA_K,											/* K */
    437 	KA_L,											/* L */
    438 	KA_M,											/* M */
    439 	KA_N,											/* N */
    440 	KA_O,											/* O */
    441 
    442 	KA_P,											/* P */
    443 	KA_Q,											/* Q */
    444 	KA_R,											/* R */
    445 	KA_S,											/* S */
    446 	KA_T,											/* T */
    447 	KA_U,											/* U */
    448 	KA_V,											/* V */
    449 	KA_W,											/* W */
    450 	KA_X,											/* X */
    451 	KA_Y,											/* Y */
    452 	KA_Z,											/* Z */
    453 	KA_LBRACKET,								/* [ */
    454 	KA_BACKSLASH,								/* \ */
    455 	KA_RBRACKET,								/* ] */
    456 	KA_CARROT,									/* ^ */
    457 	KA_UNDERLINE,								/* _ */
    458 
    459 	KA_GRAVE,									/* ` */
    460 	KA_a,											/* a */
    461 	KA_b,											/* b */
    462 	KA_c,											/* c */
    463 	KA_d,											/* d */
    464 	KA_e,											/* e */
    465 	KA_f,											/* f */
    466 	KA_g,											/* g */
    467 	KA_h,											/* h */
    468 	KA_i,											/* i */
    469 	KA_j,											/* j */
    470 	KA_k,											/* k */
    471 	KA_l,											/* l */
    472 	KA_m,											/* m */
    473 	KA_n,											/* n */
    474 	KA_o,											/* o */
    475 
    476 	KA_p,											/* p */
    477 	KA_q,											/* q */
    478 	KA_r,											/* r */
    479 	KA_s,											/* s */
    480 	KA_t,											/* t */
    481 	KA_u,											/* u */
    482 	KA_v,											/* v */
    483 	KA_w,											/* w */
    484 	KA_x,											/* x */
    485 	KA_y,											/* y */
    486 	KA_z,											/* z */
    487 	KA_LBRACE,									/* { */
    488 	KA_BAR,										/* | */
    489 	KA_RBRACE,									/* ] */
    490 	KA_TILDA,									/* ~ */
    491 
    492 	KA_ESC 				= VK_ESCAPE,
    493 	KA_EXTEND 			= VK_ESCAPE,
    494 	KA_RETURN 			= VK_RETURN,
    495 	KA_BACKSPACE 		= VK_BACK,
    496 	KA_TAB 				= VK_TAB ,
    497 	KA_DELETE			= VK_DELETE,									/* <DELETE> */
    498 	KA_INSERT			= VK_INSERT,									/* <INSERT> */
    499 	KA_PGDN				= VK_NEXT,										/* <PAGE DOWN> */
    500 	KA_DOWNRIGHT 		= VK_NEXT,
    501 	KA_DOWN				= VK_DOWN,										/* <DOWN ARROW> */
    502 	KA_END				= VK_END,										/* <END> */
    503 	KA_DOWNLEFT 		= VK_END,
    504 	KA_RIGHT				= VK_RIGHT,									/* <RIGHT ARROW> */
    505 	KA_KEYPAD5			= VK_SELECT,									/* NUMERIC KEY PAD <5> */
    506 	KA_LEFT				= VK_LEFT,										/* <LEFT ARROW> */
    507 	KA_PGUP				= VK_PRIOR,										/* <PAGE UP> */
    508 	KA_UPRIGHT 			= VK_PRIOR,
    509 	KA_UP					= VK_UP,										/* <UP ARROW> */
    510 	KA_HOME				= VK_HOME,										/* <HOME> */
    511 	KA_UPLEFT 			= VK_HOME,
    512 	KA_F12				= VK_F12,
    513 	KA_F11				= VK_F11,
    514 	KA_F10				= VK_F10,
    515 	KA_F9 				= VK_F9,
    516 	KA_F8					= VK_F8,
    517 	KA_F7					= VK_F7,
    518 	KA_F6					= VK_F6,
    519 	KA_F5					= VK_F5,
    520 	KA_F4					= VK_F4,
    521 	KA_F3					= VK_F3,
    522 	KA_F2					= VK_F2,
    523 	KA_F1					= VK_F1,
    524 	KA_LMOUSE 	 		= VK_LBUTTON,
    525 	KA_RMOUSE 	 		= VK_RBUTTON,
    526 
    527 	KA_SHIFT_BIT 		= WWKEY_SHIFT_BIT,
    528 	KA_CTRL_BIT  		= WWKEY_CTRL_BIT,
    529 	KA_ALT_BIT   		= WWKEY_ALT_BIT,
    530 	KA_RLSE_BIT  		= WWKEY_RLS_BIT,
    531 } KeyASCIIType;
    532 
    533 
    534 typedef enum KeyNumType {
    535 	KN_NONE				= 0,
    536 
    537 	KN_0 					= VK_0,
    538 	KN_1 					= VK_1,
    539 	KN_2 					= VK_2,
    540 	KN_3 					= VK_3,
    541 	KN_4 					= VK_4,
    542 	KN_5 					= VK_5,
    543 	KN_6 					= VK_6,
    544 	KN_7 					= VK_7,
    545 	KN_8 					= VK_8,
    546 	KN_9 					= VK_9,
    547 	KN_A 					= VK_A,
    548 	KN_B 					= VK_B,
    549 	KN_BACKSLASH		= VK_NONE_DC,
    550 	KN_BACKSPACE		= VK_BACK,
    551 	KN_C 					= VK_C,
    552 	KN_CAPSLOCK			= VK_CAPITAL,
    553 	KN_CENTER			= VK_CLEAR,
    554 	KN_COMMA 			= VK_NONE_BC,
    555 	KN_D 					= VK_D,
    556 	KN_DELETE			= VK_DELETE,
    557 	KN_DOWN				= VK_DOWN,
    558 	KN_DOWNLEFT			= VK_END,
    559 	KN_DOWNRIGHT		= VK_NEXT,
    560 	KN_E 					= VK_E,
    561 	KN_END				= VK_END,
    562 	KN_EQUAL 			= VK_NONE_BB,
    563 	KN_ESC				= VK_ESCAPE,
    564 	KN_E_DELETE 		= VK_DELETE,
    565 	KN_E_DOWN			= VK_NUMPAD2,
    566 	KN_E_END				= VK_NUMPAD1,
    567 	KN_E_HOME			= VK_NUMPAD7,
    568 	KN_E_INSERT			= VK_INSERT,
    569 	KN_E_LEFT			= VK_NUMPAD4,
    570 	KN_E_PGDN   		= VK_NUMPAD3,
    571 	KN_E_PGUP			= VK_NUMPAD9,
    572 	KN_E_RIGHT			= VK_NUMPAD6,
    573 	KN_E_UP				= VK_NUMPAD8,
    574 	KN_F 					= VK_F,
    575 	KN_F1					= VK_F1,
    576 	KN_F10				= VK_F10,
    577 	KN_F11				= VK_F11,
    578 	KN_F12				= VK_F12,
    579 	KN_F2					= VK_F2,
    580 	KN_F3					= VK_F3,
    581 	KN_F4					= VK_F4,
    582 	KN_F5					= VK_F5,
    583 	KN_F6					= VK_F6,
    584 	KN_F7					= VK_F7,
    585 	KN_F8					= VK_F8,
    586 	KN_F9					= VK_F9,
    587 	KN_G 					= VK_G,
    588 	KN_GRAVE 			= VK_NONE_C0,
    589 	KN_H 					= VK_H,
    590 	KN_HOME				= VK_HOME,
    591 	KN_I 					= VK_I,
    592 	KN_INSERT			= VK_INSERT,
    593 	KN_J 					= VK_J,
    594 	KN_K 					= VK_K,
    595 	KN_KEYPAD_ASTERISK= VK_MULTIPLY,
    596 	KN_KEYPAD_MINUS	= VK_SUBTRACT,
    597 	KN_KEYPAD_PLUS		= VK_ADD,
    598 	KN_KEYPAD_RETURN	= VK_RETURN,
    599 	KN_KEYPAD_SLASH	= VK_DIVIDE,
    600 	KN_L 					= VK_L,
    601 	KN_LALT				= VK_MENU,
    602 	KN_LBRACKET			= VK_NONE_DB,
    603 	KN_LCTRL				= VK_CONTROL,
    604 	KN_LEFT				= VK_LEFT,
    605 	KN_LMOUSE			= VK_LBUTTON,
    606 	KN_LSHIFT			= VK_SHIFT,
    607 	KN_M 					= VK_M,
    608 	KN_MINUS 			= VK_NONE_BD,
    609 	KN_N 					= VK_N,
    610 	KN_NUMLOCK			= VK_NUMLOCK,
    611 	KN_O 					= VK_O,
    612 	KN_P 					= VK_P,
    613 	KN_PAUSE				= VK_PAUSE,
    614 	KN_PERIOD 			= VK_NONE_BE,
    615 	KN_PGDN				= VK_NEXT,
    616 	KN_PGUP				= VK_PRIOR,
    617 	KN_PRNTSCRN			= VK_PRINT,
    618 	KN_Q 					= VK_Q,
    619 	KN_R 					= VK_R,
    620 	KN_RALT				= VK_MENU,
    621 	KN_RBRACKET			= VK_NONE_DD,
    622 	KN_RCTRL				= VK_CONTROL,
    623 	KN_RETURN 			= VK_RETURN,
    624 	KN_RIGHT				= VK_RIGHT,
    625 	KN_RMOUSE			= VK_RBUTTON,
    626 	KN_RSHIFT			= VK_SHIFT,
    627 	KN_S 					= VK_S,
    628 	KN_SCROLLLOCK		= VK_SCROLL,
    629 	KN_SEMICOLON 		= VK_NONE_BA,
    630 	KN_SLASH 			= VK_NONE_BF,
    631 	KN_SPACE 			= VK_SPACE,
    632 	KN_SQUOTE 			= VK_NONE_DE,
    633 	KN_T 					= VK_T,
    634 	KN_TAB				= VK_TAB,
    635 	KN_U 					= VK_U,
    636 	KN_UP					= VK_UP,
    637 	KN_UPLEFT			= VK_HOME,
    638 	KN_UPRIGHT			= VK_PRIOR,
    639 	KN_V 					= VK_V,
    640 	KN_W 					= VK_W,
    641 	KN_X 					= VK_X,
    642 	KN_Y 					= VK_Y,
    643 	KN_Z 					= VK_Z,
    644 
    645 	KN_SHIFT_BIT 		= WWKEY_SHIFT_BIT,
    646 	KN_CTRL_BIT  		= WWKEY_CTRL_BIT,
    647 	KN_ALT_BIT   		= WWKEY_ALT_BIT,
    648 	KN_RLSE_BIT  		= WWKEY_RLS_BIT,
    649 	KN_BUTTON    		= WWKEY_BTN_BIT,
    650 } KeyNumType;
    651 
    652 
    653 //extern WWKeyboardClass *_Kbd;
    654 #endif
    655 
    656 #endif