X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=plugins%2Fkeyboard%2Fkeysrc.yacc;h=3e4eeff6900a79d3a018e7e561676467fe3b55f5;hb=379ca159f1f0ebdc26098409149e1ba2c73ed6f0;hp=8772fa178ad619183cd01fce26df6efacacd0eb7;hpb=91ebde9e8842678e0d0704dc7945b2b84aba314f;p=chaz%2Fopenbox diff --git a/plugins/keyboard/keysrc.yacc b/plugins/keyboard/keysrc.yacc index 8772fa17..3e4eeff6 100644 --- a/plugins/keyboard/keysrc.yacc +++ b/plugins/keyboard/keysrc.yacc @@ -25,8 +25,6 @@ static char *path; %token INTEGER; %token STRING %token FIELD -%token EXECUTE -%token RESTART %token DESKTOP %type fields @@ -36,15 +34,13 @@ static char *path; config: | config '\n' | config fields FIELD '\n' { addbinding($2, $3, NULL, 0); } - | config fields DESKTOP INTEGER '\n' { addbinding($2, $3, NULL, $4); } - | config fields RESTART '\n' { addbinding($2, $3, NULL, 0); } - | config fields EXECUTE STRING '\n' { addbinding($2, $3, $4, 0); } - | config fields RESTART STRING '\n' { addbinding($2, $3, $4, 0); } + | config fields FIELD INTEGER '\n' { addbinding($2, $3, NULL, $4); } + | config fields FIELD STRING '\n' { addbinding($2, $3, $4, 0); } ; fields: - FIELD { $$ = g_list_prepend(NULL, $1); } - | fields FIELD { $$ = g_list_prepend($1, $2); } + FIELD { $$ = g_list_append(NULL, $1); } + | fields FIELD { $$ = g_list_append($1, $2); } ; %% @@ -90,8 +86,15 @@ static void addbinding(GList *keylist, char *action, char *apath, int num) /* these have extra data! */ if (a->func == action_execute || a->func == action_restart) a->data.execute.path = apath; + else + g_free(apath); if (a->func == action_desktop) - a->data.desktop.desk = (unsigned) num + 1; + a->data.desktop.desk = (unsigned) num - 1; + if (a->func == action_move_relative_horz || + a->func == action_move_relative_vert || + a->func == action_resize_relative_horz || + a->func == action_resize_relative_vert) + a->data.relative.delta = num; if (!kbind(keylist, a)) { action_free(a);