Input subsystem. Converts operating system window messages to input state and events. More...

#include <Input.h>

Inheritance diagram for Urho3D::Input:
[legend]
Collaboration diagram for Urho3D::Input:
[legend]

Public Member Functions

 Input (Context *context)
 Construct.
 
virtual ~Input ()
 Destruct.
 
void Update ()
 Poll for window messages. Called by HandleBeginFrame().
 
void SetToggleFullscreen (bool enable)
 Set whether ALT-ENTER fullscreen toggle is enabled.
 
void SetMouseVisible (bool enable, bool suppressEvent=false)
 Set whether the operating system mouse cursor is visible. When not visible (default), is kept centered to prevent leaving the window. Mouse visiblility event can be suppressed– this also recalls any unsuppressed SetMouseVisible which can be returned by ResetMouseVisible().
 
void ResetMouseVisible ()
 Reset last mouse visibilty that was not suppressed in SetMouseVisible.
 
void SetMouseGrabbed (bool grab)
 Set whether the mouse is currently being grabbed by an operation.
 
void SetMouseMode (MouseMode mode)
 Set the mouse mode. More...
 
SDL_JoystickID AddScreenJoystick (XMLFile *layoutFile=0, XMLFile *styleFile=0)
 Add screen joystick. More...
 
bool RemoveScreenJoystick (SDL_JoystickID id)
 Remove screen joystick by instance ID. More...
 
void SetScreenJoystickVisible (SDL_JoystickID id, bool enable)
 Set whether the virtual joystick is visible.
 
void SetScreenKeyboardVisible (bool enable)
 Show or hide on-screen keyboard on platforms that support it. When shown, keypresses from it are delivered as key events.
 
void SetTouchEmulation (bool enable)
 Set touch emulation by mouse. Only available on desktop platforms. When enabled, actual mouse events are no longer sent and the mouse cursor is forced visible.
 
bool RecordGesture ()
 Begin recording a touch gesture. Return true if successful. The E_GESTURERECORDED event (which contains the ID for the new gesture) will be sent when recording finishes.
 
bool SaveGestures (Serializer &dest)
 Save all in-memory touch gestures. Return true if successful.
 
bool SaveGesture (Serializer &dest, unsigned gestureID)
 Save a specific in-memory touch gesture to a file. Return true if successful.
 
unsigned LoadGestures (Deserializer &source)
 Load touch gestures from a file. Return number of loaded gestures, or 0 on failure.
 
bool RemoveGesture (unsigned gestureID)
 Remove an in-memory gesture by ID. Return true if was found.
 
void RemoveAllGestures ()
 Remove all in-memory gestures.
 
int GetKeyFromName (const String &name) const
 Return keycode from key name.
 
int GetKeyFromScancode (int scancode) const
 Return keycode from scancode.
 
String GetKeyName (int key) const
 Return name of key from keycode.
 
int GetScancodeFromKey (int key) const
 Return scancode from keycode.
 
int GetScancodeFromName (const String &name) const
 Return scancode from key name.
 
String GetScancodeName (int scancode) const
 Return name of key from scancode.
 
bool GetKeyDown (int key) const
 Check if a key is held down.
 
bool GetKeyPress (int key) const
 Check if a key has been pressed on this frame.
 
bool GetScancodeDown (int scancode) const
 Check if a key is held down by scancode.
 
bool GetScancodePress (int scanode) const
 Check if a key has been pressed on this frame by scancode.
 
bool GetMouseButtonDown (int button) const
 Check if a mouse button is held down.
 
bool GetMouseButtonPress (int button) const
 Check if a mouse button has been pressed on this frame.
 
bool GetQualifierDown (int qualifier) const
 Check if a qualifier key is held down.
 
bool GetQualifierPress (int qualifier) const
 Check if a qualifier key has been pressed on this frame.
 
int GetQualifiers () const
 Return the currently held down qualifiers.
 
IntVector2 GetMousePosition () const
 Return mouse position within window. Should only be used with a visible mouse cursor.
 
