some ipc is in to handle key and mouse bindings. right now you can just list

them (so now you know what the defaults are!) :) need to add add/del handling
on both the e and e_remote sides.


SVN revision: 14578
This commit is contained in:
Carsten Haitzler 2005-05-03 16:27:46 +00:00
parent 476c8f543a
commit efa853f59e
3 changed files with 225 additions and 2 deletions

View File

@ -15,6 +15,8 @@ ECORE_IPC_ENC_EVAS_LIST_PROTO(_e_ipc_font_available_list_enc);
ECORE_IPC_ENC_EVAS_LIST_PROTO(_e_ipc_font_fallback_list_enc);
ECORE_IPC_ENC_EVAS_LIST_PROTO(_e_ipc_font_default_list_enc);
ECORE_IPC_ENC_STRUCT_PROTO(_e_ipc_font_default_enc);
ECORE_IPC_ENC_EVAS_LIST_PROTO(_e_ipc_mouse_binding_enc);
ECORE_IPC_ENC_EVAS_LIST_PROTO(_e_ipc_key_binding_enc);
/* local subsystem globals */
static Ecore_Ipc_Server *_e_ipc_server = NULL;
@ -447,6 +449,54 @@ _e_ipc_cb_client_data(void *data __UNUSED__, int type __UNUSED__, void *event)
free(data);
}
break;
case E_IPC_OP_BINDING_MOUSE_LIST:
{
Evas_List *bindings;
int bytes;
char *data;
bindings = e_config->mouse_bindings;
data = _e_ipc_mouse_binding_enc(bindings, &bytes);
ecore_ipc_client_send(e->client,
E_IPC_DOMAIN_REPLY,
E_IPC_OP_BINDING_MOUSE_LIST_REPLY,
0/*ref*/, 0/*ref_to*/, 0/*response*/,
data, bytes);
free(data);
}
break;
case E_IPC_OP_BINDING_MOUSE_ADD:
{
}
break;
case E_IPC_OP_BINDING_MOUSE_DEL:
{
}
break;
case E_IPC_OP_BINDING_KEY_LIST:
{
Evas_List *bindings;
int bytes;
char *data;
bindings = e_config->key_bindings;
data = _e_ipc_key_binding_enc(bindings, &bytes);
ecore_ipc_client_send(e->client,
E_IPC_DOMAIN_REPLY,
E_IPC_OP_BINDING_KEY_LIST_REPLY,
0/*ref*/, 0/*ref_to*/, 0/*response*/,
data, bytes);
free(data);
}
break;
case E_IPC_OP_BINDING_KEY_ADD:
{
}
break;
case E_IPC_OP_BINDING_KEY_DEL:
{
}
break;
default:
break;
}
@ -625,9 +675,54 @@ ECORE_IPC_ENC_STRUCT_PROTO(_e_ipc_font_default_enc)
ECORE_IPC_ENC_STRUCT_HEAD(E_Font_Default,
ECORE_IPC_SLEN(l1, text_class) +
ECORE_IPC_SLEN(l2, font) +
4);
4);
ECORE_IPC_PUTS(text_class, l1);
ECORE_IPC_PUTS(font, l2);
ECORE_IPC_PUT32(size);
ECORE_IPC_ENC_STRUCT_FOOT();
}
ECORE_IPC_ENC_EVAS_LIST_PROTO(_e_ipc_mouse_binding_enc)
{
ECORE_IPC_ENC_EVAS_LIST_HEAD_START(E_Config_Binding_Mouse);
ECORE_IPC_CNT32();
ECORE_IPC_CNT32();
ECORE_IPC_CNTS(action);
ECORE_IPC_CNTS(params);
ECORE_IPC_CNT8();
ECORE_IPC_CNT8();
ECORE_IPC_ENC_EVAS_LIST_HEAD_FINISH();
int l1, l2;
ECORE_IPC_PUT32(context);
ECORE_IPC_PUT32(modifiers);
ECORE_IPC_SLEN(l1, action);
ECORE_IPC_SLEN(l2, params);
ECORE_IPC_PUTS(action, l1);
ECORE_IPC_PUTS(params, l2);
ECORE_IPC_PUT8(button);
ECORE_IPC_PUT8(any_mod);
ECORE_IPC_ENC_EVAS_LIST_FOOT();
}
ECORE_IPC_ENC_EVAS_LIST_PROTO(_e_ipc_key_binding_enc)
{
ECORE_IPC_ENC_EVAS_LIST_HEAD_START(E_Config_Binding_Key);
ECORE_IPC_CNT32();
ECORE_IPC_CNT32();
ECORE_IPC_CNTS(key);
ECORE_IPC_CNTS(action);
ECORE_IPC_CNTS(params);
ECORE_IPC_CNT8();
ECORE_IPC_ENC_EVAS_LIST_HEAD_FINISH();
int l1, l2, l3;
ECORE_IPC_PUT32(context);
ECORE_IPC_PUT32(modifiers);
ECORE_IPC_SLEN(l1, key);
ECORE_IPC_SLEN(l2, action);
ECORE_IPC_SLEN(l3, params);
ECORE_IPC_PUTS(key, l1);
ECORE_IPC_PUTS(action, l2);
ECORE_IPC_PUTS(params, l3);
ECORE_IPC_PUT8(any_mod);
ECORE_IPC_ENC_EVAS_LIST_FOOT();
}

