mirror of
https://github.com/bkaradzic/bgfx.git
synced 2026-02-17 20:52:36 +01:00
X11: Fixed send modifier keys when no other keys are pressed.
This commit is contained in:
@@ -422,6 +422,8 @@ namespace entry
|
||||
bool joystick = s_joystick.update(m_eventQueue);
|
||||
bool xpending = XPending(m_display);
|
||||
|
||||
uint8_t oldModifers = m_modifiers;
|
||||
|
||||
if (!xpending)
|
||||
{
|
||||
bx::sleep(joystick ? 8 : 16);
|
||||
@@ -500,6 +502,7 @@ namespace entry
|
||||
{
|
||||
XKeyEvent& xkey = event.xkey;
|
||||
KeySym keysym = XLookupKeysym(&xkey, 0);
|
||||
|
||||
switch (keysym)
|
||||
{
|
||||
case XK_Meta_L: setModifier(Modifier::LeftMeta, KeyPress == event.type); break;
|
||||
@@ -538,6 +541,7 @@ namespace entry
|
||||
if (Key::None != key)
|
||||
{
|
||||
m_eventQueue.postKeyEvent(handle, key, m_modifiers, KeyPress == event.type);
|
||||
oldModifers = m_modifiers;
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -556,6 +560,11 @@ namespace entry
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (oldModifers != m_modifiers)
|
||||
{
|
||||
m_eventQueue.postKeyEvent({ UINT16_MAX }, Key::None, m_modifiers, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -471,12 +471,13 @@ struct OcornutImguiContext
|
||||
m_lastScroll = _scroll;
|
||||
|
||||
#if USE_ENTRY
|
||||
uint8_t modifiers = inputGetModifiersState();
|
||||
const uint8_t modifiers = inputGetModifiersState();
|
||||
io.AddKeyEvent(ImGuiMod_Shift, 0 != (modifiers & (entry::Modifier::LeftShift | entry::Modifier::RightShift) ) );
|
||||
io.AddKeyEvent(ImGuiMod_Ctrl, 0 != (modifiers & (entry::Modifier::LeftCtrl | entry::Modifier::RightCtrl ) ) );
|
||||
io.AddKeyEvent(ImGuiMod_Alt, 0 != (modifiers & (entry::Modifier::LeftAlt | entry::Modifier::RightAlt ) ) );
|
||||
io.AddKeyEvent(ImGuiMod_Super, 0 != (modifiers & (entry::Modifier::LeftMeta | entry::Modifier::RightMeta ) ) );
|
||||
for (int32_t ii = 0; ii < (int32_t)entry::Key::Count; ++ii)
|
||||
|
||||
for (int32_t ii = 0; ii < int32_t(entry::Key::Count); ++ii)
|
||||
{
|
||||
io.AddKeyEvent(m_keyMap[ii], inputGetKeyState(entry::Key::Enum(ii) ) );
|
||||
io.SetKeyEventNativeData(m_keyMap[ii], 0, 0, ii);
|
||||
|
||||
Reference in New Issue
Block a user