diff options
Diffstat (limited to 'common/action_macro.h')
| -rw-r--r-- | common/action_macro.h | 107 | 
1 files changed, 107 insertions, 0 deletions
diff --git a/common/action_macro.h b/common/action_macro.h new file mode 100644 index 000000000..3833c7c8a --- /dev/null +++ b/common/action_macro.h @@ -0,0 +1,107 @@ +/* +Copyright 2013 Jun Wako <wakojun@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program.  If not, see <http://www.gnu.org/licenses/>. +*/ +#ifndef ACTION_MACRO_H +#define ACTION_MACRO_H +#include <stdint.h> +#include <avr/pgmspace.h> + + +typedef uint8_t macro_t; +typedef macro_t prog_macro_t PROGMEM; + + +void action_macro_play(const prog_macro_t *macro); + + + +/* TODO: NOT FINISHED  +normal mode command: +    key(down):      0x04-7f/73(F24) +    key(up):        0x84-ff +command:        0x00-03, 0x80-83(0x74-7f, 0xf4-ff) +    mods down   0x00 +    mods up     0x01 +    wait        0x02 +    interval    0x03 +    extkey down 0x80 +    extkey up   0x81 +    ext commad  0x82 +    ext mode    0x83 +    end         0xff + +extension mode command: NOT IMPLEMENTED +    key down            0x00 +    key up              0x01 +    key down + wait +    key up   + wait +    mods push +    mods pop +    wait +    interval +    if +    loop +    push +    pop +    all up +    end +*/ +enum macro_command_id{ +    /* 0x00 - 0x03 */ +    END                 = 0x00, +    MODS_DOWN           = 0x01, +    MODS_UP             = 0x02, +    MODS_SET, +    MODS_PUSH, +    MODS_POP, + +    WAIT                = 0x74, +    INTERVAL, +    /* 0x74 - 0x7f */ +    /* 0x80 - 0x84 */ + +    EXT_DOWN, +    EXT_UP, +    EXT_WAIT, +    EXT_INTERVAL, +    COMPRESSION_MODE, + +    EXTENSION_MODE      = 0xff, +}; + + +/* normal mode */ +#define DOWN(key)       (key) +#define UP(key)         ((key) | 0x80) +#define TYPE(key)       (key), (key | 0x80) +#define MODS_DOWN(mods) MODS_DOWN, (mods) +#define MODS_UP(mods)   MODS_UP, (mods) +#define WAIT(ms)        WAIT, (ms) +#define INTERVAL(ms)    INTERVAL, (ms) + +#define D(key)          DOWN(KC_##key) +#define U(key)          UP(KC_##key) +#define T(key)          TYPE(KC_##key) +#define MD(key)         MODS_DOWN(MOD_BIT(KC_##key)) +#define MU(key)         MODS_UP(MOD_BIT(KC_##key)) +#define W(ms)           WAIT(ms) +#define I(ms)           INTERVAL(ms) + + +/* extension mode */ + + +#endif /* ACTION_MACRO_H */  | 