View File

@ -51,6 +51,14 @@ typedef enum _E_Ipc_Op
E_IPC_OP_LANG_SET,
E_IPC_OP_LANG_GET,
E_IPC_OP_LANG_GET_REPLY,
E_IPC_OP_BINDING_MOUSE_LIST,
E_IPC_OP_BINDING_MOUSE_LIST_REPLY,
E_IPC_OP_BINDING_MOUSE_ADD,
E_IPC_OP_BINDING_MOUSE_DEL,
E_IPC_OP_BINDING_KEY_LIST,
E_IPC_OP_BINDING_KEY_LIST_REPLY,
E_IPC_OP_BINDING_KEY_ADD,
E_IPC_OP_BINDING_KEY_DEL,
E_IPC_OP_LAST
} E_Ipc_Op;

View File

@ -27,6 +27,8 @@ static int _e_ipc_cb_server_data(void *data, int type, void *event);
static void _e_help(void);
static const char *_e_ipc_context_str(int context);
static const char *_e_ipc_modifier_str(int mod);
static Evas_List *_e_ipc_str_list_dec(char *data, int bytes);
ECORE_IPC_DEC_EVAS_LIST_PROTO(_e_ipc_module_list_dec);
@ -34,6 +36,8 @@ ECORE_IPC_DEC_EVAS_LIST_PROTO(_e_ipc_font_available_list_dec);
ECORE_IPC_DEC_EVAS_LIST_PROTO(_e_ipc_font_fallback_list_dec);
ECORE_IPC_DEC_EVAS_LIST_PROTO(_e_ipc_font_default_list_dec);
ECORE_IPC_DEC_STRUCT_PROTO(_e_ipc_font_default_dec);
ECORE_IPC_DEC_EVAS_LIST_PROTO(_e_ipc_mouse_binding_dec);
ECORE_IPC_DEC_EVAS_LIST_PROTO(_e_ipc_key_binding_dec);
/* local subsystem globals */
static Ecore_Ipc_Server *_e_ipc_server = NULL;
@ -77,7 +81,9 @@ E_IPC_Opt_Handler handlers[] =
OREQ("-shutdown", "Shutdown E17", E_IPC_OP_SHUTDOWN, 0),
OREQ("-lang-get", "Get the current language", E_IPC_OP_LANG_GET, 1),
OREQ("-lang-list", "List all available languages", E_IPC_OP_LANG_LIST, 1),
OSTR("-lang-set", "Set the current language", E_IPC_OP_LANG_SET, 0)
OSTR("-lang-set", "Set the current language", E_IPC_OP_LANG_SET, 0),
OREQ("-binding-mouse-list", "List all mouse bindings", E_IPC_OP_BINDING_MOUSE_LIST, 1),
OREQ("-binding-key-list", "List all key bindings", E_IPC_OP_BINDING_KEY_LIST, 1)
};
/* externally accessible functions */
@ -471,6 +477,56 @@ _e_ipc_cb_server_data(void *data, int type, void *event)
printf("REPLY: %s\n", e->data);
}
break;
case E_IPC_OP_BINDING_MOUSE_LIST_REPLY:
if (e->data)
{
Evas_List *bindings;
E_Config_Binding_Mouse *eb;
bindings = _e_ipc_mouse_binding_dec(e->data, e->size);
while (bindings)
{
eb = bindings->data;
printf("REPLY: BINDING CONTEXT=%s MODIFIERS=%s BUTTON=%i ANY_MOD=%i ACTION=\"%s\" PARAMS=\"%s\"\n",
_e_ipc_context_str(eb->context),
_e_ipc_modifier_str(eb->modifiers),
eb->button,
eb->any_mod,
eb->action,
eb->params
);
bindings = evas_list_remove_list(bindings, bindings);
E_FREE(eb);
}
}
else
printf("REPLY: AVAILABLE NONE\n");
break;
case E_IPC_OP_BINDING_KEY_LIST_REPLY:
if (e->data)
{
Evas_List *bindings;
E_Config_Binding_Key *eb;
bindings = _e_ipc_key_binding_dec(e->data, e->size);
while (bindings)
{
eb = bindings->data;
printf("REPLY: BINDING CONTEXT=%s MODIFIERS=%s KEY=\"%s\" ANY_MOD=%i ACTION=\"%s\" PARAMS=\"%s\"\n",
_e_ipc_context_str(eb->context),
_e_ipc_modifier_str(eb->modifiers),
eb->key,
eb->any_mod,
eb->action,
eb->params
);
bindings = evas_list_remove_list(bindings, bindings);
E_FREE(eb);
}
}
else
printf("REPLY: AVAILABLE NONE\n");
break;
default:
break;
}
@ -524,6 +580,46 @@ _e_help(void)
}
/* generic encoding functions */
static const char *
_e_ipc_context_str(int context)
{
if (context == E_BINDING_CONTEXT_NONE) return "NONE";
if (context == E_BINDING_CONTEXT_UNKNOWN) return "UNKNOWN";
if (context == E_BINDING_CONTEXT_BORDER) return "BORDER";
if (context == E_BINDING_CONTEXT_ZONE) return "ZONE";
if (context == E_BINDING_CONTEXT_MANAGER) return "MANAGER";
if (context == E_BINDING_CONTEXT_ANY) return "ANY";
return "";
}
static char _mod_buf[256];
static const char *
_e_ipc_modifier_str(int mod)
{
_mod_buf[0] = 0;
if (mod & E_BINDING_MODIFIER_SHIFT)
{
if (_mod_buf[0] != 0) strcat(_mod_buf, "|");
strcat(_mod_buf, "SHIFT");
}
if (mod & E_BINDING_MODIFIER_CTRL)
{
if (_mod_buf[0] != 0) strcat(_mod_buf, "|");
strcat(_mod_buf, "CTRL");
}
if (mod & E_BINDING_MODIFIER_ALT)
{
if (_mod_buf[0] != 0) strcat(_mod_buf, "|");
strcat(_mod_buf, "ALT");
}
if (mod & E_BINDING_MODIFIER_WIN)
{
if (_mod_buf[0] != 0) strcat(_mod_buf, "|");
strcat(_mod_buf, "WIN");
}
return _mod_buf;
}
static Evas_List *
_e_ipc_str_list_dec(char *data, int bytes)
{
@ -585,3 +681,27 @@ ECORE_IPC_DEC_STRUCT_PROTO(_e_ipc_font_default_dec)
ECORE_IPC_GET32(size);
ECORE_IPC_DEC_STRUCT_FOOT();
}
ECORE_IPC_DEC_EVAS_LIST_PROTO(_e_ipc_mouse_binding_dec)
{
ECORE_IPC_DEC_EVAS_LIST_HEAD(E_Config_Binding_Mouse);
ECORE_IPC_GET32(context);
ECORE_IPC_GET32(modifiers);
ECORE_IPC_GETS(action);
ECORE_IPC_GETS(params);
ECORE_IPC_GET8(button);
ECORE_IPC_GET8(any_mod);
ECORE_IPC_DEC_EVAS_LIST_FOOT();
}
ECORE_IPC_DEC_EVAS_LIST_PROTO(_e_ipc_key_binding_dec)
{
ECORE_IPC_DEC_EVAS_LIST_HEAD(E_Config_Binding_Key);
ECORE_IPC_GET32(context);
ECORE_IPC_GET32(modifiers);
ECORE_IPC_GETS(key);
ECORE_IPC_GETS(action);
ECORE_IPC_GETS(params);
ECORE_IPC_GET8(any_mod);
ECORE_IPC_DEC_EVAS_LIST_FOOT();
}