diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/osx/mod.rs | 12 | 
1 files changed, 10 insertions, 2 deletions
diff --git a/src/osx/mod.rs b/src/osx/mod.rs index d194c21..7d17aac 100644 --- a/src/osx/mod.rs +++ b/src/osx/mod.rs @@ -14,6 +14,8 @@ use core_foundation::base::TCFType;  use core_foundation::string::CFString;  use core_foundation::bundle::{CFBundleGetBundleWithIdentifier, CFBundleGetFunctionPointerForName}; +use std::c_str::CString; +  pub struct Window {      window: id,      view: id, @@ -210,7 +212,7 @@ impl Window {          loop {              unsafe { -                use {MouseInput, Pressed, Released, LeftMouseButton, RightMouseButton, MouseMoved}; +                use {MouseInput, Pressed, Released, LeftMouseButton, RightMouseButton, MouseMoved, ReceivedCharacter};                  let event = NSApp().nextEventMatchingMask_untilDate_inMode_dequeue_(                      NSAnyEventMask as u64,                      NSDate::distantPast(nil), @@ -229,7 +231,13 @@ impl Window {                          let view_point = self.view.convertPoint_fromView_(window_point, nil);                          events.push(MouseMoved((view_point.x as int, view_point.y as int)));                      }, -                    NSKeyDown               => { }, +                    NSKeyDown               => { +                        let received_cstr = CString::new(event.characters().UTF8String(), false); +                        match received_cstr.as_str() { +                            Some(received_str) => { events.push(ReceivedCharacter(received_str.char_at(0))); }, +                            None               => { }, +                        }; +                    },                      NSKeyUp                 => { },                      NSFlagsChanged          => { },                      NSScrollWheel           => { },  | 
