Commit Briefs

Omar Polo

rework send_fake: copy as much as possible from the original event

send_fake now copies almost all field from the original event, except for the the window, keycode and state field. When we grab a key we grab it onto the root window, so every event we receive has a field window that is equal to the root. (this will change in the future), so we need to change that. The keycode and state obviously need to be changed, it's the whole point of the function. It doesn't seem to fix the known bug that occur in dino thought.



Omar Polo

explicitly pass -b y to ${YACC}

OpenBSD yacc doesn't require the option (it's the default value after all), but bison do.


Omar Polo

improved and added documentation


Omar Polo

trying to improve error message

on some cases, user will get better errors, instead of "foo.conf:5 syntax error". This is the yacc complement for what's been done previously in the parser also.


Omar Polo

reworked the tokenizer -- breaking change

The parser was pratically rewritten. Strings now are required to be quoted with single quotes, while keys (still) requires double quotes. In addition, the * is no longer a valid match argument: to match on everything you need to use the special keyword `all'. match all # before was `match *' on "C-a" do "<Home>" # unchanged match class 'Firefox' # before was `match class Firefox' # ...


Omar Polo

add exec action for keys

users can now exec command on specifics keys. For example: match class Something on "C-<F5>" do exec my-program


Omar Polo

improved error messages

yyerror now is a printf-like variadic function. This helps to generate custom error message like "invalid keysym %s" or "invalid key %s" during parsing.


Omar Polo

tabify


Omar Polo

add ``match *'' to match everything

Rationale: sometimes it can be useful to globally bind a key. For instance, some users may like to bind on "C-<Up>" do "<Page_Up>" for every application.


Omar Polo

add an error handler

the default error handler violates the pledge "stdio" by trying to read (and possibly also write after) some files. Also, I don't like my program to be randomly killed if I try to get class hints on a window that doesn't have any.


Omar Polo

initial commit