static Eina_List * load_layouts_from_path(Eina_List *layout_list, const char *path1, const char *path2) { char *f, *p; char *file = malloc(MaxBuffer); Eina_List *l, *ls; asprintf(&p, "%s/%s", path1, path2); ls = ecore_file_ls(p); EINA_LIST_FOREACH(ls, l, f) { char *s = strrchr(f, '.'); if (!s || strcmp(s, ".ini")) continue; *s = '\0'; snprintf(file, MaxBuffer, "%s/%s", path2, f); free(f); keys_t *keys = keys_alloc(file); if (!keys) continue; vk_layout_t *layout = malloc(sizeof(vk_layout_t)); const char *str; str = keys_lookup(keys, "default", "name"); layout->name = strdup(str); str = keys_lookup(keys, "default", "sname"); layout->sname = strdup(str); layout->keys = keys; layout_list = eina_list_append(layout_list, layout); }
static bool _key_up(madshelf_state_t* state, Evas_Object* choicebox, Evas_Event_Key_Up* ev) { const char* action = keys_lookup(state->keys, "lists", ev->keyname); if(action && !strcmp(action, "ContextMenu")) { _open_screen_context_menu(state); return true; } if(action && !strcmp(action, "AltActivateCurrent")) { choicebox_activate_current(choicebox, true); return true; } return false; }