Commit Graph

47 Commits (master)

Author SHA1 Message Date
Stefan Dorn f9cd0f21d9 lol dumb solution that doesn't break 2017-02-14 16:34:00 +00:00
Stefan Dorn f287876aed fancy combo keys 2017-02-14 15:25:11 +00:00
Stefan Dorn a7c1e67a40 simple control+alt hack 2017-02-14 14:53:06 +00:00
Stefan Dorn 8199d8d21d refactor 2016-08-22 18:31:11 +01:00
Stefan Dorn 487f81b873 debug prep for key repeats 2016-08-22 18:12:42 +01:00
Stefan Dorn a051172412 usable workaround against shifted keys bleeding into next key 2016-08-22 17:26:44 +01:00
Stefan Dorn 6e94b69be4 prep for key repeats 2016-08-22 03:04:00 +01:00
Stefan Dorn 2ed7e87cf1 remove up/down distinction in key layers 2016-08-21 19:32:32 +01:00
Stefan Dorn 5a33a1c21b re-break layer switches to unbreak repeats 2016-08-09 02:51:45 +01:00
Stefan Dorn 9fc027ebbe get rid of global state 2016-08-09 00:40:48 +01:00
Stefan Dorn 5e9593a4a5 rewrite layer code 2016-08-08 23:23:04 +01:00
Stefan Dorn 11b79bcc8c combo with layers 2016-07-20 22:22:41 +01:00
Stefan Dorn dbbd699115 cleanup 2016-06-14 20:14:44 +01:00
Stefan Dorn 90bb49c27d split {mod,layer}_sticky_on 2016-06-14 12:38:17 +01:00
Stefan Dorn 270feb968a sticky modifier keys! 2016-06-14 11:34:43 +01:00
Stefan Dorn 6786b70ecc rework sticky layer keys 2016-06-14 10:51:17 +01:00
Stefan Dorn f52da5065a explicit modifiers 2016-06-14 09:39:45 +01:00
Stefan Dorn 9c81274348 refactor (and minor sticky bug) 2016-06-14 07:32:06 +01:00
Stefan Dorn 5dc33a30d0 refactor 2016-06-14 05:53:45 +01:00
Stefan Dorn 118f511e61 refactor 2016-06-14 05:48:02 +01:00
Stefan Dorn f5c1169af3 get rid of trans logic complete 2016-06-14 05:44:11 +01:00
Stefan Dorn 60e45f8444 refactor 2016-06-14 04:48:56 +01:00
Stefan Dorn ec2820d15b more explicit types 2016-06-14 01:49:01 +01:00
Stefan Dorn 61a8817f2e get rid of transparent keys as part of the coming sticky cleanup 2016-06-12 06:44:09 +01:00
Stefan Dorn a812590707 cleanup 2016-06-12 06:09:57 +01:00
Stefan Dorn 789169a86f refactor 2016-06-12 05:26:27 +01:00
Stefan Dorn 2f2c3d6994 refactor 2016-06-12 05:20:40 +01:00
Stefan Dorn afc7d9f87c cleanup 2016-06-12 03:55:36 +01:00
Stefan Dorn 238a98d6b6 refactor 2016-06-12 02:54:30 +01:00
Stefan Dorn 070b4b2caa no more warnings and automatic headers 2016-06-12 01:31:58 +01:00
Stefan Dorn 90bd7c9116 almost a tree now! 2016-06-12 00:51:39 +01:00
Stefan Dorn 0f1d82f1f2 refactor 2016-06-11 23:06:09 +01:00
Stefan Dorn 14d0d1cad6 refactor 2016-06-11 22:16:59 +01:00
Stefan Dorn 8344f05b60 refactor 2016-06-11 22:06:57 +01:00
Stefan Dorn 0c141072da clean up header structure 2016-06-11 21:19:48 +01:00
Stefan Dorn dea913d16e less nesting 2016-06-11 20:24:42 +01:00
Stefan Dorn 3dda86dd7e remove useless headers 2016-06-11 20:13:46 +01:00
Stefan Dorn b5f88d06f4 fix latch bug 2016-02-06 14:31:54 +00:00
Stefan Dorn f9f5e4b5aa replace the stack with a flat array 2016-02-04 10:00:05 +00:00
Stefan Dorn f0da34b909 more refactor 2016-02-04 09:22:40 +00:00
Stefan Dorn 447f1fb2cb begin major refactor to replace the layer stack 2016-02-04 06:43:33 +00:00
Ryan Prince 2d5c6084c0 removing sticky off state, it is never used because off means the layer was popped 2013-04-08 00:56:06 -07:00
Ryan Prince f2d650b996 adding sticky key functionality
This function gives similar behavior to sticky keys for modifiers
available on most operating systems. It is considered an accessibility
feature because it alleviates the user from having to hold down
modifiers while pressing a key to produce the modified key function. It
is useful for fast touch typing because you can avoid chording motions
which both strain your hands and take your hands out of home-row
position while pressing normal alpha keys.

This function emulates the 3-state behavior which is default on OS X
and optional in Windows where the modifier cycles between
Off->Once->Locked states. This is particularly handy for symbol layers
where you typically only type one symbol before you want to return to
unmodified typing (layer 0), e.g. 'if (condition) { a = "b" + "c"; }'.
If you assign a symbol layer to a thumb key as a layer sticky cycle,
you can type the entire line of code without taking your hands out of
home row position and you do not need to toggle off the layer after
each symbol is pressed, only immediately before keying the symbol.

The exact behavior of the layer sticky cycle function is defined as
follows for each state:
1) One time down (set on key press) - The layer was not active and the
key has been pressed but not yet released. The layer is pushed in the
one time down state.
2) One time up (set on key release) - The layer was active when the
layer sticky key was released. If a key on this layer (not set to
transparent) was pressed before the key was released, the layer will be
popped. If a non-transparent key was not pressed, the layer is popped
and pushed again in the one time up state.
3) Locked (set on key press) - The layer was active and in the one time
up state when the layer sticky key was pressed again. The layer will be
popped if the function is invoked on a subsequent keypress.
2013-04-08 00:49:35 -07:00
Ben Blazak 4c2cc8e5e9 updating documentation :)
(and a few minor changes)
2012-12-10 18:30:39 -08:00
Ben Blazak 7fa2155e05 changed the way layers are handled
note: NOT YET TESTED, only compiled
2012-11-30 12:06:41 -08:00
Ben Blazak d7c1ffe0c4 removed linked lists; changed KBFUN_FUNCTION_ARGS handling
- linked lists need to be rewritten to be more memory efficient
- all kbfun functions are now of type `(void kbfun_...(void))`, and the
  arguments they need are passed via a group of global `main_arg_...`
  variables (and other `main_...` variables)
2012-08-06 15:57:23 -07:00
Ben Blazak ddade5b5dc reorganization (large one) (mostly moving files) 2012-07-31 14:48:31 -07:00