CrystalSpace

Public API Reference

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

Event handling


Compounds

struct  _csKeyModifiers
 Flags for all currently pressed modifiers. More...

class  csBaseEventHandler
 Base implementation of a generic event handler. More...

struct  iEvent
 This interface describes any system event. More...

struct  csEventCommandData
 Command event data in iEvent. More...

struct  iEventCord
 The iEventCord is an interface provided by an event queue to any event handlers wanting to receive some subclasses of events ASAP in a specified priority, bypassing the queue itself. More...

struct  iEventHandler
 This interface describes an entity that can receive events. More...

struct  csEventJoystickData
 Joystick event data in iEvent. More...

struct  csEventMouseData
 Mouse event data in iEvent. More...

struct  iEventOutlet
 The iEventOutlet is the interface to an object that is provided by an event queue to every event plug when it registers itself. More...

struct  iEventPlug
 Event plug interface, also referred as "event source". More...

struct  iEventQueue
 This interface represents a general event queue. More...

struct  iJoystickDriver
 Generic Joystick driver. More...

struct  iKeyboardDriver
 Generic Keyboard Driver. More...

struct  iKeyComposer
 Keyboard input handler. More...

struct  csKeyEventData
 Structure that collects the data a keyboard event carries. More...

class  csKeyEventHelper
 Helper class to conveniently deal with keyboard events. More...

struct  iMouseDriver
 Generic Mouse Driver. More...


Event masks

The event masks can be used by plugins to tell an event queue, via iEventQueue::RegisterListener, which kinds of events they want to receive at their HandleEvent() entry.

If a plugin registers to receive CSMASK_Nothing events it is always called once per frame, so that plugin can do some per-frame processing.

#define CSMASK_Nothing   (1 << csevNothing)
 Event mask: Empty event.

#define CSMASK_FrameProcess   CSMASK_Nothing
 The plugin will be called at the start of every frame and at the end of every frame with an csevBroadcast event with the Event.Command.Code equal to cscmdPreProcess, csProcess, cscmdPostProcess, or cscmdFinalProcess.

#define CSMASK_Keyboard   (1 << csevKeyboard)
 Keyboard events.

#define CSMASK_MouseMove   (1 << csevMouseMove)
 Mouse move events.

#define CSMASK_MouseDown   (1 << csevMouseDown)
 Mouse down events.

#define CSMASK_MouseUp   (1 << csevMouseUp)
 Mouse up events.

#define CSMASK_MouseClick   (1 << csevMouseClick)
 Mouse click events.

#define CSMASK_MouseDoubleClick   (1 << csevMouseDoubleClick)
 Mouse double click events.

#define CSMASK_JoystickMove   (1 << csevJoystickMove)
 Joystick movement events.

#define CSMASK_JoystickDown   (1 << csevJoystickDown)
 Joystick button down events.

#define CSMASK_JoystickUp   (1 << csevJoystickUp)
 Joystick button up events.

#define CSMASK_Command   (1 << csevCommand)
 Command message events.

#define CSMASK_Broadcast   (1 << csevBroadcast)
 Broadcast message events.

#define CSMASK_Mouse
 This mask identifies any mouse event.

#define CSMASK_Joystick   (CSMASK_JoystickMove | CSMASK_JoystickDown | CSMASK_JoystickUp)
 This mask identifies any joystick event.

#define CSMASK_Input   (CSMASK_Keyboard | CSMASK_Mouse | CSMASK_Joystick)
 This mask identifies any input evemt.

#define CS_IS_KEYBOARD_EVENT(e)   ((1 << (e).Type) & CSMASK_Keyboard)
 Check if a event is a keyboard event.

#define CS_IS_MOUSE_EVENT(e)   ((1 << (e).Type) & CSMASK_Mouse)
 Check if a event is a mouse event.

#define CS_IS_JOYSTICK_EVENT(e)   ((1 << (e).Type) & CSMASK_Joystick)
 Check if a event is a joystick event.

#define CS_IS_INPUT_EVENT(e)   ((1 << (e).Type) & CSMASK_Input)
 Check if a event is any input event.


Event flags masks

Every event has a `flags' field which describes miscelaneous aspects of the event.

The following constants describes every used bit of the `flags' field.

#define CSEF_BROADCAST   0x00000001
 Event flag: Ignore `true' returned from HandleEvent which says that event has been processed and should not be processed anymore.


Modifier key masks

csKeyEventHelper::GetModifiersBits() returns such a bitfields consisting of any combination of the masks below.

Having one in one of the bits means that the corresponding modifier was pressed in the modifier state passed in.

#define CSMASK_SHIFT   (1 << csKeyModifierTypeShift)
 "Shift" key mask

#define CSMASK_CTRL   (1 << csKeyModifierTypeCtrl)
 "Ctrl" key mask

#define CSMASK_ALT   (1 << csKeyModifierTypeAlt)
 "Alt" key mask

#define CSMASK_ALLSHIFTS   (CSMASK_SHIFT | CSMASK_CTRL | CSMASK_ALT)
 All shift keys.

#define CSMASK_CAPSLOCK   (1 << csKeyModifierTypeCapsLock)
 "CapsLock" key mask

#define CSMASK_NUMLOCK   (1 << csKeyModifierTypeNumLock)
 "NumLock" key mask

#define CSMASK_SCROLLLOCK   (1 << csKeyModifierTypeScrollLock)
 "ScrollLock" key mask

#define CSMASK_ALLMODIFIERS
 All modifiers, shift and lock types.


Control key codes

Not every existing key on any existing platform is supported by Crystal Space.

Instead, we tried to list here all the keys that are common among all platforms on which Crystal Space runs. There may still be some keys that aren't supported on some platforms, tho.

Be aware that the range of the special keys has been arbitrarily, but careful chosen. In particular, all special keys fall into a part of the Unicode "Supplementary Private Use Area-B", so all keycodes in CS are always valid Unicode codepoints.

#define CSKEY_ESC   27
 ESCape key.

#define CSKEY_ENTER   '\n'
 Enter key.

#define CSKEY_TAB   '\t'
 Tab key.

#define CSKEY_BACKSPACE   '\b'
 Back-space key.

#define CSKEY_SPACE   ' '
 Space key.

#define CSKEY_SPECIAL_FIRST   0x108000
 The lowest code of a special key.

#define CSKEY_SPECIAL_LAST   0x10fffd
 The highest code of a special key.

#define CSKEY_SPECIAL(code)   (CSKEY_SPECIAL_FIRST + (code))
 Helper macro to construct a special key code.

#define CSKEY_IS_SPECIAL(rawCode)   ((rawCode >= CSKEY_SPECIAL_FIRST) && (rawCode <= CSKEY_SPECIAL_LAST))
 Helper macro to determine whether a key code identifies a special key.

#define CSKEY_SPECIAL_NUM(rawCode)   (rawCode - CSKEY_SPECIAL_FIRST)
 Helper macro to determine the parameter that was given to CSKEY_SPECIAL.

#define CSKEY_UP   CSKEY_SPECIAL(0x00)
 Up arrow key.

#define CSKEY_DOWN   CSKEY_SPECIAL(0x01)
 Down arrow key.

#define CSKEY_LEFT   CSKEY_SPECIAL(0x02)
 Left arrow key.

#define CSKEY_RIGHT   CSKEY_SPECIAL(0x03)
 Right arrow key.

#define CSKEY_PGUP   CSKEY_SPECIAL(0x04)
 PageUp key.

#define CSKEY_PGDN   CSKEY_SPECIAL(0x05)
 PageDown key.

#define CSKEY_HOME   CSKEY_SPECIAL(0x06)
 Home key.

#define CSKEY_END   CSKEY_SPECIAL(0x07)
 End key.

#define CSKEY_INS   CSKEY_SPECIAL(0x08)
 Insert key.

#define CSKEY_DEL   CSKEY_SPECIAL(0x09)
 Delete key.

#define CSKEY_CONTEXT   CSKEY_SPECIAL(0x0a)
 The "Context menu" key on Windows keyboards.

#define CSKEY_PRINTSCREEN   CSKEY_SPECIAL(0x0b)
 The Print Screen key.

#define CSKEY_PAUSE   CSKEY_SPECIAL(0x0c)
 The Pause key.

#define CSKEY_F1   CSKEY_SPECIAL(0x10)
 Function key F1.

#define CSKEY_F2   CSKEY_SPECIAL(0x11)
 Function key F2.

#define CSKEY_F3   CSKEY_SPECIAL(0x12)
 Function key F3.

#define CSKEY_F4   CSKEY_SPECIAL(0x13)
 Function key F4.

#define CSKEY_F5   CSKEY_SPECIAL(0x14)
 Function key F5.

#define CSKEY_F6   CSKEY_SPECIAL(0x15)
 Function key F6.

#define CSKEY_F7   CSKEY_SPECIAL(0x16)
 Function key F7.

#define CSKEY_F8   CSKEY_SPECIAL(0x17)
 Function key F8.

#define CSKEY_F9   CSKEY_SPECIAL(0x18)
 Function key F9.

#define CSKEY_F10   CSKEY_SPECIAL(0x19)
 Function key F10.

#define CSKEY_F11   CSKEY_SPECIAL(0x1a)
 Function key F11.

#define CSKEY_F12   CSKEY_SPECIAL(0x1b)
 Function key F12.

#define CSKEY_MODIFIER_FIRST   0x2000
 The lowest code of a modifier key.

#define CSKEY_MODIFIER_LAST   0x3fff
 The highest code of a modifier key.

#define CSKEY_MODIFIERTYPE_SHIFT   5
 ESCape key.

#define CSKEY_MODIFIER(type, num)   CSKEY_SPECIAL(CSKEY_MODIFIER_FIRST + (type << CSKEY_MODIFIERTYPE_SHIFT) + num)
 Helper macro to construct a modifiers key code.

#define CSKEY_IS_MODIFIER(rawCode)
 Helper macro to test whether a key code identifies a modifier.

#define CSKEY_MODIFIER_TYPE(rawCode)
 Helper macro to determine the modifier type of a key code.

#define CSKEY_MODIFIER_NUM(rawCode)
 Helper macro to determine the modifier number of a key code.

#define CSKEY_SHIFT_NUM(n)   CSKEY_MODIFIER(csKeyModifierTypeShift,n)
 Construct a key code for the Shift modifier key number n.

#define CSKEY_SHIFT_FIRST   CSKEY_SHIFT_NUM(0)
 Lowest code of the Shift modifier keys.

#define CSKEY_SHIFT_LAST   CSKEY_SHIFT_NUM(0x1e)
 Highest code of the Shift modifier keys.

#define CSKEY_SHIFT_LEFT   CSKEY_SHIFT_NUM(csKeyModifierNumLeft)
 Left Shift.

#define CSKEY_SHIFT_RIGHT   CSKEY_SHIFT_NUM(csKeyModifierNumRight)
 Right Shift.

#define CSKEY_SHIFT   CSKEY_SHIFT_NUM(csKeyModifierNumAny)
 Undistinguished Shift.

#define CSKEY_CTRL_NUM(n)   CSKEY_MODIFIER(csKeyModifierTypeCtrl,n)
 Construct a key code for the Ctrl modifier key number n.

#define CSKEY_CTRL_FIRST   CSKEY_CTRL_NUM(0)
 Lowest code of the Ctrl modifier keys.

#define CSKEY_CTRL_LAST   CSKEY_CTRL_NUM(0x1e)
 Highest code of the Ctrl modifier keys.

#define CSKEY_CTRL_LEFT   CSKEY_CTRL_NUM(csKeyModifierNumLeft)
 Left Ctrl.

#define CSKEY_CTRL_RIGHT   CSKEY_CTRL_NUM(csKeyModifierNumRight)
 Right Ctrl.

#define CSKEY_CTRL   CSKEY_CTRL_NUM(csKeyModifierNumAny)
 Undistinguished Ctrl.

#define CSKEY_ALT_NUM(n)   CSKEY_MODIFIER(csKeyModifierTypeAlt,n)
 Construct a key code for the Alt modifier key number n.

#define CSKEY_ALT_FIRST   CSKEY_ALT_NUM(0)
 Lowest code of the Alt modifier keys.

#define CSKEY_ALT_LAST   CSKEY_ALT_NUM(0x1e)
 Highest code of the Alt modifier keys.

#define CSKEY_ALT_LEFT   CSKEY_ALT_NUM(csKeyModifierNumLeft)
 Left Alt.

#define CSKEY_ALT_RIGHT   CSKEY_ALT_NUM(csKeyModifierNumRight)
 Right Alt.

#define CSKEY_ALT   CSKEY_ALT_NUM(csKeyModifierNumAny)
 Undistinguished Alt.

#define CSKEY_PAD_FLAG   0x4000
 Bit that is set if a key is from the keypad.

#define CSKEY_PAD_KEY(code)   CSKEY_SPECIAL((unsigned int)code | CSKEY_PAD_FLAG)
 Helper macro to construct a keypade key code.

#define CSKEY_IS_PAD_KEY(rawCode)   ((rawCode & CSKEY_PAD_FLAG) != 0)
 Helper macro to test whether a key code identifies a keypad key.

#define CSKEY_PAD_TO_NORMAL(rawCode)   (rawCode & (~CSKEY_PAD_FLAG))
 Helper macro to convert a 'pad' key code into a 'normal' special key code.

#define CSKEY_PAD1   CSKEY_PAD_KEY('1')
 Keypad 1.

#define CSKEY_PAD2   CSKEY_PAD_KEY('2')
 Keypad 2.

#define CSKEY_PAD3   CSKEY_PAD_KEY('3')
 Keypad 3.

#define CSKEY_PAD4   CSKEY_PAD_KEY('4')
 Keypad 4.

#define CSKEY_PAD5   CSKEY_PAD_KEY('5')
 Keypad 5.

#define CSKEY_CENTER   CSKEY_PAD5
 Keypad "Center" (5).

#define CSKEY_PAD6   CSKEY_PAD_KEY('6')
 Keypad 6.

#define CSKEY_PAD7   CSKEY_PAD_KEY('7')
 Keypad 7.

#define CSKEY_PAD8   CSKEY_PAD_KEY('8')
 Keypad 8.

#define CSKEY_PAD9   CSKEY_PAD_KEY('9')
 Keypad 9.

#define CSKEY_PAD0   CSKEY_PAD_KEY('0')
 Keypad 0.

#define CSKEY_PADDECIMAL   CSKEY_PAD_KEY('.')
 Keypad Decimal ('.' on English keyboards).

#define CSKEY_PADDIV   CSKEY_PAD_KEY('/')
 Keypad Divide.

#define CSKEY_PADMULT   CSKEY_PAD_KEY('*')
 Keypad Multiply.

#define CSKEY_PADMINUS   CSKEY_PAD_KEY('-')
 Keypad Minus.

#define CSKEY_PADPLUS   CSKEY_PAD_KEY('+')
 Keypad Plus.

#define CSKEY_PADENTER   CSKEY_PAD_KEY('\n')
 Keypad Enter.

#define CSKEY_PADNUM   CSKEY_MODIFIER(csKeyModifierTypeNumLock,csKeyModifierNumAny) | CSKEY_PAD_FLAG
 NumLock key.

#define CSKEY_CAPSLOCK   CSKEY_MODIFIER(csKeyModifierTypeCapsLock,csKeyModifierNumAny)
 CapsLock key.

#define CSKEY_SCROLLLOCK   CSKEY_MODIFIER(csKeyModifierTypeScrollLock,csKeyModifierNumAny)
 ScrollLock key.

typedef enum _csKeyCharType csKeyCharType
 Character types.

enum  _csKeyCharType { csKeyCharTypeNormal = 0, csKeyCharTypeDead }
 Character types. More...


Event class masks

Every event plug should provide information about which event types that may conflict with other event plugs it is able to generate.

The system driver checks it and if several event plugs generates conflicting types events, one of them (the one with lower priority) is disabled.

#define CSEVTYPE_Keyboard   0x00000001
 Keyboard events.

#define CSEVTYPE_Mouse   0x00000002
 Mouse events.

#define CSEVTYPE_Joystick   0x00000004
 Joystick events.


Modifier keys

See also:
Keyboard events, Modifier key masks


typedef enum _csKeyModifierType csKeyModifierType
 Modifier types.

typedef enum _csKeyModifierNumType csKeyModifierNumType
 Modifier numbers.

typedef _csKeyModifiers csKeyModifiers
 Flags for all currently pressed modifiers.

enum  _csKeyModifierType {
  csKeyModifierTypeShift = 0, csKeyModifierTypeCtrl, csKeyModifierTypeAlt, csKeyModifierTypeCapsLock,
  csKeyModifierTypeNumLock, csKeyModifierTypeScrollLock
}
 Modifier types. More...

enum  _csKeyModifierNumType { csKeyModifierNumLeft = 0, csKeyModifierNumRight, csKeyModifierNumAny = 0x1f }
 Modifier numbers. More...


Defines

#define CS_MAX_MOUSE_BUTTONS   10
 Maximal number of mouse buttons supported.

#define CS_MAX_JOYSTICK_COUNT   2
 Maximal number of joysticks supported.

#define CS_MAX_JOYSTICK_BUTTONS   10
 Maximal number of joystick buttons supported.


Typedefs

typedef enum _csEventType csEventType
 System Events.

typedef enum _csKeyEventType csKeyEventType
 Keyboard event type.

typedef enum _csCommandEventCode csCommandEventCode
 General Command Codes.


Enumerations

enum  csKeyComposeResult { csComposeNoChar = -1, csComposeNormalChar, csComposeComposedChar, csComposeUncomposeable }
 Results for attempts to process a character key. More...

enum  _csEventType {
  csevNothing = 0, csevKeyboard, csevMouseMove, csevMouseDown,
  csevMouseUp, csevMouseClick, csevMouseDoubleClick, csevJoystickMove,
  csevJoystickDown, csevJoystickUp, csevCommand, csevBroadcast,
  csevMouseEnter, csevMouseExit, csevLostFocus, csevGainFocus,
  csevGroupOff, csevFrameStart
}
 System Events. More...

enum  _csKeyEventType { csKeyEventTypeUp = 0, csKeyEventTypeDown }
 Keyboard event type. More...

enum  _csCommandEventCode {
  cscmdNothing = 0, cscmdQuit, cscmdFocusChanged, cscmdSystemOpen,
  cscmdSystemClose, cscmdContextResize, cscmdContextClose, cscmdCommandLineHelp,
  cscmdPreProcess, cscmdProcess, cscmdPostProcess, cscmdFinalProcess,
  cscmdCanvasHidden, cscmdCanvasExposed
}
 General Command Codes. More...

Keyboard events

Keyboard events are emitted when the user does something with the keyboard - presses down a key ("key down" events), holds it down (more "key down" events in a specific interval - "auto-repeat") and releases it ("key up".)

Every keyboard event has a bunch of data associated with it. First, there is a code to identify the key: the 'raw' code. It uniquely identifies the key, and every key has a distinct code, independent from any pressed modifiers: For example, pressing the "A" key will always result in the raw code 'a', holding shift or any other modifier down won't change it. However, the 'cooked' code contains such additional information: If Shift+A is pressed, the cooked code will be 'A', while the raw code is still 'a'. Other keys are also normalized; for example keypad keys: pressing "9" will result in either CSKEY_PGUP or '9', depending on the NumLock state. So, the same key can result in different 'cooked' codes, and the same 'cooked' code can be caused by different keys.

Other data contained in a keyboard event is:

Keyboard event data is stored as properties of iEvent, accessible thorugh iEvent->Find() and iEvent->Add().
Property NameType Description
keyEventTypecsKeyEventType (stored as uint8) Event type (up vs down)
keyCodeRawuint32Raw key code
keyCodeCookeduint32Cooked key code
keyModifierscsKeyModifiersModifiers at time of the key press
keyAutoRepeatboolAutorepeat flag
keyCharTypecsKeyCharType (stored as uint8) Character type

A way to retrieve an keyboard event's data without requiring a plethora of iEvent->Find() invocations provides the csKeyEventHelper class.

Also see iKeyComposer for informations about composing accented etc. characters from dead and normal keys.

Overall structure of the basic event flow in Crystal Space

   ......................
   .User application    .
   . +----------------+ .
 +-->+ Event consumer | .
 | . +----------------+ .
 | ......................
 |
 | .....................................
 | .System driver plugin               .
 | .                          +------+ .   +-----+
 | .                       +<-|event +-<<--+event|
 | .   +---------------+   |  |outlet| .   |plug |
 +-----+  event queue  +<--+  +------+ .   +-----+
 | .   +---------------+   |  +------+ .   +-----+
 | .                       +<-|event +-<<--+event|
 | .   +---------------+   |  |outlet| .   |plug |
 +-----+ event cord    +<--|  +------+ .   +-----+
   .   +---------------+   |  +------+ .   +-----+
   .                       +<-|event +-<<--+event|
   .                          |outlet| .   |plug |
   .                          +------+ .   +-----+
   .                            ....   .     ...
   .....................................
 
The events are generated by 'event plugs' which are plugged into 'event outlets'. The event outlets are reponsible for filtering the possibly duplicate messages that are coming from different event plugs (for example two different plugs may both intercept the keyboard and generate duplicate keydown events).

Events are put into the event queue, from where they are sent to applications and plugins. Event cords bypass the queue for specific command event categories and deliver events immediately in a prioritizied chain to specific plugins which request the categories.


Define Documentation

#define CS_IS_INPUT_EVENT      ((1 << (e).Type) & CSMASK_Input)
 

Check if a event is any input event.

Definition at line 158 of file evdefs.h.

#define CS_IS_JOYSTICK_EVENT      ((1 << (e).Type) & CSMASK_Joystick)
 

Check if a event is a joystick event.

Definition at line 156 of file evdefs.h.

#define CS_IS_KEYBOARD_EVENT      ((1 << (e).Type) & CSMASK_Keyboard)
 

Check if a event is a keyboard event.

Definition at line 152 of file evdefs.h.

#define CS_IS_MOUSE_EVENT      ((1 << (e).Type) & CSMASK_Mouse)
 

Check if a event is a mouse event.

Definition at line 154 of file evdefs.h.

#define CS_MAX_JOYSTICK_BUTTONS   10
 

Maximal number of joystick buttons supported.

Definition at line 45 of file csinput.h.

Referenced by csJoystickDriver::GetLastButton().

#define CS_MAX_JOYSTICK_COUNT   2
 

Maximal number of joysticks supported.

Definition at line 43 of file csinput.h.

Referenced by csJoystickDriver::GetLastButton().

#define CS_MAX_MOUSE_BUTTONS   10
 

Maximal number of mouse buttons supported.

Definition at line 41 of file csinput.h.

Referenced by csMouseDriver::GetLastButton().

#define CSEF_BROADCAST   0x00000001
 

Event flag: Ignore `true' returned from HandleEvent which says that event has been processed and should not be processed anymore.

