summaryrefslogtreecommitdiffstats
path: root/osdep
diff options
context:
space:
mode:
authorStefano Pigozzi <stefano.pigozzi@gmail.com>2013-08-30 19:46:48 +0200
committerStefano Pigozzi <stefano.pigozzi@gmail.com>2013-08-30 19:49:30 +0200
commit462e6f281a66ad8d8bfcfc9a342d365ccc28121f (patch)
treecc1f2674d8ff6faac6c3ee3ca976a49a916252c0 /osdep
parentc89b162462d37b06d1d2f78379c8d4fc9bf57c81 (diff)
downloadmpv-462e6f281a66ad8d8bfcfc9a342d365ccc28121f.tar.bz2
mpv-462e6f281a66ad8d8bfcfc9a342d365ccc28121f.tar.xz
cocoa: let the core handle key repeats
Report key down and key up modifiers to the core so that it can issue it's own key repeats (instead of relying on Cocoa's ones).
Diffstat (limited to 'osdep')
-rw-r--r--osdep/macosx_application.m5
-rw-r--r--osdep/macosx_application_objc.h2
-rw-r--r--osdep/macosx_events.m16
3 files changed, 17 insertions, 6 deletions
diff --git a/osdep/macosx_application.m b/osdep/macosx_application.m
index e561d54c13..fb20fbf2cc 100644
--- a/osdep/macosx_application.m
+++ b/osdep/macosx_application.m
@@ -93,11 +93,10 @@ static NSString *escape_loadfile_name(NSString *input)
self.eventsResponder = [[[EventsResponder alloc] init] autorelease];
self.willStopOnOpenEvent = NO;
- [NSEvent addLocalMonitorForEventsMatchingMask:NSKeyDownMask
+ [NSEvent addLocalMonitorForEventsMatchingMask:NSKeyDownMask|NSKeyUpMask
handler:^(NSEvent *event) {
- return [self.eventsResponder handleKeyDown:event];
+ return [self.eventsResponder handleKey:event];
}];
-
}
return self;
diff --git a/osdep/macosx_application_objc.h b/osdep/macosx_application_objc.h
index 1af64dbcab..53d00b2ab4 100644
--- a/osdep/macosx_application_objc.h
+++ b/osdep/macosx_application_objc.h
@@ -22,7 +22,7 @@
@interface EventsResponder : NSObject <HIDRemoteDelegate>
- (BOOL)handleMediaKey:(NSEvent *)event;
-- (NSEvent *)handleKeyDown:(NSEvent *)event;
+- (NSEvent *)handleKey:(NSEvent *)event;
- (void)startAppleRemote;
- (void)stopAppleRemote;
- (void)startMediaKeys;
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