Based on patch by Vincent Torri.
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/ecore@40769
7cbeb6ba-43b4-40fd-8cce-
4c39aea84d33
void *ev);
static int _ecore_win32_event_keystroke_get(int key,
+ int is_extended,
char **keyname,
char **keysymbol,
char **keycompose);
if (is_keystroke)
{
if (!_ecore_win32_event_keystroke_get(LOWORD(msg->window_param),
+ msg->data_param & 0x01000000,
(char **)&e->keyname,
(char **)&e->key,
(char **)&e->string))
if (is_keystroke)
{
if (!_ecore_win32_event_keystroke_get(LOWORD(msg->window_param),
+ msg->data_param & 0x01000000,
(char **)&e->keyname,
(char **)&e->key,
(char **)&e->string))
static int
_ecore_win32_event_keystroke_get(int key,
+ int is_extended,
char **keyname,
char **keysymbol,
char **keycompose)
{
/* Keystroke */
case VK_PRIOR:
- kn = "KP_Prior";
- ks = "KP_9";
- kc = "KP_Prior";
+ if (is_extended)
+ {
+ kn = "Prior";
+ ks = "Prior";
+ kc = "Prior";
+ }
+ else
+ {
+ kn = "KP_Prior";
+ ks = "KP_9";
+ kc = "KP_Prior";
+ }
break;
case VK_NEXT:
- kn = "KP_Next";
- ks = "KP_3";
- kc = "KP_Next";
+ if (is_extended)
+ {
+ kn = "Next";
+ ks = "Next";
+ kc = "Next";
+ }
+ else
+ {
+ kn = "KP_Next";
+ ks = "KP_3";
+ kc = "KP_Next";
+ }
break;
case VK_END:
- kn = "KP_End";
- ks = "KP_1";
- kc = "KP_End";
+ if (is_extended)
+ {
+ kn = "End";
+ ks = "End";
+ kc = "End";
+ }
+ else
+ {
+ kn = "KP_End";
+ ks = "KP_1";
+ kc = "KP_End";
+ }
break;
case VK_HOME:
- kn = "KP_Home";
- ks = "KP_7";
- kc = "KP_Home";
+ if (is_extended)
+ {
+ kn = "Home";
+ ks = "Home";
+ kc = "Home";
+ }
+ else
+ {
+ kn = "KP_Home";
+ ks = "KP_7";
+ kc = "KP_Home";
+ }
break;
case VK_LEFT:
- kn = "KP_Left";
- ks = "KP_4";
- kc = "KP_Left";
+ if (is_extended)
+ {
+ kn = "Left";
+ ks = "Left";
+ kc = "Left";
+ }
+ else
+ {
+ kn = "KP_Left";
+ ks = "KP_4";
+ kc = "KP_Left";
+ }
break;
case VK_UP:
- kn = "KP_Up";
- ks = "KP_8";
- kc = "KP_Up";
+ if (is_extended)
+ {
+ kn = "Up";
+ ks = "Up";
+ kc = "Up";
+ }
+ else
+ {
+ kn = "KP_Up";
+ ks = "KP_8";
+ kc = "KP_Up";
+ }
break;
case VK_RIGHT:
- kn = "KP_Right";
- ks = "KP_6";
- kc = "KP_Right";
+ if (is_extended)
+ {
+ kn = "Right";
+ ks = "Right";
+ kc = "Right";
+ }
+ else
+ {
+ kn = "KP_Right";
+ ks = "KP_6";
+ kc = "KP_Right";
+ }
break;
case VK_DOWN:
- kn = "KP_Down";
- ks = "KP_2";
- kc = "KP_Down";
+ if (is_extended)
+ {
+ kn = "Down";
+ ks = "Down";
+ kc = "Down";
+ }
+ else
+ {
+ kn = "KP_Down";
+ ks = "KP_2";
+ kc = "KP_Down";
+ }
break;
case VK_INSERT:
- kn = "KP_Insert";
- ks = "KP_0";
- kc = "KP_Insert";
+ if (is_extended)
+ {
+ kn = "Insert";
+ ks = "Insert";
+ kc = "Insert";
+ }
+ else
+ {
+ kn = "KP_Insert";
+ ks = "KP_0";
+ kc = "KP_Insert";
+ }
break;
case VK_DELETE:
- kn = "KP_Delete";
- ks = "KP_Decimal";
- kc = "KP_Delete";
+ if (is_extended)
+ {
+ kn = "Delete";
+ ks = "Delete";
+ kc = "Delete";
+ }
+ else
+ {
+ kn = "KP_Delete";
+ ks = "KP_Decimal";
+ kc = "KP_Delete";
+ }
break;
case VK_F1:
kn = "F1";