1
0

Add support for storing, restoring and clearing modifiers in macros

This commit is contained in:
Adrian L Lange 2015-10-23 20:38:50 +02:00 committed by tmk
parent 6baca549b9
commit 5a196b6444
2 changed files with 25 additions and 0 deletions

View File

@ -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);

View File

@ -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)