File tree Expand file tree Collapse file tree 1 file changed +11
-2
lines changed Expand file tree Collapse file tree 1 file changed +11
-2
lines changed Original file line number Diff line number Diff line change @@ -575,7 +575,11 @@ define_class!(
575575 let send_raw = if self . ivars( ) . forward_key_to_app. get( ) {
576576 true
577577 } else if self . is_ime_enabled( ) {
578+ // Allow non-text keys through, and always pass through when Ctrl/Command is held
579+ // for shortcuts.
580+ let mods = self . ivars( ) . modifiers. get( ) . state( ) ;
578581 key_event. text. is_none( )
582+ || mods. intersects( ModifiersState :: CONTROL | ModifiersState :: META )
579583 } else {
580584 !had_ime_input
581585 } ;
@@ -608,8 +612,13 @@ define_class!(
608612 return ;
609613 }
610614
611- // Route keyUp: forward non-character releases when IME is enabled and didn't consume.
612- if !self . is_ime_enabled( ) || ( !is_char_key && !ime_consumed_event) {
615+ // Route keyUp: forward non-character releases when IME is enabled and didn't consume,
616+ // or when Ctrl/Command is held (shortcuts).
617+ let mods = self . ivars( ) . modifiers. get( ) . state( ) ;
618+ if !self . is_ime_enabled( )
619+ || ( !is_char_key && !ime_consumed_event)
620+ || mods. intersects( ModifiersState :: CONTROL | ModifiersState :: META )
621+ {
613622 self . queue_keyboard_input_event( key_event, false ) ;
614623 }
615624 }
You can’t perform that action at this time.
0 commit comments