qmk_firmare/users/sadekbaroudi/process_records.c

226 lines
7.4 KiB
C
Executable File

#include "sadekbaroudi.h"
#include "casemodes.h"
// for alternating between 45 degree angle routing and free angle routing with one key
bool kicad_free_angle_routing = false;
__attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; }
__attribute__((weak)) bool process_record_secrets(uint16_t keycode, keyrecord_t *record) { return true; }
// Defines actions tor my global custom keycodes. Defined in sadekbaroudi.h file
// Then runs the _keymap's record handler if not processed here
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
#ifdef CASEMODES_ENABLE
// Process case modes
if (!process_case_modes(keycode, record)) {
return false;
}
// If console is enabled, it will print the matrix position and status of each key pressed
#endif
if (!(process_record_keymap(keycode, record) && process_record_secrets(keycode, record))) {
return false;
}
switch (keycode) {
case C_CAPSWORD:
// NOTE: if you change this behavior, may want to update in keymap.c for COMBO behavior
#ifdef CASEMODES_ENABLE
if (record->event.pressed) {
enable_caps_word();
}
#endif
break;
case C_HYPHENCASE:
#ifdef CASEMODES_ENABLE
if (record->event.pressed) {
enable_xcase_with(KC_MINS);
}
#endif
break;
case C_ANYCASE:
#ifdef CASEMODES_ENABLE
if (record->event.pressed) {
enable_xcase();
}
#endif
break;
case C_UNDERSCORECASE:
#ifdef CASEMODES_ENABLE
if (record->event.pressed) {
enable_xcase_with(KC_UNDS);
}
#endif
break;
case U_KVM_SWITCH:
if (record->event.pressed) {
register_code(KC_TAB);
SEND_STRING(SS_DELAY(10) SS_TAP(X_RIGHT) SS_DELAY(10));
unregister_code(KC_TAB);
}
break;
// COMMENT TO DISABLE MACROS
case M_KI_R_SWAP:
if (record->event.pressed) {
register_code(KC_LSFT);
register_code(KC_LCTL);
SEND_STRING(SS_TAP(X_COMM) SS_DELAY(300));
unregister_code(KC_LSFT);
unregister_code(KC_LCTL);
// If we're in free angle routing, we tap down to go back to 45 degree angle routing
if (kicad_free_angle_routing) {
SEND_STRING(SS_TAP(X_DOWN) SS_TAP(X_ENTER));
} else {
SEND_STRING(SS_TAP(X_UP) SS_TAP(X_ENTER));
}
kicad_free_angle_routing = !kicad_free_angle_routing;
}
break;
case M_KI_R_ANGLE:
if (record->event.pressed) {
register_code(KC_LSFT);
register_code(KC_LCTL);
SEND_STRING(SS_TAP(X_COMM) SS_DELAY(300));
unregister_code(KC_LSFT);
unregister_code(KC_LCTL);
SEND_STRING(SS_TAP(X_UP) SS_TAP(X_ENTER));
}
break;
case M_KI_R_FREE:
if (record->event.pressed) {
register_code(KC_LSFT);
register_code(KC_LCTL);
SEND_STRING(SS_TAP(X_COMM) SS_DELAY(300));
unregister_code(KC_LSFT);
unregister_code(KC_LCTL);
SEND_STRING(SS_TAP(X_DOWN) SS_TAP(X_ENTER));
}
break;
case L_GREP:
if (record->event.pressed) {
SEND_STRING("grep -rn \"");
} else {
// when keycode is released
}
break;
case L_FIND:
if (record->event.pressed) {
SEND_STRING("find . -name \"");
} else {
// when keycode is released
}
break;
case L_GITCOMMIT:
if (record->event.pressed) {
SEND_STRING("git commit -a -m \"\""SS_TAP(X_LEFT));
} else {
// when keycode is released
}
break;
case N_DEL_LINE:
if (record->event.pressed) {
SEND_STRING(SS_TAP(X_END));
register_code(KC_LSFT);
SEND_STRING(SS_TAP(X_HOME));
unregister_code(KC_LSFT);
} else {
// when keycode is released
}
break;
case N_SEL_LINE:
if (record->event.pressed) {
SEND_STRING(SS_TAP(X_END));
register_code(KC_LSFT);
SEND_STRING(SS_TAP(X_HOME));
unregister_code(KC_LSFT);
}
break;
case P_ANGBRKT:
if (record->event.pressed) {
SEND_STRING("<>"SS_TAP(X_LEFT));
} else {
// when keycode is released
}
break;
case P_PAREN:
if (record->event.pressed) {
SEND_STRING("()"SS_TAP(X_LEFT));
} else {
// when keycode is released
}
break;
case P_CURLY:
if (record->event.pressed) {
SEND_STRING("{}"SS_TAP(X_LEFT));
} else {
// when keycode is released
}
break;
case P_BRKT:
if (record->event.pressed) {
SEND_STRING("[]"SS_TAP(X_LEFT));
} else {
// when keycode is released
}
break;
case P_ARROW:
if (record->event.pressed) {
SEND_STRING("->");
} else {
// when keycode is released
}
break;
case E_ROBOT:
if (record->event.pressed) {
SEND_STRING("d[o_0]b");
} else {
// when keycode is released
}
break;
case E_CAT:
if (record->event.pressed) {
SEND_STRING("=^..^=");
} else {
// when keycode is released
}
break;
case G_GOD_ON:
if (record->event.pressed) {
register_code(KC_LSFT);
SEND_STRING(SS_TAP(X_ENTER));
unregister_code(KC_LSFT);
SEND_STRING("GOD MODE ENGAGED"SS_TAP(X_ENTER));
} else {
// when keycode is released
}
break;
case G_GOD_OFF:
if (record->event.pressed) {
register_code(KC_LSFT);
SEND_STRING(SS_TAP(X_ENTER));
unregister_code(KC_LSFT);
SEND_STRING("GOD MODE DISENGAGED"SS_TAP(X_ENTER));
} else {
// when keycode is released
}
break;
case G_PULLING:
if (record->event.pressed) {
SEND_STRING(SS_TAP(X_ENTER)"I am pulling, play safe"SS_TAP(X_ENTER));
} else {
// when keycode is released
}
break;
case G_PUSH:
if (record->event.pressed) {
SEND_STRING(SS_TAP(X_ENTER)"Push the lane out"SS_TAP(X_ENTER));
} else {
// when keycode is released
}
break;
// COMMENT TO DISABLE MACROS
}
return true;
}