File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -131,6 +131,21 @@ impl MacosDisplay {
131131
132132 Some ( event_handler)
133133 }
134+
135+ // When the command key is pressed (super key), macOS swallows all key up events.
136+ fn generate_swallowed_key_events ( & mut self , event : ObjcId ) {
137+ let event_type: u64 = unsafe { msg_send ! [ event, type ] } ;
138+ if event_type == NSEventType :: NSKeyUp as u64 {
139+ let mods = get_event_key_modifier ( event) ;
140+ if mods. logo {
141+ if let Some ( key) = get_event_keycode ( event) {
142+ if let Some ( event_handler) = self . context ( ) {
143+ event_handler. key_up_event ( key, mods) ;
144+ }
145+ }
146+ }
147+ }
148+ }
134149}
135150
136151impl MacosDisplay {
@@ -1357,13 +1372,19 @@ where
13571372 if block_on_wait {
13581373 let event: ObjcId = msg_send ! [ ns_app, nextEventMatchingMask: NSEventMask :: NSAnyEventMask untilDate: distant_future inMode: NSDefaultRunLoopMode dequeue: YES ] ;
13591374
1375+ if event != nil {
1376+ display. generate_swallowed_key_events ( event) ;
1377+ }
1378+
13601379 let ( ) = msg_send ! [ ns_app, sendEvent: event] ;
13611380 } else {
13621381 loop {
13631382 let event: ObjcId = msg_send ! [ ns_app, nextEventMatchingMask: NSEventMask :: NSAnyEventMask untilDate: distant_past inMode: NSDefaultRunLoopMode dequeue: YES ] ;
13641383 if event == nil {
13651384 break ;
13661385 }
1386+ display. generate_swallowed_key_events ( event) ;
1387+
13671388 let ( ) = msg_send ! [ ns_app, sendEvent: event] ;
13681389 }
13691390 }
You can’t perform that action at this time.
0 commit comments