const IntVector2GetMouseMove () const
 Return mouse movement since last frame.
 
int GetMouseMoveX () const
 Return horizontal mouse movement since last frame.
 
int GetMouseMoveY () const
 Return vertical mouse movement since last frame.
 
int GetMouseMoveWheel () const
 Return mouse wheel movement since last frame.
 
unsigned GetNumTouches () const
 Return number of active finger touches.
 
TouchStateGetTouch (unsigned index) const
 Return active finger touch by index.
 
unsigned GetNumJoysticks () const
 Return number of connected joysticks.
 
JoystickStateGetJoystick (SDL_JoystickID id)
 Return joystick state by ID, or null if does not exist.
 
JoystickStateGetJoystickByIndex (unsigned index)
 Return joystick state by index, or null if does not exist. 0 = first connected joystick.
 
bool GetToggleFullscreen () const
 Return whether fullscreen toggle is enabled.
 
bool IsScreenJoystickVisible (SDL_JoystickID id) const
 Return whether a virtual joystick is visible.
 
bool GetScreenKeyboardSupport () const
 Return whether on-screen keyboard is supported.
 
bool IsScreenKeyboardVisible () const
 Return whether on-screen keyboard is being shown.
 
bool GetTouchEmulation () const
 Return whether touch emulation is enabled.
 
bool IsMouseVisible () const
 Return whether the operating system mouse cursor is visible.
 
bool IsMouseGrabbed () const
 Return whether the mouse is currently being grabbed by an operation.
 
MouseMode GetMouseMode () const
 Return the mouse mode.
 
bool HasFocus ()
 Return whether application window has input focus.
 
bool IsMinimized () const
 Return whether application window is minimized.
 
- Public Member Functions inherited from Urho3D::Object
 Object (Context *context)
 Construct.
 
virtual ~Object ()
 Destruct. Clean up self from event sender & receiver structures.
 
virtual Urho3D::StringHash GetType () const =0
 Return type hash.
 
virtual Urho3D::StringHash GetBaseType () const =0
 Return base class type hash.
 
virtual const Urho3D::StringGetTypeName () const =0
 Return type name.
 
virtual void OnEvent (Object *sender, StringHash eventType, VariantMap &eventData)
 Handle event.
 
void SubscribeToEvent (StringHash eventType, EventHandler *handler)
 Subscribe to an event that can be sent by any sender.
 
void SubscribeToEvent (Object *sender, StringHash eventType, EventHandler *handler)
 Subscribe to a specific sender's event.
 
void UnsubscribeFromEvent (StringHash eventType)
 Unsubscribe from an event.
 
void UnsubscribeFromEvent (Object *sender, StringHash eventType)
 Unsubscribe from a specific sender's event.
 
void UnsubscribeFromEvents (Object *sender)
 Unsubscribe from a specific sender's events.
 
void UnsubscribeFromAllEvents ()
 Unsubscribe from all events.
 
void UnsubscribeFromAllEventsExcept (const PODVector< StringHash > &exceptions, bool onlyUserData)
 Unsubscribe from all events except those listed, and optionally only those with userdata (script registered events.)
 
void SendEvent (StringHash eventType)
 Send event to all subscribers.
 
void SendEvent (StringHash eventType, VariantMap &eventData)
 Send event with parameters to all subscribers. More...
 
VariantMapGetEventDataMap () const
 Return a preallocated map for event data. Used for optimization to avoid constant re-allocation of event data maps.
 
ContextGetContext () const
 Return execution context.
 
ObjectGetSubsystem (StringHash type) const
 Return subsystem by type.
 
ObjectGetEventSender () const
 Return active event sender. Null outside event handling.
 
EventHandlerGetEventHandler () const
 Return active event handler. Null outside event handling.
 
bool HasSubscribedToEvent (StringHash eventType) const
 Return whether has subscribed to an event without specific sender.
 
bool HasSubscribedToEvent (Object *sender, StringHash eventType) const
 Return whether has subscribed to a specific sender's event.
 
