X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=plugins%2Fkeyboard%2Fkeysrc.yacc;h=24297d3b63d3907194c3b5adc188eedc77b292b7;hb=8a6a9710eb9f7a22d5e0cb01b18f1d3aad78e908;hp=8772fa178ad619183cd01fce26df6efacacd0eb7;hpb=91ebde9e8842678e0d0704dc7945b2b84aba314f;p=chaz%2Fopenbox diff --git a/plugins/keyboard/keysrc.yacc b/plugins/keyboard/keysrc.yacc index 8772fa17..24297d3b 100644 --- a/plugins/keyboard/keysrc.yacc +++ b/plugins/keyboard/keysrc.yacc @@ -22,11 +22,9 @@ static char *path; GList *list; } -%token INTEGER; +%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; - if (a->func == action_desktop) - a->data.desktop.desk = (unsigned) num + 1; + else + g_free(apath); + if (a->func == action_desktop || a->func == action_send_to_desktop) + 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);