Normally this is set only for csevBroadcast events.

Definition at line 171 of file evdefs.h.

#define CSEVTYPE_Joystick   0x00000004
 

Joystick events.

Definition at line 497 of file evdefs.h.

#define CSEVTYPE_Keyboard   0x00000001
 

Keyboard events.

Definition at line 493 of file evdefs.h.

#define CSEVTYPE_Mouse   0x00000002
 

Mouse events.

Definition at line 495 of file evdefs.h.

#define CSKEY_ALT   CSKEY_ALT_NUM(csKeyModifierNumAny)
 

Undistinguished Alt.

Definition at line 412 of file evdefs.h.

#define CSKEY_ALT_FIRST   CSKEY_ALT_NUM(0)
 

Lowest code of the Alt modifier keys.

Definition at line 403 of file evdefs.h.

#define CSKEY_ALT_LAST   CSKEY_ALT_NUM(0x1e)
 

Highest code of the Alt modifier keys.

Definition at line 405 of file evdefs.h.

#define CSKEY_ALT_LEFT   CSKEY_ALT_NUM(csKeyModifierNumLeft)
 

Left Alt.

Definition at line 408 of file evdefs.h.

#define CSKEY_ALT_NUM      CSKEY_MODIFIER(csKeyModifierTypeAlt,n)
 

