Esempio n. 1
0
    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;
    }
Esempio n. 2
0
int
Android_OnKeyDown(int keycode)
{
    return SDL_SendKeyboardKey(SDL_PRESSED, TranslateKeycode(keycode));
}
Esempio n. 3
0
int
Android_OnKeyUp(int keycode)
{
    return SDL_SendKeyboardKey(SDL_RELEASED, TranslateKeycode(keycode));
}
Esempio n. 4
0
    }
    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));