Commit Graph

367 Commits (f9cd0f21d9e17e6d29d47c75f5466f78d76f2c66)

Author SHA1 Message Date
Ryan Prince 2c39db717a adding layout description and updated layout. removing unused layers 2013-04-10 13:15:32 -07:00
Ryan Prince 26b46ac7d3 Swapping layer 2 sticky and layer 2 toggle keys. Now that sticky works
as desired, it is possible to hold the sticky key down for short number
runs and it is now a more frequently used key that toggle. Also added
notes about mac keycodes that I found in search of play/next/prev
buttons. I suspect that codes need to be inserted into the USB data
stream to indicate that a media key is being pressed.
2013-04-09 11:56:25 -07:00
Ryan Prince 2cd405ad08 checking in my layout file as an example of sticky key usage 2013-04-08 11:55:38 -07:00
Ryan Prince ce4495372c caching the transparent key pressed result to fix sticky key bug
the behavior for transparent keys not affecting sticky key state was
broken because kbfun_transparent() was only getting called for key
press and not for key release because the layer for the key was cached
on keypress. By caching the transparent key press result on key press
we can ensure that the main_arg_trans_key_pressed is set correctly for
any key function called on key release
2013-04-08 11:51:01 -07:00
Ryan Prince 4e56966795 fixing bug/adding function for sticky key behavior - kbfun_press_release_preserve_sticky()
kbfun_press_release_preserve_sticky() is meant to replace
kbfun_press_release as the function used for standard modifiers (shift,
control, alt, and gui) so that the sticky state is preserved and it is
possible to key in chorded commands using a key on another layer
pressing the keys in the chord one key at a time simultaneously without
breaking the sticky state. (e.g. ctrl+F2 as lsticky2, ctrl, x [where x
is defined as F2 on layer 2]

TODO: Noticed a bug where the transparent behavior does not work as
expected for modifiers. lsticky2, ctrl, x does not produce ctrl+F2 when
ctrl is defined as transparent on layer 2 and keycode=ctrl,
press=kprrel, release=kprrel on layer 0.
2013-04-08 10:54:49 -07:00
Ryan Prince eb24aef2d5 cleaning up local changes to prep the sticky keys change for a pull request 2013-04-08 08:49:58 -07:00
Ryan Prince 208aad93d3 Revert "adding local makefile changes"
This reverts commit d88b55a6d9.
2013-04-08 08:48:46 -07:00
Ryan Prince 15a91f7b05 fixing a bug in sticky key one time state behavior, cleaning up a comment, and making braces style consistent with the rest of the code.
sticky layers in the one time state were being popped anytime
kbfun_press_release() was called, which should only happen if the key
was defined for the sticky layer, i.e. kbfun_transparent() was not the
first function mapped to that key in the topmost layer.
2013-04-08 08:46:25 -07: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 d88b55a6d9 adding local makefile changes 2013-04-08 00:49:59 -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 43ee200b2b added toc in readme.md 2012-12-20 16:34:08 -08:00
Ben Blazak a03263d83b revised the readme 2012-12-20 16:29:31 -08:00
Ben Blazak 6c3a7951b1 changed the generated .zip filename back... lol
i like the original one better. i'll find another way to make the
filenames small for the most current ones on dropbox, so that they're
easy for people to find.
2012-12-20 15:42:10 -08:00
Ben Blazak 721f56588b changed filename of output .zip files 2012-12-20 15:38:21 -08:00
Ben Blazak 08101371e7 Merge branch 'dev' 2012-12-20 00:24:43 -08:00
Ben Blazak 8ea3ea5230 fixed layout bug ('period' on numpad layer)
'_dec_kp' (the keydoce for keypad decimal) doesn't appear to work...
2012-12-20 00:22:06 -08:00
Ben Blazak d120a0744f Merge branch 'dev' 2012-12-11 18:33:24 -08:00
Ben Blazak 0bf6ae747a (small doc fix) 2012-12-11 18:33:05 -08:00
Ben Blazak 89d8df652e Merge branch 'dev' 2012-12-11 18:28:33 -08:00
Ben Blazak 32826ccf5b (small doc update) 2012-12-11 18:28:13 -08:00
Ben Blazak 4810bac2a0 Merge branch 'dev' 2012-12-11 17:59:29 -08:00
Ben Blazak d9b908b9d0 (minor doc update) 2012-12-11 17:54:33 -08:00
Ben Blazak df79ed4d81 updated docs: github depricated binary downloads 2012-12-11 17:52:11 -08:00
Ben Blazak 2aab399a6f Merge branch 'dev' 2012-12-11 17:21:08 -08:00
Ben Blazak 0f474132f5 fixed layer bug 2012-12-11 17:20:42 -08:00
Ben Blazak 37b425a738 improved toplevel build script output; added colemak
Merge branch 'dev'

still a candidate for release with keyboard :) -- still -- gona stop
saying that with every merge, lol

- the svg/html output that documents the layout looks a lot better now
- merged in a colemak layout from jjt on github
- made a make target in the toplevel to make it easy for me to generate
  a sepatate .hex file for every layout (for posting to the downloads
  page)
2012-12-11 16:46:54 -08:00
Ben Blazak b102e2bd4f updated toplevel build script :)
- also fixed a small error in the colmak layout, which was there because
  it had been in the qwerty and dvorak layouts until *very* recently.
