From 4a8ee6d9a4266589b25a817eb9fbc71a11704bc8 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Sat, 26 Nov 2011 16:21:42 +0100 Subject: vo_corevideo: fix key interpretation with modifiers When interpreting a key event, use the "charactersIgnoringModifiers" method of the event in order to extract Alt+key combinations while keeping the normal meaning of "key". When the right alt modifier is pressed use the "characters" method to allow AltGr behavior to be used to generate different characters. --- libvo/vo_corevideo.m | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/libvo/vo_corevideo.m b/libvo/vo_corevideo.m index 3b83051eb7..e937460636 100644 --- a/libvo/vo_corevideo.m +++ b/libvo/vo_corevideo.m @@ -938,8 +938,15 @@ static int control(uint32_t request, void *data) */ - (void) keyDown: (NSEvent *) theEvent { - int key = convert_key([theEvent keyCode], *[[theEvent characters] UTF8String]); - if (key != -1) { + unsigned char charcode; + if (([theEvent modifierFlags] & NSRightAlternateKeyMask) == NSRightAlternateKeyMask) + charcode = *[[theEvent characters] UTF8String]; + else + charcode = [[theEvent charactersIgnoringModifiers] characterAtIndex:0]; + + int key = convert_key([theEvent keyCode], charcode); + + if (key > -1) { if([theEvent modifierFlags] & NSShiftKeyMask) key |= KEY_MODIFIER_SHIFT; if([theEvent modifierFlags] & NSControlKeyMask) -- cgit v1.2.3