Add NO_ACTION_TAPPING and NO_ACTION_MACRO config options
This commit is contained in:
parent
b057511f45
commit
9757f960f9
@ -30,14 +30,18 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
|
|
||||||
static void process_action(keyrecord_t *record);
|
static void process_action(keyrecord_t *record);
|
||||||
|
#ifndef NO_ACTION_TAPPING
|
||||||
static bool process_tapping(keyrecord_t *record);
|
static bool process_tapping(keyrecord_t *record);
|
||||||
static void waiting_buffer_scan_tap(void);
|
static void waiting_buffer_scan_tap(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
static void debug_event(keyevent_t event);
|
static void debug_event(keyevent_t event);
|
||||||
static void debug_record(keyrecord_t record);
|
static void debug_record(keyrecord_t record);
|
||||||
static void debug_action(action_t action);
|
static void debug_action(action_t action);
|
||||||
|
#ifndef NO_ACTION_TAPPING
|
||||||
static void debug_tapping_key(void);
|
static void debug_tapping_key(void);
|
||||||
static void debug_waiting_buffer(void);
|
static void debug_waiting_buffer(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -53,6 +57,7 @@ static void debug_waiting_buffer(void);
|
|||||||
#define TAPPING_TOGGLE 5
|
#define TAPPING_TOGGLE 5
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef NO_ACTION_TAPPING
|
||||||
/* stores a key event of current tap. */
|
/* stores a key event of current tap. */
|
||||||
static keyrecord_t tapping_key = {};
|
static keyrecord_t tapping_key = {};
|
||||||
|
|
||||||
@ -158,7 +163,7 @@ static void oneshot_toggle(void)
|
|||||||
{
|
{
|
||||||
oneshot_state.disabled = !oneshot_state.disabled;
|
oneshot_state.disabled = !oneshot_state.disabled;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
void action_exec(keyevent_t event)
|
void action_exec(keyevent_t event)
|
||||||
@ -170,6 +175,7 @@ void action_exec(keyevent_t event)
|
|||||||
|
|
||||||
keyrecord_t record = { .event = event };
|
keyrecord_t record = { .event = event };
|
||||||
|
|
||||||
|
#ifndef NO_ACTION_TAPPING
|
||||||
// pre-process on tapping
|
// pre-process on tapping
|
||||||
if (process_tapping(&record)) {
|
if (process_tapping(&record)) {
|
||||||
if (!IS_NOEVENT(record.event)) {
|
if (!IS_NOEVENT(record.event)) {
|
||||||
@ -202,6 +208,12 @@ void action_exec(keyevent_t event)
|
|||||||
if (!IS_NOEVENT(event)) {
|
if (!IS_NOEVENT(event)) {
|
||||||
debug("\n");
|
debug("\n");
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
process_action(&record);
|
||||||
|
if (!IS_NOEVENT(record.event)) {
|
||||||
|
debug("processed: "); debug_record(record); debug("\n");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void process_action(keyrecord_t *record)
|
static void process_action(keyrecord_t *record)
|
||||||
@ -244,6 +256,7 @@ static void process_action(keyrecord_t *record)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
#ifndef NO_ACTION_TAPPING
|
||||||
case ACT_LMODS_TAP:
|
case ACT_LMODS_TAP:
|
||||||
case ACT_RMODS_TAP:
|
case ACT_RMODS_TAP:
|
||||||
{
|
{
|
||||||
@ -319,10 +332,11 @@ static void process_action(keyrecord_t *record)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef EXTRAKEY_ENABLE
|
||||||
/* other HID usage */
|
/* other HID usage */
|
||||||
case ACT_USAGE:
|
case ACT_USAGE:
|
||||||
#ifdef EXTRAKEY_ENABLE
|
|
||||||
switch (action.usage.page) {
|
switch (action.usage.page) {
|
||||||
case PAGE_SYSTEM:
|
case PAGE_SYSTEM:
|
||||||
if (event.pressed) {
|
if (event.pressed) {
|
||||||
@ -339,12 +353,12 @@ static void process_action(keyrecord_t *record)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef MOUSEKEY_ENABLE
|
||||||
/* Mouse key */
|
/* Mouse key */
|
||||||
case ACT_MOUSEKEY:
|
case ACT_MOUSEKEY:
|
||||||
#ifdef MOUSEKEY_ENABLE
|
|
||||||
if (event.pressed) {
|
if (event.pressed) {
|
||||||
mousekey_on(action.key.code);
|
mousekey_on(action.key.code);
|
||||||
mousekey_send();
|
mousekey_send();
|
||||||
@ -352,8 +366,8 @@ static void process_action(keyrecord_t *record)
|
|||||||
mousekey_off(action.key.code);
|
mousekey_off(action.key.code);
|
||||||
mousekey_send();
|
mousekey_send();
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
case ACT_KEYMAP:
|
case ACT_KEYMAP:
|
||||||
switch (action.layer.code) {
|
switch (action.layer.code) {
|
||||||
@ -687,6 +701,7 @@ static void process_action(keyrecord_t *record)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef NO_ACTION_TAPPING
|
||||||
/* Tapping
|
/* Tapping
|
||||||
*
|
*
|
||||||
* Rule: Tap key is typed(pressed and released) within TAPPING_TERM.
|
* Rule: Tap key is typed(pressed and released) within TAPPING_TERM.
|
||||||
@ -881,6 +896,7 @@ static void waiting_buffer_scan_tap(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -908,6 +924,7 @@ void register_code(uint8_t code)
|
|||||||
// TODO: should push command_proc out of this block?
|
// TODO: should push command_proc out of this block?
|
||||||
if (command_proc(code)) return;
|
if (command_proc(code)) return;
|
||||||
|
|
||||||
|
#ifndef NO_ACTION_TAPPING
|
||||||
if (oneshot_state.mods && oneshot_state.ready && !oneshot_state.disabled) {
|
if (oneshot_state.mods && oneshot_state.ready && !oneshot_state.disabled) {
|
||||||
uint8_t tmp_mods = host_get_mods();
|
uint8_t tmp_mods = host_get_mods();
|
||||||
host_add_mods(oneshot_state.mods);
|
host_add_mods(oneshot_state.mods);
|
||||||
@ -916,7 +933,9 @@ void register_code(uint8_t code)
|
|||||||
|
|
||||||
host_set_mods(tmp_mods);
|
host_set_mods(tmp_mods);
|
||||||
oneshot_state.ready = false;
|
oneshot_state.ready = false;
|
||||||
} else {
|
} else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
host_add_key(code);
|
host_add_key(code);
|
||||||
host_send_keyboard_report();
|
host_send_keyboard_report();
|
||||||
}
|
}
|
||||||
@ -1064,6 +1083,7 @@ static void debug_action(action_t action)
|
|||||||
debug_hex8(action.kind.param & 0xff);
|
debug_hex8(action.kind.param & 0xff);
|
||||||
debug("]");
|
debug("]");
|
||||||
}
|
}
|
||||||
|
#ifndef NO_ACTION_TAPPING
|
||||||
static void debug_tapping_key(void)
|
static void debug_tapping_key(void)
|
||||||
{
|
{
|
||||||
debug("TAPPING_KEY="); debug_record(tapping_key); debug("\n");
|
debug("TAPPING_KEY="); debug_record(tapping_key); debug("\n");
|
||||||
@ -1076,3 +1096,4 @@ static void debug_waiting_buffer(void)
|
|||||||
}
|
}
|
||||||
debug("}\n");
|
debug("}\n");
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
@ -20,6 +20,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#include "action_macro.h"
|
#include "action_macro.h"
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef NO_ACTION_MACRO
|
||||||
|
|
||||||
#define MACRO_READ() (macro = pgm_read_byte(macro_p++))
|
#define MACRO_READ() (macro = pgm_read_byte(macro_p++))
|
||||||
void action_macro_play(const prog_macro_t *macro_p)
|
void action_macro_play(const prog_macro_t *macro_p)
|
||||||
{
|
{
|
||||||
@ -64,3 +66,4 @@ void action_macro_play(const prog_macro_t *macro_p)
|
|||||||
{ uint8_t ms = interval; while (ms--) _delay_ms(1); }
|
{ uint8_t ms = interval; while (ms--) _delay_ms(1); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
@ -28,7 +28,11 @@ typedef uint8_t macro_t;
|
|||||||
typedef macro_t prog_macro_t PROGMEM;
|
typedef macro_t prog_macro_t PROGMEM;
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef NO_ACTION_MACRO
|
||||||
void action_macro_play(const prog_macro_t *macro);
|
void action_macro_play(const prog_macro_t *macro);
|
||||||
|
#else
|
||||||
|
#define action_macro_play(macro)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -62,5 +62,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
//#define NO_PRINT
|
//#define NO_PRINT
|
||||||
|
|
||||||
#define NO_ACTION_OVERLAY
|
#define NO_ACTION_OVERLAY
|
||||||
|
#define NO_ACTION_TAPPING
|
||||||
|
#define NO_ACTION_MACRO
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user