Main Page | Modules | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages
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 library is free software; you can redistribute it and/or 00006 modify it under the terms of the GNU Library General Public 00007 License as published by the Free Software Foundation; either 00008 version 2 of the License, or (at your option) any later version. 00009 00010 This library 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 GNU 00013 Library General Public License for more details. 00014 00015 You should have received a copy of the GNU Library General Public 00016 License along with this library; if not, write to the Free 00017 Software 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, 00068 csevCommand, 00070 csevBroadcast, 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 00142 #define CSMASK_Mouse \ 00143 (CSMASK_MouseMove | CSMASK_MouseDown | CSMASK_MouseUp | CSMASK_MouseClick | \ 00144 CSMASK_MouseDoubleClick) 00145 00146 #define CSMASK_Joystick \ 00147 (CSMASK_JoystickMove | CSMASK_JoystickDown | CSMASK_JoystickUp) 00148 00149 #define CSMASK_Input \ 00150 (CSMASK_Keyboard | CSMASK_Mouse | CSMASK_Joystick) 00151 00152 // Some handy macros 00154 #define CS_IS_KEYBOARD_EVENT(e) ((1 << (e).Type) & CSMASK_Keyboard) 00155 00156 #define CS_IS_MOUSE_EVENT(e) ((1 << (e).Type) & CSMASK_Mouse) 00157 00158 #define CS_IS_JOYSTICK_EVENT(e) ((1 << (e).Type) & CSMASK_Joystick) 00159 00160 #define CS_IS_INPUT_EVENT(e) ((1 << (e).Type) & CSMASK_Input) 00161 00173 #define CSEF_BROADCAST 0x00000001 00174 00179 00180 typedef enum _csKeyModifierType 00181 { 00183 csKeyModifierTypeShift = 0, 00185 csKeyModifierTypeCtrl, 00187 csKeyModifierTypeAlt, 00189 csKeyModifierTypeCapsLock, 00191 csKeyModifierTypeNumLock, 00193 csKeyModifierTypeScrollLock, 00194 00198 csKeyModifierTypeLast 00199 } csKeyModifierType; 00200 00202 typedef enum _csKeyModifierNumType 00203 { 00205 csKeyModifierNumLeft = 0, 00207 csKeyModifierNumRight, 00208 00213 csKeyModifierNumAny = 0x1f 00214 } csKeyModifierNumType; 00215 00217 typedef struct _csKeyModifiers 00218 { 00235 unsigned int modifiers[csKeyModifierTypeLast]; 00236 } csKeyModifiers; 00245 00246 #define CSMASK_SHIFT (1 << csKeyModifierTypeShift) 00247 00248 #define CSMASK_CTRL (1 << csKeyModifierTypeCtrl) 00249 00250 #define CSMASK_ALT (1 << csKeyModifierTypeAlt) 00251 00252 #define CSMASK_ALLSHIFTS (CSMASK_SHIFT | CSMASK_CTRL | CSMASK_ALT) 00253 00255 #define CSMASK_CAPSLOCK (1 << csKeyModifierTypeCapsLock) 00256 00257 #define CSMASK_NUMLOCK (1 << csKeyModifierTypeNumLock) 00258 00259 #define CSMASK_SCROLLLOCK (1 << csKeyModifierTypeScrollLock) 00260 00261 #define CSMASK_ALLMODIFIERS (CSMASK_CAPSLOCK | CSMASK_NUMLOCK | \ 00262 CSMASK_SCROLLLOCK | CSMASK_ALLSHIFTS) 00263 00276 00277 #define CSKEY_ESC 27 00278 00279 #define CSKEY_ENTER '\n' 00280 00281 #define CSKEY_TAB '\t' 00282 00283 #define CSKEY_BACKSPACE '\b' 00284 00285 #define CSKEY_SPACE ' ' 00286 00288 #define CSKEY_SPECIAL_FIRST 0x108000 00289 00290 #define CSKEY_SPECIAL_LAST 0x10fffd 00291 00292 #define CSKEY_SPECIAL(code) (CSKEY_SPECIAL_FIRST + (code)) 00293 00294 #define CSKEY_IS_SPECIAL(rawCode) \ 00295 ((rawCode >= CSKEY_SPECIAL_FIRST) && ((rawCode) <= CSKEY_SPECIAL_LAST)) 00296 00297 #define CSKEY_SPECIAL_NUM(rawCode) ((rawCode) - CSKEY_SPECIAL_FIRST) 00298 00300 #define CSKEY_UP CSKEY_SPECIAL(0x00) 00301 00302 #define CSKEY_DOWN CSKEY_SPECIAL(0x01) 00303 00304 #define CSKEY_LEFT CSKEY_SPECIAL(0x02) 00305 00306 #define CSKEY_RIGHT CSKEY_SPECIAL(0x03) 00307 00308 #define CSKEY_PGUP CSKEY_SPECIAL(0x04) 00309 00310 #define CSKEY_PGDN CSKEY_SPECIAL(0x05) 00311 00312 #define CSKEY_HOME CSKEY_SPECIAL(0x06) 00313 00314 #define CSKEY_END CSKEY_SPECIAL(0x07) 00315 00316 #define CSKEY_INS CSKEY_SPECIAL(0x08) 00317 00318 #define CSKEY_DEL CSKEY_SPECIAL(0x09) 00319 00320 #define CSKEY_CONTEXT CSKEY_SPECIAL(0x0a) 00321 00322 #define CSKEY_PRINTSCREEN CSKEY_SPECIAL(0x0b) 00323 00324 #define CSKEY_PAUSE CSKEY_SPECIAL(0x0c) 00325 00326 #define CSKEY_F1 CSKEY_SPECIAL(0x10) 00327 00328 #define CSKEY_F2 CSKEY_SPECIAL(0x11) 00329 00330 #define CSKEY_F3 CSKEY_SPECIAL(0x12) 00331 00332 #define CSKEY_F4 CSKEY_SPECIAL(0x13) 00333 00334 #define CSKEY_F5 CSKEY_SPECIAL(0x14) 00335 00336 #define CSKEY_F6 CSKEY_SPECIAL(0x15) 00337 00338 #define CSKEY_F7 CSKEY_SPECIAL(0x16) 00339 00340 #define CSKEY_F8 CSKEY_SPECIAL(0x17) 00341 00342 #define CSKEY_F9 CSKEY_SPECIAL(0x18) 00343 00344 #define CSKEY_F10 CSKEY_SPECIAL(0x19) 00345 00346 #define CSKEY_F11 CSKEY_SPECIAL(0x1a) 00347 00348 #define CSKEY_F12 CSKEY_SPECIAL(0x1b) 00349 00351 #define CSKEY_MODIFIER_FIRST 0x2000 00352 00353 #define CSKEY_MODIFIER_LAST 0x3fff 00354 00358 #define CSKEY_MODIFIERTYPE_SHIFT 5 00359 00360 #define CSKEY_MODIFIER(type, num) \ 00361 CSKEY_SPECIAL(CSKEY_MODIFIER_FIRST + ((type) << CSKEY_MODIFIERTYPE_SHIFT) + (num)) 00362 00363 #define CSKEY_IS_MODIFIER(rawCode) \ 00364 (CSKEY_IS_SPECIAL(rawCode) && \ 00365 ((CSKEY_SPECIAL_NUM(rawCode) >= CSKEY_MODIFIER_FIRST) && \ 00366 (CSKEY_SPECIAL_NUM(rawCode) <= CSKEY_MODIFIER_LAST))) 00367 00368 #define CSKEY_MODIFIER_TYPE(rawCode) \ 00369 (((rawCode) - CSKEY_MODIFIER_FIRST - CSKEY_SPECIAL_FIRST) >> \ 00370 CSKEY_MODIFIERTYPE_SHIFT) 00371 00372 #define CSKEY_MODIFIER_NUM(rawCode) \ 00373 (((rawCode) - CSKEY_MODIFIER_FIRST - CSKEY_SPECIAL_FIRST) & \ 00374 ((1 << CSKEY_MODIFIERTYPE_SHIFT) - 1)) 00375 00377 #define CSKEY_MODIFIER_COMPARE(bitmask1, bitmask2) \ 00378 ((bitmask1) == (bitmask2) \ 00379 || ((bitmask1) == (unsigned)(1 << csKeyModifierNumAny) && (bitmask2) != 0) \ 00380 || ((bitmask2) == (unsigned)(1 << csKeyModifierNumAny) && (bitmask1) != 0)) 00381 00383 #define CSKEY_SHIFT_NUM(n) CSKEY_MODIFIER(csKeyModifierTypeShift,n) 00384 00385 #define CSKEY_SHIFT_FIRST CSKEY_SHIFT_NUM(0) 00386 00387 #define CSKEY_SHIFT_LAST CSKEY_SHIFT_NUM(0x1e) 00388 00390 #define CSKEY_SHIFT_LEFT CSKEY_SHIFT_NUM(csKeyModifierNumLeft) 00391 00392 #define CSKEY_SHIFT_RIGHT CSKEY_SHIFT_NUM(csKeyModifierNumRight) 00393 00394 #define CSKEY_SHIFT CSKEY_SHIFT_NUM(csKeyModifierNumAny) 00395 00397 #define CSKEY_CTRL_NUM(n) CSKEY_MODIFIER(csKeyModifierTypeCtrl,n) 00398 00399 #define CSKEY_CTRL_FIRST CSKEY_CTRL_NUM(0) 00400 00401 #define CSKEY_CTRL_LAST CSKEY_CTRL_NUM(0x1e) 00402 00404 #define CSKEY_CTRL_LEFT CSKEY_CTRL_NUM(csKeyModifierNumLeft) 00405 00406 #define CSKEY_CTRL_RIGHT CSKEY_CTRL_NUM(csKeyModifierNumRight) 00407 00408 #define CSKEY_CTRL CSKEY_CTRL_NUM(csKeyModifierNumAny) 00409 00411 #define CSKEY_ALT_NUM(n) CSKEY_MODIFIER(csKeyModifierTypeAlt,n) 00412 00413 #define CSKEY_ALT_FIRST CSKEY_ALT_NUM(0) 00414 00415 #define CSKEY_ALT_LAST CSKEY_ALT_NUM(0x1e) 00416 00418 #define CSKEY_ALT_LEFT CSKEY_ALT_NUM(csKeyModifierNumLeft) 00419 00420 #define CSKEY_ALT_RIGHT CSKEY_ALT_NUM(csKeyModifierNumRight) 00421 00422 #define CSKEY_ALT CSKEY_ALT_NUM(csKeyModifierNumAny) 00423 00425 #define CSKEY_PAD_FLAG 0x4000 00426 00427 #define CSKEY_PAD_KEY(code) CSKEY_SPECIAL((unsigned int)(code) | CSKEY_PAD_FLAG) 00428 00430 #define CSKEY_IS_PAD_KEY(rawCode) (((rawCode) & CSKEY_PAD_FLAG) != 0) 00431 00434 #define CSKEY_PAD_TO_NORMAL(rawCode) ((rawCode) & (~CSKEY_PAD_FLAG)) 00435 00437 #define CSKEY_PAD1 CSKEY_PAD_KEY('1') 00438 00439 #define CSKEY_PAD2 CSKEY_PAD_KEY('2') 00440 00441 #define CSKEY_PAD3 CSKEY_PAD_KEY('3') 00442 00443 #define CSKEY_PAD4 CSKEY_PAD_KEY('4') 00444 00445 #define CSKEY_PAD5 CSKEY_PAD_KEY('5') 00446 00447 #define CSKEY_CENTER CSKEY_PAD5 00448 00449 #define CSKEY_PAD6 CSKEY_PAD_KEY('6') 00450 00451 #define CSKEY_PAD7 CSKEY_PAD_KEY('7') 00452 00453 #define CSKEY_PAD8 CSKEY_PAD_KEY('8') 00454 00455 #define CSKEY_PAD9 CSKEY_PAD_KEY('9') 00456 00457 #define CSKEY_PAD0 CSKEY_PAD_KEY('0') 00458 00459 #define CSKEY_PADDECIMAL CSKEY_PAD_KEY('.') 00460 00461 #define CSKEY_PADDIV CSKEY_PAD_KEY('/') 00462 00463 #define CSKEY_PADMULT CSKEY_PAD_KEY('*') 00464 00465 #define CSKEY_PADMINUS CSKEY_PAD_KEY('-') 00466 00467 #define CSKEY_PADPLUS CSKEY_PAD_KEY('+') 00468 00469 #define CSKEY_PADENTER CSKEY_PAD_KEY('\n') 00470 00475 #define CSKEY_PADNUM \ 00476 CSKEY_MODIFIER(csKeyModifierTypeNumLock,csKeyModifierNumAny) | CSKEY_PAD_FLAG 00477 00478 #define CSKEY_CAPSLOCK \ 00479 CSKEY_MODIFIER(csKeyModifierTypeCapsLock,csKeyModifierNumAny) 00480 00481 #define CSKEY_SCROLLLOCK \ 00482 CSKEY_MODIFIER(csKeyModifierTypeScrollLock,csKeyModifierNumAny) 00483 00485 typedef enum _csKeyCharType 00486 { 00488 csKeyCharTypeNormal = 0, 00490 csKeyCharTypeDead 00491 } csKeyCharType; 00492 00502 00503 #define CSEVTYPE_Keyboard 0x00000001 00504 00505 #define CSEVTYPE_Mouse 0x00000002 00506 00507 #define CSEVTYPE_Joystick 0x00000004 00508 00528 typedef enum _csCommandEventCode 00529 { 00534 cscmdNothing = 0, 00535 00544 cscmdQuit, 00545 00557 cscmdFocusChanged, 00558 00563 cscmdSystemOpen, 00564 00569 cscmdSystemClose, 00570 00578 cscmdContextResize, 00579 00589 cscmdContextClose, 00590 00600 cscmdCommandLineHelp, 00601 00607 cscmdPreProcess, 00608 00613 cscmdProcess, 00614 00620 cscmdPostProcess, 00621 00627 cscmdFinalProcess, 00628 00633 cscmdCanvasHidden, 00634 00639 cscmdCanvasExposed 00640 } csCommandEventCode; 00641 00644 #endif // __CS_IUTIL_EVDEFS_H__
Generated for Crystal Space by doxygen 1.3.9.1