diff options
Diffstat (limited to 'osdep/macosx_events.m')
-rw-r--r-- | osdep/macosx_events.m | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/osdep/macosx_events.m b/osdep/macosx_events.m index dfa43a0437..e09dc0af93 100644 --- a/osdep/macosx_events.m +++ b/osdep/macosx_events.m @@ -252,8 +252,10 @@ void cocoa_put_key_with_modifiers(int keycode, int modifiers) andMapping:keymap]; } -- (NSEvent*)handleKeyDown:(NSEvent *)event +- (NSEvent*)handleKey:(NSEvent *)event { + if ([event isARepeat]) return nil; + NSString *chars; if (RightAltPressed([event modifierFlags])) @@ -316,9 +318,19 @@ void cocoa_put_key_with_modifiers(int keycode, int modifiers) return mask; } +- (int)mapTypeModifiers:(NSEventType)type +{ + NSDictionary *map = @{ + @(NSKeyDown) : @(MP_KEY_STATE_DOWN), + @(NSKeyUp) : @(MP_KEY_STATE_UP), + }; + return [map[@(type)] intValue]; +} + - (int)keyModifierMask:(NSEvent *)event { - return [self mapKeyModifiers:[event modifierFlags]]; + return [self mapKeyModifiers:[event modifierFlags]] | + [self mapTypeModifiers:[event type]]; } -(BOOL)handleKey:(int)key withMask:(int)mask andMapping:(NSDictionary *)mapping |