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;
|
Window win, root;
|
||||||
Ecore_Event_Key_Modifiers mods;
|
Ecore_Event_Key_Modifiers mods;
|
||||||
char *key;
|
char *key;
|
||||||
|
char *symbol;
|
||||||
char *compose;
|
char *compose;
|
||||||
Time time;
|
Time time;
|
||||||
} Ecore_Event_Key_Down;
|
} Ecore_Event_Key_Down;
|
||||||
|
@ -230,6 +231,7 @@ extern "C"
|
||||||
Window win, root;
|
Window win, root;
|
||||||
Ecore_Event_Key_Modifiers mods;
|
Ecore_Event_Key_Modifiers mods;
|
||||||
char *key;
|
char *key;
|
||||||
|
char *symbol;
|
||||||
char *compose;
|
char *compose;
|
||||||
Time time;
|
Time time;
|
||||||
} Ecore_Event_Key_Up;
|
} Ecore_Event_Key_Up;
|
||||||
|
@ -710,6 +712,7 @@ extern "C"
|
||||||
|
|
||||||
KeySym ecore_key_get_keysym_from_keycode(KeyCode keycode);
|
KeySym ecore_key_get_keysym_from_keycode(KeyCode keycode);
|
||||||
char *ecore_key_get_string_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,
|
void ecore_key_grab(char *key, Ecore_Event_Key_Modifiers mods,
|
||||||
int anymod, int sync);
|
int anymod, int sync);
|
||||||
void ecore_key_ungrab(char *key,
|
void ecore_key_ungrab(char *key,
|
||||||
|
|
|
@ -200,6 +200,7 @@ ecore_event_key_down_free(void *event)
|
||||||
|
|
||||||
e = (Ecore_Event_Key_Down *) event;
|
e = (Ecore_Event_Key_Down *) event;
|
||||||
IF_FREE(e->key);
|
IF_FREE(e->key);
|
||||||
|
IF_FREE(e->symbol);
|
||||||
IF_FREE(e->compose);
|
IF_FREE(e->compose);
|
||||||
FREE(e);
|
FREE(e);
|
||||||
}
|
}
|
||||||
|
@ -211,6 +212,7 @@ ecore_event_key_up_free(void *event)
|
||||||
|
|
||||||
e = (Ecore_Event_Key_Up *) event;
|
e = (Ecore_Event_Key_Up *) event;
|
||||||
IF_FREE(e->key);
|
IF_FREE(e->key);
|
||||||
|
IF_FREE(e->symbol);
|
||||||
IF_FREE(e->compose);
|
IF_FREE(e->compose);
|
||||||
FREE(e);
|
FREE(e);
|
||||||
}
|
}
|
||||||
|
@ -304,11 +306,12 @@ ecore_event_x_handle_keypress(XEvent * xevent)
|
||||||
val = XLookupString((XKeyEvent *) xevent, buf, sizeof(buf), &sym, &stat);
|
val = XLookupString((XKeyEvent *) xevent, buf, sizeof(buf), &sym, &stat);
|
||||||
if (val > 0)
|
if (val > 0)
|
||||||
{
|
{
|
||||||
buf[val] = 0;
|
buf[val] = 0;
|
||||||
e->compose = strdup(buf);
|
e->compose = strdup(buf);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
e->compose = NULL;
|
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);
|
ecore_add_event(ECORE_EVENT_KEY_DOWN, e, ecore_event_key_down_free);
|
||||||
}
|
}
|
||||||
|
@ -342,11 +345,12 @@ ecore_event_x_handle_keyrelease(XEvent * xevent)
|
||||||
val = XLookupString((XKeyEvent *) xevent, buf, sizeof(buf), &sym, &stat);
|
val = XLookupString((XKeyEvent *) xevent, buf, sizeof(buf), &sym, &stat);
|
||||||
if (val > 0)
|
if (val > 0)
|
||||||
{
|
{
|
||||||
buf[val] = 0;
|
buf[val] = 0;
|
||||||
e->compose = strdup(buf);
|
e->compose = strdup(buf);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
e->compose = NULL;
|
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);
|
ecore_add_event(ECORE_EVENT_KEY_UP, e, ecore_event_key_up_free);
|
||||||
}
|
}
|
||||||
|
|
|
@ -951,13 +951,24 @@ ecore_key_get_string_from_keycode(KeyCode keycode)
|
||||||
{
|
{
|
||||||
char *str;
|
char *str;
|
||||||
|
|
||||||
if (!disp) return strdup("");
|
if (!disp) return strdup("");
|
||||||
str = XKeysymToString(ecore_key_get_keysym_from_keycode(keycode));
|
str = XKeysymToString(ecore_key_get_keysym_from_keycode(keycode));
|
||||||
if (!str)
|
if (!str)
|
||||||
return strdup("");
|
return strdup("");
|
||||||
return strdup(str);
|
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
|
void
|
||||||
ecore_event_allow(int mode, Time t)
|
ecore_event_allow(int mode, Time t)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue