mirror of
https://github.com/rust-windowing/winit.git
synced 2026-09-01 14:20:05 -04:00
Handle events for Alt-<Key> and F10 presses in windows
This commit is contained in:
@@ -102,6 +102,14 @@ pub unsafe extern "system" fn callback(window: winapi::HWND, msg: winapi::UINT,
|
|||||||
0
|
0
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// Prevents default windows menu hotkeys playing unwanted
|
||||||
|
// "ding" sounds. Alternatively could check for WM_SYSCOMMAND
|
||||||
|
// with wparam being SC_KEYMENU, but this may prevent some
|
||||||
|
// other unwanted default hotkeys as well.
|
||||||
|
winapi::WM_SYSCHAR => {
|
||||||
|
0
|
||||||
|
}
|
||||||
|
|
||||||
winapi::WM_MOUSEMOVE => {
|
winapi::WM_MOUSEMOVE => {
|
||||||
use events::Event::MouseMoved;
|
use events::Event::MouseMoved;
|
||||||
|
|
||||||
@@ -126,15 +134,19 @@ pub unsafe extern "system" fn callback(window: winapi::HWND, msg: winapi::UINT,
|
|||||||
0
|
0
|
||||||
},
|
},
|
||||||
|
|
||||||
winapi::WM_KEYDOWN => {
|
winapi::WM_KEYDOWN | winapi::WM_SYSKEYDOWN => {
|
||||||
use events::Event::KeyboardInput;
|
use events::Event::KeyboardInput;
|
||||||
use events::ElementState::Pressed;
|
use events::ElementState::Pressed;
|
||||||
let (scancode, vkey) = event::vkeycode_to_element(wparam, lparam);
|
if msg == winapi::WM_SYSKEYDOWN && wparam as i32 == winapi::VK_F4 {
|
||||||
send_event(window, KeyboardInput(Pressed, scancode, vkey));
|
user32::DefWindowProcW(window, msg, wparam, lparam)
|
||||||
0
|
} else {
|
||||||
|
let (scancode, vkey) = event::vkeycode_to_element(wparam, lparam);
|
||||||
|
send_event(window, KeyboardInput(Pressed, scancode, vkey));
|
||||||
|
0
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
winapi::WM_KEYUP => {
|
winapi::WM_KEYUP | winapi::WM_SYSKEYUP => {
|
||||||
use events::Event::KeyboardInput;
|
use events::Event::KeyboardInput;
|
||||||
use events::ElementState::Released;
|
use events::ElementState::Released;
|
||||||
let (scancode, vkey) = event::vkeycode_to_element(wparam, lparam);
|
let (scancode, vkey) = event::vkeycode_to_element(wparam, lparam);
|
||||||
|
|||||||
Reference in New Issue
Block a user