From aed279ed4eaac772b09d89feb7ccd1e058612649 Mon Sep 17 00:00:00 2001 From: Christian Hergert Date: Fri, 9 Oct 2020 20:03:52 -0700 Subject: [PATCH] macos: add key equivalent helper This is needed by quartz code in gtk/. --- gdk/macos/gdkmacoskeymap-private.h | 1 + gdk/macos/gdkmacoskeymap.c | 147 +++++++++++++++++++++++++++++ 2 files changed, 148 insertions(+) diff --git a/gdk/macos/gdkmacoskeymap-private.h b/gdk/macos/gdkmacoskeymap-private.h index 34ff21b225..ac0f2dd691 100644 --- a/gdk/macos/gdkmacoskeymap-private.h +++ b/gdk/macos/gdkmacoskeymap-private.h @@ -30,6 +30,7 @@ G_BEGIN_DECLS GdkMacosKeymap *_gdk_macos_keymap_new (GdkMacosDisplay *display); GdkEventType _gdk_macos_keymap_get_event_type (NSEvent *event); gboolean _gdk_macos_keymap_is_modifier (guint keycode); +gunichar _gdk_macos_keymap_get_equivalent (guint key); G_END_DECLS diff --git a/gdk/macos/gdkmacoskeymap.c b/gdk/macos/gdkmacoskeymap.c index 0de006f377..4d54311874 100644 --- a/gdk/macos/gdkmacoskeymap.c +++ b/gdk/macos/gdkmacoskeymap.c @@ -696,3 +696,150 @@ _gdk_macos_keymap_is_modifier (guint keycode) return FALSE; } + +/* + * Code for key code conversion + * + * Copyright (C) 2009 Paul Davis + */ +gunichar +_gdk_macos_keymap_get_equivalent (guint key) +{ + if (key >= GDK_KEY_A && key <= GDK_KEY_Z) + return key + (GDK_KEY_a - GDK_KEY_A); + + if (key >= GDK_KEY_space && key <= GDK_KEY_asciitilde) + return key; + + switch (key) + { + case GDK_KEY_BackSpace: + return NSBackspaceCharacter; + case GDK_KEY_Delete: + return NSDeleteFunctionKey; + case GDK_KEY_Pause: + return NSPauseFunctionKey; + case GDK_KEY_Scroll_Lock: + return NSScrollLockFunctionKey; + case GDK_KEY_Sys_Req: + return NSSysReqFunctionKey; + case GDK_KEY_Home: + return NSHomeFunctionKey; + case GDK_KEY_Left: + case GDK_KEY_leftarrow: + return NSLeftArrowFunctionKey; + case GDK_KEY_Up: + case GDK_KEY_uparrow: + return NSUpArrowFunctionKey; + case GDK_KEY_Right: + case GDK_KEY_rightarrow: + return NSRightArrowFunctionKey; + case GDK_KEY_Down: + case GDK_KEY_downarrow: + return NSDownArrowFunctionKey; + case GDK_KEY_Page_Up: + return NSPageUpFunctionKey; + case GDK_KEY_Page_Down: + return NSPageDownFunctionKey; + case GDK_KEY_End: + return NSEndFunctionKey; + case GDK_KEY_Begin: + return NSBeginFunctionKey; + case GDK_KEY_Select: + return NSSelectFunctionKey; + case GDK_KEY_Print: + return NSPrintFunctionKey; + case GDK_KEY_Execute: + return NSExecuteFunctionKey; + case GDK_KEY_Insert: + return NSInsertFunctionKey; + case GDK_KEY_Undo: + return NSUndoFunctionKey; + case GDK_KEY_Redo: + return NSRedoFunctionKey; + case GDK_KEY_Menu: + return NSMenuFunctionKey; + case GDK_KEY_Find: + return NSFindFunctionKey; + case GDK_KEY_Help: + return NSHelpFunctionKey; + case GDK_KEY_Break: + return NSBreakFunctionKey; + case GDK_KEY_Mode_switch: + return NSModeSwitchFunctionKey; + case GDK_KEY_F1: + return NSF1FunctionKey; + case GDK_KEY_F2: + return NSF2FunctionKey; + case GDK_KEY_F3: + return NSF3FunctionKey; + case GDK_KEY_F4: + return NSF4FunctionKey; + case GDK_KEY_F5: + return NSF5FunctionKey; + case GDK_KEY_F6: + return NSF6FunctionKey; + case GDK_KEY_F7: + return NSF7FunctionKey; + case GDK_KEY_F8: + return NSF8FunctionKey; + case GDK_KEY_F9: + return NSF9FunctionKey; + case GDK_KEY_F10: + return NSF10FunctionKey; + case GDK_KEY_F11: + return NSF11FunctionKey; + case GDK_KEY_F12: + return NSF12FunctionKey; + case GDK_KEY_F13: + return NSF13FunctionKey; + case GDK_KEY_F14: + return NSF14FunctionKey; + case GDK_KEY_F15: + return NSF15FunctionKey; + case GDK_KEY_F16: + return NSF16FunctionKey; + case GDK_KEY_F17: + return NSF17FunctionKey; + case GDK_KEY_F18: + return NSF18FunctionKey; + case GDK_KEY_F19: + return NSF19FunctionKey; + case GDK_KEY_F20: + return NSF20FunctionKey; + case GDK_KEY_F21: + return NSF21FunctionKey; + case GDK_KEY_F22: + return NSF22FunctionKey; + case GDK_KEY_F23: + return NSF23FunctionKey; + case GDK_KEY_F24: + return NSF24FunctionKey; + case GDK_KEY_F25: + return NSF25FunctionKey; + case GDK_KEY_F26: + return NSF26FunctionKey; + case GDK_KEY_F27: + return NSF27FunctionKey; + case GDK_KEY_F28: + return NSF28FunctionKey; + case GDK_KEY_F29: + return NSF29FunctionKey; + case GDK_KEY_F30: + return NSF30FunctionKey; + case GDK_KEY_F31: + return NSF31FunctionKey; + case GDK_KEY_F32: + return NSF32FunctionKey; + case GDK_KEY_F33: + return NSF33FunctionKey; + case GDK_KEY_F34: + return NSF34FunctionKey; + case GDK_KEY_F35: + return NSF35FunctionKey; + default: + break; + } + + return '\0'; +}