Introduce diagonal movement keys on the numeric keypad, and use them

as an alternative control method in Cube. (This was a bit of hassle
in the Windows front end; I also introduced a debugging framework
and made TranslateMessage conditional.)

[originally from svn r4162]
This commit is contained in:
Simon Tatham
2004-04-28 17:21:57 +00:00
parent d37b52bde5
commit 56a59e2e51
4 changed files with 131 additions and 8 deletions

20
gtk.c
View File

@ -139,14 +139,26 @@ static gint key_event(GtkWidget *widget, GdkEventKey *event, gpointer data)
if (event->string[0] && !event->string[1])
keyval = (unsigned char)event->string[0];
else if (event->keyval == GDK_Up || event->keyval == GDK_KP_Up)
else if (event->keyval == GDK_Up || event->keyval == GDK_KP_Up ||
event->keyval == GDK_KP_8)
keyval = CURSOR_UP;
else if (event->keyval == GDK_Down || event->keyval == GDK_KP_Down)
else if (event->keyval == GDK_Down || event->keyval == GDK_KP_Down ||
event->keyval == GDK_KP_2)
keyval = CURSOR_DOWN;
else if (event->keyval == GDK_Left || event->keyval == GDK_KP_Left)
else if (event->keyval == GDK_Left || event->keyval == GDK_KP_Left ||
event->keyval == GDK_KP_4)
keyval = CURSOR_LEFT;
else if (event->keyval == GDK_Right || event->keyval == GDK_KP_Right)
else if (event->keyval == GDK_Right || event->keyval == GDK_KP_Right ||
event->keyval == GDK_KP_6)
keyval = CURSOR_RIGHT;
else if (event->keyval == GDK_KP_Home || event->keyval == GDK_KP_7)
keyval = CURSOR_UP_LEFT;
else if (event->keyval == GDK_KP_End || event->keyval == GDK_KP_1)
keyval = CURSOR_DOWN_LEFT;
else if (event->keyval == GDK_KP_Page_Up || event->keyval == GDK_KP_9)
keyval = CURSOR_UP_RIGHT;
else if (event->keyval == GDK_KP_Page_Down || event->keyval == GDK_KP_3)
keyval = CURSOR_DOWN_RIGHT;
else
keyval = -1;