Construct a key code for the Alt modifier key number n.

Definition at line 401 of file evdefs.h.

#define CSKEY_ALT_RIGHT   CSKEY_ALT_NUM(csKeyModifierNumRight)
 

Right Alt.

Definition at line 410 of file evdefs.h.

#define CSKEY_BACKSPACE   '\b'
 

Back-space key.

Definition at line 279 of file evdefs.h.

#define CSKEY_CAPSLOCK   CSKEY_MODIFIER(csKeyModifierTypeCapsLock,csKeyModifierNumAny)
 

CapsLock key.

Definition at line 468 of file evdefs.h.

#define CSKEY_CENTER   CSKEY_PAD5
 

Keypad "Center" (5).

Definition at line 437 of file evdefs.h.

#define CSKEY_CONTEXT   CSKEY_SPECIAL(0x0a)
 

The "Context menu" key on Windows keyboards.

Definition at line 316 of file evdefs.h.

#define CSKEY_CTRL   CSKEY_CTRL_NUM(csKeyModifierNumAny)
 

Undistinguished Ctrl.

Definition at line 398 of file evdefs.h.

#define CSKEY_CTRL_FIRST   CSKEY_CTRL_NUM(0)
 

Lowest code of the Ctrl modifier keys.

Definition at line 389 of file evdefs.h.

