cocoadisplay: Use [event charactersIgnoringModifiers] when UCKeyTranslate() can not translate the input key

This commit is contained in:
LD 2020-09-01 20:25:18 +02:00
parent 216475091e
commit 28f49ffd0b

View File

@ -1762,6 +1762,19 @@ handle_key_event(NSEvent *event) {
return;
}
// If UCKeyTranslate could not map the key into a valid unicode character or
// reserved symbol (See NSEvent.h), it returns 0x10 as translated character.
// This happens e.g.e with the combination Fn+F1.. keys.
// In that case, as fallback, we use charactersIgnoringModifiers to retrieve
// the character without modifiers.
if (c == 0x10) {
NSString *str = [event charactersIgnoringModifiers];
if (str == nil || [str length] != 1) {
return;
}
c = [str characterAtIndex: 0];
}
ButtonHandle button = map_key(c);
if (button == ButtonHandle::none()) {