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 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