#define CSKEY_CTRL_LAST   CSKEY_CTRL_NUM(0x1e)
 

Highest code of the Ctrl modifier keys.

Definition at line 391 of file evdefs.h.

#define CSKEY_CTRL_LEFT   CSKEY_CTRL_NUM(csKeyModifierNumLeft)
 

Left Ctrl.

Definition at line 394 of file evdefs.h.

#define CSKEY_CTRL_NUM      CSKEY_MODIFIER(csKeyModifierTypeCtrl,n)
 

Construct a key code for the Ctrl modifier key number n.

Definition at line 387 of file evdefs.h.

#define CSKEY_CTRL_RIGHT   CSKEY_CTRL_NUM(csKeyModifierNumRight)
 

Right Ctrl.

Definition at line 396 of file evdefs.h.

#define CSKEY_DEL   CSKEY_SPECIAL(0x09)
 

Delete key.

Definition at line 314 of file evdefs.h.

#define CSKEY_DOWN   CSKEY_SPECIAL(0x01)
 

Down arrow key.

Definition at line 298 of file evdefs.h.

#define CSKEY_END   CSKEY_SPECIAL(0x07)
 

End key.

Definition at line 310 of file evdefs.h.

#define CSKEY_ENTER   '\n'
 

Enter key.

Definition at line 275 of file evdefs.h.

#define CSKEY_ESC   27
 

ESCape key.

Definition at line 273 of file evdefs.h.

#define CSKEY_F1   CSKEY_SPECIAL(0x10)
 

Function key F1.

Definition at line 322 of file evdefs.h.

#define CSKEY_F10   CSKEY_SPECIAL(0x19)
 

Function key F10.

Definition at line 340 of file evdefs.h.

#define CSKEY_F11   CSKEY_SPECIAL(0x1a)
 

Function key F11.

Definition at line 342 of file evdefs.h.

#define CSKEY_F12   CSKEY_SPECIAL(0x1b)
 

Function key F12.

Definition at line 344 of file evdefs.h.

#define CSKEY_F2   CSKEY_SPECIAL(0x11)
 

Function key F2.

Definition at line 324 of file evdefs.h.

#define CSKEY_F3   CSKEY_SPECIAL(0x12)
 

Function key F3.

Definition at line 326 of file evdefs.h.

#define CSKEY_F4   CSKEY_SPECIAL(0x13)
 

Function key F4.

Definition at line 328 of file evdefs.h.

#define CSKEY_F5   CSKEY_SPECIAL(0x14)
 

Function key F5.

Definition at line 330 of file evdefs.h.

#define CSKEY_F6   CSKEY_SPECIAL(0x15)
 

Function key F6.

Definition at line 332 of file evdefs.h.

#define CSKEY_F7   CSKEY_SPECIAL(0x16)
 

Function key F7.

Definition at line 334 of file evdefs.h.

#define CSKEY_F8   CSKEY_SPECIAL(0x17)
 

Function key F8.

Definition at line 336 of file evdefs.h.

#define CSKEY_F9   CSKEY_SPECIAL(0x18)
 

Function key F9.

Definition at line 338 of file evdefs.h.

#define CSKEY_HOME   CSKEY_SPECIAL(0x06)
 

Home key.

Definition at line 308 of file evdefs.h.

#define CSKEY_INS   CSKEY_SPECIAL(0x08)
 

Insert key.

Definition at line 312 of file evdefs.h.

#define CSKEY_IS_MODIFIER rawCode   
 

Value:

Helper macro to test whether a key code identifies a modifier.

Definition at line 359 of file evdefs.h.

#define CSKEY_IS_PAD_KEY rawCode       ((rawCode & CSKEY_PAD_FLAG) != 0)
 

Helper macro to test whether a key code identifies a keypad key.

Definition at line 420 of file evdefs.h.

#define CSKEY_IS_SPECIAL rawCode       ((rawCode >= CSKEY_SPECIAL_FIRST) && (rawCode <= CSKEY_SPECIAL_LAST))
 

Helper macro to determine whether a key code identifies a special key.

Definition at line 290 of file evdefs.h.

#define CSKEY_LEFT   CSKEY_SPECIAL(0x02)
 

Left arrow key.

Definition at line 300 of file evdefs.h.

#define CSKEY_MODIFIER type,
num       CSKEY_SPECIAL(CSKEY_MODIFIER_FIRST + (type << CSKEY_MODIFIERTYPE_SHIFT) + num)
 

Helper macro to construct a modifiers key code.

Definition at line 356 of file evdefs.h.

#define CSKEY_MODIFIER_FIRST   0x2000
 

The lowest code of a modifier key.

Definition at line 347 of file evdefs.h.

