forked from enlightenment/efl
Allow applications to examine the symbol associated with a key stroke.
IMHO this makes more sense if you want things to work on different - keyboard layouts. Try generating a e->key "=" on a Japanese keyboard. The old code also works, so it shoulnd't break anything. SVN revision: 6879
This commit is contained in:
parent
ee6ab155c5
commit
9fd93e9a6f
|
@ -221,6 +221,7 @@ extern "C"
|
|||
Window win, root;
|
||||
Ecore_Event_Key_Modifiers mods;
|
||||
char *key;
|
||||
char *symbol;
|
||||
char *compose;
|
||||
Time time;
|
||||
} Ecore_Event_Key_Down;
|
||||
|
@ -230,6 +231,7 @@ extern "C"
|
|||
Window win, root;
|
||||
Ecore_Event_Key_Modifiers mods;
|
||||
char *key;
|
||||
char *symbol;
|
||||
char *compose;
|
||||
Time time;
|
||||
} Ecore_Event_Key_Up;
|
||||
|
@ -710,6 +712,7 @@ extern "C"
|
|||
|
||||
KeySym ecore_key_get_keysym_from_keycode(KeyCode keycode);
|
||||
char *ecore_key_get_string_from_keycode(KeyCode keycode);
|
||||
char *ecore_key_get_string_from_keysym(KeySym keysym);
|
||||
void ecore_key_grab(char *key, Ecore_Event_Key_Modifiers mods,
|
||||
int anymod, int sync);
|
||||
void ecore_key_ungrab(char *key,
|
||||
|
|
|
@ -200,6 +200,7 @@ ecore_event_key_down_free(void *event)
|
|||
|
||||
e = (Ecore_Event_Key_Down *) event;
|
||||
IF_FREE(e->key);
|
||||
IF_FREE(e->symbol);
|
||||
IF_FREE(e->compose);
|
||||
FREE(e);
|
||||
}
|
||||
|
@ -211,6 +212,7 @@ ecore_event_key_up_free(void *event)
|
|||
|
||||
e = (Ecore_Event_Key_Up *) event;
|
||||
IF_FREE(e->key);
|
||||
IF_FREE(e->symbol);
|
||||
IF_FREE(e->compose);
|
||||
FREE(e);
|
||||
}
|
||||
|
@ -309,6 +311,7 @@ ecore_event_x_handle_keypress(XEvent * xevent)
|
|||
}
|
||||
else
|
||||
e->compose = NULL;
|
||||
e->symbol = ecore_key_get_string_from_keysym(sym);
|
||||
}
|
||||
ecore_add_event(ECORE_EVENT_KEY_DOWN, e, ecore_event_key_down_free);
|
||||
}
|
||||
|
@ -347,6 +350,7 @@ ecore_event_x_handle_keyrelease(XEvent * xevent)
|
|||
}
|
||||
else
|
||||
e->compose = NULL;
|
||||
e->symbol = ecore_key_get_string_from_keysym(sym);
|
||||
}
|
||||
ecore_add_event(ECORE_EVENT_KEY_UP, e, ecore_event_key_up_free);
|
||||
}
|
||||
|
|
|
@ -958,6 +958,17 @@ ecore_key_get_string_from_keycode(KeyCode keycode)
|
|||
return strdup(str);
|
||||
}
|
||||
|
||||
char *
|
||||
ecore_key_get_string_from_keysym(KeySym keysym)
|
||||
{
|
||||
char *str;
|
||||
|
||||
if(keysym == NoSymbol) return strdup("");
|
||||
str = XKeysymToString(keysym);
|
||||
if(!str) str="(no name)";
|
||||
return strdup(str);
|
||||
}
|
||||
|
||||
void
|
||||
ecore_event_allow(int mode, Time t)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue