diff --git a/src/gui/jtk/Jtk_event.cc b/src/gui/jtk/Jtk_event.cc index 9a21ec0..131fc3e 100644 --- a/src/gui/jtk/Jtk_event.cc +++ b/src/gui/jtk/Jtk_event.cc @@ -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