Commit Graph
30 Commits
Author SHA1 Message Date
Gergely Nagy 2f0395ce72 build_keyboard.mk: Restore UCIS_ENABLE support
During the build system refactor, support for enabling UCIS seems to
have been lost. This little patch adds that back, so that keymaps using
UCIS can be compiled again.

Signed-off-by: Gergely Nagy <[email protected]>
2016-08-29 11:30:38 +02:00
Gergely Nagy a058ae40e2 quantum: Move qk_ucis_state to process_unicode.c
In order to not declare the same variable in multiple objects (which
happens when building UCIS-enabled keymap for both the ErgoDox EZ and
the ErgoDox Infinity), move the declaration to the .c file, and keep
only an extern reference in the header.

Many thanks to @fredizzimo for spotting the error in Travis, and
suggesting the fix.

Signed-off-by: Gergely Nagy <[email protected]>
2016-08-24 15:39:23 +02:00
Gergely Nagy 0d9d4b8658 planck/circuit: Update after the latest tap-dance change
Fixes #653.

Signed-off-by: Gergely Nagy <[email protected]>
2016-08-18 13:22:16 +02:00
Gergely Nagy 0d28787c5c Add a register/unregister_code16 pair of functions
These functions register not only the 8bit keycode, but the modifiers
too. It doesn't handle the full range of the upper 8bits, just the mods,
but that's a good start.

Changed the tap-dance pair functions to use these, so one can do:

  `ACTION_TAP_DANCE_DOUBLE (KC_COLN, KC_SCLN)`

...and that will do the right thing.

Signed-off-by: Gergely Nagy <[email protected]>
2016-08-18 11:29:53 +02:00
Gergely Nagy 29f64d7a93 tap-dance: Major rework, to make it more reliable
This reworks how the tap-dance feature works: instead of one global
state, we have a state for each tap-dance key, so we can cancel them
when another tap-dance key is in flight. This fixes #527.

Since we have a state for each key, we can avoid situation where a keyup
would mess with our global state. This fixes #563.

And while here, we also make sure to fire events only once, and this
fixes #574.

