+ // use the "extended" bit (24) of lParam to distinguish extended keys
+ // from normal keys as the same key is sent
+ case VK_PRIOR:
+ id = lParam & (1 << 24) ? WXK_PRIOR : WXK_NUMPAD_PRIOR;
+ break;
+ case VK_NEXT:
+ id = lParam & (1 << 24) ? WXK_NEXT : WXK_NUMPAD_NEXT;
+ break;
+ case VK_END:
+ id = lParam & (1 << 24) ? WXK_END : WXK_NUMPAD_END;
+ break;
+ case VK_HOME:
+ id = lParam & (1 << 24) ? WXK_HOME : WXK_NUMPAD_HOME;
+ break;
+ case VK_LEFT:
+ id = lParam & (1 << 24) ? WXK_LEFT : WXK_NUMPAD_LEFT;
+ break;
+ case VK_UP:
+ id = lParam & (1 << 24) ? WXK_UP : WXK_NUMPAD_UP;
+ break;
+ case VK_RIGHT:
+ id = lParam & (1 << 24) ? WXK_RIGHT : WXK_NUMPAD_RIGHT;
+ break;
+ case VK_DOWN:
+ id = lParam & (1 << 24) ? WXK_DOWN : WXK_NUMPAD_DOWN;
+ break;
+ case VK_INSERT:
+ id = lParam & (1 << 24) ? WXK_INSERT : WXK_NUMPAD_INSERT;
+ break;
+ case VK_DELETE:
+ id = lParam & (1 << 24) ? WXK_DELETE : WXK_NUMPAD_DELETE;
+ break;
+ // this order is correct as the numpad enter is the extended key