diff --git a/src/framework/platform/win32platform.cpp b/src/framework/platform/win32platform.cpp index 1e9ef6c1..9f35e528 100644 --- a/src/framework/platform/win32platform.cpp +++ b/src/framework/platform/win32platform.cpp @@ -517,10 +517,12 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) } case WM_CHAR: { - inputEvent.type = EV_TEXT_ENTER; - inputEvent.keychar = wParam; - inputEvent.keycode = KC_UNKNOWN; - g_engine.onInputEvent(inputEvent); + if(wParam >= 32 && wParam <= 255) { + inputEvent.type = EV_TEXT_ENTER; + inputEvent.keychar = wParam; + inputEvent.keycode = KC_UNKNOWN; + g_engine.onInputEvent(inputEvent); + } break; } case WM_CLOSE: @@ -536,22 +538,15 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) break; } case WM_KEYDOWN: - { - inputEvent.type = EV_KEY_DOWN; - inputEvent.ctrl = HIWORD(GetKeyState(VK_CONTROL)) == 0 ? false : true; - inputEvent.alt = HIWORD(GetKeyState(VK_MENU)) == 0 ? false : true; - inputEvent.shift = HIWORD(GetKeyState(VK_SHIFT)) == 0 ? false : true; - inputEvent.keycode = win32.keyMap[wParam]; - g_engine.onInputEvent(inputEvent); - break; - } case WM_KEYUP: { - inputEvent.type = EV_KEY_UP; - inputEvent.ctrl = HIWORD(GetKeyState(VK_CONTROL)) == 0 ? false : true; - inputEvent.alt = HIWORD(GetKeyState(VK_MENU)) == 0 ? false : true; - inputEvent.shift = HIWORD(GetKeyState(VK_SHIFT)) == 0 ? false : true; - inputEvent.keycode = win32.keyMap[wParam]; + if(win32.keyMap.find(wParam) != win32.keyMap.end()) { + inputEvent.type = uMsg == WM_KEYDOWN ? EV_KEY_DOWN : WM_KEYUP; + inputEvent.ctrl = HIWORD(GetKeyState(VK_CONTROL)) == 0 ? false : true; + inputEvent.alt = HIWORD(GetKeyState(VK_MENU)) == 0 ? false : true; + inputEvent.shift = HIWORD(GetKeyState(VK_SHIFT)) == 0 ? false : true; + inputEvent.keycode = win32.keyMap[wParam]; + } g_engine.onInputEvent(inputEvent); break; } diff --git a/src/framework/platform/x11platform.cpp b/src/framework/platform/x11platform.cpp index 2e6da100..b7b1022e 100644 --- a/src/framework/platform/x11platform.cpp +++ b/src/framework/platform/x11platform.cpp @@ -337,12 +337,14 @@ void Platform::poll() static XComposeStatus compose = {NULL, 0}; len = XLookupString(&event.xkey, buf, sizeof(buf), &keysym, &compose); } + if(len > 0 && // for some reason these keys produces characters and we don't want that keysym != XK_BackSpace && keysym != XK_Return && keysym != XK_Delete && - keysym != XK_Escape + keysym != XK_Escape && + (uchar)(buf[0]) >= 32 ) { //logDebug("char: %c code: %d", buf[0], (uchar)buf[0]); inputEvent.type = EV_TEXT_ENTER;