|
|
@@ -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);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|