Files
Vulkan-Samples/framework/platform/input_events.h
T
2025-09-04 10:54:47 +08:00

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