iutil/evdefs.h
Go to the documentation of this file.00001 /* 00002 Event system related interfaces 00003 Written by Andrew Zabolotny <bit@eltech.ru> 00004 00005 This program is free software; you can redistribute it and/or modify 00006 it under the terms of the GNU General Public License as published by 00007 the Free Software Foundation; either version 2 of the License, or 00008 (at your option) any later version. 00009 00010 This program is distributed in the hope that it will be useful, 00011 but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00013 GNU General Public License for more details. 00014 00015 You should have received a copy of the GNU General Public License 00016 along with this program; if not, write to the Free Software 00017 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 00018 */ 00019 00020 /* 00021 *WARNING* 00022 This file must contain only plain-C code. Do _not_ insert C++ code. 00023 This file is imported by non-C++ system driver implementations. 00024 00025 */ 00026 00035 #ifndef __CS_IUTIL_EVDEFS_H__ 00036 #define __CS_IUTIL_EVDEFS_H__ 00037 00039 // take care not to define more than 32 event types 00040 typedef enum _csEventType 00041 { 00043 csevNothing = 0, 00048 csevKeyboard, 00050 csevMouseMove, 00052 csevMouseDown, 00054 csevMouseUp, 00056 csevMouseClick, 00058 csevMouseDoubleClick, 00060 csevJoystickMove, 00062 csevJoystickDown, 00064 csevJoystickUp, 00066 csevCommand, 00068 csevBroadcast, 00070 csevNetwork, 00072 csevMouseEnter, 00074 csevMouseExit, 00076 csevLostFocus, 00078 csevGainFocus, 00083 csevGroupOff, 00085 csevFrameStart 00086 } csEventType; 00087 00089 typedef enum _csKeyEventType 00090 { 00092 csKeyEventTypeUp = 0, 00094 csKeyEventTypeDown 00095 } csKeyEventType; 00096 00111 #define CSMASK_Nothing (1 << csevNothing) 00112 00117 #define CSMASK_FrameProcess CSMASK_Nothing 00118 00119 #define CSMASK_Keyboard (1 << csevKeyboard) 00120 00121 #define CSMASK_MouseMove (1 << csevMouseMove) 00122 00123 #define CSMASK_MouseDown (1 << csevMouseDown) 00124 00125 #define CSMASK_MouseUp (1 << csevMouseUp) 00126 00127 #define CSMASK_MouseClick (1 << csevMouseClick) 00128 00129 #define CSMASK_MouseDoubleClick (1 << csevMouseDoubleClick) 00130 00131 #define CSMASK_JoystickMove (1 << csevJoystickMove) 00132 00133 #define CSMASK_JoystickDown (1 << csevJoystickDown) 00134 00135 #define CSMASK_JoystickUp (1 << csevJoystickUp) 00136 00137 #define CSMASK_Command (1 << csevCommand) 00138 00139 #define CSMASK_Broadcast (1 << csevBroadcast) 00140 00141 #define CSMASK_Network (1 << csevNetwork) 00142 00144 #define CSMASK_Mouse \ 00145 (CSMASK_MouseMove | CSMASK_MouseDown | CSMASK_MouseUp | CSMASK_MouseClick | \ 00146 CSMASK_MouseDoubleClick) 00147 00148 #define CSMASK_Joystick \ 00149 (CSMASK_JoystickMove | CSMASK_JoystickDown | CSMASK_JoystickUp) 00150 00151 #define CSMASK_Input \ 00152 (CSMASK_Keyboard | CSMASK_Mouse | CSMASK_Joystick) 00153 00154 // Some handy macros 00156 #define CS_IS_KEYBOARD_EVENT(e) ((1 << (e).Type) & CSMASK_Keyboard) 00158 #define CS_IS_MOUSE_EVENT(e) ((1 << (e).Type) & CSMASK_Mouse) 00160 #define CS_IS_JOYSTICK_EVENT(e) ((1 << (e).Type) & CSMASK_Joystick) 00162 #define CS_IS_INPUT_EVENT(e) ((1 << (e).Type) & CSMASK_Input) 00164 #define CS_IS_NETWORK_EVENT(e) ((1 << (e).Type) & CSMASK_Network) 00177 #define CSEF_BROADCAST 0x00000001 00178 00183 00184 typedef enum _csKeyModifierType 00185 { 00187 csKeyModifierTypeShift = 0, 00189 csKeyModifierTypeCtrl, 00191 csKeyModifierTypeAlt, 00193 csKeyModifierTypeCapsLock, 00195 csKeyModifierTypeNumLock, 00197 csKeyModifierTypeScrollLock, 00198 00200 csKeyModifierTypeLast 00201 } csKeyModifierType; 00202 00204 typedef enum _csKeyModifierNumType 00205 { 00207 csKeyModifierNumLeft = 0, 00209 csKeyModifierNumRight, 00210 00215 csKeyModifierNumAny = 0x1f 00216 } csKeyModifierNumType; 00217 00219 typedef struct _csKeyModifiers 00220 { 00237 unsigned int modifiers[csKeyModifierTypeLast]; 00238 } csKeyModifiers; 00247 00248 #define CSMASK_SHIFT (1 << csKeyModifierTypeShift) 00249 00250 #define CSMASK_CTRL (1 << csKeyModifierTypeCtrl) 00251 00252 #define CSMASK_ALT (1 << csKeyModifierTypeAlt) 00253 00254 #define CSMASK_ALLSHIFTS (CSMASK_SHIFT | CSMASK_CTRL | CSMASK_ALT) 00255 00257 #define CSMASK_CAPSLOCK (1 << csKeyModifierTypeCapsLock) 00258 00259 #define CSMASK_NUMLOCK (1 << csKeyModifierTypeNumLock) 00260 00261 #define CSMASK_SCROLLLOCK (1 << csKeyModifierTypeScrollLock) 00262 00263 #define CSMASK_ALLMODIFIERS (CSMASK_CAPSLOCK | CSMASK_NUMLOCK | \ 00264 CSMASK_SCROLLLOCK | CSMASK_ALLSHIFTS) 00265 00278 00279 #define CSKEY_ESC 27 00280 00281 #define CSKEY_ENTER '\n' 00282 00283 #define CSKEY_TAB '\t' 00284 00285 #define CSKEY_BACKSPACE '\b' 00286 00287 #define CSKEY_SPACE ' ' 00288 00290 #define CSKEY_SPECIAL_FIRST 0x108000 00291 00292 #define CSKEY_SPECIAL_LAST 0x10fffd 00293 00294 #define CSKEY_SPECIAL(code) (CSKEY_SPECIAL_FIRST + (code)) 00295 00296 #define CSKEY_IS_SPECIAL(rawCode) \ 00297 ((rawCode >= CSKEY_SPECIAL_FIRST) && (rawCode <= CSKEY_SPECIAL_LAST)) 00298 00299 #define CSKEY_SPECIAL_NUM(rawCode) (rawCode - CSKEY_SPECIAL_FIRST) 00300 00302 #define CSKEY_UP CSKEY_SPECIAL(0x00) 00303 00304 #define CSKEY_DOWN CSKEY_SPECIAL(0x01) 00305 00306 #define CSKEY_LEFT CSKEY_SPECIAL(0x02) 00307 00308 #define CSKEY_RIGHT CSKEY_SPECIAL(0x03) 00309 00310 #define CSKEY_PGUP CSKEY_SPECIAL(0x04) 00311 00312 #define CSKEY_PGDN CSKEY_SPECIAL(0x05) 00313 00314 #define CSKEY_HOME CSKEY_SPECIAL(0x06) 00315 00316 #define CSKEY_END CSKEY_SPECIAL(0x07) 00317 00318 #define CSKEY_INS CSKEY_SPECIAL(0x08) 00319 00320 #define CSKEY_DEL CSKEY_SPECIAL(0x09) 00321 00322 #define CSKEY_CONTEXT CSKEY_SPECIAL(0x0a) 00323 00324 #define CSKEY_PRINTSCREEN CSKEY_SPECIAL(0x0b) 00325 00326 #define CSKEY_PAUSE CSKEY_SPECIAL(0x0c) 00327 00328 #define CSKEY_F1 CSKEY_SPECIAL(0x10) 00329 00330 #define CSKEY_F2 CSKEY_SPECIAL(0x11) 00331 00332 #define CSKEY_F3 CSKEY_SPECIAL(0x12) 00333 00334 #define CSKEY_F4 CSKEY_SPECIAL(0x13) 00335 00336 #define CSKEY_F5 CSKEY_SPECIAL(0x14) 00337 00338 #define CSKEY_F6 CSKEY_SPECIAL(0x15) 00339 00340 #define CSKEY_F7 CSKEY_SPECIAL(0x16) 00341 00342 #define CSKEY_F8 CSKEY_SPECIAL(0x17) 00343 00344 #define CSKEY_F9 CSKEY_SPECIAL(0x18) 00345 00346 #define CSKEY_F10 CSKEY_SPECIAL(0x19) 00347 00348 #define CSKEY_F11 CSKEY_SPECIAL(0x1a) 00349 00350 #define CSKEY_F12 CSKEY_SPECIAL(0x1b) 00351 00353 #define CSKEY_MODIFIER_FIRST 0x2000 00354 00355 #define CSKEY_MODIFIER_LAST 0x3fff 00356 00360 #define CSKEY_MODIFIERTYPE_SHIFT 5 00361 00362 #define CSKEY_MODIFIER(type, num) \ 00363 CSKEY_SPECIAL(CSKEY_MODIFIER_FIRST + (type << CSKEY_MODIFIERTYPE_SHIFT) + num) 00364 00365 #define CSKEY_IS_MODIFIER(rawCode) \ 00366 (CSKEY_IS_SPECIAL(rawCode) && \ 00367 ((CSKEY_SPECIAL_NUM(rawCode) >= CSKEY_MODIFIER_FIRST) && \ 00368 (CSKEY_SPECIAL_NUM(rawCode) <= CSKEY_MODIFIER_LAST))) 00369 00370 #define CSKEY_MODIFIER_TYPE(rawCode) \ 00371 ((rawCode - CSKEY_MODIFIER_FIRST - CSKEY_SPECIAL_FIRST) >> \ 00372 CSKEY_MODIFIERTYPE_SHIFT) 00373 00374 #define CSKEY_MODIFIER_NUM(rawCode) \ 00375 ((rawCode - CSKEY_MODIFIER_FIRST - CSKEY_SPECIAL_FIRST) & \ 00376 ((1 << CSKEY_MODIFIERTYPE_SHIFT) - 1)) 00377 00379 #define CSKEY_SHIFT_NUM(n) CSKEY_MODIFIER(csKeyModifierTypeShift,n) 00380 00381 #define CSKEY_SHIFT_FIRST CSKEY_SHIFT_NUM(0) 00382 00383 #define CSKEY_SHIFT_LAST CSKEY_SHIFT_NUM(0x1e) 00384 00386 #define CSKEY_SHIFT_LEFT CSKEY_SHIFT_NUM(csKeyModifierNumLeft) 00387 00388 #define CSKEY_SHIFT_RIGHT CSKEY_SHIFT_NUM(csKeyModifierNumRight) 00389 00390 #define CSKEY_SHIFT CSKEY_SHIFT_NUM(csKeyModifierNumAny) 00391 00393 #define CSKEY_CTRL_NUM(n) CSKEY_MODIFIER(csKeyModifierTypeCtrl,n) 00394 00395 #define CSKEY_CTRL_FIRST CSKEY_CTRL_NUM(0) 00396 00397 #define CSKEY_CTRL_LAST CSKEY_CTRL_NUM(0x1e) 00398 00400 #define CSKEY_CTRL_LEFT CSKEY_CTRL_NUM(csKeyModifierNumLeft) 00401 00402 #define CSKEY_CTRL_RIGHT CSKEY_CTRL_NUM(csKeyModifierNumRight) 00403 00404 #define CSKEY_CTRL CSKEY_CTRL_NUM(csKeyModifierNumAny) 00405 00407 #define CSKEY_ALT_NUM(n) CSKEY_MODIFIER(csKeyModifierTypeAlt,n) 00408 00409 #define CSKEY_ALT_FIRST CSKEY_ALT_NUM(0) 00410 00411 #define CSKEY_ALT_LAST CSKEY_ALT_NUM(0x1e) 00412 00414 #define CSKEY_ALT_LEFT CSKEY_ALT_NUM(csKeyModifierNumLeft) 00415 00416 #define CSKEY_ALT_RIGHT CSKEY_ALT_NUM(csKeyModifierNumRight) 00417 00418 #define CSKEY_ALT CSKEY_ALT_NUM(csKeyModifierNumAny) 00419 00421 #define CSKEY_PAD_FLAG 0x4000 00422 00423 #define CSKEY_PAD_KEY(code) CSKEY_SPECIAL((unsigned int)code | CSKEY_PAD_FLAG) 00424 00426 #define CSKEY_IS_PAD_KEY(rawCode) ((rawCode & CSKEY_PAD_FLAG) != 0) 00427 00430 #define CSKEY_PAD_TO_NORMAL(rawCode) (rawCode & (~CSKEY_PAD_FLAG)) 00431 00433 #define CSKEY_PAD1 CSKEY_PAD_KEY('1') 00434 00435 #define CSKEY_PAD2 CSKEY_PAD_KEY('2') 00436 00437 #define CSKEY_PAD3 CSKEY_PAD_KEY('3') 00438 00439 #define CSKEY_PAD4 CSKEY_PAD_KEY('4') 00440 00441 #define CSKEY_PAD5 CSKEY_PAD_KEY('5') 00442 00443 #define CSKEY_CENTER CSKEY_PAD5 00444 00445 #define CSKEY_PAD6 CSKEY_PAD_KEY('6') 00446 00447 #define CSKEY_PAD7 CSKEY_PAD_KEY('7') 00448 00449 #define CSKEY_PAD8 CSKEY_PAD_KEY('8') 00450 00451 #define CSKEY_PAD9 CSKEY_PAD_KEY('9') 00452 00453 #define CSKEY_PAD0 CSKEY_PAD_KEY('0') 00454 00455 #define CSKEY_PADDECIMAL CSKEY_PAD_KEY('.') 00456 00457 #define CSKEY_PADDIV CSKEY_PAD_KEY('/') 00458 00459 #define CSKEY_PADMULT CSKEY_PAD_KEY('*') 00460 00461 #define CSKEY_PADMINUS CSKEY_PAD_KEY('-') 00462 00463 #define CSKEY_PADPLUS CSKEY_PAD_KEY('+') 00464 00465 #define CSKEY_PADENTER CSKEY_PAD_KEY('\n') 00466 00471 #define CSKEY_PADNUM \ 00472 CSKEY_MODIFIER(csKeyModifierTypeNumLock,csKeyModifierNumAny) | CSKEY_PAD_FLAG 00473 00474 #define CSKEY_CAPSLOCK \ 00475 CSKEY_MODIFIER(csKeyModifierTypeCapsLock,csKeyModifierNumAny) 00476 00477 #define CSKEY_SCROLLLOCK \ 00478 CSKEY_MODIFIER(csKeyModifierTypeScrollLock,csKeyModifierNumAny) 00479 00481 typedef enum _csKeyCharType 00482 { 00484 csKeyCharTypeNormal = 0, 00486 csKeyCharTypeDead 00487 } csKeyCharType; 00488 00498 00499 #define CSEVTYPE_Keyboard 0x00000001 00500 00501 #define CSEVTYPE_Mouse 0x00000002 00502 00503 #define CSEVTYPE_Joystick 0x00000004 00504 00524 typedef enum _csCommandEventCode 00525 { 00530 cscmdNothing = 0, 00531 00540 cscmdQuit, 00541 00553 cscmdFocusChanged, 00554 00559 cscmdSystemOpen, 00560 00565 cscmdSystemClose, 00566 00574 cscmdContextResize, 00575 00585 cscmdContextClose, 00586 00596 cscmdCommandLineHelp, 00597 00603 cscmdPreProcess, 00604 00609 cscmdProcess, 00610 00616 cscmdPostProcess, 00617 00623 cscmdFinalProcess, 00624 00629 cscmdCanvasHidden, 00630 00635 cscmdCanvasExposed 00636 } csCommandEventCode; 00637 00640 #endif // __CS_IUTIL_EVDEFS_H__
Generated for Crystal Space by doxygen 1.2.18