+ /*
+ * Diagonal keys on the numeric keypad.
+ */
+ case VK_PRIOR:
+ if (!(lParam & 0x01000000)) key = CURSOR_UP_RIGHT;
+ break;
+ case VK_NEXT:
+ if (!(lParam & 0x01000000)) key = CURSOR_DOWN_RIGHT;
+ break;
+ case VK_HOME:
+ if (!(lParam & 0x01000000)) key = CURSOR_UP_LEFT;
+ break;
+ case VK_END:
+ if (!(lParam & 0x01000000)) key = CURSOR_DOWN_LEFT;
+ break;
+ /*
+ * Numeric keypad keys with Num Lock on.
+ */
+ case VK_NUMPAD4: key = CURSOR_LEFT; break;
+ case VK_NUMPAD6: key = CURSOR_RIGHT; break;
+ case VK_NUMPAD8: key = CURSOR_UP; break;
+ case VK_NUMPAD2: key = CURSOR_DOWN; break;
+ case VK_NUMPAD9: key = CURSOR_UP_RIGHT; break;
+ case VK_NUMPAD3: key = CURSOR_DOWN_RIGHT; break;
+ case VK_NUMPAD7: key = CURSOR_UP_LEFT; break;
+ case VK_NUMPAD1: key = CURSOR_DOWN_LEFT; break;