Add support for storing, restoring and clearing modifiers in macros
This commit is contained in:
parent
6baca549b9
commit
5a196b6444
@ -34,6 +34,8 @@ void action_macro_play(const macro_t *macro_p)
|
|||||||
macro_t macro = END;
|
macro_t macro = END;
|
||||||
uint8_t interval = 0;
|
uint8_t interval = 0;
|
||||||
|
|
||||||
|
uint8_t mod_storage;
|
||||||
|
|
||||||
if (!macro_p) return;
|
if (!macro_p) return;
|
||||||
while (true) {
|
while (true) {
|
||||||
switch (MACRO_READ()) {
|
switch (MACRO_READ()) {
|
||||||
@ -66,6 +68,17 @@ void action_macro_play(const macro_t *macro_p)
|
|||||||
interval = MACRO_READ();
|
interval = MACRO_READ();
|
||||||
dprintf("INTERVAL(%u)\n", interval);
|
dprintf("INTERVAL(%u)\n", interval);
|
||||||
break;
|
break;
|
||||||
|
case MOD_STORE:
|
||||||
|
mod_storage = get_mods();
|
||||||
|
break;
|
||||||
|
case MOD_RESTORE:
|
||||||
|
set_mods(mod_storage);
|
||||||
|
send_keyboard_report();
|
||||||
|
break;
|
||||||
|
case MOD_CLEAR:
|
||||||
|
clear_mods();
|
||||||
|
send_keyboard_report();
|
||||||
|
break;
|
||||||
case 0x04 ... 0x73:
|
case 0x04 ... 0x73:
|
||||||
dprintf("DOWN(%02X)\n", macro);
|
dprintf("DOWN(%02X)\n", macro);
|
||||||
register_code(macro);
|
register_code(macro);
|
||||||
|
@ -64,6 +64,9 @@ enum macro_command_id{
|
|||||||
/* 0x74 - 0x83 */
|
/* 0x74 - 0x83 */
|
||||||
WAIT = 0x74,
|
WAIT = 0x74,
|
||||||
INTERVAL,
|
INTERVAL,
|
||||||
|
MOD_STORE,
|
||||||
|
MOD_RESTORE,
|
||||||
|
MOD_CLEAR,
|
||||||
|
|
||||||
/* 0x84 - 0xf3 (reserved for keycode up) */
|
/* 0x84 - 0xf3 (reserved for keycode up) */
|
||||||
|
|
||||||
@ -82,6 +85,9 @@ enum macro_command_id{
|
|||||||
#define TYPE(key) DOWN(key), UP(key)
|
#define TYPE(key) DOWN(key), UP(key)
|
||||||
#define WAIT(ms) WAIT, (ms)
|
#define WAIT(ms) WAIT, (ms)
|
||||||
#define INTERVAL(ms) INTERVAL, (ms)
|
#define INTERVAL(ms) INTERVAL, (ms)
|
||||||
|
#define STORE() MOD_STORE
|
||||||
|
#define RESTORE() MOD_RESTORE
|
||||||
|
#define CLEAR() MOD_CLEAR
|
||||||
|
|
||||||
/* key down */
|
/* key down */
|
||||||
#define D(key) DOWN(KC_##key)
|
#define D(key) DOWN(KC_##key)
|
||||||
@ -93,6 +99,12 @@ enum macro_command_id{
|
|||||||
#define W(ms) WAIT(ms)
|
#define W(ms) WAIT(ms)
|
||||||
/* interval */
|
/* interval */
|
||||||
#define I(ms) INTERVAL(ms)
|
#define I(ms) INTERVAL(ms)
|
||||||
|
/* store modifier(s) */
|
||||||
|
#define SM() STORE()
|
||||||
|
/* restore modifier(s) */
|
||||||
|
#define RM() RESTORE()
|
||||||
|
/* clear modifier(s) */
|
||||||
|
#define CM() CLEAR()
|
||||||
|
|
||||||
/* for backward comaptibility */
|
/* for backward comaptibility */
|
||||||
#define MD(key) DOWN(KC_##key)
|
#define MD(key) DOWN(KC_##key)
|
||||||
|
Reference in New Issue
Block a user