1//************************************ bs::framework - Copyright 2018 Marko Pintera **************************************//
2//*********** Licensed under the MIT license. See LICENSE.md for full terms. This notice is not to be removed. ***********//
3#pragma once
4
5#include "BsCorePrerequisites.h"
6#include "Input/BsInputFwd.h"
7
8namespace bs
9{
10 /** Infomation about an analog axis that's part of a gamepad. */
11 struct AxisInfo
12 {
13 INT32 axisIdx;
14 INT32 min;
15 INT32 max;
16 };
17
18 /** Information about a gamepad. */
19 struct GamepadInfo
20 {
21 UINT32 id;
22 UINT32 eventHandlerIdx;
23 String name;
24
25 UnorderedMap<INT32, ButtonCode> buttonMap;
26 UnorderedMap<INT32, AxisInfo> axisMap;
27 };
28
29 /**
30 * Data specific to Linux implementation of the input system. Can be passed to platform specific implementations of
31 * the individual device types.
32 */
33 struct InputPrivateData
34 {
35 Vector<GamepadInfo> gamepadInfos;
36 };
37
38 /** Data about relative pointer / scroll wheel movement. */
39 struct LinuxMouseMotionEvent
40 {
41 double deltaX; /**< Relative pointer movement in X direction. */
42 double deltaY; /**< Relative pointer movement in Y direction. */
43 double deltaZ; /**< Relative vertical scroll amount. */
44 };
45
46 /** Data about a single button press or release. */
47 struct LinuxButtonEvent
48 {
49 UINT64 timestamp;
50 ButtonCode button;
51 bool pressed;
52 };
53
54#define BUFFER_SIZE_GAMEPAD 64
55}
56
57