keys: Tweak SpaceFN to better handle other modifiers
keys: Tweak SpaceFN to better handle other modifiers

I found that setting "Initial Modifier Wait" was causing problems with
my Caps Lock key, which I also have mapped as a conditional modifier
(backspace when pressed alone, Left Control when chorded with another
key).

Specifically, I was seeing "Caps Lock + U" (ie. Control-U), which should
delete a line in a readline interface like the shell, behave
erratically. In some cases it would emit a literal "u" and in others it
would perform the intended function. Bizarrely, "Return + U" did not
exhibit this behavior.

This is black magic and I don't really understand how it works, but
found the answer here:

https://github.com/tekezo/Karabiner/issues/229

Here are some sample configs:

- https://github.com/tekezo/Files/blob/master/Karabiner/private.space_to_control_v2/private.xml
- https://github.com/tekezo/Files/blob/master/Karabiner/private.space_ubiq_vim/private.xml

I suspect I might be abusing the `SANDS2` modifier flag here, but it
works. I don't really understand when to use that and when to use the
alternative approach, but anyway...

The key part of the trick here is the `__BlockUntilKeyUp__` which means
the following:

- Space alone is space
- Space with another key (HJKL) is remapped to an arrow key, but only if
  the other key is released before space [this is the critical bit]
- Otherwise, space with another key is still just space followed by the
  other key

In practice, this seems to be working great, even when typing quickly
with a lot of spaces. Yay.

wincent/wincent,wincent/wincent,wincent/wincent,wincent/wincent,wincent/wincent,wincent/wincent,wincent/wincent,wincent/wincent