CrystalSpace

Public API Reference

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