class EE::Window::Input

Overview

The basic input class. For mouse and keyboard. More…

#include <input.hpp>

class Input {
public:
    // typedefs

    typedef std::function<void(InputEvent*)> InputCallback;

    // construction

    virtual ~Input();

    // methods

    virtual void update() = 0;
    virtual void waitEvent(const Time& timeout = Time::Zero) = 0;
    virtual bool grabInput() = 0;
    virtual void grabInput(const bool& Grab) = 0;
    virtual void injectMousePos(const Uint16& x, const Uint16& y) = 0;
    virtual Vector2i queryMousePos() = 0;
    virtual void captureMouse(const bool& capture) = 0;
    virtual bool isMouseCaptured() const = 0;
    virtual std::string getKeyName(const Keycode& keycode) const = 0;
    virtual Keycode getKeyFromName(const std::string& keycode) const = 0;
    virtual std::string getScancodeName(const Scancode& scancode) const = 0;
    virtual Scancode getScancodeFromName(const std::string& scancode) const = 0;
    virtual Keycode getKeyFromScancode(const Scancode& scancode) const = 0;
    virtual Scancode getScancodeFromKey(const Keycode& scancode) const = 0;
    bool isKeyUp(const Keycode& Key);
    bool isKeyDown(const Keycode& Key);
    bool isScancodeUp(const Scancode& scancode);
    bool isScancodeDown(const Scancode& scancode);
    void injectKeyUp(const Keycode& Key);
    void injectScancodeDown(const Scancode& scancode);
    void injectScancodeUp(const Scancode& scancode);
    void injectMousePos(const Vector2i& Pos);
    void injectButtonPress(const Uint32& Button);
    void injectButtonRelease(const Uint32& Button);
    bool isLeftControlPressed() const;
    bool isRightControlPressed() const;
    bool isControlPressed() const;
    bool isKeyModPressed() const;
    bool isLeftShiftPressed() const;
    bool isRightShiftPressed() const;
    bool isShiftPressed() const;
    bool isAltPressed() const;
    bool isLeftAltPressed() const;
    bool isAltGrPressed() const;
    bool isMetaPressed() const;
    bool isMouseLeftPressed() const;
    bool isMouseRightPressed() const;
    bool isMouseMiddlePressed() const;
    bool mouseLeftClicked() const;
    bool mouseRightClicked() const;
    bool mouseMiddleClicked() const;
    bool mouseLeftDoubleClicked() const;
    bool mouseRightDoubleClicked() const;
    bool mouseMiddleDoubleClicked() const;
    bool mouseWheelScrolledUp() const;
    bool mouseWheelScrolledDown() const;
    Uint32 pushCallback(const InputCallback& cb);
    void popCallback(const Uint32& CallbackId);
    Vector2i getMousePos() const;
    Vector2f getMousePosf();
    void setMousePos(const Vector2i& Pos);
    Vector2f getMousePosFromView(const View& View);
    void setMouseSpeed(const Float& Speed);
    const Float& getMouseSpeed() const;
    const Uint32& getLastPressTrigger() const;
    const Uint32& getPressTrigger() const;
    const Uint32& getReleaseTrigger() const;
    const Uint32& getClickTrigger() const;
    const Uint32& getDoubleClickTrigger() const;
    const Time& getDoubleClickInterval() const;
    void setDoubleClickInterval(const Time& Interval);
    void cleanStates();
    void sendEvent(InputEvent* Event);
    JoystickManager* getJoystickManager() const;
    Uint32 getFingerCount();
    InputFinger* getFingerIndex(const Uint32& Index);
    InputFinger* getFinger(const Int64& fingerId);
    std::vector<InputFinger*> getFingersDown();
    std::vector<InputFinger*> getFingersWasDown();
    const Uint32& getModState() const;
    void processEvent(InputEvent* Event);
    const Uint64& getEventsSentId() const;
    Uint32 getSanitizedModState() const;
    bool isModState(const Uint32& state) const;
    Time getElapsedSinceLastEvent() const;
    Time getElapsedSinceLastKeyboardEvent() const;
    Time getElapsedSinceLastMouseEvent() const;
    Time getElapsedSinceLastKeyboardOrMouseEvent() const;
};

Detailed Documentation

The basic input class. For mouse and keyboard.

Methods

virtual void update() = 0

Update the Input

virtual void waitEvent(const Time& timeout = Time::Zero) = 0

If timeout is zero waits indefinitely for the next available event otherwise waits until the specified timeout for the next available event.

virtual bool grabInput() = 0

Returns:

If the mouse and keyboard are grabed.

virtual void grabInput(const bool& Grab) = 0

Grab or Ungrab the mouse and keyboard.

virtual void injectMousePos(const Uint16& x, const Uint16& y) = 0

Inject the mouse position given

virtual Vector2i queryMousePos() = 0

Gets the current mouse position relative to the focus window

virtual void captureMouse(const bool& capture) = 0

Capturing enables your app to obtain mouse events globally, instead of just within your window. Not all video targets support this function. When capturing is enabled, the current window will get all mouse events, but unlike relative mode, no change is made to the cursor and it is not restrained to your window.

virtual bool isMouseCaptured() const = 0

Returns:

If mouse is captured.

virtual std::string getKeyName(const Keycode& keycode) const = 0

Returns:

Get the key name.

virtual Keycode getKeyFromName(const std::string& keycode) const = 0

Returns:

The corresponding keycode from a name.

virtual std::string getScancodeName(const Scancode& scancode) const = 0

Returns:

Get the scancode name.

