/* * Macro definition */ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { switch (id) { case PSWD1: return (record->event.pressed ? MACRO( I(0), T(1), T(2), T(3), T(4), T(5), T(6), T(7), T(8), T(ENT), END ) : MACRO_NONE ); case PSWD2: return (record->event.pressed ? MACRO( I(0), T(1), T(2), T(3), T(4), T(5), T(6), T(7), T(8), T(ENT), END ) : MACRO_NONE ); case PSWD3: return (record->event.pressed ? MACRO( I(0), T(1), T(2), T(3), T(4), T(5), T(6), T(7), T(8), T(ENT), END ) : MACRO_NONE ); //case VOLUP: // return (record->event.pressed ? // MACRO( D(VOLU), U(VOLU), END ) : // MACRO_NONE ); //case ALT_TAB: // return (record->event.pressed ? // MACRO( D(LALT), D(TAB), END ) : // MACRO( U(TAB), END )); } return MACRO_NONE; }
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function switch(id) { case 0: if (record->event.pressed) { register_code(KC_RSFT); backlight_step(); } else { unregister_code(KC_RSFT); } break; case 1: if (record->event.pressed) { return MACRO( I(100), KC_LBRC, KC_RBRC, KC_LEFT, END ); } break; case 2: if (record->event.pressed) { return MACRO( I(100), KC_LCBR, KC_RCBR, KC_LEFT, END ); } break; case 3: if (record->event.pressed) { return MACRO( I(100), KC_LPRN, KC_RPRN, KC_LEFT, END ); } break; case 4: if (record->event.pressed) { return MACRO( I(100), LSFT(KC_COMM), LSFT(KC_DOT), KC_LEFT, END ); } break; } return MACRO_NONE; };
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { dprintf( "record.\n" " event.pressed = %u\n" " tap.count = %u\n" " tap.interrupted = %u\n" , record->event.pressed , record->tap.count , record->tap.interrupted ); dprintf( "id = %u\n", id ); dprintf( "opt = %u\n", opt ); switch(id) { case UM_MHEN: { return MACRO_TAP_HOLD_LAYER( record, MACRO(TYPE(KC_MHEN), END), KL_LOWER ); } break; case UM_HENK: { return MACRO_TAP_HOLD_LAYER( record, MACRO(TYPE(KC_HENK), END), KL_RAISE ); } break; case UM_DEBUG: { if (record->event.pressed) { debug_enable = !debug_enable; if (debug_enable) { dprint("\nDEBUG: enabled.\n"); SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); } } } break; } return MACRO_NONE; };
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { keyevent_t event = record->event; switch (id) { case M_Q0: return event.pressed ? MACRO( D(LSFT), T(SCLN), U(LSFT), T(SLSH), END ) : MACRO_NONE; case M_Q1: return event.pressed ? MACRO( D(LSFT), T(SCLN), T(9), U(LSFT), END ) : MACRO_NONE; case M_Q2: return event.pressed ? MACRO( D(LSFT), T(0), T(SCLN), U(LSFT), END ) : MACRO_NONE; case M_Q3: return event.pressed ? MACRO( D(LSFT), T(9), T(SCLN), U(LSFT), END ) : MACRO_NONE; case M_Q4: return event.pressed ? MACRO( D(LSFT), T(SCLN), T(0), U(LSFT), END ) : MACRO_NONE; } return MACRO_NONE; }
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { if (record->event.pressed) { switch(id) { case 0: return MACRO( D(LSFT), T(9), U(LSFT), D(LSFT), T(0), U(LSFT), T(LEFT), END ); case 1: return MACRO( D(LSFT), T(LBRC), U(LSFT), D(LSFT), T(RBRC), U(LSFT), T(LEFT), END ); case 2: return MACRO( T(LBRC), T(RBRC), T(LEFT), END); case 3: clear_keyboard(); case 4: return MACRO( D(LSFT), T(SCOLON), U(LSFT), D(LSFT), T(9), U(LSFT), D(LSFT), T(0), U(LSFT), D(LSFT), T(LBRACKET), U(LSFT), D(LSFT), T(9), U(LSFT), D(LSFT), T(SCOLON), U(LSFT), D(LSFT), T(0), U(LSFT), D(LSFT), T(BSLASH), U(LSFT), D(LSFT), T(SCOLON), U(LSFT), D(LSFT), T(7), U(LSFT), D(LSFT), T(RBRACKET), U(LSFT), T(SCOLON), D(LSFT), T(SCOLON), U(LSFT), END ); case WINSH: set_unicode_input_mode(UC_WIN); return false; break; case WIN: set_unicode_input_mode(UC_WINC); return false; break; case OSX: set_unicode_input_mode(UC_OSX); return false; break; } } return MACRO_NONE; };
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function switch(id) { case 0 ... END_UC: if (record->event.pressed) { send_unicode(unicode_chars[id]); } break; case M_CSA_SFT: // BÉPO over CSA: toggle shift layer layer_invert(LR_CSA_SFT); if (record->event.pressed) { hold_shift(); } else { release_shift(); } break; case M_CSA_SFT_AGR: // BÉPO over CSA: from shift layer, momentary altgr+shift layer layer_invert(LR_CSA_AGR); layer_invert(LR_CSA_AGR_SFT); if (record->event.pressed) { // shift not needed for LR_CSA_AGR_SFT release_shift(); } else { // back to shift layer hold_shift(); } break; case M_CSA_AGR_SFT: // BÉPO over CSA: from altgr layer, momentary altgr+shift layer layer_invert(LR_CSA_SFT); layer_invert(LR_CSA_AGR_SFT); break; case M_1 ... M_0: case M_DEGR: case M_SCLN: case M_GRV: case M_NBSP: // macros of the shift layer that require to release shift if (record->event.pressed) { release_shift(); switch (id) { case M_1 ... M_0: register_code(KC_1 + (id - M_1)); break; case M_DEGR: return MACRO(DOWN(CSA_ALTGR), D(SCLN), END); case M_SCLN: return MACRO(D(SCLN), END); case M_GRV: return MACRO(I(75), DOWN(CSA_ALTGR), TYPE(CSA_DCRC), UP(CSA_ALTGR), T(SPACE), END); case M_NBSP: // use weak mod such that pressing another key will not be affected add_weak_mods(MOD_BIT(CSA_ALTGR)); return MACRO(D(SPACE), END); } } else {
/* * Macro definition */ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { switch (id) { case ALT_TAB: return (record->event.pressed ? MACRO( D(LALT), D(TAB), END ) : MACRO( U(TAB), END )); } return MACRO_NONE; }
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { keyevent_t event = record->event; switch (id) { case TILDE_NO: return (event.pressed ? MACRO( D(RALT), T(RBRC), U(RALT), T(SPC), END ) : MACRO_NONE); case LESS_NO: return (event.pressed ? MACRO( T(NUBS), END ) : MACRO_NONE); case GRTR_NO: return (event.pressed ? MACRO( D(LSFT), T(NUBS), U(LSFT), END ) : MACRO_NONE); case CIRC_NO: return (event.pressed ? MACRO( D(LSFT), T(RBRC), U(LSFT), T(SPC), END ) : MACRO_NONE); case ACUT_NO: return (event.pressed ? MACRO( D(RALT), T(EQL), U(RALT), T(SPC), END ) : MACRO_NONE); case GRV_NO: return (event.pressed ? MACRO( D(LSFT), T(EQL), T(SPC), U(LSFT), END ) : MACRO_NONE); case LESS_NO_MAC: return (event.pressed ? MACRO( T(GRV), END ) : MACRO_NONE); case GRTR_NO_MAC: return (event.pressed ? MACRO( D(LSFT), T(GRV), U(LSFT), END ) : MACRO_NONE); case ACUT_NO_MAC: return (event.pressed ? MACRO( T(EQL), T(SPC), END ) : MACRO_NONE); } return MACRO_NONE; };
// The Macros const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { if (record->event.pressed) { switch(id) { case 0: return MACRO(D(LGUI), D(LSFT), T(3), U(LSFT), U(LGUI), END); // Mac print screen case 1: return MACRO(D(LGUI), D(LSFT), T(4), U(LSFT), U(LGUI), END); // Mac print area case 2: return MACRO(D(LCTL), D(LSFT), D(LGUI), T(3), D(LCTL), D(LSFT), D(LGUI), END); // Mac print screen to clipboard case 3: return MACRO(D(LCTL), D(LSFT), D(LGUI), T(4), D(LCTL), D(LSFT), D(LGUI), END); // Mac print area to clipboard case 4: return MACRO(D(LCTL), T(UP), U(LCTL), END); // Mac mission control case 5: return MACRO(D(LCTL), T(DOWN), U(LCTL), END); // Mac app windows case 6: return MACRO(D(LGUI), T(SPC), U(LGUI), END); // Mac spotlight search case 7: return MACRO(D(LCTL), T(LEFT), U(LCTL), END); // Mac mission left case 8: return MACRO(D(LCTL), T(RGHT), U(LCTL), END); // Mac mission right case 9: rgblight_setrgb(0xff, 0xff, 0xff); // White rgb shortcut break; } } return MACRO_NONE; };
/* * Macro definition */ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { switch (id) { case ALT_TAB: return (record->event.pressed ? MACRO( D(LSFT) ,T(H) , U(LSFT), T(E), T(L), T(L), T(O), END ) :MACRO( END )); case ALT_TAB2: return (record->event.pressed ? MACRO(D(LSFT),T(A),T(S),T(D),U(LSFT),T(F),T(G),T(H), END ) :MACRO( END )); } return MACRO_NONE; }
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function switch(id) { case 0: return (record->event.pressed ? MACRO( D(LSFT) ,T(H) , U(LSFT), T(E), T(L), T(L), T(O), END ) :MACRO( END )); break; case 1: return (record->event.pressed ? MACRO(D(LSFT),T(A),T(S),T(D),U(LSFT),T(F),T(G),T(H), END ) :MACRO( END )); break; } return MACRO_NONE; };
/* * Macro definition */ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { keyevent_t event = record->event; tap_t tap = record->tap; switch (id) { case LSHIFT_PAREN: if (tap.count > 0 && !tap.interrupted) { return (event.pressed ? MACRO( D(LSHIFT), D(9), U(9), U(LSHIFT), END ) : MACRO_NONE); } else { return (event.pressed ? MACRO( D(LSHIFT), END ) : MACRO( U(LSHIFT), END ) ); } case RSHIFT_PAREN: if (tap.count > 0 && !tap.interrupted) { return (event.pressed ? MACRO( D(RSHIFT), D(0), U(0), U(RSHIFT), END ) : MACRO_NONE); } else { return (event.pressed ? MACRO( D(RSHIFT), END ) : MACRO( U(RSHIFT), END ) ); } case HELLO: return (event.pressed ? MACRO( I(0), T(H), T(E), T(L), T(L), W(255), T(O), END ) : MACRO_NONE ); case VOLUP: return (event.pressed ? MACRO( D(VOLU), U(VOLU), END ) : MACRO_NONE ); } return MACRO_NONE; }
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function switch(id) { case MACRO_TMUX_ESC: if (record->event.pressed) { return MACRO(D(LCTRL), T(A), U(LCTRL), D(ESC), END); } return MACRO(U(ESC), END); case MACRO_TMUX_PASTE: if (record->event.pressed) { return MACRO(D(LCTRL), T(A), U(LCTRL), D(P), END); } return MACRO(U(P), END); case MACRO_OSX_COPY: if (record->event.pressed) { return MACRO(D(LGUI), D(C), END); } return MACRO(U(C), U(LGUI), END); case MACRO_OSX_PASTE: if (record->event.pressed) { return MACRO(D(LGUI), D(V), END); } return MACRO(U(V), U(LGUI), END); } return MACRO_NONE; };
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function switch(id) { case 0: return (record->event.pressed) ? MACRO( T(MPRV), T(MRWD) ) : MACRO_NONE; case 1: return (record->event.pressed) ? MACRO( T(MNXT), T(MFFD) ) : MACRO_NONE; break; } return MACRO_NONE; };
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function switch(id) { case 0: if (record->event.pressed) { SEND_STRING("The"); return false; } break; case 1: if (record->event.pressed) { SEND_STRING("Custom"); return false; } break; case 2: if (record->event.pressed) { SEND_STRING("Keyboard"); return false; } break; case 3: if (record->event.pressed) { return MACRO( D(LCTL), T(C), U(LCTL), T(RGHT), D(LCTL), T(V), U(LCTL), END ); } break; } return MACRO_NONE; };
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function switch(id) { case 0: return (record->event.pressed ? MACRO( D(RALT), T(SPC), U(RALT), END ) :MACRO( END )); break; case 1: return (record->event.pressed ? MACRO( D(LALT), T(F2), U(LALT), END ) :MACRO( END )); break; } return MACRO_NONE; };
int main(int argc, char* argv[]) { MACRO() foo(0); return 0; }
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { static uint16_t start; // MACRODOWN only works in this function switch(id) { case 0: if (record->event.pressed) { register_code(KC_RSFT); } else { unregister_code(KC_RSFT); } break; case 1: if (record->event.pressed) { start = timer_read(); return MACRO(D(LCTRL), END); } else { if (timer_elapsed(start) > 150) { return MACRO(U(LCTRL), END); } else { return MACRO(U(LCTRL), D(LGUI), T(V), U(LGUI), END); } } break; case 2: if (record->event.pressed) { start = timer_read(); return MACRO(D(LCTRL),END); } else { if (timer_elapsed(start) > 150){ return MACRO(U(LCTRL),END); } else { return MACRO(U(LCTRL),D(LGUI),T(C),U(LGUI),END); } } break; case 3: if (record->event.pressed) { start = timer_read(); return MACRO(D(LCTRL),D(LSFT),D(LALT),END); } else { if (timer_elapsed(start) > 150){ return MACRO(U(LCTRL),U(LSFT),U(LALT),END); } else { return MACRO(U(LCTRL),U(LALT),T(EQL),U(LSFT),END); //cannot use DE_ACUT here, as macro needs KC_ prefix } } break; } return MACRO_NONE; };
/* * Macro definition */ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { switch (id) { case HELLO: return (record->event.pressed ? MACRO( I(0), T(H), T(E), T(L), T(L), W(255), T(O), END ) : MACRO_NONE ); case VOLUP: return (record->event.pressed ? MACRO( D(VOLU), U(VOLU), END ) : MACRO_NONE ); case ALT_TAB: return (record->event.pressed ? MACRO( D(LALT), D(TAB), END ) : MACRO( U(TAB), END )); } return MACRO_NONE; }
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { keyevent_t event = record->event; //uint8_t tap_count = record->tap_count; switch (id) { case AIDS: return (event.pressed ? MACRO(T(A), T(I), T(D), T(S), END ) : MACRO( END ) ); case PRISM: return (event.pressed ? MACRO(T(SLSH), T(P), T(R), T(I), T(S), T(M), T(SPC), END ) : MACRO( END ) ); } return MACRO_NONE; };
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { switch (id) { case KEYPAD_00: return (record->event.pressed ? MACRO( T(P0), T(P0), END ) : MACRO_NONE ); } return MACRO_NONE; }
void foobar() { int d = 7; int e,f,g; if (true) { MACRO(d, 42, e); } }
// CHECK: File 0, [[@LINE+1]]:12 -> [[@LINE+10]]:2 = #0 int main() { struct S arr[32] = { 0 }; int n = 0; // CHECK-NEXT: Expansion,File 0, [[@LINE+2]]:7 -> [[@LINE+2]]:12 = #0 // CHECK-NEXT: File 0, [[@LINE+1]]:34 -> [[@LINE+3]]:4 = #1 if (MACRO(arr[n].j, arr[n].i)) { n = 1; } return n; }
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { switch(id) { case 0: if (record->event.pressed) { register_code(KC_RSFT); } else { unregister_code(KC_RSFT); } break; case LWIN: if (record->event.pressed) { register_code(KC_RSFT); unregister_code(KC_RSFT); register_code(KC_LGUI); } else { unregister_code(KC_LGUI); } break; case PC1: if (!record->event.pressed) { return MACRO(T(SLCK), W(50), T(SLCK), W(50), T(1), W(50), T(ENT), END); } break; case PC2: if (!record->event.pressed) { return MACRO(T(SLCK), W(50), T(SLCK), W(50), T(2), W(50), T(ENT), END); } break; case PC3: if (!record->event.pressed) { return MACRO(T(SLCK), W(50), T(SLCK), W(50), T(3), W(50), T(ENT), END); } break; case PC4: if (!record->event.pressed) { return MACRO(T(SLCK), W(50), T(SLCK), W(50), T(4), W(50), T(ENT), END); } break; } return MACRO_NONE; }
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { switch(id) { case DLEFT: if (record->event.pressed) { // Windows move desktop left return MACRO(D(LCTL), D(LGUI), T(LEFT), U(LGUI), U(LCTL), END); } break; case DRIGHT: if (record->event.pressed) { // Windows move desktop right return MACRO(D(LCTL), D(LGUI), T(RIGHT), U(LGUI), U(LCTL), END); } break; case PSCREEN_APP: if (record->event.pressed) { return MACRO(D(LALT), T(PSCR), U(LALT), END); } break; } return MACRO_NONE; }
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) // this is the function signature -- just copy/paste it into your keymap file as it is. { switch(id) { case 0: // this would trigger when you hit a key mapped as M(0) if (record->event.pressed) { return MACRO( D(LSFT), T(LEFT), U(LSFT), D(LCTL), T(X), U(LCTL), T(RIGHT), D(LCTL), T(V), U(LCTL), T(LEFT), END ); // this swaps the characters on either side of the cursor when the macro executes } break; } return MACRO_NONE; };
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { keyevent_t event = record->event; (void)event; switch (id) { case 0: // Save for Web Macro. return MACRO(D(LSFT), D(LALT), D(LCTL), T(S), U(LCTL), U(LALT), U(LSFT), END); } return MACRO_NONE; }
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function switch(id) { case M_PASS: if (record->event.pressed) { return MACRO( I(1), D(LSFT), T(Z), T(X), T(C), T(V), U(LSFT), T(9), T(9), T(Z), T(X), END); } else { return MACRO_NONE ; } break; case M_PASS2: if (record->event.pressed) { return MACRO( I(1), D(LSFT), T(C), T(V), T(B), T(N), U(LSFT), T(1), T(1), T(Q), T(W), END); } else { return MACRO_NONE ; } break; case M_SRV: if (record->event.pressed) { return MACRO( I(1), T(DOT), T(S), T(R), T(V), T(DOT), T(B), T(E), T(DOT), T(E), T(U), T(R), T(O), T(P), T(E), T(DOT), T(I), T(N), T(T), T(R), T(A), T(N), T(E), T(T), END); } else { return MACRO_NONE ; } break; case M_BREAK: if (record->event.pressed) { return MACRO( I(1), T(TILD), T(DOT), END); } else { return MACRO_NONE ; } break; case M_VI: if (record->event.pressed) { return MACRO( I(1), T(S), T(E), T(T), T(SPC), T(MINS), T(O), T(SPC), T(V), T(I), T(ENT), END); } else { return MACRO_NONE ; } break; case M_TERM: if (record->event.pressed) { return MACRO( I(1), T(E), T(X), T(P), T(O), T(R), T(T), T(SPC), D(LSFT), T(T), T(E), T(R), T(M), U(LSFT), T(EQL), T(X), T(T), T(E), T(R), T(M), T(SPC), T(SCLN), END); } else { return MACRO_NONE ; } break; case M_ITM: if (record->event.pressed) { return MACRO( I(1), T(TILD), T(I), T(T), T(M), T(S), T(Y), D(S), T(0), T(2), T(SLSH), T(B), T(I), T(N), T(SLSH), END); } else { return MACRO_NONE ; } break; } return MACRO_NONE; };
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { switch(id) { case _ULCK: if (record->event.pressed) { /* time.heals.nothing */ return MACRO( I(220), T(T), T(I), T(M), T(E), T(DOT), T(H), T(E), T(A), T(L), T(S), T(DOT), T(N), T(O), T(T), T(H), T(I), T(N), T(G), END); } break; } return MACRO_NONE; };
int main() { int X[1]; MACRO(std::cout << X << X[0]); std::cout << X << X; std::cout2 << X << X; std::cout << X << X[0]; }