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 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, 00066 csevCommand, 00068 csevBroadcast, 00070 csevMouseEnter, 00072 csevMouseExit, 00074 csevLostFocus, 00076 csevGainFocus, 00081 csevGroupOff, 00083 csevFrameStart 00084 } csEventType; 00085 00087 typedef enum _csKeyEventType 00088 { 00090 csKeyEventTypeUp = 0, 00092 csKeyEventTypeDown 00093 } csKeyEventType; 00094 00109 #define CSMASK_Nothing (1 << csevNothing) 00110 00115 #define CSMASK_FrameProcess CSMASK_Nothing 00116 00117 #define CSMASK_Keyboard (1 << csevKeyboard) 00118 00119 #define CSMASK_MouseMove (1 << csevMouseMove) 00120 00121 #define CSMASK_MouseDown (1 << csevMouseDown) 00122 00123 #define CSMASK_MouseUp (1 << csevMouseUp) 00124 00125 #define CSMASK_MouseClick (1 << csevMouseClick) 00126 00127 #define CSMASK_MouseDoubleClick (1 << csevMouseDoubleClick) 00128 00129 #define CSMASK_JoystickMove (1 << csevJoystickMove) 00130 00131 #define CSMASK_JoystickDown (1 << csevJoystickDown) 00132 00133 #define CSMASK_JoystickUp (1 << csevJoystickUp) 00134 00135 #define CSMASK_Command (1 << csevCommand) 00136 00137 #define CSMASK_Broadcast (1 << csevBroadcast) 00138 00140 #define CSMASK_Mouse \ 00141 (CSMASK_MouseMove | CSMASK_MouseDown | CSMASK_MouseUp | CSMASK_MouseClick | \ 00142 CSMASK_MouseDoubleClick) 00143 00144 #define CSMASK_Joystick \ 00145 (CSMASK_JoystickMove | CSMASK_JoystickDown | CSMASK_JoystickUp) 00146 00147 #define CSMASK_Input \ 00148 (CSMASK_Keyboard | CSMASK_Mouse | CSMASK_Joystick) 00149 00150 // Some handy macros 00152 #define CS_IS_KEYBOARD_EVENT(e) ((1 << (e).Type) & CSMASK_Keyboard) 00154 #define CS_IS_MOUSE_EVENT(e) ((1 << (e).Type) & CSMASK_Mouse) 00156 #define CS_IS_JOYSTICK_EVENT(e) ((1 << (e).Type) & CSMASK_Joystick) 00158 #define CS_IS_INPUT_EVENT(e) ((1 << (e).Type) & CSMASK_Input) 00171 #define CSEF_BROADCAST 0x00000001 00172 00177 00178 typedef enum _csKeyModifierType 00179 { 00181 csKeyModifierTypeShift = 0, 00183 csKeyModifierTypeCtrl, 00185 csKeyModifierTypeAlt, 00187 csKeyModifierTypeCapsLock, 00189 csKeyModifierTypeNumLock, 00191 csKeyModifierTypeScrollLock, 00192 00194 csKeyModifierTypeLast 00195 } csKeyModifierType; 00196 00198 typedef enum _csKeyModifierNumType 00199 { 00201 csKeyModifierNumLeft = 0, 00203 csKeyModifierNumRight, 00204 00209 csKeyModifierNumAny = 0x1f 00210 } csKeyModifierNumType; 00211 00213 typedef struct _csKeyModifiers 00214 { 00231 unsigned int modifiers[csKeyModifierTypeLast]; 00232 } csKeyModifiers; 00241 00242 #define CSMASK_SHIFT (1 << csKeyModifierTypeShift) 00243 00244 #define CSMASK_CTRL (1 << csKeyModifierTypeCtrl) 00245 00246 #define CSMASK_ALT (1 << csKeyModifierTypeAlt) 00247 00248 #define CSMASK_ALLSHIFTS (CSMASK_SHIFT | CSMASK_CTRL | CSMASK_ALT) 00249 00251 #define CSMASK_CAPSLOCK (1 << csKeyModifierTypeCapsLock) 00252 00253 #define CSMASK_NUMLOCK (1 << csKeyModifierTypeNumLock) 00254 00255 #define CSMASK_SCROLLLOCK (1 << csKeyModifierTypeScrollLock) 00256 00257 #define CSMASK_ALLMODIFIERS (CSMASK_CAPSLOCK | CSMASK_NUMLOCK | \ 00258 CSMASK_SCROLLLOCK | CSMASK_ALLSHIFTS) 00259 00272 00273 #define CSKEY_ESC 27 00274 00275 #define CSKEY_ENTER '\n' 00276 00277 #define CSKEY_TAB '\t' 00278 00279 #define CSKEY_BACKSPACE '\b' 00280 00281 #define CSKEY_SPACE ' ' 00282 00284 #define CSKEY_SPECIAL_FIRST 0x108000 00285 00286 #define CSKEY_SPECIAL_LAST 0x10fffd 00287 00288 #define CSKEY_SPECIAL(code) (CSKEY_SPECIAL_FIRST + (code)) 00289 00290 #define CSKEY_IS_SPECIAL(rawCode) \ 00291 ((rawCode >= CSKEY_SPECIAL_FIRST) && (rawCode <= CSKEY_SPECIAL_LAST)) 00292 00293 #define CSKEY_SPECIAL_NUM(rawCode) (rawCode - CSKEY_SPECIAL_FIRST) 00294 00296 #define CSKEY_UP CSKEY_SPECIAL(0x00) 00297 00298 #define CSKEY_DOWN CSKEY_SPECIAL(0x01) 00299 00300 #define CSKEY_LEFT CSKEY_SPECIAL(0x02) 00301 00302 #define CSKEY_RIGHT CSKEY_SPECIAL(0x03) 00303 00304 #define CSKEY_PGUP CSKEY_SPECIAL(0x04) 00305 00306 #define CSKEY_PGDN CSKEY_SPECIAL(0x05) 00307 00308 #define CSKEY_HOME CSKEY_SPECIAL(0x06) 00309 00310 #define CSKEY_END CSKEY_SPECIAL(0x07) 00311 00312 #define CSKEY_INS CSKEY_SPECIAL(0x08) 00313 00314 #define CSKEY_DEL CSKEY_SPECIAL(0x09) 00315 00316 #define CSKEY_CONTEXT CSKEY_SPECIAL(0x0a) 00317 00318 #define CSKEY_PRINTSCREEN CSKEY_SPECIAL(0x0b) 00319 00320 #define CSKEY_PAUSE CSKEY_SPECIAL(0x0c) 00321 00322 #define CSKEY_F1 CSKEY_SPECIAL(0x10) 00323 00324 #define CSKEY_F2 CSKEY_SPECIAL(0x11) 00325 00326 #define CSKEY_F3 CSKEY_SPECIAL(0x12) 00327 00328 #define CSKEY_F4 CSKEY_SPECIAL(0x13) 00329 00330 #define CSKEY_F5 CSKEY_SPECIAL(0x14) 00331 00332 #define CSKEY_F6 CSKEY_SPECIAL(0x15) 00333 00334 #define CSKEY_F7 CSKEY_SPECIAL(0x16) 00335 00336 #define CSKEY_F8 CSKEY_SPECIAL(0x17) 00337 00338 #define CSKEY_F9 CSKEY_SPECIAL(0x18) 00339 00340 #define CSKEY_F10 CSKEY_SPECIAL(0x19) 00341 00342 #define CSKEY_F11 CSKEY_SPECIAL(0x1a) 00343 00344 #define CSKEY_F12 CSKEY_SPECIAL(0x1b) 00345 00347 #define CSKEY_MODIFIER_FIRST 0x2000 00348 00349 #define CSKEY_MODIFIER_LAST 0x3fff 00350 00354 #define CSKEY_MODIFIERTYPE_SHIFT 5 00355 00356 #define CSKEY_MODIFIER(type, num) \ 00357 CSKEY_SPECIAL(CSKEY_MODIFIER_FIRST + (type << CSKEY_MODIFIERTYPE_SHIFT) + num) 00358 00359 #define CSKEY_IS_MODIFIER(rawCode) \ 00360 (CSKEY_IS_SPECIAL(rawCode) && \ 00361 ((CSKEY_SPECIAL_NUM(rawCode) >= CSKEY_MODIFIER_FIRST) && \ 00362 (CSKEY_SPECIAL_NUM(rawCode) <= CSKEY_MODIFIER_LAST))) 00363 00364 #define CSKEY_MODIFIER_TYPE(rawCode) \ 00365 ((rawCode - CSKEY_MODIFIER_FIRST - CSKEY_SPECIAL_FIRST) >> \ 00366 CSKEY_MODIFIERTYPE_SHIFT) 00367 00368 #define CSKEY_MODIFIER_NUM(rawCode) \ 00369 ((rawCode - CSKEY_MODIFIER_FIRST - CSKEY_SPECIAL_FIRST) & \ 00370 ((1 << CSKEY_MODIFIERTYPE_SHIFT) - 1)) 00371 00373 #define CSKEY_SHIFT_NUM(n) CSKEY_MODIFIER(csKeyModifierTypeShift,n) 00374 00375 #define CSKEY_SHIFT_FIRST CSKEY_SHIFT_NUM(0) 00376 00377 #define CSKEY_SHIFT_LAST CSKEY_SHIFT_NUM(0x1e) 00378 00380 #define CSKEY_SHIFT_LEFT CSKEY_SHIFT_NUM(csKeyModifierNumLeft) 00381 00382 #define CSKEY_SHIFT_RIGHT CSKEY_SHIFT_NUM(csKeyModifierNumRight) 00383 00384 #define CSKEY_SHIFT CSKEY_SHIFT_NUM(csKeyModifierNumAny) 00385 00387 #define CSKEY_CTRL_NUM(n) CSKEY_MODIFIER(csKeyModifierTypeCtrl,n) 00388 00389 #define CSKEY_CTRL_FIRST CSKEY_CTRL_NUM(0) 00390 00391 #define CSKEY_CTRL_LAST CSKEY_CTRL_NUM(0x1e) 00392 00394 #define CSKEY_CTRL_LEFT CSKEY_CTRL_NUM(csKeyModifierNumLeft) 00395 00396 #define CSKEY_CTRL_RIGHT CSKEY_CTRL_NUM(csKeyModifierNumRight) 00397 00398 #define CSKEY_CTRL CSKEY_CTRL_NUM(csKeyModifierNumAny) 00399 00401 #define CSKEY_ALT_NUM(n) CSKEY_MODIFIER(csKeyModifierTypeAlt,n) 00402 00403 #define CSKEY_ALT_FIRST CSKEY_ALT_NUM(0) 00404 00405 #define CSKEY_ALT_LAST CSKEY_ALT_NUM(0x1e) 00406 00408 #define CSKEY_ALT_LEFT CSKEY_ALT_NUM(csKeyModifierNumLeft) 00409 00410 #define CSKEY_ALT_RIGHT CSKEY_ALT_NUM(csKeyModifierNumRight) 00411 00412 #define CSKEY_ALT CSKEY_ALT_NUM(csKeyModifierNumAny) 00413 00415 #define CSKEY_PAD_FLAG 0x4000 00416 00417 #define CSKEY_PAD_KEY(code) CSKEY_SPECIAL((unsigned int)code | CSKEY_PAD_FLAG) 00418 00420 #define CSKEY_IS_PAD_KEY(rawCode) ((rawCode & CSKEY_PAD_FLAG) != 0) 00421 00424 #define CSKEY_PAD_TO_NORMAL(rawCode) (rawCode & (~CSKEY_PAD_FLAG)) 00425 00427 #define CSKEY_PAD1 CSKEY_PAD_KEY('1') 00428 00429 #define CSKEY_PAD2 CSKEY_PAD_KEY('2') 00430 00431 #define CSKEY_PAD3 CSKEY_PAD_KEY('3') 00432 00433 #define CSKEY_PAD4 CSKEY_PAD_KEY('4') 00434 00435 #define CSKEY_PAD5 CSKEY_PAD_KEY('5') 00436 00437 #define CSKEY_CENTER CSKEY_PAD5 00438 00439 #define CSKEY_PAD6 CSKEY_PAD_KEY('6') 00440 00441 #define CSKEY_PAD7 CSKEY_PAD_KEY('7') 00442 00443 #define CSKEY_PAD8 CSKEY_PAD_KEY('8') 00444 00445 #define CSKEY_PAD9 CSKEY_PAD_KEY('9') 00446 00447 #define CSKEY_PAD0 CSKEY_PAD_KEY('0') 00448 00449 #define CSKEY_PADDECIMAL CSKEY_PAD_KEY('.') 00450 00451 #define CSKEY_PADDIV CSKEY_PAD_KEY('/') 00452 00453 #define CSKEY_PADMULT CSKEY_PAD_KEY('*') 00454 00455 #define CSKEY_PADMINUS CSKEY_PAD_KEY('-') 00456 00457 #define CSKEY_PADPLUS CSKEY_PAD_KEY('+') 00458 00459 #define CSKEY_PADENTER CSKEY_PAD_KEY('\n') 00460 00465 #define CSKEY_PADNUM \ 00466 CSKEY_MODIFIER(csKeyModifierTypeNumLock,csKeyModifierNumAny) | CSKEY_PAD_FLAG 00467 00468 #define CSKEY_CAPSLOCK \ 00469 CSKEY_MODIFIER(csKeyModifierTypeCapsLock,csKeyModifierNumAny) 00470 00471 #define CSKEY_SCROLLLOCK \ 00472 CSKEY_MODIFIER(csKeyModifierTypeScrollLock,csKeyModifierNumAny) 00473 00475 typedef enum _csKeyCharType 00476 { 00478 csKeyCharTypeNormal = 0, 00480 csKeyCharTypeDead 00481 } csKeyCharType; 00482 00492 00493 #define CSEVTYPE_Keyboard 0x00000001 00494 00495 #define CSEVTYPE_Mouse 0x00000002 00496 00497 #define CSEVTYPE_Joystick 0x00000004 00498 00518 typedef enum _csCommandEventCode 00519 { 00524 cscmdNothing = 0, 00525 00534 cscmdQuit, 00535 00547 cscmdFocusChanged, 00548 00553 cscmdSystemOpen, 00554 00559 cscmdSystemClose, 00560 00568 cscmdContextResize, 00569 00579 cscmdContextClose, 00580 00590 cscmdCommandLineHelp, 00591 00597 cscmdPreProcess, 00598 00603 cscmdProcess, 00604 00610 cscmdPostProcess, 00611 00617 cscmdFinalProcess, 00618 00623 cscmdCanvasHidden, 00624 00629 cscmdCanvasExposed 00630 } csCommandEventCode; 00631 00634 #endif // __CS_IUTIL_EVDEFS_H__
Generated for Crystal Space by doxygen 1.2.18