Do not let X translate control key combinations to key codes for us.

This commit is contained in:
Josh Holtrop 2017-10-01 13:56:01 -04:00
parent 6546508cc6
commit 15fcaa80fa

View File

@ -23,7 +23,11 @@ static bool ProcessXKeyEvent(XEvent * x_event, Jtk_Event * event)
{
char buffer;
KeySym keysym;
if (XLookupString(&x_event->xkey, &buffer, 1, &keysym, nullptr) > 0)
/* Make a copy of x_event and turn off the ControlMask bit for lookup
* up keycodes. We'll handle control keys ourselves. */
XEvent x_event_for_key_lookup = *x_event;
x_event_for_key_lookup.xkey.state &= ~ControlMask;
if (XLookupString(&x_event_for_key_lookup.xkey, &buffer, 1, &keysym, nullptr) > 0)
{
uint8_t mods = 0u;
if (x_event->xkey.state & ShiftMask)
@ -38,7 +42,14 @@ static bool ProcessXKeyEvent(XEvent * x_event, Jtk_Event * event)
{
mods |= JTK_KEY_MODS_CTRL;
}
event->key.key = buffer;
if (buffer == '\r')
{
event->key.key = '\n';
}
else
{
event->key.key = buffer;
}
event->key.mods = mods;
}
else