CrystalSpace

Public API Reference

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