226 lines
7.4 KiB
C
Executable File
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;
|
|
}
|