summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bgfx/examples/common/entry/entry_x11.cpp
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/bgfx/examples/common/entry/entry_x11.cpp')
-rw-r--r--3rdparty/bgfx/examples/common/entry/entry_x11.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/3rdparty/bgfx/examples/common/entry/entry_x11.cpp b/3rdparty/bgfx/examples/common/entry/entry_x11.cpp
index a058479fabb..8ced748dcbe 100644
--- a/3rdparty/bgfx/examples/common/entry/entry_x11.cpp
+++ b/3rdparty/bgfx/examples/common/entry/entry_x11.cpp
@@ -61,6 +61,23 @@ namespace entry
GamepadAxis::RightZ,
};
+ struct AxisDpadRemap
+ {
+ Key::Enum first;
+ Key::Enum second;
+ };
+
+ static AxisDpadRemap s_axisDpad[] =
+ {
+ { Key::GamepadLeft, Key::GamepadRight },
+ { Key::GamepadUp, Key::GamepadDown },
+ { Key::None, Key::None },
+ { Key::GamepadLeft, Key::GamepadRight },
+ { Key::GamepadUp, Key::GamepadDown },
+ { Key::None, Key::None },
+ };
+ BX_STATIC_ASSERT(BX_COUNTOF(s_translateAxis) == BX_COUNTOF(s_axisDpad) );
+
struct Joystick
{
Joystick()
@@ -135,6 +152,24 @@ namespace entry
if (filter(axis, &value) )
{
_eventQueue.postAxisEvent(defaultWindow, handle, axis, value);
+
+ if (Key::None != s_axisDpad[axis].first)
+ {
+ if (m_value[axis] == 0)
+ {
+ _eventQueue.postKeyEvent(defaultWindow, s_axisDpad[axis].first, 0, false);
+ _eventQueue.postKeyEvent(defaultWindow, s_axisDpad[axis].second, 0, false);
+ }
+ else
+ {
+ _eventQueue.postKeyEvent(defaultWindow
+ , 0 > m_value[axis] ? s_axisDpad[axis].first : s_axisDpad[axis].second
+ , 0
+ , true
+ );
+ }
+ }
+
}
}
}