#define CSKEY_MODIFIER_LAST   0x3fff
 

The highest code of a modifier key.

Definition at line 349 of file evdefs.h.

#define CSKEY_MODIFIER_NUM rawCode   
 

Value:

Helper macro to determine the modifier number of a key code.

Definition at line 368 of file evdefs.h.

#define CSKEY_MODIFIER_TYPE rawCode   
 

Value:

Helper macro to determine the modifier type of a key code.

Definition at line 364 of file evdefs.h.

#define CSKEY_MODIFIERTYPE_SHIFT   5
 

ESCape key.

Definition at line 354 of file evdefs.h.

#define CSKEY_PAD0   CSKEY_PAD_KEY('0')
 

Keypad 0.

Definition at line 447 of file evdefs.h.

#define CSKEY_PAD1   CSKEY_PAD_KEY('1')
 

Keypad 1.

Definition at line 427 of file evdefs.h.

#define CSKEY_PAD2   CSKEY_PAD_KEY('2')
 

Keypad 2.

Definition at line 429 of file evdefs.h.

#define CSKEY_PAD3   CSKEY_PAD_KEY('3')
 

Keypad 3.

Definition at line 431 of file evdefs.h.

#define CSKEY_PAD4   CSKEY_PAD_KEY('4')
 

Keypad 4.

Definition at line 433 of file evdefs.h.

#define CSKEY_PAD5   CSKEY_PAD_KEY('5')
 

Keypad 5.

Definition at line 435 of file evdefs.h.

#define CSKEY_PAD6   CSKEY_PAD_KEY('6')
 

Keypad 6.

Definition at line 439 of file evdefs.h.

#define CSKEY_PAD7   CSKEY_PAD_KEY('7')
 

Keypad 7.

Definition at line 441 of file evdefs.h.

#define CSKEY_PAD8   CSKEY_PAD_KEY('8')
 

Keypad 8.

Definition at line 443 of file evdefs.h.

#define CSKEY_PAD9   CSKEY_PAD_KEY('9')
 

Keypad 9.

Definition at line 445 of file evdefs.h.

#define CSKEY_PAD_FLAG   0x4000
 

Bit that is set if a key is from the keypad.

Definition at line 415 of file evdefs.h.

#define CSKEY_PAD_KEY code       CSKEY_SPECIAL((unsigned int)code | CSKEY_PAD_FLAG)
 

Helper macro to construct a keypade key code.

Definition at line 417 of file evdefs.h.

#define CSKEY_PAD_TO_NORMAL rawCode       (rawCode & (~CSKEY_PAD_FLAG))
 

Helper macro to convert a 'pad' key code into a 'normal' special key code.

Definition at line 424 of file evdefs.h.

#define CSKEY_PADDECIMAL   CSKEY_PAD_KEY('.')
 

Keypad Decimal ('.' on English keyboards).

Definition at line 449 of file evdefs.h.

#define CSKEY_PADDIV   CSKEY_PAD_KEY('/')
 

Keypad Divide.

Definition at line 451 of file evdefs.h.

#define CSKEY_PADENTER   CSKEY_PAD_KEY('\n')
 

Keypad Enter.

Definition at line 459 of file evdefs.h.

#define CSKEY_PADMINUS   CSKEY_PAD_KEY('-')
 

Keypad Minus.

Definition at line 455 of file evdefs.h.

#define CSKEY_PADMULT   CSKEY_PAD_KEY('*')
 

Keypad Multiply.

Definition at line 453 of file evdefs.h.

#define CSKEY_PADNUM   CSKEY_MODIFIER(csKeyModifierTypeNumLock,csKeyModifierNumAny) | CSKEY_PAD_FLAG
 

NumLock key.

Both a modifier and a keypad key.

Definition at line 465 of file evdefs.h.

#define CSKEY_PADPLUS   CSKEY_PAD_KEY('+')
 

Keypad Plus.

Definition at line 457 of file evdefs.h.

#define CSKEY_PAUSE   CSKEY_SPECIAL(0x0c)
 

The Pause key.

Definition at line 320 of file evdefs.h.

#define CSKEY_PGDN   CSKEY_SPECIAL(0x05)
 

PageDown key.

Definition at line 306 of file evdefs.h.

#define CSKEY_PGUP   CSKEY_SPECIAL(0x04)
 

PageUp key.

Definition at line 304 of file evdefs.h.

#define CSKEY_PRINTSCREEN   CSKEY_SPECIAL(0x0b)
 

The Print Screen key.

Definition at line 318 of file evdefs.h.

#define CSKEY_RIGHT   CSKEY_SPECIAL(0x03)
 

Right arrow key.

Definition at line 302 of file evdefs.h.

#define CSKEY_SCROLLLOCK   CSKEY_MODIFIER(csKeyModifierTypeScrollLock,csKeyModifierNumAny)
 

ScrollLock key.

Definition at line 471 of file evdefs.h.

#define CSKEY_SHIFT   CSKEY_SHIFT_NUM(csKeyModifierNumAny)
 

Undistinguished Shift.

Definition at line 384 of file evdefs.h.

#define CSKEY_SHIFT_FIRST   CSKEY_SHIFT_NUM(0)
 

Lowest code of the Shift modifier keys.

Definition at line 375 of file evdefs.h.

#define CSKEY_SHIFT_LAST   CSKEY_SHIFT_NUM(0x1e)
 

Highest code of the Shift modifier keys.

Definition at line 377 of file evdefs.h.

#define CSKEY_SHIFT_LEFT   CSKEY_SHIFT_NUM(csKeyModifierNumLeft)
 

Left Shift.

Definition at line 380 of file evdefs.h.

#define CSKEY_SHIFT_NUM      CSKEY_MODIFIER(csKeyModifierTypeShift,n)
 

Construct a key code for the Shift modifier key number n.

Definition at line 373 of file evdefs.h.

#define CSKEY_SHIFT_RIGHT   CSKEY_SHIFT_NUM(csKeyModifierNumRight)
 

Right Shift.

Definition at line 382 of file evdefs.h.

#define CSKEY_SPACE   ' '
 

Space key.

Definition at line 281 of file evdefs.h.

