From ea84f67035ea9899086223c540a79ffec328caef Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Sun, 31 Jul 2016 00:10:21 +0100 Subject: fix gdk to nskey mapping for home/end and missing keypad mappings --- frontends/gtk/gui.c | 56 +++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 44 insertions(+), 12 deletions(-) diff --git a/frontends/gtk/gui.c b/frontends/gtk/gui.c index af24d4018..d57ebdf5a 100644 --- a/frontends/gtk/gui.c +++ b/frontends/gtk/gui.c @@ -631,60 +631,93 @@ uint32_t gtk_gui_gdkkey_to_nskey(GdkEventKey *key) return NS_KEY_DELETE_LINE_START; else return NS_KEY_DELETE_LEFT; + case GDK_KEY(Delete): if (key->state & GDK_SHIFT_MASK) return NS_KEY_DELETE_LINE_END; else return NS_KEY_DELETE_RIGHT; - case GDK_KEY(Linefeed): return 13; - case GDK_KEY(Return): return 10; - case GDK_KEY(Left): return NS_KEY_LEFT; - case GDK_KEY(Right): return NS_KEY_RIGHT; - case GDK_KEY(Up): return NS_KEY_UP; - case GDK_KEY(Down): return NS_KEY_DOWN; + + case GDK_KEY(Linefeed): + return 13; + + case GDK_KEY(Return): + return 10; + + case GDK_KEY(Left): + case GDK_KEY(KP_Left): + return NS_KEY_LEFT; + + case GDK_KEY(Right): + case GDK_KEY(KP_Right): + return NS_KEY_RIGHT; + + case GDK_KEY(Up): + case GDK_KEY(KP_Up): + return NS_KEY_UP; + + case GDK_KEY(Down): + case GDK_KEY(KP_Down): + return NS_KEY_DOWN; + case GDK_KEY(Home): + case GDK_KEY(KP_Home): if (key->state & GDK_CONTROL_MASK) - return NS_KEY_TEXT_START; - else return NS_KEY_LINE_START; + else + return NS_KEY_TEXT_START; + case GDK_KEY(End): + case GDK_KEY(KP_End): if (key->state & GDK_CONTROL_MASK) - return NS_KEY_TEXT_END; - else return NS_KEY_LINE_END; + else + return NS_KEY_TEXT_END; + case GDK_KEY(Page_Up): + case GDK_KEY(KP_Page_Up): return NS_KEY_PAGE_UP; + case GDK_KEY(Page_Down): + case GDK_KEY(KP_Page_Down): return NS_KEY_PAGE_DOWN; + case 'a': if (key->state & GDK_CONTROL_MASK) return NS_KEY_SELECT_ALL; return gdk_keyval_to_unicode(key->keyval); + case 'u': if (key->state & GDK_CONTROL_MASK) return NS_KEY_DELETE_LINE; return gdk_keyval_to_unicode(key->keyval); + case 'c': if (key->state & GDK_CONTROL_MASK) return NS_KEY_COPY_SELECTION; return gdk_keyval_to_unicode(key->keyval); + case 'v': if (key->state & GDK_CONTROL_MASK) return NS_KEY_PASTE; return gdk_keyval_to_unicode(key->keyval); + case 'x': if (key->state & GDK_CONTROL_MASK) return NS_KEY_CUT_SELECTION; return gdk_keyval_to_unicode(key->keyval); + case 'Z': case 'y': if (key->state & GDK_CONTROL_MASK) return NS_KEY_REDO; return gdk_keyval_to_unicode(key->keyval); + case 'z': if (key->state & GDK_CONTROL_MASK) return NS_KEY_UNDO; return gdk_keyval_to_unicode(key->keyval); + case GDK_KEY(Escape): return NS_KEY_ESCAPE; @@ -705,9 +738,8 @@ uint32_t gtk_gui_gdkkey_to_nskey(GdkEventKey *key) case GDK_KEY(Hyper_R): return 0; - default: - return gdk_keyval_to_unicode(key->keyval); } + return gdk_keyval_to_unicode(key->keyval); } -- cgit v1.2.3