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