Commits
Commit:
f63db357ac95baa4d1d2115c1da2aa7ba9e24c58
Author:
Omar Polo <op@omarpolo.com>
Date:
Thu Nov 5 08:31:03 2020 UTC
point out the limitation with reparenting window managers
Commit:
f8f64f0968e941dae8f92007f221914c47a2851b
Author:
Omar Polo <op@omarpolo.com>
Date:
Thu Oct 8 11:30:26 2020 UTC
-etags ... || true

improves the error that most make implementation given when etags is not
present: it doesn't seem scary anymore.
Commit:
c21d6eaf97dbcc03bbf6bd90096349dba8e1b071
Author:
Omar Polo <op@omarpolo.com>
Date:
Thu Oct 8 08:59:12 2020 UTC
grabkey only on the targeted windows

now we grabkey() only on the window that matches what the user
requested. That is, given

match class 'Firefox'
on "C-n" do "<Down>"

we only bind C-n on windows that match the class Firefox, and not on
the root window as we did before.

In order to do this, we traverse the tree during startup and grabkey
on matching windows, than we subscribe also to SubstructureNotify so
that when a window gets mapped we receive an event.

There are still some downsides to this. Firefox uses also
'/usr/local/lib/firefox/firefox' as class name on my machine, and
sometimes it seems like we don’t grab the key at the first try (maybe
Firefox changes the class after the window gets mapped?)
Commit:
c85d4bf338efd6371825dfe51680c62ee65be408
Author:
Omar Polo <op@omarpolo.com>
Date:
Thu Oct 8 07:38:15 2020 UTC
make grabkey accept the target window as parameter

This is needed so we can later grabkey on particular window and not on
the root one.
Commit:
c7063e0ecdd508cad67bdb8d072630315fbac265
Author:
Omar Polo <op@omarpolo.com>
Date:
Sun Oct 4 13:34:53 2020 UTC
exec only on key press

it seems to me the most sensible approach
Commit:
2eb11d8ec14963a978a1811f5d0beca158d64f50
Author:
Omar Polo <op@omarpolo.com>
Date:
Sun Oct 4 13:31:39 2020 UTC
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.
Commit:
7c6a610b98e344ef485f60862db46ec271a50c5a
Author:
Omar Polo <op@omarpolo.com>
Date:
Thu Oct 1 11:07:57 2020 UTC
improved readme. also mention bison
Commit:
5f4cdf4fa31e121c74571a03ef5c81a4fa7376d4
Author:
Omar Polo <op@omarpolo.com>
Date:
Thu Oct 1 11:06:30 2020 UTC
explicitly pass -b y to ${YACC}

OpenBSD yacc doesn't require the option (it's the default value after
all), but bison do.
Commit:
089324928d5a51ea263347aca4b5b30c6e223f8b
Author:
Omar Polo <op@omarpolo.com>
Date:
Thu Oct 1 10:52:00 2020 UTC
improved and added documentation
Commit:
eb90e50e34471fcbe785588d8113c4d581754f99
Author:
Omar Polo <op@omarpolo.com>
Date:
Thu Oct 1 09:53:11 2020 UTC
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.
Commit:
7d3286caede96d7b813eff7dc3691d683d0f9bf9
Author:
Omar Polo <op@omarpolo.com>
Date:
Thu Oct 1 09:52:58 2020 UTC
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'
# ...
Commit:
e0041ee5139dcd4173fe8f47ff691c0d41951341
Author:
Omar Polo <op@omarpolo.com>
Date:
Thu Oct 1 09:47:02 2020 UTC
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
Commit:
13cc0916743705e32211da7fcf5499197e36e883
Author:
Omar Polo <op@omarpolo.com>
Date:
Wed Sep 30 12:47:14 2020 UTC
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.
Commit:
ecc6fa05e1c8a3082eb9612873a27f1ebf8ffcce
Author:
Omar Polo <op@omarpolo.com>
Date:
Tue Sep 29 13:30:22 2020 UTC
tabify
Commit:
9f53ba9bae9aee077aa72cbc3fb5af6d27d20ec2
Author:
Omar Polo <op@omarpolo.com>
Date:
Tue Sep 29 13:27:41 2020 UTC
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