numlock binding... WRONG. see comments.

SVN revision: 27453
This commit is contained in:
Carsten Haitzler 2006-12-14 23:38:33 +00:00
parent 1c03446089
commit 2b999319f2
2 changed files with 25 additions and 1 deletions

View File

@ -368,7 +368,9 @@ e_bindings_key_grab(E_Binding_Context ctxt, Ecore_X_Window win)
if (bind->mod & E_BINDING_MODIFIER_CTRL) mod |= ECORE_X_MODIFIER_CTRL;
if (bind->mod & E_BINDING_MODIFIER_ALT) mod |= ECORE_X_MODIFIER_ALT;
if (bind->mod & E_BINDING_MODIFIER_WIN) mod |= ECORE_X_MODIFIER_WIN;
/* see comment in e_bindings on numlock
if (bind->mod & ECORE_X_LOCK_NUM) mod |= ECORE_X_LOCK_NUM;
*/
ecore_x_window_key_grab(win, bind->key,
mod, bind->any_mod);
}
@ -394,7 +396,9 @@ e_bindings_key_ungrab(E_Binding_Context ctxt, Ecore_X_Window win)
if (bind->mod & E_BINDING_MODIFIER_CTRL) mod |= ECORE_X_MODIFIER_CTRL;
if (bind->mod & E_BINDING_MODIFIER_ALT) mod |= ECORE_X_MODIFIER_ALT;
if (bind->mod & E_BINDING_MODIFIER_WIN) mod |= ECORE_X_MODIFIER_WIN;
/* see comment in e_bindings on numlock
if (bind->mod & ECORE_X_LOCK_NUM) mod |= ECORE_X_LOCK_NUM;
*/
ecore_x_window_key_ungrab(win, bind->key,
mod, bind->any_mod);
}
@ -411,7 +415,22 @@ e_bindings_key_down_event_handle(E_Binding_Context ctxt, E_Object *obj, Ecore_X_
if (ev->modifiers & ECORE_X_MODIFIER_CTRL) mod |= E_BINDING_MODIFIER_CTRL;
if (ev->modifiers & ECORE_X_MODIFIER_ALT) mod |= E_BINDING_MODIFIER_ALT;
if (ev->modifiers & ECORE_X_MODIFIER_WIN) mod |= E_BINDING_MODIFIER_WIN;
/* FIXME: there is a good reason numlock was ignored. sometimes people
* have it on, sometimes they don't, and often they have no idea. waaaay
* back in E 0.1->0.13 or so days this caused issues thus numlock,
* scrollock and capslock are not usable modifiers.
*
* if we REALLY want to be able to use numlock we need to add more binding
* flags and config that says "REALLY pay attention to numlock for this
* binding" field in the binding (like there is a "any_mod" flag - we need a
* "num_lock_respect" field)
*
* also it should be an E_BINDING_MODIFIER_LOCK_NUM as the ecore lock flag
* may vary from system to system as different xservers may have differing
* modifier masks for numlock (it is queried at startup).
*
if (ev->modifiers & ECORE_X_LOCK_NUM) mod |= ECORE_X_LOCK_NUM;
*/
for (l = key_bindings; l; l = l->next)
{
E_Binding_Key *bind;
@ -450,7 +469,9 @@ e_bindings_key_up_event_handle(E_Binding_Context ctxt, E_Object *obj, Ecore_X_Ev
if (ev->modifiers & ECORE_X_MODIFIER_CTRL) mod |= E_BINDING_MODIFIER_CTRL;
if (ev->modifiers & ECORE_X_MODIFIER_ALT) mod |= E_BINDING_MODIFIER_ALT;
if (ev->modifiers & ECORE_X_MODIFIER_WIN) mod |= E_BINDING_MODIFIER_WIN;
/* see comment in e_bindings on numlock
if (ev->modifiers & ECORE_X_LOCK_NUM) mod |= ECORE_X_LOCK_NUM;
*/
for (l = key_bindings; l; l = l->next)
{
E_Binding_Key *bind;

View File

@ -1037,9 +1037,10 @@ _grab_key_down_cb(void *data, int type, void *event)
mod |= E_BINDING_MODIFIER_ALT;
if (ev->modifiers & ECORE_X_MODIFIER_WIN)
mod |= E_BINDING_MODIFIER_WIN;
/* see comment in e_bindings on numlock
if (ev->modifiers & ECORE_X_LOCK_NUM)
mod |= ECORE_X_LOCK_NUM;
*/
if (cfdata->locals.add)
{
found = 0;
@ -1315,11 +1316,13 @@ _key_binding_text_get(E_Config_Binding_Key *bi)
free(l);
}
/* see comment in e_bindings on numlock
if (bi->modifiers & ECORE_X_LOCK_NUM)
{
if (b[0]) strcat(b, " ");
strcat(b, _("OFF"));
}
*/
if (!b[0]) return strdup(TEXT_NONE_ACTION_KEY);
return strdup(b);