Commit Graph

269 Commits

Author SHA1 Message Date
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 <algernon@madhouse-project.org>
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 <algernon@madhouse-project.org>
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 <algernon@madhouse-project.org>
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 <algernon@madhouse-project.org>
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 <algernon@madhouse-project.org>
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 <algernon@madhouse-project.org>
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 <algernon@madhouse-project.org>
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 <algernon@madhouse-project.org>
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 <algernon@madhouse-project.org>
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 <algernon@madhouse-project.org>
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 <algernon@madhouse-project.org>
2016-08-13 10:37:01 +02:00
shela
e692ebf86a fix typo 2016-08-12 20:38:26 +09:00
kuel
2a0121a786 Removed unnecessary comment 2016-08-07 11:07:38 -05:00
kuel
c5ee24a6c3 Add keymap_russian.h, a software implementation of Russian
rename keymap_cyrillic.h to keymap_unicode_cyrillic.h
changed CY_RUBLE and CY_NUMERO to CY_RUBL and CY_NMRO in
 keymap_unicode_cyrillic.h
2016-08-07 11:01:12 -05:00
Jack Humbert
213cb2c243 Merge pull request #605 from kuel/master
Add keymap_cyrillic.h, lots of cyrillic characters
2016-08-03 00:11:02 -04:00
Jack Humbert
e62c588921 Merge pull request #561 from 0xdec/patch-1
Clean up formatting & tiny refactor in rgblight.c
2016-08-03 00:08:02 -04:00
kuel
c70b276b1b Add keymap_cyrillic.h, lots of cyrillic characters 2016-08-02 14:09:01 -05:00
JeeBak Kim
7d0345ef25 Add IN_LIKE_FLINT song 2016-07-30 01:52:33 -07:00
Fred Sundvik
e01b4c3fd9 Most ergodox keymaps compiles on Infinity
There are linker errors due to missing led funcitonality though
2016-07-29 20:48:20 +03:00
Gergely Nagy
b21e8b97ac tap-dance: Add some debugging support
Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2016-07-27 14:49:19 +02:00
Jordi Orlando
ea2d2f5d58 Simplify HSV->RGB calculation
De-dupe repeated code
2016-07-26 15:31:22 -05:00
Jordi Orlando
899c88cd8b Increament -> increment 2016-07-26 14:46:30 -05:00
Jordi Orlando
3a860c4bc2 Clean up rgblight.c
Fix formatting issues, clarify comments
2016-07-26 14:43:45 -05:00
Jack Humbert
f9aadd17e8 Merge pull request #558 from lindhe/master
Fix misspelled command in Norwegian helper
2016-07-25 11:16:54 -04:00
Andreas Lindhé
283ebbe142 Change Nordic ampersand code to match the English
Changed from "NO_AMP" to "NO_AMPR" since the KC one is "KC_AMPR"
2016-07-25 12:50:56 +02:00
Andreas Lindhé
b6fa762234 Fix misspelled command in Norwegian helper 2016-07-25 11:29:54 +02:00
Jack Humbert
8b94e26d7c Fixes midi functionality 2016-07-24 22:07:43 -04:00
Jack Humbert
24bd931962 Merge pull request #552 from robertdale/music-play-fix
Fixes issue #551 - ensure there's a recording to play before playing
2016-07-24 21:58:01 -04:00
Jack Humbert
41f15d8c34 Merge pull request #550 from Darthabel/fix_bepo
Fix some errors in bepo mapping
2016-07-24 21:57:38 -04:00
Robert Dale
3ea738e450 ensure there's a recording to play before playing; also enables the LGUI button to play a tone 2016-07-24 10:00:39 -04:00
Vivien Alger
7b4d30ee50 Fix some errors in bepo mapping 2016-07-24 10:57:49 +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 <algernon@madhouse-project.org>
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 <algernon@madhouse-project.org>
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 <algernon@madhouse-project.org>
2016-07-22 09:10:17 +02:00
Jack Humbert
940358ed4f Merge pull request #518 from jakllsch/upstream
keymap_extras changes
2016-07-21 20:56:54 -04:00
Pavlos Vinieratos
4e6a8627d8 add a couple of comments 2016-07-19 18:18:57 +02:00
Pavlos Vinieratos
d5daec2a58 on_each_tap_fn is called on tap down and tap up 2016-07-19 18:18:57 +02:00
Pavlos Vinieratos
dda2fd6ff3 in the default case, it should be called if there is actually a tap
dance happening, and in the normal case, it should be called when the
tap down is happening.
2016-07-18 23:34:02 +02:00
Pavlos Vinieratos
d3091faf36 change naming, and remove extraneous definition 2016-07-17 08:28:03 +02:00
Pavlos Vinieratos
f3b56701ed add an anyway and a reset callback
when using tap dance, we have the `regular` callback that is called on
the last tap. this commit adds an `anyway` callback that is called on
every tap, and a `reset` callback that is called on reset of the tap
dance taps.
2016-07-16 00:04:12 +02:00
Pavlos Vinieratos
1a7e954f9f in case its NULL 2016-07-16 00:04:12 +02:00
Jonathan A. Kollasch
4278d88615 keymap_dvorak.h: add missing shifted keys, fix whitespace 2016-07-14 11:32:43 -05:00
Jonathan A. Kollasch
25938a09a6 extra_keymaps: use RALT() instead of 0x1400 for AltGr 2016-07-14 11:13:35 -05:00
Jonathan A. Kollasch
010dd13084 keymap_extras: add newline at end of files 2016-07-14 11:10:05 -05:00
Pavlos Vinieratos
a28a6e5b79 extract reset keyboard into a function
that makes it easy to call reset_keyboard() from a function in a keymap
2016-07-13 16:38:02 +02:00
Jack Humbert
a998a48673 Merge pull request #477 from Smilliam/master
Canceling Space Cadet state with opposite shift key
2016-07-11 09:14:43 -04:00
Smilliam
b12fe6abb2 Made rollover behavior for space cadet optional 2016-07-10 19:04:01 -07:00
TerryMathews
f7a8682226 Move return out of event if block
According to Jack, this makes the return case not be processed. Doesn't
break anything in the firmware.
2016-07-08 03:32:28 -04:00
TerryMathews
50c686587e Create keycodes for RGB control functions
Moves RGB controls out of the macro function and assigns them their own
keycodes:
RGB_TOG (toggle on/off)
RGB_MOD (mode step)
RGB_HUI (increase hue)
RGB_HUD (decrease hue)
RGB_SAI (increase saturation)
RGB_SAD (decrease saturation)
RGB_VAI (increase brightness)
RGB_VAD (decrease brightness)
2016-07-07 23:34:33 -04:00
Fred Sundvik
9870082a06 Fix the range for consumer keys 2016-07-07 19:48:39 +03:00