diff --git a/examples/common/entry/entry_sdl.cpp b/examples/common/entry/entry_sdl.cpp index 28ef5f01a..91bfef748 100644 --- a/examples/common/entry/entry_sdl.cpp +++ b/examples/common/entry/entry_sdl.cpp @@ -450,7 +450,30 @@ namespace entry { uint8_t modifiers = translateKeyModifiers(kev.keysym.mod); Key::Enum key = translateKey(kev.keysym.scancode); - m_eventQueue.postKeyEvent(handle, key, modifiers, kev.state == SDL_PRESSED); + + // TODO: These keys are not captured by SDL_TEXTINPUT. Should be probably handled by SDL_TEXTEDITING. This is a workaround for now. + if (key == 1) // Escape + { + uint8_t pressedChar[4]; + pressedChar[0] = 0x1b; + m_eventQueue.postCharEvent(handle, 1, pressedChar); + } + else if (key == 2) // Enter + { + uint8_t pressedChar[4]; + pressedChar[0] = 0x0d; + m_eventQueue.postCharEvent(handle, 1, pressedChar); + } + else if (key == 5) // Backspace + { + uint8_t pressedChar[4]; + pressedChar[0] = 0x08; + m_eventQueue.postCharEvent(handle, 1, pressedChar); + } + else + { + m_eventQueue.postKeyEvent(handle, key, modifiers, kev.state == SDL_PRESSED); + } } } break;