From a163b2827775c215703723e0e3ab94aab63d359f Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Wed, 27 May 2015 12:07:35 +0200 Subject: Update BGFX (nw) --- 3rdparty/bgfx/examples/common/entry/entry_sdl.cpp | 25 +++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) (limited to '3rdparty/bgfx/examples/common/entry/entry_sdl.cpp') diff --git a/3rdparty/bgfx/examples/common/entry/entry_sdl.cpp b/3rdparty/bgfx/examples/common/entry/entry_sdl.cpp index b9564339c11..91bfef74865 100644 --- a/3rdparty/bgfx/examples/common/entry/entry_sdl.cpp +++ b/3rdparty/bgfx/examples/common/entry/entry_sdl.cpp @@ -12,6 +12,7 @@ #endif // BX_PLATFORM_WINDOWS #include +#include #include #include @@ -450,20 +451,28 @@ namespace entry uint8_t modifiers = translateKeyModifiers(kev.keysym.mod); Key::Enum key = translateKey(kev.keysym.scancode); - const uint8_t shiftMask = Modifier::LeftShift|Modifier::RightShift; - const bool nonShiftModifiers = (0 != (modifiers&(~shiftMask) ) ); - const bool isCharPressed = (Key::Key0 <= key && key <= Key::KeyZ) || (Key::Esc <= key && key <= Key::Minus); - const bool isText = isCharPressed && !nonShiftModifiers; - - if (isText) + // 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] = keyToAscii(key, modifiers); + pressedChar[0] = 0x08; m_eventQueue.postCharEvent(handle, 1, pressedChar); } else { - m_eventQueue.postKeyEvent(handle, key, modifiers, kev.state == SDL_PRESSED); + m_eventQueue.postKeyEvent(handle, key, modifiers, kev.state == SDL_PRESSED); } } } -- cgit v1.2.3-70-g09d2