255 lines
3.1 KiB
C++
255 lines
3.1 KiB
C++
/* Copyright (c) 2019-2021, Arm Limited and Contributors
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 the "License";
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <cstddef>
|
|
#include <cstdint>
|
|
|
|
namespace vkb
|
|
{
|
|
class Platform;
|
|
|
|
enum class EventSource
|
|
{
|
|
Keyboard,
|
|
Mouse,
|
|
Touchscreen
|
|
};
|
|
|
|
class InputEvent
|
|
{
|
|
public:
|
|
InputEvent(EventSource source);
|
|
|
|
EventSource get_source() const;
|
|
|
|
private:
|
|
EventSource source;
|
|
};
|
|
|
|
enum class KeyCode
|
|
{
|
|
Unknown,
|
|
Space,
|
|
Apostrophe, /* ' */
|
|
Comma, /* , */
|
|
Minus, /* - */
|
|
Period, /* . */
|
|
Slash, /* / */
|
|
_0,
|
|
_1,
|
|
_2,
|
|
_3,
|
|
_4,
|
|
_5,
|
|
_6,
|
|
_7,
|
|
_8,
|
|
_9,
|
|
Semicolon, /* ; */
|
|
Equal, /* = */
|
|
A,
|
|
B,
|
|
C,
|
|
D,
|
|
E,
|
|
F,
|
|
G,
|
|
H,
|
|
I,
|
|
J,
|
|
K,
|
|
L,
|
|
M,
|
|
N,
|
|
O,
|
|
P,
|
|
Q,
|
|
R,
|
|
S,
|
|
T,
|
|
U,
|
|
V,
|
|
W,
|
|
X,
|
|
Y,
|
|
Z,
|
|
LeftBracket, /* [ */
|
|
Backslash, /* \ */
|
|
RightBracket, /* ] */
|
|
GraveAccent, /* ` */
|
|
Escape,
|
|
Enter,
|
|
Tab,
|
|
Backspace,
|
|
Insert,
|
|
DelKey,
|
|
Right,
|
|
Left,
|
|
Down,
|
|
Up,
|
|
PageUp,
|
|
PageDown,
|
|
Home,
|
|
End,
|
|
Back,
|
|
CapsLock,
|
|
ScrollLock,
|
|
NumLock,
|
|
PrintScreen,
|
|
Pause,
|
|
F1,
|
|
F2,
|
|
F3,
|
|
F4,
|
|
F5,
|
|
F6,
|
|
F7,
|
|
F8,
|
|
F9,
|
|
F10,
|
|
F11,
|
|
F12,
|
|
KP_0,
|
|
KP_1,
|
|
KP_2,
|
|
KP_3,
|
|
KP_4,
|
|
KP_5,
|
|
KP_6,
|
|
KP_7,
|
|
KP_8,
|
|
KP_9,
|
|
KP_Decimal,
|
|
KP_Divide,
|
|
KP_Multiply,
|
|
KP_Subtract,
|
|
KP_Add,
|
|
KP_Enter,
|
|
KP_Equal,
|
|
LeftShift,
|
|
LeftControl,
|
|
LeftAlt,
|
|
RightShift,
|
|
RightControl,
|
|
RightAlt
|
|
};
|
|
|
|
enum class KeyAction
|
|
{
|
|
Down,
|
|
Up,
|
|
Repeat,
|
|
Unknown
|
|
};
|
|
|
|
class KeyInputEvent : public InputEvent
|
|
{
|
|
public:
|
|
KeyInputEvent(KeyCode code, KeyAction action);
|
|
|
|
KeyCode get_code() const;
|
|
|
|
KeyAction get_action() const;
|
|
|
|
private:
|
|
KeyCode code;
|
|
|
|
KeyAction action;
|
|
};
|
|
|
|
enum class MouseButton
|
|
{
|
|
Left,
|
|
Right,
|
|
Middle,
|
|
Back,
|
|
Forward,
|
|
Unknown
|
|
};
|
|
|
|
enum class MouseAction
|
|
{
|
|
Down,
|
|
Up,
|
|
Move,
|
|
Unknown
|
|
};
|
|
|
|
class MouseButtonInputEvent : public InputEvent
|
|
{
|
|
public:
|
|
MouseButtonInputEvent(MouseButton button, MouseAction action, float pos_x, float pos_y);
|
|
|
|
MouseButton get_button() const;
|
|
|
|
MouseAction get_action() const;
|
|
|
|
float get_pos_x() const;
|
|
|
|
float get_pos_y() const;
|
|
|
|
private:
|
|
MouseButton button;
|
|
|
|
MouseAction action;
|
|
|
|
float pos_x;
|
|
|
|
float pos_y;
|
|
};
|
|
|
|
enum class TouchAction
|
|
{
|
|
Down,
|
|
Up,
|
|
Move,
|
|
Cancel,
|
|
PointerDown,
|
|
PointerUp,
|
|
Unknown
|
|
};
|
|
|
|
class TouchInputEvent : public InputEvent
|
|
{
|
|
public:
|
|
TouchInputEvent(int32_t pointer_id, size_t pointer_count, TouchAction action, float pos_x, float pos_y);
|
|
|
|
TouchAction get_action() const;
|
|
|
|
int32_t get_pointer_id() const;
|
|
|
|
size_t get_touch_points() const;
|
|
|
|
float get_pos_x() const;
|
|
|
|
float get_pos_y() const;
|
|
|
|
private:
|
|
TouchAction action;
|
|
|
|
int32_t pointer_id;
|
|
|
|
size_t touch_points;
|
|
|
|
float pos_x;
|
|
|
|
float pos_y;
|
|
};
|
|
} // namespace vkb
|