#define CSKEY_SPECIAL code       (CSKEY_SPECIAL_FIRST + (code))
 

Helper macro to construct a special key code.

Definition at line 288 of file evdefs.h.

#define CSKEY_SPECIAL_FIRST   0x108000
 

The lowest code of a special key.

Definition at line 284 of file evdefs.h.

#define CSKEY_SPECIAL_LAST   0x10fffd
 

The highest code of a special key.

Definition at line 286 of file evdefs.h.

#define CSKEY_SPECIAL_NUM rawCode       (rawCode - CSKEY_SPECIAL_FIRST)
 

Helper macro to determine the parameter that was given to CSKEY_SPECIAL.

Definition at line 293 of file evdefs.h.

#define CSKEY_TAB   '\t'
 

Tab key.

Definition at line 277 of file evdefs.h.

#define CSKEY_UP   CSKEY_SPECIAL(0x00)
 

Up arrow key.

Definition at line 296 of file evdefs.h.

#define CSMASK_ALLMODIFIERS
 

Value:

All modifiers, shift and lock types.

Definition at line 257 of file evdefs.h.

#define CSMASK_ALLSHIFTS   (CSMASK_SHIFT | CSMASK_CTRL | CSMASK_ALT)
 

All shift keys.

Definition at line 248 of file evdefs.h.

#define CSMASK_ALT   (1 << csKeyModifierTypeAlt)
 

"Alt" key mask

Definition at line 246 of file evdefs.h.

#define CSMASK_Broadcast   (1 << csevBroadcast)
 

Broadcast message events.

Definition at line 137 of file evdefs.h.

#define CSMASK_CAPSLOCK   (1 << csKeyModifierTypeCapsLock)
 

"CapsLock" key mask

Definition at line 251 of file evdefs.h.

#define CSMASK_Command   (1 << csevCommand)
 

Command message events.

Definition at line 135 of file evdefs.h.

#define CSMASK_CTRL   (1 << csKeyModifierTypeCtrl)
 

"Ctrl" key mask

Definition at line 244 of file evdefs.h.

#define CSMASK_FrameProcess   CSMASK_Nothing
 

The plugin will be called at the start of every frame and at the end of every frame with an csevBroadcast event with the Event.Command.Code equal to cscmdPreProcess, csProcess, cscmdPostProcess, or cscmdFinalProcess.

Definition at line 115 of file evdefs.h.

#define CSMASK_Input   (CSMASK_Keyboard | CSMASK_Mouse | CSMASK_Joystick)
 

This mask identifies any input evemt.

Definition at line 147 of file evdefs.h.

#define CSMASK_Joystick   (CSMASK_JoystickMove | CSMASK_JoystickDown | CSMASK_JoystickUp)
 

This mask identifies any joystick event.

Definition at line 144 of file evdefs.h.

#define CSMASK_JoystickDown   (1 << csevJoystickDown)
 

Joystick button down events.

Definition at line 131 of file evdefs.h.

#define CSMASK_JoystickMove   (1 << csevJoystickMove)
 

Joystick movement events.

Definition at line 129 of file evdefs.h.

#define CSMASK_JoystickUp   (1 << csevJoystickUp)
 

Joystick button up events.

Definition at line 133 of file evdefs.h.

#define CSMASK_Keyboard   (1 << csevKeyboard)
 

Keyboard events.

Definition at line 117 of file evdefs.h.

#define CSMASK_Mouse
 

Value:

This mask identifies any mouse event.

Definition at line 140 of file evdefs.h.

#define CSMASK_MouseClick   (1 << csevMouseClick)
 

Mouse click events.

Definition at line 125 of file evdefs.h.

#define CSMASK_MouseDoubleClick   (1 << csevMouseDoubleClick)
 

Mouse double click events.

Definition at line 127 of file evdefs.h.

#define CSMASK_MouseDown   (1 << csevMouseDown)
 

Mouse down events.

Definition at line 121 of file evdefs.h.

#define CSMASK_MouseMove   (1 << csevMouseMove)
 

Mouse move events.

Definition at line 119 of file evdefs.h.

#define CSMASK_MouseUp   (1 << csevMouseUp)
 

Mouse up events.

Definition at line 123 of file evdefs.h.

#define CSMASK_Nothing   (1 << csevNothing)
 

Event mask: Empty event.

If a plugin registers to receive this kind of events via iEventQueue::RegisterListener(plugin, CSMASK_Nothing) this has a special meaning: the plugin will be called at the start of every frame and at the end of every frame with an csevBroadcast event with the Event.Command.Code equal to either cscmdPreProcess or cscmdPostProcess.

Definition at line 109 of file evdefs.h.

#define CSMASK_NUMLOCK   (1 << csKeyModifierTypeNumLock)
 

"NumLock" key mask

Definition at line 253 of file evdefs.h.

#define CSMASK_SCROLLLOCK   (1 << csKeyModifierTypeScrollLock)
 

"ScrollLock" key mask

Definition at line 255 of file evdefs.h.

#define CSMASK_SHIFT   (1 << csKeyModifierTypeShift)
 

"Shift" key mask

Definition at line 242 of file evdefs.h.


Typedef Documentation

typedef enum _csCommandEventCode csCommandEventCode
 

General Command Codes.

The list below does not contain all defined command codes; these are only the most general ones. Crystal Space Windowing System has a broad range of predefined commands; look in CSWS header files for more info.

Basically CSWS uses command codes below 0x80000000; user applications should use command codes above this number, for example:

 enum
 {
   cscmdMyCommand1 = 0xdeadf00d,
   cscmdMyCommand2,
   cscmdMyCommand3
   ...
 }
 *

typedef enum _csEventType csEventType
 

System Events.

typedef enum _csKeyCharType csKeyCharType
 

Character types.

typedef enum _csKeyEventType csKeyEventType
 

Keyboard event type.

typedef enum _csKeyModifierNumType csKeyModifierNumType
 

Modifier numbers.

typedef struct _csKeyModifiers csKeyModifiers
 

Flags for all currently pressed modifiers.

typedef enum _csKeyModifierType csKeyModifierType
 

Modifier types.