2012-12-11 16:39:27 -08:00
Ben Blazak a6846f7e68 Merge branch 'master' of git://github.com/jjt/ergodox-firmware into dev
------- jjt -------
I increased the spacing of the layout sections and made all layers follow the
spacing for consistency.

I also made changes to the positions of the layer keys, added a number symbol
row on layer 1 (I found it easier to reach) and made a QWERTY layer, mostly for
gaming. And I switched the primary thumb buttons, also for gaming.
-------------------
2012-12-11 15:32:16 -08:00
Ben Blazak 63f1ee22df improved the svg/html layout description generator output 2012-12-11 15:10:45 -08:00
Jason Trill ba158565dc Converted tabs to spaces 2012-12-11 13:51:16 -08:00
Jason Trill c122a67db9 Added Colemak layout 2012-12-11 13:30:06 -08:00
Ben Blazak e9bde255ee candidate for release with keyboard :)
Merge branch 'dev'
(updated docs - added some basic howtos)
2012-12-11 11:54:31 -08:00
Ben Blazak 632a5d0ba1 update documentation (added some basic howtos) 2012-12-11 11:53:46 -08:00
Ben Blazak a213898345 (cleaning up some small thing with the repo...)
Merge branch 'dev' of github.com:benblazak/ergodox-firmware into dev
2012-12-11 11:08:44 -08:00
Ben Blazak e47c119b5f candidate for release with keyboard :)
Merge branch 'dev'
(small catch-up merge)

- there may be a lot of these little merges for a little while, as we near the
keyboard group buy
2012-12-11 11:02:32 -08:00
Ben Blazak 8d3d17bb20 rotated the layout and matrix thumb groups 90 deg.
- per a suggestion from Jason Trill (jjt on github); after looking at it
  a while, i think it is a bit more natural.. :)
2012-12-11 11:01:18 -08:00
Ben Blazak 371ffad691 rotated the layout and matrix thumb groups 90 deg.
- per a suggestion from Jason Trill (jjt on github); after looking at it
  a while, i think it is a bit more natural.. :)
2012-12-11 10:50:47 -08:00
Ben Blazak cd5015fd60 candidate for release with keyboard :)
Merge branch 'dev'
- documentation update (mostly ./readme.md)
2012-12-10 18:34:12 -08:00
Ben Blazak 4c2cc8e5e9 updating documentation :)
(and a few minor changes)
2012-12-10 18:30:39 -08:00
Ben Blazak 11c77a15f7 candidate for release with keyboard :)
Merge branch 'dev'

- changed the way layers are handled!
- reorganized a bunch
- updated some documentation and such
- updated USB IDs
- now compiling in OS X (though it *should* still work in linux and
  windows (except the toplevel build script is unix only) - it's a bug
  if it doens't)
- toplevel build script now generates a lot more, including a bunch of
  information in JSON meant for the UI, and an html file thats a
  currently-very-bad picture of the layout that was compiled
2012-12-06 12:29:00 -08:00
Ben Blazak 27569dbb74 added dvorak layout (modified from the QWERTY one) 2012-12-06 12:24:41 -08:00
Ben Blazak 51e81d0b1c layout modifications
- and added a 'shift+press|release' kbfun
2012-12-04 16:11:01 -08:00
Ben Blazak 1b41491115 fixed layer and numpad bugs - appears to work!
- rewrote the layer functions in main() (easiest way to get the to
  work.. :) )
- fixed the keymap (i had the numpad keys pushing layer 2 instead of
  layer 3)
- changed the numlock keycode.. i was using the wrong one, lol
- and some minor aesthetic changes
2012-12-03 16:19:12 -08:00
Ben Blazak 52200b262f added a keyboard function layer; fixed small layer bug 2012-11-30 16:28:40 -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 dacc54fa1a layout/qwerty -> layout/qwerty-kinesis-mod
- NOT TESTED YET. still need to do that
- also, got an idea for layer masking...

possible future changes:
- i'd like to make the layer matrices just '_kb_layout_values', and
  '_kb_layout_functions'.
- i'd like to make layer masks implemented with a special function
  'kbfun_layermask_transparent' or something similar.  a function that
  looks up what would have been pressed if that layer wasn't active.
  they could be chainable, i.e. a lookup for such a function could end
  up calling the same function (if two layermasks were active on top of
  on another), which would then call a real key.  these wouldn't be
  allowed on the base layer, of course...  and then, all i'd have to do
  to keep track of layers would be keep a variable length array (or
  not...  maybe an array of length 10 or something) of which layer is
  active... :)
- i'd like to have a thing (this isn't a very complete thought yet)
  where keypresses are looked up first in the EEPROM, to see if there's
  a definition there.  if there isn't (which should usually be the case)
  then the standard definition for that key from the matrices would be
  used.  this would allow macros (and redefinitions) without reflashing.
  this would also be convenient, once the mechanism was implemented, for
  assigning keys multiple decomposable actions...  dunno exactly how
  it'll work out yet though.  layer stuff comes first.
2012-10-16 16:54:03 -07:00
Ben Blazak 622f04acf1 small improvements to gen-ui-info.py 2012-10-13 22:54:12 -07:00
Ben Blazak 467886299b made LED_BRIGHTNESS a makefile option 2012-10-12 10:29:50 -07:00
Ben Blazak f7bff8184b (minor) 2012-10-11 13:18:35 -07:00