fn on_keydown()

in native/desktop-win32/src/win32/event_loop.rs [352:378]


fn on_keydown(event_loop: &EventLoop, window: &Window, msg: u32, wparam: WPARAM, lparam: LPARAM) -> Option<LRESULT> {
    let vk_code = LOWORD!(wparam.0);
    let timestamp = unsafe { GetMessageTime() } as u32;
    let event = KeyEvent {
        key_code: VirtualKey(vk_code),
        key_status: PhysicalKeyStatus::parse(lparam),
        is_system_key: matches!(msg, WM_SYSKEYDOWN),
        timestamp: Timestamp(u64::from(timestamp)),
    };
    let result = event_loop.handle_event(window, Event::KeyDown(event));
    if result.is_none() {
        let pos = unsafe { GetMessagePos() };
        let msg = MSG {
            hwnd: window.hwnd(),
            message: msg,
            wParam: wparam,
            lParam: lparam,
            time: timestamp,
            pt: POINT {
                x: GET_X_LPARAM!(pos),
                y: GET_Y_LPARAM!(pos),
            },
        };
        let _ = unsafe { TranslateMessage(&raw const msg) };
    }
    result
}