Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | 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_BROADCAST_EVENT(e) ((1 << (e).Type) & CSMASK_Broadcast) 00155 00156 #define CS_IS_COMMAND_EVENT(e) ((1 << (e).Type) & CSMASK_Command) 00157 00158 #define CS_IS_KEYBOARD_EVENT(e) ((1 << (e).Type) & CSMASK_Keyboard) 00159 00160 #define CS_IS_MOUSE_EVENT(e) ((1 << (e).Type) & CSMASK_Mouse) 00161 00162 #define CS_IS_JOYSTICK_EVENT(e) ((1 << (e).Type) & CSMASK_Joystick) 00163 00164 #define CS_IS_INPUT_EVENT(e) ((1 << (e).Type) & CSMASK_Input) 00165 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 00202 csKeyModifierTypeLast 00203 } csKeyModifierType; 00204 00206 typedef enum _csKeyModifierNumType 00207 { 00209 csKeyModifierNumLeft = 0, 00211 csKeyModifierNumRight, 00212 00217 csKeyModifierNumAny = 0x1f 00218 } csKeyModifierNumType; 00219 00221 typedef struct _csKeyModifiers 00222 { 00239 unsigned int modifiers[csKeyModifierTypeLast]; 00240 } csKeyModifiers; 00249 00250 #define CSMASK_SHIFT (1 << csKeyModifierTypeShift) 00251 00252 #define CSMASK_CTRL (1 << csKeyModifierTypeCtrl) 00253 00254 #define CSMASK_ALT (1 << csKeyModifierTypeAlt) 00255 00256 #define CSMASK_ALLSHIFTS (CSMASK_SHIFT | CSMASK_CTRL | CSMASK_ALT) 00257 00259 #define CSMASK_CAPSLOCK (1 << csKeyModifierTypeCapsLock) 00260 00261 #define CSMASK_NUMLOCK (1 << csKeyModifierTypeNumLock) 00262 00263 #define CSMASK_SCROLLLOCK (1 << csKeyModifierTypeScrollLock) 00264 00265 #define CSMASK_ALLMODIFIERS (CSMASK_CAPSLOCK | CSMASK_NUMLOCK | \ 00266 CSMASK_SCROLLLOCK | CSMASK_ALLSHIFTS) 00267 00280 00281 #define CSKEY_ESC 27 00282 00283 #define CSKEY_ENTER '\n' 00284 00285 #define CSKEY_TAB '\t' 00286 00287 #define CSKEY_BACKSPACE '\b' 00288 00289 #define CSKEY_SPACE ' ' 00290 00292 #define CSKEY_SPECIAL_FIRST 0x108000 00293 00294 #define CSKEY_SPECIAL_LAST 0x10fffd 00295 00296 #define CSKEY_SPECIAL(code) (CSKEY_SPECIAL_FIRST + (code)) 00297 00298 #define CSKEY_IS_SPECIAL(rawCode) \ 00299 ((rawCode >= CSKEY_SPECIAL_FIRST) && ((rawCode) <= CSKEY_SPECIAL_LAST)) 00300 00301 #define CSKEY_SPECIAL_NUM(rawCode) ((rawCode) - CSKEY_SPECIAL_FIRST) 00302 00304 #define CSKEY_UP CSKEY_SPECIAL(0x00) 00305 00306 #define CSKEY_DOWN CSKEY_SPECIAL(0x01) 00307 00308 #define CSKEY_LEFT CSKEY_SPECIAL(0x02) 00309 00310 #define CSKEY_RIGHT CSKEY_SPECIAL(0x03) 00311 00312 #define CSKEY_PGUP CSKEY_SPECIAL(0x04) 00313 00314 #define CSKEY_PGDN CSKEY_SPECIAL(0x05) 00315 00316 #define CSKEY_HOME CSKEY_SPECIAL(0x06) 00317 00318 #define CSKEY_END CSKEY_SPECIAL(0x07) 00319 00320 #define CSKEY_INS CSKEY_SPECIAL(0x08) 00321 00322 #define CSKEY_DEL CSKEY_SPECIAL(0x09) 00323 00324 #define CSKEY_CONTEXT CSKEY_SPECIAL(0x0a) 00325 00326 #define CSKEY_PRINTSCREEN CSKEY_SPECIAL(0x0b) 00327 00328 #define CSKEY_PAUSE CSKEY_SPECIAL(0x0c) 00329 00330 #define CSKEY_F1 CSKEY_SPECIAL(0x10) 00331 00332 #define CSKEY_F2 CSKEY_SPECIAL(0x11) 00333 00334 #define CSKEY_F3 CSKEY_SPECIAL(0x12) 00335 00336 #define CSKEY_F4 CSKEY_SPECIAL(0x13) 00337 00338 #define CSKEY_F5 CSKEY_SPECIAL(0x14) 00339 00340 #define CSKEY_F6 CSKEY_SPECIAL(0x15) 00341 00342 #define CSKEY_F7 CSKEY_SPECIAL(0x16) 00343 00344 #define CSKEY_F8 CSKEY_SPECIAL(0x17) 00345 00346 #define CSKEY_F9 CSKEY_SPECIAL(0x18) 00347 00348 #define CSKEY_F10 CSKEY_SPECIAL(0x19) 00349 00350 #define CSKEY_F11 CSKEY_SPECIAL(0x1a) 00351 00352 #define CSKEY_F12 CSKEY_SPECIAL(0x1b) 00353 00355 #define CSKEY_MODIFIER_FIRST 0x2000 00356 00357 #define CSKEY_MODIFIER_LAST 0x3fff 00358 00362 #define CSKEY_MODIFIERTYPE_SHIFT 5 00363 00364 #define CSKEY_MODIFIER(type, num) \ 00365 CSKEY_SPECIAL(CSKEY_MODIFIER_FIRST + ((type) << CSKEY_MODIFIERTYPE_SHIFT) + (num)) 00366 00367 #define CSKEY_IS_MODIFIER(rawCode) \ 00368 (CSKEY_IS_SPECIAL(rawCode) && \ 00369 ((CSKEY_SPECIAL_NUM(rawCode) >= CSKEY_MODIFIER_FIRST) && \ 00370 (CSKEY_SPECIAL_NUM(rawCode) <= CSKEY_MODIFIER_LAST))) 00371 00372 #define CSKEY_MODIFIER_TYPE(rawCode) \ 00373 (((rawCode) - CSKEY_MODIFIER_FIRST - CSKEY_SPECIAL_FIRST) >> \ 00374 CSKEY_MODIFIERTYPE_SHIFT) 00375 00376 #define CSKEY_MODIFIER_NUM(rawCode) \ 00377 (((rawCode) - CSKEY_MODIFIER_FIRST - CSKEY_SPECIAL_FIRST) & \ 00378 ((1 << CSKEY_MODIFIERTYPE_SHIFT) - 1)) 00379 00381 #define CSKEY_MODIFIER_COMPARE(bitmask1, bitmask2) \ 00382 ((bitmask1) == (bitmask2) \ 00383 || ((bitmask1) == (unsigned)(1 << csKeyModifierNumAny) && (bitmask2) != 0) \ 00384 || ((bitmask2) == (unsigned)(1 << csKeyModifierNumAny) && (bitmask1) != 0)) 00385 00387 #define CSKEY_SHIFT_NUM(n) CSKEY_MODIFIER(csKeyModifierTypeShift,n) 00388 00389 #define CSKEY_SHIFT_FIRST CSKEY_SHIFT_NUM(0) 00390 00391 #define CSKEY_SHIFT_LAST CSKEY_SHIFT_NUM(0x1e) 00392 00394 #define CSKEY_SHIFT_LEFT CSKEY_SHIFT_NUM(csKeyModifierNumLeft) 00395 00396 #define CSKEY_SHIFT_RIGHT CSKEY_SHIFT_NUM(csKeyModifierNumRight) 00397 00398 #define CSKEY_SHIFT CSKEY_SHIFT_NUM(csKeyModifierNumAny) 00399 00401 #define CSKEY_CTRL_NUM(n) CSKEY_MODIFIER(csKeyModifierTypeCtrl,n) 00402 00403 #define CSKEY_CTRL_FIRST CSKEY_CTRL_NUM(0) 00404 00405 #define CSKEY_CTRL_LAST CSKEY_CTRL_NUM(0x1e) 00406 00408 #define CSKEY_CTRL_LEFT CSKEY_CTRL_NUM(csKeyModifierNumLeft) 00409 00410 #define CSKEY_CTRL_RIGHT CSKEY_CTRL_NUM(csKeyModifierNumRight) 00411 00412 #define CSKEY_CTRL CSKEY_CTRL_NUM(csKeyModifierNumAny) 00413 00415 #define CSKEY_ALT_NUM(n) CSKEY_MODIFIER(csKeyModifierTypeAlt,n) 00416 00417 #define CSKEY_ALT_FIRST CSKEY_ALT_NUM(0) 00418 00419 #define CSKEY_ALT_LAST CSKEY_ALT_NUM(0x1e) 00420 00422 #define CSKEY_ALT_LEFT CSKEY_ALT_NUM(csKeyModifierNumLeft) 00423 00424 #define CSKEY_ALT_RIGHT CSKEY_ALT_NUM(csKeyModifierNumRight) 00425 00426 #define CSKEY_ALT CSKEY_ALT_NUM(csKeyModifierNumAny) 00427 00429 #define CSKEY_PAD_FLAG 0x4000 00430 00431 #define CSKEY_PAD_KEY(code) CSKEY_SPECIAL((unsigned int)(code) | CSKEY_PAD_FLAG) 00432 00434 #define CSKEY_IS_PAD_KEY(rawCode) (((rawCode) & CSKEY_PAD_FLAG) != 0) 00435 00438 #define CSKEY_PAD_TO_NORMAL(rawCode) ((rawCode) & (~CSKEY_PAD_FLAG)) 00439 00441 #define CSKEY_PAD1 CSKEY_PAD_KEY('1') 00442 00443 #define CSKEY_PAD2 CSKEY_PAD_KEY('2') 00444 00445 #define CSKEY_PAD3 CSKEY_PAD_KEY('3') 00446 00447 #define CSKEY_PAD4 CSKEY_PAD_KEY('4') 00448 00449 #define CSKEY_PAD5 CSKEY_PAD_KEY('5') 00450 00451 #define CSKEY_CENTER CSKEY_PAD5 00452 00453 #define CSKEY_PAD6 CSKEY_PAD_KEY('6') 00454 00455 #define CSKEY_PAD7 CSKEY_PAD_KEY('7') 00456 00457 #define CSKEY_PAD8 CSKEY_PAD_KEY('8') 00458 00459 #define CSKEY_PAD9 CSKEY_PAD_KEY('9') 00460 00461 #define CSKEY_PAD0 CSKEY_PAD_KEY('0') 00462 00463 #define CSKEY_PADDECIMAL CSKEY_PAD_KEY('.') 00464 00465 #define CSKEY_PADDIV CSKEY_PAD_KEY('/') 00466 00467 #define CSKEY_PADMULT CSKEY_PAD_KEY('*') 00468 00469 #define CSKEY_PADMINUS CSKEY_PAD_KEY('-') 00470 00471 #define CSKEY_PADPLUS CSKEY_PAD_KEY('+') 00472 00473 #define CSKEY_PADENTER CSKEY_PAD_KEY('\n') 00474 00479 #define CSKEY_PADNUM \ 00480 CSKEY_MODIFIER(csKeyModifierTypeNumLock,csKeyModifierNumAny) | CSKEY_PAD_FLAG 00481 00482 #define CSKEY_CAPSLOCK \ 00483 CSKEY_MODIFIER(csKeyModifierTypeCapsLock,csKeyModifierNumAny) 00484 00485 #define CSKEY_SCROLLLOCK \ 00486 CSKEY_MODIFIER(csKeyModifierTypeScrollLock,csKeyModifierNumAny) 00487 00489 typedef enum _csKeyCharType 00490 { 00492 csKeyCharTypeNormal = 0, 00494 csKeyCharTypeDead 00495 } csKeyCharType; 00496 00506 00507 #define CSEVTYPE_Keyboard 0x00000001 00508 00509 #define CSEVTYPE_Mouse 0x00000002 00510 00511 #define CSEVTYPE_Joystick 0x00000004 00512 00531 typedef enum _csCommandEventCode 00532 { 00537 cscmdNothing = 0, 00538 00547 cscmdQuit, 00548 00560 cscmdFocusChanged, 00561 00566 cscmdSystemOpen, 00567 00572 cscmdSystemClose, 00573 00581 cscmdContextResize, 00582 00592 cscmdContextClose, 00593 00603 cscmdCommandLineHelp, 00604 00610 cscmdPreProcess, 00611 00616 cscmdProcess, 00617 00623 cscmdPostProcess, 00624 00630 cscmdFinalProcess, 00631 00636 cscmdCanvasHidden, 00637 00642 cscmdCanvasExposed 00643 } csCommandEventCode; 00644 00647 #endif // __CS_IUTIL_EVDEFS_H__
Generated for Crystal Space by doxygen 1.4.4