Blob Blame History Raw
diff -up ClanLib-0.6.5/Sources/Display/Input/X11/keyboard_x11.cpp~ ClanLib-0.6.5/Sources/Display/Input/X11/keyboard_x11.cpp
--- ClanLib-0.6.5/Sources/Display/Input/X11/keyboard_x11.cpp~	2019-11-05 17:41:03.000000000 +0100
+++ ClanLib-0.6.5/Sources/Display/Input/X11/keyboard_x11.cpp	2019-11-05 17:57:07.026831796 +0100
@@ -211,6 +211,7 @@ int CL_XWindowKeyboard::map_keysym_to_id
 	case XK_Print: return CL_KEY_PRINT;
 	case XK_Insert: return CL_KEY_INSERT;
 	case XK_Num_Lock: return CL_KEY_NUMLOCK;
+	/* Keypad 0-9 + . numlock on */
 	case XK_KP_0: return CL_KEY_KP_0;
 	case XK_KP_1: return CL_KEY_KP_1;
 	case XK_KP_2: return CL_KEY_KP_2;
@@ -221,6 +222,25 @@ int CL_XWindowKeyboard::map_keysym_to_id
 	case XK_KP_7: return CL_KEY_KP_7;
 	case XK_KP_8: return CL_KEY_KP_8;
 	case XK_KP_9: return CL_KEY_KP_9;
+	case XK_KP_Decimal: return CL_KEY_KP_DECIMAL;
+	/* Keypad 0-9 + . numlock off */
+	case XK_KP_Insert: return CL_KEY_KP_0;
+	case XK_KP_End: return CL_KEY_KP_1;
+	case XK_KP_Down: return CL_KEY_KP_2;
+	case XK_KP_Page_Down: return CL_KEY_KP_3;
+	case XK_KP_Left: return CL_KEY_KP_4;
+	case XK_KP_Begin: return CL_KEY_KP_5;
+	case XK_KP_Right: return CL_KEY_KP_6;
+	case XK_KP_Home: return CL_KEY_KP_7;
+	case XK_KP_Up: return CL_KEY_KP_8;
+	case XK_KP_Page_Up: return CL_KEY_KP_9;
+	case XK_KP_Delete: return CL_KEY_KP_DECIMAL;
+	/* Keypad keys not influenced by numlock */
+	case XK_KP_Divide: return CL_KEY_KP_DIV;
+	case XK_KP_Multiply: return CL_KEY_KP_MULT;
+	case XK_KP_Subtract: return CL_KEY_KP_MINUS;
+	case XK_KP_Add: return CL_KEY_KP_PLUS;
+	case XK_KP_Enter: return CL_KEY_KP_ENTER;
 	case XK_F1: return CL_KEY_F1;
 	case XK_F2: return CL_KEY_F2;
 	case XK_F3: return CL_KEY_F3;