Remove key modifiers in KeyboardInput
This commit is contained in:
parent
9926e179d6
commit
2be71306ec
5 changed files with 12 additions and 75 deletions
|
|
@ -1,25 +1,7 @@
|
|||
use events;
|
||||
use events::KeyModifiers;
|
||||
use cocoa::base::NSUInteger;
|
||||
use cocoa::appkit;
|
||||
|
||||
pub fn modifierflag_to_element(flag: NSUInteger) -> KeyModifiers {
|
||||
let mut modifiers = KeyModifiers::empty();
|
||||
if flag & appkit::NSShiftKeyMask as u64 == appkit::NSShiftKeyMask as u64 {
|
||||
modifiers = modifiers | events::LEFT_SHIFT_MODIFIER;
|
||||
}
|
||||
if flag & appkit::NSControlKeyMask as u64 == appkit::NSControlKeyMask as u64 {
|
||||
modifiers = modifiers | events::LEFT_CONTROL_MODIFIER;
|
||||
}
|
||||
if flag & appkit::NSAlternateKeyMask as u64 == appkit::NSAlternateKeyMask as u64 {
|
||||
modifiers = modifiers | events::LEFT_ALT_MODIFIER;
|
||||
}
|
||||
if flag & appkit::NSNumericPadKeyMask as u64 == appkit::NSNumericPadKeyMask as u64 {
|
||||
modifiers = modifiers | events::NUM_LOCK_MODIFIER;
|
||||
}
|
||||
modifiers
|
||||
}
|
||||
|
||||
pub fn vkeycode_to_element(code: u16) -> Option<events::VirtualKeyCode> {
|
||||
Some(match code {
|
||||
0x00 => events::A,
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ use core_foundation::bundle::{CFBundleGetBundleWithIdentifier, CFBundleGetFuncti
|
|||
|
||||
use std::c_str::CString;
|
||||
use {MouseInput, Pressed, Released, LeftMouseButton, RightMouseButton, MouseMoved, ReceivedCharacter,
|
||||
KeyboardInput, KeyModifiers};
|
||||
KeyboardInput};
|
||||
|
||||
use events;
|
||||
|
||||
|
|
@ -252,13 +252,11 @@ impl Window {
|
|||
}
|
||||
|
||||
let vkey = event::vkeycode_to_element(event.keycode());
|
||||
let modifiers = event::modifierflag_to_element(event.modifierFlags());
|
||||
events.push(KeyboardInput(Pressed, event.keycode() as u8, vkey, modifiers));
|
||||
events.push(KeyboardInput(Pressed, event.keycode() as u8, vkey));
|
||||
},
|
||||
NSKeyUp => {
|
||||
let vkey = event::vkeycode_to_element(event.keycode());
|
||||
let modifiers = event::modifierflag_to_element(event.modifierFlags());
|
||||
events.push(KeyboardInput(Released, event.keycode() as u8, vkey, modifiers));
|
||||
events.push(KeyboardInput(Released, event.keycode() as u8, vkey));
|
||||
},
|
||||
NSFlagsChanged => {
|
||||
let shift_modifier = Window::modifier_event(event, appkit::NSShiftKeyMask as u64, events::LShift, shift_pressed);
|
||||
|
|
@ -295,10 +293,10 @@ impl Window {
|
|||
|
||||
unsafe fn modifier_event(event: id, keymask: u64, key: events::VirtualKeyCode, key_pressed: bool) -> Option<Event> {
|
||||
if !key_pressed && Window::modifier_key_pressed(event, keymask) {
|
||||
return Some(KeyboardInput(Pressed, event.keycode() as u8, Some(key), KeyModifiers::empty()));
|
||||
return Some(KeyboardInput(Pressed, event.keycode() as u8, Some(key)));
|
||||
}
|
||||
else if key_pressed && !Window::modifier_key_pressed(event, keymask) {
|
||||
return Some(KeyboardInput(Released, event.keycode() as u8, Some(key), KeyModifiers::empty()));
|
||||
return Some(KeyboardInput(Released, event.keycode() as u8, Some(key)));
|
||||
}
|
||||
|
||||
return None;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue