summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bgfx/examples/common/entry/entry_sdl.cpp
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/bgfx/examples/common/entry/entry_sdl.cpp')
-rw-r--r--3rdparty/bgfx/examples/common/entry/entry_sdl.cpp25
1 files changed, 17 insertions, 8 deletions
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 <SDL2/SDL.h>
+#include <SDL2/SDL_syswm.h>
#include <bgfxplatform.h>
#include <stdio.h>
@@ -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);
}
}
}