Enumeration Type Documentation

enum _csCommandEventCode
 

General Command Codes.

The list below does not contain all defined command codes; these are only the most general ones. Crystal Space Windowing System has a broad range of predefined commands; look in CSWS header files for more info.

Basically CSWS uses command codes below 0x80000000; user applications should use command codes above this number, for example:

 enum
 {
   cscmdMyCommand1 = 0xdeadf00d,
   cscmdMyCommand2,
   cscmdMyCommand3
   ...
 }
 *
Enumeration values:
cscmdNothing  No command.

Dunno really why it is needed but traditionally 0 stands for nothing.

cscmdQuit  The event below causes system driver to quit the event loop, even if the event loop has been entered multiple times.

The quit condition is never reset thus even if you call Loop again, the system driver will quit immediately. Such broadcasts are posted for irreversible finalization of the application such as when user closes the application window.

cscmdFocusChanged  Application has changed its "focused" status.

This command is posted (or is not posted) by system-dependent driver. This event is generated whenever user application receives/loses focus. Upon this event application may react correspondingly - stop music, hide software mouse cursor and so on. iEnable = true in the event application receives focus and false if it loses focus.

 Info: NULL -> window lose focus, non-NULL -> window got focus
 
cscmdSystemOpen  This event is broadcasted to all event listeners just after all modules have been initialized.
cscmdSystemClose  This event is broadcasted to all event listeners just before modules are about to be shutdown and unloaded (that is, the system is shutting down).
cscmdContextResize  This event is generated when user resizes the application window.

The argument points to the graphics context that has been resized.

 Info: (iGraphics2D *) The context that has been resized
 
cscmdContextClose  This event is sent when a graphics context is being destroyed.

Usually this event is accompanyed by a shutdown but there is one exception: when a dynamic texture is closed (a dynamic texture is a graphics context as well).

 Info: (iGraphics2D *) The context that has been closed
 
cscmdCommandLineHelp  This event is broadcasted when system driver displays the help text for all supported command-line switches.

Upon reception of such event every plugin should display a short help for any of the command-line switches it supports. The general format is:

<2 spaces><switch - 18 positions><space>
<switch description>{default value}
The help should be displayed to standard output.
cscmdPreProcess  Broadcasted before cscmdProcess -- on every frame -- as Event.Command.Code of a broadcast event.

Use the event mask CSMASK_FrameProcess to receive this pseudo-event.

cscmdProcess  Broadcasted every frame as Event.Command.Code of a broadcast event.

Use the event mask CSMASK_FrameProcess to receive this pseudo-event.

cscmdPostProcess  Broadcasted after cscmdProcess -- on every frame -- as Event.Command.Code of a broadcast event.

Use the event mask CSMASK_FrameProcess to receive this pseudo-event.

cscmdFinalProcess  Broadcasted after cscmdPostProcess -- on every frame -- as Event.Command.Code of a broadcast event.

Use the event mask CSMASK_FrameProcess to receive this pseudo-event.

cscmdCanvasHidden  Broadcast indicating that the display canvas is not currently visible to the user (such as being iconified).
cscmdCanvasExposed  Broadcast indicating that the display canvas has just become visible (such as being uniconified).

Definition at line 518 of file evdefs.h.

enum _csEventType
 

System Events.

Enumeration values:
csevNothing  Nothing happened.
csevKeyboard  A keyboard event (key down/up).

See also:
csKeyEventHelper , csKeyEventType
csevMouseMove  Mouse has been moved.
csevMouseDown  A mouse button has been pressed.
csevMouseUp  A mouse button has been released.
csevMouseClick  A mouse button has been clicked.
csevMouseDoubleClick  A mouse button has been clicked twice.
csevJoystickMove  A joystick axis has been moved.
csevJoystickDown  A joystick button has been pressed.
csevJoystickUp  A joystick button has been released.
csevCommand  Somebody(-thing) sent a command.
See also:
csEventCommandData.
csevBroadcast  Somebody(-thing) sent a broadcast command.
csevMouseEnter  The mouse has entered a component.
csevMouseExit  The mouse has exited a component.
csevLostFocus  The component has lost keyboard focus.
csevGainFocus  The component has gained keyboard focus.
csevGroupOff  A component in a group has been selected, everyone else should go to their off state.
csevFrameStart  The frame is about to draw.

Definition at line 40 of file evdefs.h.

enum _csKeyCharType
 

Character types.

Enumeration values:
csKeyCharTypeNormal  Normal character.
csKeyCharTypeDead  "Dead" character

Definition at line 475 of file evdefs.h.

enum _csKeyEventType
 

Keyboard event type.

Enumeration values:
csKeyEventTypeUp  A 'key down' event.
csKeyEventTypeDown  A 'key up' event.

Definition at line 87 of file evdefs.h.

enum _csKeyModifierNumType
 

Modifier numbers.

Enumeration values:
csKeyModifierNumLeft  The default number for a 'left' version of a key.
csKeyModifierNumRight  The default number for a 'right' version of a key.
csKeyModifierNumAny  'Magic' modifier number used if there shouldn't be distinguished between multiple modifier keys of the same type.

Definition at line 198 of file evdefs.h.

enum _csKeyModifierType
 

Modifier types.

Enumeration values:
csKeyModifierTypeShift  'Shift' is held
csKeyModifierTypeCtrl  'Ctrl' is held
csKeyModifierTypeAlt  'Alt' is held
csKeyModifierTypeCapsLock  'CapsLock' is toggled
csKeyModifierTypeNumLock  'NumLock' is toggled
csKeyModifierTypeScrollLock  'ScrollLock' is toggled

Definition at line 178 of file evdefs.h.

enum csKeyComposeResult
 

Results for attempts to process a character key.

Enumeration values:
csComposeNoChar  No character could be retrieved. Possibly the key was dead.
csComposeNormalChar  A single, normal chararacter is retrieved.
csComposeComposedChar  A single, composed chararacter is retrieved.
csComposeUncomposeable  A key couldn't be combined with a previously pressed dead key, and both characters are returned individually.

Definition at line 50 of file csinput.h.


Generated for Crystal Space by doxygen 1.2.18