virtual Scancode getScancodeFromName(const std::string& scancode) const = 0

Returns:

The corresponding scancode from a name.

virtual Keycode getKeyFromScancode(const Scancode& scancode) const = 0

Returns:

The key from the scancode.

virtual Scancode getScancodeFromKey(const Keycode& scancode) const = 0

Returns:

The scancode from a key.

bool isKeyUp(const Keycode& Key)

Returns:

If keyboard key was released.

bool isKeyDown(const Keycode& Key)

Returns:

If keyboard key is pressed.

bool isScancodeUp(const Scancode& scancode)

Returns:

If scancode was released.

bool isScancodeDown(const Scancode& scancode)

Returns:

If scancode it’s pressed.

void injectKeyUp(const Keycode& Key)

Inject the key state of a key as key up or released.

void injectScancodeDown(const Scancode& scancode)

Inject the scancode state of a scancode as pressed.

void injectScancodeUp(const Scancode& scancode)

Inject the key state of a key as released.

void injectMousePos(const Vector2i& Pos)

Inject the mouse position given

void injectButtonPress(const Uint32& Button)

Inject the mouse button as pressed

void injectButtonRelease(const Uint32& Button)

Inject the mouse button as released

bool isLeftControlPressed() const

Returns:

If the left Control Key is pressed

bool isRightControlPressed() const

Returns:

If the right Control Key is pressed

bool isControlPressed() const

Returns:

If the Control Key is pressed

bool isKeyModPressed() const

Returns:

If the default key modifier is pressed

bool isLeftShiftPressed() const

Returns:

If the left Shift Key is pressed

bool isRightShiftPressed() const

Returns:

If the right Shift Key is pressed

bool isShiftPressed() const

Returns:

If the Shift Key is pressed

bool isAltPressed() const

Returns:

If any Alt Key is pressed

bool isLeftAltPressed() const

Returns:

If the left Alt Key is pressed

bool isAltGrPressed() const

Returns:

If the right Alt Key is pressed

bool isMetaPressed() const

Returns:

If the Meta Key is pressed

bool isMouseLeftPressed() const

Returns:

If mouse left button it’s pressed

bool isMouseRightPressed() const

Returns:

If mouse right button it’s pressed

bool isMouseMiddlePressed() const

Returns:

If mouse middle button it’s pressed

bool mouseLeftClicked() const

Returns:

If mouse left click was clicked

bool mouseRightClicked() const

Returns:

If mouse right click was clicked

bool mouseMiddleClicked() const

Returns:

If mouse middle button (scroll button) was clicked.

bool mouseLeftDoubleClicked() const

Returns:

If mouse left click was double clicked

bool mouseRightDoubleClicked() const

Returns:

If mouse right click was double clicked

bool mouseMiddleDoubleClicked() const

Returns:

If mouse middle button (scroll button) was double clicked.

bool mouseWheelScrolledUp() const

Returns:

If mouse wheel up scrolled

bool mouseWheelScrolledDown() const

Returns:

If mouse wheel down scrolled

Uint32 pushCallback(const InputCallback& cb)

Push a new input callback.

Returns:

The Callback Id

void popCallback(const Uint32& CallbackId)

Pop the callback id indicated.

Vector2i getMousePos() const

Returns:

The Mouse position vector

Vector2f getMousePosf()

Returns:

The position vector converted to float

void setMousePos(const Vector2i& Pos)

This will change the value of the mouse pos, will not REALLY move the mouse ( for that is InjectMousePos ).

Vector2f getMousePosFromView(const View& View)

Returns:

The mouse position over the current view

void setMouseSpeed(const Float& Speed)

Set the mouse speed ( only affects grabed windows )

const Float& getMouseSpeed() const

Returns:

The Mouse Speed

const Uint32& getLastPressTrigger() const

Returns:

The bitflags of the last pressed trigger (before the current state of press trigger)

const Uint32& getPressTrigger() const

Triggers are used mostly for the UI components. They are simple to manage. The mouse flags are defined in keycodes.hpp For Example The usage is simple, to know if the left mouse click is pressed you need to check against the left mouse flag mask if ( myInput->PressTrigger() & EE_BUTTON_LMASK ) …

Returns:

The current state as flags of the mouse press trigger

const Uint32& getReleaseTrigger() const

Returns:

The current state as flags of the mouse release trigger

const Uint32& getClickTrigger() const

Returns:

The current state as flags of the mouse click trigger

const Uint32& getDoubleClickTrigger() const

Returns:

The current state as flags of the mouse double click trigger

const Time& getDoubleClickInterval() const

Returns:

The double click interval in milliseconds ( default 500 ms )

void setDoubleClickInterval(const Time& Interval)

Set the double click interval in milliseconds

void cleanStates()

Clean the keyboard and mouse states

void sendEvent(InputEvent* Event)

Send an input event to the window

JoystickManager* getJoystickManager() const

Returns:

The joystick manager

Uint32 getFingerCount()

Returns:

The maximun number of fingers

InputFinger* getFingerIndex(const Uint32& Index)

Returns:

The input finger from it’s index

InputFinger* getFinger(const Int64& fingerId)

Returns:

The Input Finder from it’s id

std::vector<InputFinger*> getFingersDown()

Returns:

A list of the input finders that are currently down

std::vector<InputFinger*> getFingersWasDown()

Returns:

A list of the input finders that were down in the last update

const Uint32& getModState() const

Returns:

the state of the mod keys.

void processEvent(InputEvent* Event)

Process an input event. Called by the input update.

const Uint64& getEventsSentId() const

Returns:

An id of the current event update processed (