Merge pull request #587 from neivv/win32-alt

Handle events for Alt-<Key> and F10 presses in windows
This commit is contained in:
tomaka 2015-09-21 14:43:10 +02:00
commit 1b28e32e31

View file

@ -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);