There is one breaking change, though: tap-dance debugging support was
removed, because dumping the whole state would increase the firmware
size too much. Any keymap that made use of this, will have to be
updated (but there's no such keymap in the repo).

Also, there's a nice trick used in this rework: we need to iterate
through tap_dance_actions in a few places, to check for timeouts, and so
on. For this, we'd need to know the size of the array. We can't discover
that at compile-time, because tap-dance gets compiled separately. We'd
like to avoid having to terminate the list with a sentinel value,
because that would require updates to all keymaps that use the feature.
So, we keep track of the highest tap-dance code seen so far, and iterate
until that index.

Signed-off-by: Gergely Nagy <[email protected]>
2016-08-17 15:05:58 +02:00
Gergely Nagy d78058cc75 tap-dance: Include action_tapping.h for TAPPING_TERM
Include `action_tapping.h`, so the keymap does not have to define a
`TAPPING_TERM` for us, and we can use the default.

Signed-off-by: Gergely Nagy <[email protected]>
2016-08-17 10:28:08 +02:00
Gergely Nagy e8845f0daf process_unicode: Introduce a slight delay
When entering unicode codes, use some delay, so the OS has time to
process the information. This is not needed on all systems, but some
seem to require it.

Signed-off-by: Gergely Nagy <[email protected]>
2016-08-15 10:08:53 +02:00
Gergely Nagy 43d08629cf process_unicode: Replace register_hex32
It turns out that register_hex32 did not work reliably, and some systems
only allow 7 chars after the unicode magic sequence, while others allow
8. To remedy the situation, store the codes as strings, and type those
in instead of doing bit shifting magic.

Signed-off-by: Gergely Nagy <[email protected]>
2016-08-15 10:08:53 +02:00
Gergely Nagy a312cbf712 process_unicode: Use uint32_t for UCIS purposes
Use a single uint32_t to store the unicode of a symbol, instead of an
array of uint16_ts.

Signed-off-by: Gergely Nagy <[email protected]>
2016-08-15 10:08:53 +02:00
Gergely Nagy 234dd276cf process_unicode: Make the startup overridable
Extract out the part of `qk_ucis_start` that inputs the placeholder
symbol, and make it weak, so it can be overridden.

Signed-off-by: Gergely Nagy <[email protected]>
2016-08-15 10:08:53 +02:00
Gergely Nagy 857aa5bef6 process_unicode: Call process_ucis() automatically
If UCIS is enabled, call process_ucis() automatically from
process_record_quantum().

Signed-off-by: Gergely Nagy <[email protected]>
2016-08-15 10:08:53 +02:00
Gergely Nagy 0b6861827f process_unicode: Handle too long UCIS symbol names
If the symbol name being entered is longer than the max, stop recording
it, and stop processing keycodes apart from the ones that can delete,
finish or cancel the sequence.

Signed-off-by: Gergely Nagy <[email protected]>
2016-08-15 10:08:53 +02:00
Gergely Nagy fa06a16360 process_unicode: Add a way to enter unicode symbols by name
The purpose of this change is to allow keymaps to specify a dictionary
of unicode symbol name to code mappings, and let the person at the
keyboard enter unicode symbols by name.

This is done by having a way to trigger unicode symbol input mode, when
all keys are cached until Esc, Enter or Space are pressed. Once that
happens, we try to look up the symbol from our lookup table. If found,
we erase back, and type the unicode magic in to get that symbol. If not
found, we still erase back, start unicode input mode, and replay what
the user typed in.

Signed-off-by: Gergely Nagy <[email protected]>
2016-08-15 10:08:53 +02:00
Gergely Nagy 63e5782d2c process_unicode: Small refactor & linux fix
This moves the unicode input start / end sequences into their own
functions, so keymaps and other functionality can build on it too.

At the same time, it changes how the Linux variant works, to match
reality: CTRL+SHIFT must be unregistered too, and we close the thing
with a Space instead.

Signed-off-by: Gergely Nagy <[email protected]>
2016-08-15 10:08:53 +02:00
Gergely Nagy 8bdf745909 process_unicode: Fix set_unicode_input_mode()
In the header, this was defined as `set_unicode_input_mode`, but the
implementation had `set_unicode_mode` for a name. Changed the
implementation to match the header.

Signed-off-by: Gergely Nagy <[email protected]>
2016-08-13 10:37:01 +02:00
Gergely Nagy b98d47abe5 ergodox: Update my keymap to v1.5
Major changes include:

* The **1HAND** layer has been removed.
* A `Delete` key is now available on the right thumb cluster.
* The **ADORE** layer received a major update, see the updated layout
  image.
* It is now possible to enable automatic logging for the **ADORE**
  layer, by setting the `ADORE_AUTOLOG` makefile variable to `yes` when
  compiling the keymap. It is off by default.
* The `~` key and the `Media Next/Prev` key have been swapped on
  the **base** layer.
* On the **ARROW** layer, `Backspace` has been replaced by `Enter`.
* There is some experimental support for entering Unicode symbols.

Signed-off-by: Gergely Nagy <[email protected]>
2016-08-12 16:36:07 +02:00
Gergely Nagy 8a9bf1f165 Update some obsolete references
Some links were still pointing to `/keyboards/ergodox_ez`, while the
directory is `/keyboards/erdogox` now.

Not all references have been updated, and some of the text here and
there may need updating to mention the ErgoDox Infinity too, but that's
out of the scope for this quick fix.

Signed-off-by: Gergely Nagy <[email protected]>
2016-07-30 08:37:30 +02:00
Gergely Nagy f82437f08e ergodox_ez: Upgrade my keymap to v1.4
* When toggling the key logging on or off, the LEDs will do a little dance.
* The keylogger is now optional, but enabled by default. Use `KEYLOGGER_ENABLE=no` on the `make` command line to disable it.
* The `TAB`/`ARRW` key was turned into a tap-dance key, allowing one to toggle the **ARROW** layer on by double-tapping, and as such, avoid the need to hold the key.
* The `-`/`_` key was turned into a tap-dance key too.
* There is now a way to travel time with the keyboard, toggle the feature on by hitting `LEAD t`.

Signed-off-by: Gergely Nagy <[email protected]>
2016-07-29 12:24:33 +02:00
Gergely Nagy b21e8b97ac tap-dance: Add some debugging support
Signed-off-by: Gergely Nagy <[email protected]>
2016-07-27 14:49:19 +02:00
Gergely Nagy dd77054790 tmk_core/rules.mk: Make PRINT_ERROR* stop on error
Instead of `&& false`, explicitly `exit 1` to make the rules using these macros
fail. This fixes #571, and likely breaks Travis badly.

Signed-off-by: Gergely Nagy <[email protected]>
2016-07-27 08:53:05 +02:00
Gergely Nagy 13385f5691 readme.md: Update the tap dance docs
Signed-off-by: Gergely Nagy <[email protected]>
2016-07-22 09:10:17 +02:00
Gergely Nagy fca34e2ad6 readme.md: algernon is strictly lowercase
Signed-off-by: Gergely Nagy <[email protected]>
2016-07-22 09:10:17 +02:00
Gergely Nagy 44e16ffc80 tap-dance: Code cleanup
Removes a number of duplicated code, by passing actions around instead
of keycodes, so the various dance action functions do not have to look
up the action, but the caller does that for them.

Signed-off-by: Gergely Nagy <[email protected]>
2016-07-22 09:10:17 +02:00
Gergely Nagy ce8cc9219f tap-dance: Support user_data for the callbacks
Refactored the code a little, so all callbacks now receive a `user_data`
pointer, which can be anything. As an example, the key pairs from
`ACTION_TAP_DANCE_DOUBLE` now use this, and custom, built-in functions.

This makes it easier to extend the tap dance functionality, and also
simplifies the code a little.

Signed-off-by: Gergely Nagy <[email protected]>
2016-07-22 09:10:17 +02:00
Gergely Nagy 70e42489de tap-dance: Support for holding keys
With this change, tap dance will now store the pressed state of the
tap-dance key, and allow one to make an action sooner, while the key is
still held, and only unregister when the key is released.

The registration must happen in the `on_dance_finished` callback, while
unregistering goes to `on_reset`. The surrounding code makes sure not to
call either multiple times.

Signed-off-by: Gergely Nagy <[email protected]>
2016-07-22 09:10:17 +02:00
Gergely Nagy 53eb36c085 ergodox_ez: Update my keymap to v1.3
This updates my ErgoDox EZ layout to v1.3, which has the following
noteworthy changes:

* Added support for logging keys, by pressing `LEAD d`. Also included is
  a tool to generate a **heatmap** out of the logs.
* The arrow and navigation keys were rearranged again, and now require
  an additional key being held to activate. See the **base layer** for
  an image that shows where arrows are.
* The **experimental** layer has been redone, and is now
  called **ADORE**, and as such, can be enabled by `LEAD a` now.
* Switching between Dvorak and ADORE is now persisted into EEPROM, and
  survives a reboot.

Signed-off-by: Gergely Nagy <[email protected]>
2016-07-18 08:57:30 +02:00
Gergely Nagy 2278956412 ergodox_ez: Update the algernon keymap to v1.2
Noticeable changes since the last pull request:

* The forced NKRO mode can be easily toggled off at compile-time, to
  make the firmware compatible with certain operating systems.
* The `:;` key has changed behaviour: to access the `;` symbol, the key
  needs to be double-tapped, instead of shifted.
* The `=` and `\` keys were swapped, `=` moved to the home row, on both
  the **base** and the **experimental** layers.
* The arrow and navigation keys were redone, they are now more
  accessible, but the navigation keys require an extra tap to access.
* The **Emacs** layer is gone, replaced by a simplified
  **navigation and media** layer.
* `LEAD v` types the firmware version, and the keymap version.
* On the **experimental** layer, the `L` and `Q`, and the `K` and `G`
  keys were swapped.
* The **Steno** layer gained a few more `#` and `*` keys, to make it
  easier on my fingers.

Signed-off-by: Gergely Nagy <[email protected]>
2016-06-22 08:41:38 +02:00
Gergely Nagy 9ff10ab1db ergodox_ez/algernon: Add a HEX file
Signed-off-by: Gergely Nagy <[email protected]>
2016-05-26 15:31:25 +02:00
Gergely Nagy c764480b95 ergodox_ez/algernon: New layout.
This is a squashed up version of the layout I have been working on for
the past month or so. Based on Dvorak, with a lot of unconventional
stuff thrown in for good measures.

Signed-off-by: Gergely Nagy <[email protected]>
2016-05-26 15:27:11 +02:00
Gergely Nagy 037b3f0ddf ergodox_ez: Add a SuperCoder keymap
Inspired by @faxm0dem, and the SuperCoder 2000 "keyboard".

Signed-off-by: Gergely Nagy <[email protected]>
2016-05-26 14:13:20 +02:00