naive implementation of 'bindsym --release' (and bindcode)
The implementation is naive because the user has to generate exactly the event he specified. That is, if you use this binding: bindsym --release $mod+x exec import /tmp/latest-screenshot.png Then it will only be triggered if you hit $mod, hit x, release x, release $mod. It will not be triggered if you hit $mod, hit x, release $mod, release x. The reason is that the KeyRelease event in the latter case will not have the modifier in its flags, so it doesn’t match the configured binding.
This commit is contained in:
@ -66,6 +66,7 @@ EOL (\r?\n)
|
||||
%x BAR_COLOR
|
||||
|
||||
%x EXEC
|
||||
%x OPTRELEASE
|
||||
|
||||
%%
|
||||
|
||||
@ -172,12 +173,14 @@ EOL (\r?\n)
|
||||
<ASSIGN_TARGET_COND>[ \t]+ { BEGIN(WANT_STRING); }
|
||||
<EXEC>--no-startup-id { printf("no startup id\n"); yy_pop_state(); return TOK_NO_STARTUP_ID; }
|
||||
<EXEC>. { printf("anything else: *%s*\n", yytext); yyless(0); yy_pop_state(); yy_pop_state(); }
|
||||
<OPTRELEASE>--release { printf("--release\n"); yy_pop_state(); return TOK_RELEASE; }
|
||||
<OPTRELEASE>. { printf("anything else (optrelease): *%s*\n", yytext); yyless(0); yy_pop_state(); yy_pop_state(); }
|
||||
[0-9-]+ { yylval.number = atoi(yytext); return NUMBER; }
|
||||
bar { yy_push_state(BAR); return TOK_BAR; }
|
||||
mode { return TOKMODE; }
|
||||
bind { yy_push_state(WANT_STRING); yy_push_state(EAT_WHITESPACE); yy_push_state(EAT_WHITESPACE); return TOKBINDCODE; }
|
||||
bindcode { yy_push_state(WANT_STRING); yy_push_state(EAT_WHITESPACE); yy_push_state(EAT_WHITESPACE); return TOKBINDCODE; }
|
||||
bindsym { yy_push_state(BINDSYM_COND); yy_push_state(EAT_WHITESPACE); return TOKBINDSYM; }
|
||||
bindcode { yy_push_state(WANT_STRING); yy_push_state(EAT_WHITESPACE); yy_push_state(EAT_WHITESPACE); yy_push_state(OPTRELEASE); yy_push_state(EAT_WHITESPACE); return TOKBINDCODE; }
|
||||
bindsym { yy_push_state(BINDSYM_COND); yy_push_state(EAT_WHITESPACE); yy_push_state(OPTRELEASE); yy_push_state(EAT_WHITESPACE); return TOKBINDSYM; }
|
||||
floating_maximum_size { return TOKFLOATING_MAXIMUM_SIZE; }
|
||||
floating_minimum_size { return TOKFLOATING_MINIMUM_SIZE; }
|
||||
floating_modifier { return TOKFLOATING_MODIFIER; }
|
||||
|
Reference in New Issue
Block a user