diff options
author | Erez Zukerman <bulk@ezuk.org> | 2016-05-15 00:27:32 -0400 |
---|---|---|
committer | Jack Humbert <jack.humb@gmail.com> | 2016-05-15 00:27:32 -0400 |
commit | 1a8c0dd22d6a2255511d0db6a456315541b5815b (patch) | |
tree | 6c7d5e9dc66f9ce864cfe87a72dfb47e6f06d3a7 /quantum/quantum.h | |
parent | 79d26f331a275c99f76a30d34752fbd65bb3f335 (diff) | |
download | firmware-1a8c0dd22d6a2255511d0db6a456315541b5815b.tar.gz firmware-1a8c0dd22d6a2255511d0db6a456315541b5815b.tar.bz2 firmware-1a8c0dd22d6a2255511d0db6a456315541b5815b.zip |
Leader key implementation (#326)
* implements leader key for planck experimental
* allows override of leader timeout
* adds ability to use the leader key in seq
* fixes leader keycode
* adds chording prototype
* fixes keycode detection
* moves music mode to quantum.c
* disables chording by default
* updates process_action functions to return bool
Diffstat (limited to 'quantum/quantum.h')
-rw-r--r-- | quantum/quantum.h | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/quantum/quantum.h b/quantum/quantum.h new file mode 100644 index 000000000..db726ad42 --- /dev/null +++ b/quantum/quantum.h @@ -0,0 +1,48 @@ +#ifndef QUANTUM_H +#define QUANTUM_H + +#include "matrix.h" +#include "keymap_common.h" +#ifdef BACKLIGHT_ENABLE + #include "backlight.h" +#endif +#ifdef RGBLIGHT_ENABLE + #include "rgblight.h" +#endif +#ifdef AUDIO_ENABLE + #include "audio.h" +#endif +#ifdef MIDI_ENABLE + #include <keymap_midi.h> +#endif +#include "action_layer.h" +#include "eeconfig.h" +#include <stddef.h> +#include <avr/io.h> + +extern uint32_t default_layer_state; + +#ifndef NO_ACTION_LAYER + extern uint32_t layer_state; +#endif + +bool music_activated; + +void matrix_init_kb(void); +void matrix_scan_kb(void); +bool process_action_kb(keyrecord_t *record); + +void leader_start(void); +void leader_end(void); + +#ifndef LEADER_TIMEOUT + #define LEADER_TIMEOUT 200 +#endif +#define SEQ_ONE_KEY(key) if (leader_sequence[0] == (key) && leader_sequence[1] == 0 && leader_sequence[2] == 0) +#define SEQ_TWO_KEYS(key1, key2) if (leader_sequence[0] == (key1) && leader_sequence[1] == (key2) && leader_sequence[2] == 0) +#define SEQ_THREE_KEYS(key1, key2, key3) if (leader_sequence[0] == (key1) && leader_sequence[1] == (key2) && leader_sequence[2] == (key3)) + +#define LEADER_EXTERNS() extern bool leading; extern uint16_t leader_time; extern uint16_t leader_sequence[3]; extern uint8_t leader_sequence_size +#define LEADER_DICTIONARY() if (leading && timer_elapsed(leader_time) > LEADER_TIMEOUT) + +#endif
\ No newline at end of file |