bool HasEventHandlers () const
 Return whether has subscribed to any event.
 
template<class T >
T * GetSubsystem () const
 Template version of returning a subsystem.
 
const StringGetCategory () const
 Return object category. Categories are (optionally) registered along with the object factory. Return an empty string if the object category is not registered.
 
- Public Member Functions inherited from Urho3D::RefCounted
 RefCounted ()
 Construct. Allocate the reference count structure and set an initial self weak reference.
 
virtual ~RefCounted ()
 Destruct. Mark as expired and also delete the reference count structure if no outside weak references exist.
 
void AddRef ()
 Increment reference count. Can also be called outside of a SharedPtr for traditional reference counting.
 
void ReleaseRef ()
 Decrement reference count and delete self if no more references. Can also be called outside of a SharedPtr for traditional reference counting.
 
int Refs () const
 Return reference count.
 
int WeakRefs () const
 Return weak reference count.
 
RefCountRefCountPtr ()
 Return pointer to the reference count structure.
 

Private Member Functions

 OBJECT (Input)
 
void Initialize ()
 Initialize when screen mode initially set.
 
SDL_JoystickID OpenJoystick (unsigned index)
 Open a joystick and return its ID. Return -1 if no joystick.
 
void ResetJoysticks ()
 Setup internal joystick structures.
 
void GainFocus ()
 Prepare input state for application gaining input focus.
 
void LoseFocus ()
 Prepare input state for application losing input focus.
 
void ResetState ()
 Clear input state. More...
 
void ResetTouches ()
 Clear touch states and send touch end events.
 
unsigned GetTouchIndexFromID (int touchID)
 Get the index of a touch based on the touch ID.
 
unsigned PopTouchIndex ()
 Used internally to return and remove the next available touch index.
 
void PushTouchIndex (int touchID)
 Push a touch index back into the list of available when finished with it.
 
void SendInputFocusEvent ()
 Send an input focus or window minimization change event.
 
void SetMouseButton (int button, bool newState)
 Handle a mouse button change.
 
void SetKey (int key, int scancode, unsigned raw, bool newState)
 Handle a key change.
 
void SetMouseWheel (int delta)
 Handle mousewheel change.
 
void SetMousePosition (const IntVector2 &position)
 Internal function to set the mouse cursor position.
 
void HandleScreenMode (StringHash eventType, VariantMap &eventData)
 Handle screen mode event.
 
void HandleBeginFrame (StringHash eventType, VariantMap &eventData)
 Handle frame start event.
 
void HandleScreenJoystickTouch (StringHash eventType, VariantMap &eventData)
 Handle touch events from the controls of screen joystick(s).
 
void HandleSDLEvent (void *sdlEvent)
 Handle SDL event.
 

Private Attributes

WeakPtr< Graphicsgraphics_
 Graphics subsystem.
 
HashSet< int > keyDown_
 Key down state.
 
HashSet< int > keyPress_
 Key pressed state.
 
HashSet< int > scancodeDown_
 Key down state by scancode.
 
HashSet< int > scancodePress_
 Key pressed state by scancode.
 
HashMap< int, TouchStatetouches_
 Active finger touches.
 
List< int > availableTouchIDs_
 List that maps between event touch IDs and normalised touch IDs.
 
HashMap< int, int > touchIDMap_
 Mapping of touch indicies.
 
String textInput_
 String for text input.
 
HashMap< SDL_JoystickID,
JoystickState
joysticks_
 Opened joysticks.
 
unsigned mouseButtonDown_
 Mouse buttons' down state.
 
unsigned mouseButtonPress_
 Mouse buttons' pressed state.
 
IntVector2 lastMousePosition_
 Last mouse position for calculating movement.
 
IntVector2 lastVisibleMousePosition_
 Last mouse position before being set to not visible.
 
IntVector2 mouseMove_
 Mouse movement since last frame.
 
int mouseMoveWheel_
 Mouse wheel movement since last frame.
 
