CrystalSpace

Public API Reference

Main Page   Modules   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

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 program is free software; you can redistribute it and/or modify
00006     it under the terms of the GNU General Public License as published by
00007     the Free Software Foundation; either version 2 of the License, or
00008     (at your option) any later version.
00009 
00010     This program 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
00013     GNU General Public License for more details.
00014 
00015     You should have received a copy of the GNU General Public License
00016     along with this program; if not, write to the Free Software
00017     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   csevNetwork,          
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 
00141 #define CSMASK_Network          (1 << csevNetwork)
00142 
00144 #define CSMASK_Mouse \
00145   (CSMASK_MouseMove | CSMASK_MouseDown | CSMASK_MouseUp | CSMASK_MouseClick | \
00146    CSMASK_MouseDoubleClick)
00147 
00148 #define CSMASK_Joystick \
00149   (CSMASK_JoystickMove | CSMASK_JoystickDown | CSMASK_JoystickUp)
00150 
00151 #define CSMASK_Input \
00152   (CSMASK_Keyboard | CSMASK_Mouse | CSMASK_Joystick)
00153 
00154 // Some handy macros
00156 #define CS_IS_KEYBOARD_EVENT(e) ((1 << (e).Type) & CSMASK_Keyboard)
00158 #define CS_IS_MOUSE_EVENT(e)    ((1 << (e).Type) & CSMASK_Mouse)
00160 #define CS_IS_JOYSTICK_EVENT(e) ((1 << (e).Type) & CSMASK_Joystick)
00162 #define CS_IS_INPUT_EVENT(e)    ((1 << (e).Type) & CSMASK_Input)
00164 #define CS_IS_NETWORK_EVENT(e)  ((1 << (e).Type) & CSMASK_Network)
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   
00200   csKeyModifierTypeLast
00201 } csKeyModifierType;
00202 
00204 typedef enum _csKeyModifierNumType
00205 {
00207   csKeyModifierNumLeft = 0,
00209   csKeyModifierNumRight,
00210   
00215   csKeyModifierNumAny = 0x1f
00216 } csKeyModifierNumType;
00217 
00219 typedef struct _csKeyModifiers
00220 {
00237   unsigned int modifiers[csKeyModifierTypeLast];
00238 } csKeyModifiers;
00247 
00248 #define CSMASK_SHIFT            (1 << csKeyModifierTypeShift)
00249 
00250 #define CSMASK_CTRL             (1 << csKeyModifierTypeCtrl)
00251 
00252 #define CSMASK_ALT              (1 << csKeyModifierTypeAlt)
00253 
00254 #define CSMASK_ALLSHIFTS        (CSMASK_SHIFT | CSMASK_CTRL | CSMASK_ALT)
00255 
00257 #define CSMASK_CAPSLOCK         (1 << csKeyModifierTypeCapsLock)
00258 
00259 #define CSMASK_NUMLOCK          (1 << csKeyModifierTypeNumLock)
00260 
00261 #define CSMASK_SCROLLLOCK       (1 << csKeyModifierTypeScrollLock)
00262 
00263 #define CSMASK_ALLMODIFIERS     (CSMASK_CAPSLOCK | CSMASK_NUMLOCK | \
00264                                  CSMASK_SCROLLLOCK | CSMASK_ALLSHIFTS)
00265 
00278 
00279 #define CSKEY_ESC                       27
00280 
00281 #define CSKEY_ENTER                     '\n'
00282 
00283 #define CSKEY_TAB                       '\t'
00284 
00285 #define CSKEY_BACKSPACE                 '\b'
00286 
00287 #define CSKEY_SPACE                     ' '
00288 
00290 #define CSKEY_SPECIAL_FIRST             0x108000
00291 
00292 #define CSKEY_SPECIAL_LAST              0x10fffd
00293 
00294 #define CSKEY_SPECIAL(code)             (CSKEY_SPECIAL_FIRST + (code))
00295 
00296 #define CSKEY_IS_SPECIAL(rawCode)       \
00297   ((rawCode >= CSKEY_SPECIAL_FIRST) && (rawCode <= CSKEY_SPECIAL_LAST))
00298 
00299 #define CSKEY_SPECIAL_NUM(rawCode)      (rawCode - CSKEY_SPECIAL_FIRST)
00300 
00302 #define CSKEY_UP                        CSKEY_SPECIAL(0x00)
00303 
00304 #define CSKEY_DOWN                      CSKEY_SPECIAL(0x01)
00305 
00306 #define CSKEY_LEFT                      CSKEY_SPECIAL(0x02)
00307 
00308 #define CSKEY_RIGHT                     CSKEY_SPECIAL(0x03)
00309 
00310 #define CSKEY_PGUP                      CSKEY_SPECIAL(0x04)
00311 
00312 #define CSKEY_PGDN                      CSKEY_SPECIAL(0x05)
00313 
00314 #define CSKEY_HOME                      CSKEY_SPECIAL(0x06)
00315 
00316 #define CSKEY_END                       CSKEY_SPECIAL(0x07)
00317 
00318 #define CSKEY_INS                       CSKEY_SPECIAL(0x08)
00319 
00320 #define CSKEY_DEL                       CSKEY_SPECIAL(0x09)
00321 
00322 #define CSKEY_CONTEXT                   CSKEY_SPECIAL(0x0a)
00323 
00324 #define CSKEY_PRINTSCREEN               CSKEY_SPECIAL(0x0b)
00325 
00326 #define CSKEY_PAUSE                     CSKEY_SPECIAL(0x0c)
00327 
00328 #define CSKEY_F1                        CSKEY_SPECIAL(0x10)
00329 
00330 #define CSKEY_F2                        CSKEY_SPECIAL(0x11)
00331 
00332 #define CSKEY_F3                        CSKEY_SPECIAL(0x12)
00333 
00334 #define CSKEY_F4                        CSKEY_SPECIAL(0x13)
00335 
00336 #define CSKEY_F5                        CSKEY_SPECIAL(0x14)
00337 
00338 #define CSKEY_F6                        CSKEY_SPECIAL(0x15)
00339 
00340 #define CSKEY_F7                        CSKEY_SPECIAL(0x16)
00341 
00342 #define CSKEY_F8                        CSKEY_SPECIAL(0x17)
00343 
00344 #define CSKEY_F9                        CSKEY_SPECIAL(0x18)
00345 
00346 #define CSKEY_F10                       CSKEY_SPECIAL(0x19)
00347 
00348 #define CSKEY_F11                       CSKEY_SPECIAL(0x1a)
00349 
00350 #define CSKEY_F12                       CSKEY_SPECIAL(0x1b)
00351 
00353 #define CSKEY_MODIFIER_FIRST            0x2000
00354 
00355 #define CSKEY_MODIFIER_LAST             0x3fff
00356 
00360 #define CSKEY_MODIFIERTYPE_SHIFT        5
00361 
00362 #define CSKEY_MODIFIER(type, num)               \
00363   CSKEY_SPECIAL(CSKEY_MODIFIER_FIRST + (type << CSKEY_MODIFIERTYPE_SHIFT) + num)
00364 
00365 #define CSKEY_IS_MODIFIER(rawCode)      \
00366   (CSKEY_IS_SPECIAL(rawCode) &&         \
00367     ((CSKEY_SPECIAL_NUM(rawCode) >= CSKEY_MODIFIER_FIRST) && \
00368      (CSKEY_SPECIAL_NUM(rawCode) <= CSKEY_MODIFIER_LAST)))
00369 
00370 #define CSKEY_MODIFIER_TYPE(rawCode)    \
00371   ((rawCode - CSKEY_MODIFIER_FIRST - CSKEY_SPECIAL_FIRST) >> \
00372   CSKEY_MODIFIERTYPE_SHIFT)
00373 
00374 #define CSKEY_MODIFIER_NUM(rawCode)     \
00375   ((rawCode - CSKEY_MODIFIER_FIRST - CSKEY_SPECIAL_FIRST) & \
00376   ((1 << CSKEY_MODIFIERTYPE_SHIFT) - 1))  
00377 
00379 #define CSKEY_SHIFT_NUM(n)              CSKEY_MODIFIER(csKeyModifierTypeShift,n)
00380 
00381 #define CSKEY_SHIFT_FIRST               CSKEY_SHIFT_NUM(0)
00382 
00383 #define CSKEY_SHIFT_LAST                CSKEY_SHIFT_NUM(0x1e)
00384 
00386 #define CSKEY_SHIFT_LEFT                CSKEY_SHIFT_NUM(csKeyModifierNumLeft)
00387 
00388 #define CSKEY_SHIFT_RIGHT               CSKEY_SHIFT_NUM(csKeyModifierNumRight)
00389 
00390 #define CSKEY_SHIFT                     CSKEY_SHIFT_NUM(csKeyModifierNumAny)
00391 
00393 #define CSKEY_CTRL_NUM(n)               CSKEY_MODIFIER(csKeyModifierTypeCtrl,n)
00394 
00395 #define CSKEY_CTRL_FIRST                CSKEY_CTRL_NUM(0)
00396 
00397 #define CSKEY_CTRL_LAST                 CSKEY_CTRL_NUM(0x1e)
00398 
00400 #define CSKEY_CTRL_LEFT                 CSKEY_CTRL_NUM(csKeyModifierNumLeft)
00401 
00402 #define CSKEY_CTRL_RIGHT                CSKEY_CTRL_NUM(csKeyModifierNumRight)
00403 
00404 #define CSKEY_CTRL                      CSKEY_CTRL_NUM(csKeyModifierNumAny)
00405 
00407 #define CSKEY_ALT_NUM(n)                CSKEY_MODIFIER(csKeyModifierTypeAlt,n)
00408 
00409 #define CSKEY_ALT_FIRST                 CSKEY_ALT_NUM(0)
00410 
00411 #define CSKEY_ALT_LAST                  CSKEY_ALT_NUM(0x1e)
00412 
00414 #define CSKEY_ALT_LEFT                  CSKEY_ALT_NUM(csKeyModifierNumLeft)
00415 
00416 #define CSKEY_ALT_RIGHT                 CSKEY_ALT_NUM(csKeyModifierNumRight)
00417 
00418 #define CSKEY_ALT                       CSKEY_ALT_NUM(csKeyModifierNumAny)
00419 
00421 #define CSKEY_PAD_FLAG                  0x4000
00422 
00423 #define CSKEY_PAD_KEY(code) CSKEY_SPECIAL((unsigned int)code | CSKEY_PAD_FLAG)
00424 
00426 #define CSKEY_IS_PAD_KEY(rawCode)       ((rawCode & CSKEY_PAD_FLAG) != 0)
00427 
00430 #define CSKEY_PAD_TO_NORMAL(rawCode)    (rawCode & (~CSKEY_PAD_FLAG))
00431 
00433 #define CSKEY_PAD1                      CSKEY_PAD_KEY('1')
00434 
00435 #define CSKEY_PAD2                      CSKEY_PAD_KEY('2')
00436 
00437 #define CSKEY_PAD3                      CSKEY_PAD_KEY('3')
00438 
00439 #define CSKEY_PAD4                      CSKEY_PAD_KEY('4')
00440 
00441 #define CSKEY_PAD5                      CSKEY_PAD_KEY('5')
00442 
00443 #define CSKEY_CENTER                    CSKEY_PAD5
00444 
00445 #define CSKEY_PAD6                      CSKEY_PAD_KEY('6')
00446 
00447 #define CSKEY_PAD7                      CSKEY_PAD_KEY('7')
00448 
00449 #define CSKEY_PAD8                      CSKEY_PAD_KEY('8')
00450 
00451 #define CSKEY_PAD9                      CSKEY_PAD_KEY('9')
00452 
00453 #define CSKEY_PAD0                      CSKEY_PAD_KEY('0')
00454 
00455 #define CSKEY_PADDECIMAL                CSKEY_PAD_KEY('.')
00456 
00457 #define CSKEY_PADDIV                    CSKEY_PAD_KEY('/')
00458 
00459 #define CSKEY_PADMULT                   CSKEY_PAD_KEY('*')
00460 
00461 #define CSKEY_PADMINUS                  CSKEY_PAD_KEY('-')
00462 
00463 #define CSKEY_PADPLUS                   CSKEY_PAD_KEY('+')
00464 
00465 #define CSKEY_PADENTER                  CSKEY_PAD_KEY('\n')
00466 
00471 #define CSKEY_PADNUM \
00472   CSKEY_MODIFIER(csKeyModifierTypeNumLock,csKeyModifierNumAny) | CSKEY_PAD_FLAG
00473 
00474 #define CSKEY_CAPSLOCK \
00475   CSKEY_MODIFIER(csKeyModifierTypeCapsLock,csKeyModifierNumAny)
00476 
00477 #define CSKEY_SCROLLLOCK \
00478   CSKEY_MODIFIER(csKeyModifierTypeScrollLock,csKeyModifierNumAny)
00479 
00481 typedef enum _csKeyCharType
00482 {
00484   csKeyCharTypeNormal = 0,
00486   csKeyCharTypeDead
00487 } csKeyCharType;
00488 
00498 
00499 #define CSEVTYPE_Keyboard       0x00000001
00500 
00501 #define CSEVTYPE_Mouse          0x00000002
00502 
00503 #define CSEVTYPE_Joystick       0x00000004
00504 
00524 typedef enum _csCommandEventCode
00525 {
00530   cscmdNothing = 0,
00531 
00540   cscmdQuit,
00541 
00553   cscmdFocusChanged,
00554 
00559   cscmdSystemOpen,
00560 
00565   cscmdSystemClose,
00566 
00574   cscmdContextResize,
00575 
00585   cscmdContextClose,
00586 
00596   cscmdCommandLineHelp,
00597 
00603   cscmdPreProcess,
00604 
00609   cscmdProcess,
00610 
00616   cscmdPostProcess,
00617 
00623   cscmdFinalProcess,
00624 
00629   cscmdCanvasHidden,
00630 
00635   cscmdCanvasExposed
00636 } csCommandEventCode;
00637 
00640 #endif // __CS_IUTIL_EVDEFS_H__

Generated for Crystal Space by doxygen 1.2.18