diff options
Diffstat (limited to 'users/callum/readme.md')
-rw-r--r-- | users/callum/readme.md | 99 |
1 files changed, 0 insertions, 99 deletions
diff --git a/users/callum/readme.md b/users/callum/readme.md deleted file mode 100644 index 24b71038b6..0000000000 --- a/users/callum/readme.md +++ /dev/null @@ -1,99 +0,0 @@ -A keymap for 34 keys with 4 layers and no mod-tap. - -![](https://raw.githubusercontent.com/callum-oakley/keymap/master/keymap.svg) - -## Details - -- Hold `sym` to activate the symbols layer. -- Hold `nav` to activate the navigation layer. -- Hold `sym` and `nav` together to activate the numbers layer. -- The home row modifiers are oneshot so that it's possible to modify the - keys on the base layer, where there are no dedicated modifiers. -- `swap win` sends `cmd-tab` for changing focus in macOS but holds `cmd` - between consecutive presses. -- `swap lang` behaves similarly but sends `ctrl-space`, for changing input - language in macOS. - -## Oneshot modifiers - -The home row modifiers can either be held and used as normal, or if no other -keys are pressed while a modifier is down, the modifier will be queued and -applied to the next non-modifier keypress. For example to type `shift-cmd-t`, -type `sym-o-n` (or `nav-a-t`), release, then hit `t`. - -You can and should hit chords as fast as you like because there are no timers -involved. - -Cancel unused modifiers by tapping `nav` or `sym`. - -### Userspace oneshot implementation - -For my usage patterns I was hitting stuck modifiers frequently with [`OSM`][] -(maybe related to [#3963][]?). I'd like to try to help fix this in QMK proper, -but implementing oneshot mods in userspace first was: - -1. Fun. -2. A good exploration of how I think oneshot mods should work without timers. - -So in the meantime, this [userspace oneshot implementation][] is working well -for me. - -## Swapper - -`swap win` sends `cmd-tab`, but holds `cmd` between consecutive keypresses. -`cmd` is released when some other key is hit or released. For example - - nav down, swap win, swap win, nav up -> cmd down, tab, tab, cmd up - nav down, swap win, enter -> cmd down, tab, cmd up, enter - -`swap lang` sends `ctrl-space` to swap input languages in macOS and behaves -similarly. - -[Swapper implementation.][] - -## Why no mod-tap? - -[Mod-tap][] seems to be by far the most popular tool among users of tiny -keyboards to answer the question of where to put the modifiers, and in the -right hands it can clearly work brilliantly, but I've always found myself error -prone and inconsistent with it. - -With dedicated modifiers, there are three ways one might type `ctrl-c`: - - ctrl down, ctrl up, c down, c up - ctrl down, c down, ctrl up, c up - ctrl down, c down, c up, ctrl up - -Basically, you never have to worry about the keyups, as long as the keydowns -occur in the correct order. Similarly, there are three ways one might type -`ac`: - - a down, a up, c down, c up - a down, c down, a up, c up - a down, c down, c up, a up - -Replace `a` with `ctrl` and this is exactly what we had before! So if we want -to put `a` and `ctrl` on the same key we have a problem, because without -considering timing these sequences become ambiguous. So let's consider timing. - -The solution to the ambiguity that QMK employs is to configure the -`TAPPING_TERM` and consider a key held rather than tapped if it is held for -long enough. My problem with this is that it forces you to slow down to use -modifiers. By its very nature the tapping term must be longer than the longest -you would ever hold a key while typing on the slowest laziest Sunday afternoon. -I'm not typing at 100% speed at all times, but when I am, having to think about -timing and consciously slow down for certain actions never fails to trip me up. - -So alas, mod-tap is not for me -- but if it works for you, more power to you. -:) - -* * * - -[My github][] - -[`OSM`]: /docs/one_shot_keys.md -[#3963]: https://github.com/qmk/qmk_firmware/issues/3963 -[userspace oneshot implementation]: oneshot.c -[swapper implementation.]: swapper.c -[Mod-tap]: https://github.com/qmk/qmk_firmware/blob/master/docs/mod_tap.md -[My github]: https://github.com/callum-oakley |