unsigned windowID_
 SDL window ID.
 
bool toggleFullscreen_
 Fullscreen toggle flag.
 
bool mouseVisible_
 Operating system mouse cursor visible flag.
 
bool lastMouseVisible_
 The last operating system mouse cursor visible flag set by end use call to SetMouseVisible.
 
bool mouseGrabbed_
 Flag to indicate the mouse is being grabbed by an operation. Subsystems like UI that uses mouse should temporarily ignore the mouse hover or click events.
 
MouseMode mouseMode_
 Determines the mode of mouse behaviour.
 
bool touchEmulation_
 Touch emulation mode flag.
 
bool inputFocus_
 Input focus flag.
 
bool minimized_
 Minimized flag.
 
bool focusedThisFrame_
 Gained focus on this frame flag.
 
bool suppressNextMouseMove_
 Next mouse move suppress flag.
 
bool inResize_
 Handling a window resize event flag.
 
bool screenModeChanged_
 Flag for automatic focus (without click inside window) after screen mode change, needed on Linux.
 
bool initialized_
 Initialized flag.
 

Additional Inherited Members

- Protected Attributes inherited from Urho3D::Object
Contextcontext_
 Execution context.
 

Detailed Description

Input subsystem. Converts operating system window messages to input state and events.

Member Function Documentation

SDL_JoystickID Urho3D::Input::AddScreenJoystick ( XMLFile layoutFile = 0,
XMLFile styleFile = 0 
)

Add screen joystick.

Return the joystick instance ID when successful or negative on error. If layout file is not given, use the default screen joystick layout. If style file is not given, use the default style file from root UI element.

This method should only be called in main thread.

Todo:
After a real joystick has been plugged in 1073741824 times, the ranges will overlap
Todo:
Axis emulation for screen joystick is not fully supported yet.

Here is the call graph for this function:

bool Urho3D::Input::RemoveScreenJoystick ( SDL_JoystickID  id)

Remove screen joystick by instance ID.

Return true if successful.

This method should only be called in main thread.

Here is the call graph for this function:

void Urho3D::Input::ResetState ( )
private

Clear input state.

Todo:
Check if resetting joystick state on input focus loss is even necessary

Here is the call graph for this function:

Here is the caller graph for this function:

void Urho3D::Input::SetMouseMode ( MouseMode  mode)

Set the mouse mode.

Set the mouse mode behaviour. MM_ABSOLUTE is the default behaviour, allowing the toggling of operating system cursor visibility and allowing the cursor to escape the window when visible. When the operating system cursor is invisible in absolute mouse mode, the mouse is confined to the window. If the operating system and UI cursors are both invisible, interaction with the Urho UI will be limited (eg: drag move / drag end events will not trigger). SetMouseMode(MM_ABSOLUTE) will call SetMouseGrabbed(false).

MM_RELATIVE sets the operating system cursor to invisible and confines the cursor to the window. The operating system cursor cannot be set to be visible in this mode via SetMouseVisible(), however changes are tracked and will be restored when another mouse mode is set. When the virtual cursor is also invisible, UI interaction will still function as normal (eg: drag events will trigger). SetMouseMode(MM_RELATIVE) will call SetMouseGrabbed(true).

MM_WRAP grabs the mouse from the operating system and confines the operating system cursor to the window, wrapping the cursor when it is near the edges. SetMouseMode(MM_WRAP) will call SetMouseGrabbed(true).

Todo:
Use SDL_SetRelativeMouseMode() for MM_RELATIVE mode
Todo:
When SDL 2.0.4 is integrated, use SDL_CaptureMouse() and global mouse functions for MM_WRAP mode.

Here is the call graph for this function:

Here is the caller graph for this function:


The documentation for this class was generated from the following files:
  • /home/travis/build/urho3d/Urho3D/Source/Urho3D/Input/Input.h
  • /home/travis/build/urho3d/Urho3D/Source/Urho3D/Input/Input.cpp