Enlightenment CVS committal Author : raster Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_ipc.c e_ipc.h e_remote_main.c Log Message: 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. =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_ipc.c,v retrieving revision 1.18 retrieving revision 1.19 diff -u -3 -r1.18 -r1.19 --- e_ipc.c 3 May 2005 10:06:42 -0000 1.18 +++ e_ipc.c 3 May 2005 16:27:46 -0000 1.19 @@ -15,6 +15,8 @@ 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 @@ 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_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(); +} =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_ipc.h,v retrieving revision 1.12 retrieving revision 1.13 diff -u -3 -r1.12 -r1.13 --- e_ipc.h 3 May 2005 08:06:50 -0000 1.12 +++ e_ipc.h 3 May 2005 16:27:46 -0000 1.13 @@ -51,6 +51,14 @@ 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; =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_remote_main.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -3 -r1.15 -r1.16 --- e_remote_main.c 3 May 2005 08:06:50 -0000 1.15 +++ e_remote_main.c 3 May 2005 16:27:46 -0000 1.16 @@ -27,6 +27,8 @@ 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_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 @@ 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 @@ 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 @@ } /* 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_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(); +} ------------------------------------------------------- This SF.Net email is sponsored by: NEC IT Guy Games. Get your fingers limbered up and give it your best shot. 4 great events, 4 opportunities to win big! Highest score wins.NEC IT Guy Games. Play to win an NEC 61 plasma display. Visit http://www.necitguy.com/?r=20 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs