bool Context::GetEvent( Event_t& Event ) { MSG Msg; if( PeekMessage(&Msg, NULL, 0, 0, PM_REMOVE) ) { switch( Msg.message ) { case WM_SIZE: { Event.Type = Events::Resized; Event.Event.Resized.Width = LOWORD(Msg.lParam); Event.Event.Resized.Height = HIWORD(Msg.lParam); } break; case WM_KEYDOWN: case WM_KEYUP: case WM_SYSKEYUP: case WM_SYSKEYDOWN: { Event.Type = Msg.message == WM_KEYDOWN ? Events::KeyPressed : Events::KeyReleased; Event.Event.KeyPressed.Key = TranslateKeycode(Msg.wParam, Msg.lParam); } break; case WM_LBUTTONUP: case WM_LBUTTONDOWN: { Event.Type = Msg.message == WM_LBUTTONDOWN ? Events::MousePressed : Events::MouseReleased; Event.Event.MousePressed.Button = MouseButtons::Left; Event.Event.MousePressed.X = LOWORD(Msg.lParam); Event.Event.MousePressed.Y = HIWORD(Msg.lParam); } break; case WM_MBUTTONUP: case WM_MBUTTONDOWN: { Event.Type = Msg.message == WM_MBUTTONDOWN ? Events::MousePressed : Events::MouseReleased; Event.Event.MousePressed.Button = MouseButtons::Middle; Event.Event.MousePressed.X = LOWORD(Msg.lParam); Event.Event.MousePressed.Y = HIWORD(Msg.lParam); } break; case WM_RBUTTONUP: case WM_RBUTTONDOWN: { Event.Type = Msg.message == WM_RBUTTONDOWN ? Events::MousePressed : Events::MouseReleased; Event.Event.MousePressed.Button = MouseButtons::Right; Event.Event.MousePressed.X = LOWORD(Msg.lParam); Event.Event.MousePressed.Y = HIWORD(Msg.lParam); } break; case WM_MOUSEMOVE: { Event.Type = Events::MouseMoved; Event.Event.MouseMoved.X = LOWORD(Msg.lParam); Event.Event.MouseMoved.Y = HIWORD(Msg.lParam); } break; case WM_QUIT: { Impl->IsOpen = false; return false; } break; default: Event.Type = Events::Invalid; break; } TranslateMessage(&Msg); DispatchMessage(&Msg); return true; } return false; }
int Android_OnKeyDown(int keycode) { return SDL_SendKeyboardKey(SDL_PRESSED, TranslateKeycode(keycode)); }
int Android_OnKeyUp(int keycode) { return SDL_SendKeyboardKey(SDL_RELEASED, TranslateKeycode(keycode)); }
} if (scancode == SDL_SCANCODE_UNKNOWN) { if (WinRT_Unofficial_Keycodes.find(keycode) != WinRT_Unofficial_Keycodes.end()) { scancode = WinRT_Unofficial_Keycodes[keycode]; } } if (scancode == SDL_SCANCODE_UNKNOWN) { SDL_Log("WinRT TranslateKeycode, unknown keycode=%d\n", (int)keycode); } return scancode; } void WINRT_ProcessKeyDownEvent(Windows::UI::Core::KeyEventArgs ^args) { SDL_Scancode sdlScancode = TranslateKeycode((int)args->VirtualKey); #if 0 SDL_Keycode keycode = SDL_GetKeyFromScancode(sdlScancode); SDL_Log("key down, handled=%s, ext?=%s, released?=%s, menu key down?=%s, repeat count=%d, native scan code=%d, was down?=%s, vkey=%d, sdl scan code=%d (%s), sdl key code=%d (%s)\n", (args->Handled ? "1" : "0"), (args->KeyStatus.IsExtendedKey ? "1" : "0"), (args->KeyStatus.IsKeyReleased ? "1" : "0"), (args->KeyStatus.IsMenuKeyDown ? "1" : "0"), args->KeyStatus.RepeatCount, args->KeyStatus.ScanCode, (args->KeyStatus.WasKeyDown ? "1" : "0"), args->VirtualKey, sdlScancode, SDL_GetScancodeName(sdlScancode), keycode, SDL_GetKeyName(keycode));