Art userspace (#9068)
* added git codes * started git layer * finished structure for git layer. MOD: replaced mouse with mod keys on right hand * layout changing layer * mod enter. default qwerty layer. removed mods on number layer * workman layout. git log, show. blank enter and bsspace * config layer. toggleable ctrl/alt for OS * removed keymap comments * strings and combos layers. sarcasm and ctrl_ctv. RGB configs * reintroduced enter and bspace. delete backspace as a function. git push -u and checkout -b * string macros * OS specific home/end * OS mac & win keys. N delete global backspace * refactored backspace functions * ctrl lctv macro * base layer toggle fix * whitespace * BS + L for FF and chrome * replaced 1 keycode with userspace * added userspace config * remove comments * add another keycode with a variable * moved all keymaps and codes to common file * ctrl z mod * removed ctrl z * sipmlified OS functions * moved is_win to keyboard level * added mac alt tab * added ctrl tab in mac + clean up variables in art.h * tild string macro. added mac left/right + home/end * mac ctrl backspace * enum layers for default layout * added ergodone keymap * ergodone compiles * clean up * clean up * removed obsolete OS_HOME/END * removed var * added ctrl nav to split75 * ergodone clean up + caps lock fix 75 * fix mac ctrl alt on right handside. added mac alt tab left right * fix ergodone config override * fixed alt left right not working on mac * added OS ctr_alt * mac ctrl del. fix tild * simplified tild macro * git stash apply * send_string_remembering_lenght * shifted strings print * restored KC_BSPACE functionality * moved KC_BSPC * numpad layer on Fn * media lights * ergodone final clean up * ergodone GIT AND MEDIA layers * ergodone GIT LAYER switch * default behaviour for all modified keys on BASE layer * refactored logic for default keycodes * ergodone final layers * ctrl_cav for translation and ctrl_l fix * toggleable layer with numpad * comments * numpad layer * Update users/art/config.h Co-authored-by: Joel Challis <git@zvecr.com> * enable dynamic macros for split75 * git branch and develop/master * removed esc from Nav * ergodone: ctrl alt for shift layer * macros and right alt for ergodone * fix ergodone N_backspace not working on git layers * mac language switch with alt+shift * Update users/art/art.c Co-authored-by: Ryan <fauxpark@gmail.com> * Update users/art/art.c Co-authored-by: Ryan <fauxpark@gmail.com> * Update users/art/art.c Co-authored-by: Ryan <fauxpark@gmail.com> * Update keyboards/ergodone/keymaps/art/keymap.c Co-authored-by: Ryan <fauxpark@gmail.com> * Update users/art/art.h Co-authored-by: Ryan <fauxpark@gmail.com> * flashing leds to indicate current os * using rshift on shifted layers Co-authored-by: Joel Challis <git@zvecr.com> Co-authored-by: Ryan <fauxpark@gmail.com>
This commit is contained in:
		
							parent
							
								
									494b34b63f
								
							
						
					
					
						commit
						209942366b
					
				
					 8 changed files with 1195 additions and 130 deletions
				
			
		
							
								
								
									
										464
									
								
								users/art/art.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										464
									
								
								users/art/art.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,464 @@
 | 
			
		|||
#include "art.h"
 | 
			
		||||
#include "string.h"
 | 
			
		||||
 | 
			
		||||
__attribute__ ((weak))
 | 
			
		||||
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
 | 
			
		||||
  return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
__attribute__ ((weak))
 | 
			
		||||
void led_show_current_os(void) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static bool mac_ctrl_on = false; //for switching tabs
 | 
			
		||||
static bool mac_gui_on = false; //for switching languages
 | 
			
		||||
static bool mac_alt_tab_on = false; //for switching windows
 | 
			
		||||
 | 
			
		||||
static const char *key_up[2] = {SS_UP(X_LALT), SS_UP(X_LCTL)};
 | 
			
		||||
static const char *key_down[2] = {SS_DOWN(X_LALT), SS_DOWN(X_LCTL)};
 | 
			
		||||
 | 
			
		||||
int char_to_del = 1;
 | 
			
		||||
static bool sarcasm_on = false;
 | 
			
		||||
static bool sarcasm_key = false;
 | 
			
		||||
 | 
			
		||||
void backspace_n_times(int times) {
 | 
			
		||||
  for (int i=0; i<times; i++) {
 | 
			
		||||
    SEND_STRING(SS_TAP(X_BSPC));  
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void send_string_remembering_length(char *string) {
 | 
			
		||||
  send_string(string);
 | 
			
		||||
  char_to_del = strlen(string);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void send_shifted_strings(char *string1, char *string2) {
 | 
			
		||||
  if ( get_mods() & MOD_MASK_SHIFT ) {
 | 
			
		||||
    clear_mods();
 | 
			
		||||
    send_string_remembering_length(string2);
 | 
			
		||||
  } else {
 | 
			
		||||
    send_string_remembering_length(string1);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void send_shifted_strings_add(char *string1, char *string2) {
 | 
			
		||||
  bool shifted = get_mods() & MOD_MASK_SHIFT;
 | 
			
		||||
  clear_mods();
 | 
			
		||||
 | 
			
		||||
  send_string_remembering_length(string1);
 | 
			
		||||
 | 
			
		||||
  if (shifted) {
 | 
			
		||||
    send_string(string2);
 | 
			
		||||
    char_to_del = strlen(string1) + strlen(string2);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool is_mac_with_base_layer_off(void) {
 | 
			
		||||
  return !is_win && !layer_state_is(BASE);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		||||
  if (sarcasm_on) {
 | 
			
		||||
    sarcasm_key = ! sarcasm_key;  
 | 
			
		||||
    if (sarcasm_key) {
 | 
			
		||||
      SEND_STRING(SS_TAP(X_CAPS));
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  //Checking all other non-backspace keys to clear the backspace buffer. This is to prevent the bug of deleting N chars sometime after using a macro
 | 
			
		||||
  if (record->event.pressed && (keycode != KC_BSPACE && keycode != XXXXXXX)) {
 | 
			
		||||
    char_to_del = 1;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  switch (keycode) {
 | 
			
		||||
    case KC_TAB:
 | 
			
		||||
      if (record->event.pressed && is_mac_with_base_layer_off()) {
 | 
			
		||||
        uint8_t mods = get_mods();
 | 
			
		||||
        uint8_t mod_state = mods & MOD_MASK_ALT;
 | 
			
		||||
        if (get_mods() & mod_state) {
 | 
			
		||||
          del_mods(mod_state);
 | 
			
		||||
          add_mods(MOD_LCTL);
 | 
			
		||||
          mac_alt_tab_on = true;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        mod_state = mods & MOD_MASK_CTRL;
 | 
			
		||||
        if (get_mods() & mod_state && !mac_alt_tab_on) {
 | 
			
		||||
          del_mods(mod_state);
 | 
			
		||||
          add_mods(MOD_LGUI);
 | 
			
		||||
          mac_ctrl_on = true;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      break;
 | 
			
		||||
    case KC_LSFT:
 | 
			
		||||
      if (record->event.pressed && is_mac_with_base_layer_off()) {
 | 
			
		||||
        uint8_t mods = get_mods();
 | 
			
		||||
        uint8_t mod_state = mods & MOD_MASK_AG;
 | 
			
		||||
        if (get_mods() & mod_state) {
 | 
			
		||||
          del_mods(mod_state);
 | 
			
		||||
          add_mods(MOD_LGUI);
 | 
			
		||||
          mac_gui_on = true;
 | 
			
		||||
          SEND_STRING(SS_TAP(X_SPACE));
 | 
			
		||||
          return false;
 | 
			
		||||
        } else {
 | 
			
		||||
          return true;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      break;
 | 
			
		||||
    case KC_LEFT:
 | 
			
		||||
    case KC_RIGHT:
 | 
			
		||||
      if (record->event.pressed && is_mac_with_base_layer_off()) {
 | 
			
		||||
        /* && !mac_ctrl_on/!mac_alt_tab_on are required since setting the state while holding the key changes
 | 
			
		||||
        the modifier from OS's perspective. As a result, just the pressed key cannot be the single source
 | 
			
		||||
        of truth to determine which state we're in, and a separate bool is required */
 | 
			
		||||
        uint8_t mods = get_mods();
 | 
			
		||||
        uint8_t mod_state = mods & MOD_MASK_ALT;
 | 
			
		||||
        //Allows Ctrl <-/-> on Mac if Ctrl Tab is already pressed
 | 
			
		||||
        if (get_mods() & mod_state && mac_alt_tab_on && !mac_ctrl_on) {
 | 
			
		||||
          del_mods(mod_state);
 | 
			
		||||
          add_mods(MOD_LCTL);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        mod_state = mods & MOD_MASK_CTRL;
 | 
			
		||||
        if (get_mods() & mod_state && !mac_alt_tab_on) {
 | 
			
		||||
          del_mods(mod_state);
 | 
			
		||||
          add_mods(MOD_LALT);
 | 
			
		||||
          mac_ctrl_on = true;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      break;
 | 
			
		||||
    case KC_DEL:
 | 
			
		||||
      if (record->event.pressed && is_mac_with_base_layer_off()) {
 | 
			
		||||
        uint8_t mod_state = get_mods() & MOD_MASK_CTRL;
 | 
			
		||||
        if (get_mods() & mod_state) {
 | 
			
		||||
          del_mods(mod_state);
 | 
			
		||||
          add_mods(MOD_LALT);
 | 
			
		||||
          mac_ctrl_on = true;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      break;
 | 
			
		||||
    case KC_LALT:
 | 
			
		||||
      if (!record->event.pressed && is_mac_with_base_layer_off()) {
 | 
			
		||||
        if (mac_alt_tab_on) {
 | 
			
		||||
          unregister_mods(MOD_LCTL);
 | 
			
		||||
          mac_alt_tab_on = false;
 | 
			
		||||
          return false;
 | 
			
		||||
        } else if (mac_gui_on) {
 | 
			
		||||
          SEND_STRING(SS_UP(X_LGUI));
 | 
			
		||||
          mac_gui_on = false;
 | 
			
		||||
          return false;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      break;
 | 
			
		||||
    case KC_RALT:
 | 
			
		||||
      if (!record->event.pressed && mac_alt_tab_on && is_mac_with_base_layer_off()) {
 | 
			
		||||
        unregister_mods(MOD_LCTL);
 | 
			
		||||
        mac_alt_tab_on = false;
 | 
			
		||||
        return false;
 | 
			
		||||
      }
 | 
			
		||||
      break;
 | 
			
		||||
    case KC_LCTL:
 | 
			
		||||
    case KC_RCTL:
 | 
			
		||||
      if (!record->event.pressed && mac_ctrl_on && is_mac_with_base_layer_off()) {
 | 
			
		||||
        SEND_STRING(SS_UP(X_LGUI) SS_UP(X_LALT));
 | 
			
		||||
        mac_ctrl_on = false;
 | 
			
		||||
        return false;
 | 
			
		||||
      }
 | 
			
		||||
      break;
 | 
			
		||||
 | 
			
		||||
    case KC_HOME:
 | 
			
		||||
      if (record->event.pressed && is_mac_with_base_layer_off()) {
 | 
			
		||||
        SEND_STRING(SS_LCTL(SS_TAP(X_LEFT)));
 | 
			
		||||
        return false;
 | 
			
		||||
      }
 | 
			
		||||
      break;
 | 
			
		||||
    case KC_END:
 | 
			
		||||
      if (record->event.pressed && is_mac_with_base_layer_off()) {
 | 
			
		||||
        SEND_STRING(SS_LCTL(SS_TAP(X_RIGHT)));
 | 
			
		||||
        return false;
 | 
			
		||||
      }
 | 
			
		||||
      break;
 | 
			
		||||
    case KC_BSPC:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        if (char_to_del > 1) {
 | 
			
		||||
          layer_off(GIT_C);
 | 
			
		||||
          layer_off(GIT_S);
 | 
			
		||||
          backspace_n_times(char_to_del);
 | 
			
		||||
          char_to_del = 1;
 | 
			
		||||
          return false;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (is_mac_with_base_layer_off()) {
 | 
			
		||||
          uint8_t mod_state = get_mods() & MOD_MASK_CTRL;
 | 
			
		||||
          if (get_mods() & mod_state) {
 | 
			
		||||
            del_mods(mod_state);
 | 
			
		||||
            add_mods(MOD_LALT);
 | 
			
		||||
            mac_ctrl_on = true;
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      break;
 | 
			
		||||
 | 
			
		||||
    /* -------------------------------------------------------------------------
 | 
			
		||||
     *                            CUSTOM MACROS
 | 
			
		||||
     * ------------------------------------------------------------------------ */
 | 
			
		||||
    case CTRL_CTV:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        if ( get_mods() & MOD_MASK_SHIFT ) {
 | 
			
		||||
          clear_mods();
 | 
			
		||||
          SEND_STRING(SS_LCTL("ctv"));
 | 
			
		||||
        } else {
 | 
			
		||||
          SEND_STRING(SS_LCTL("ctv") SS_TAP(X_ENTER));
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      break;
 | 
			
		||||
    case CTRL_LCTV:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        if ( get_mods() & MOD_MASK_SHIFT ) {
 | 
			
		||||
          //Firefox
 | 
			
		||||
          clear_mods();
 | 
			
		||||
          SEND_STRING(SS_LCTL("lcP"));
 | 
			
		||||
          wait_ms(200);
 | 
			
		||||
          SEND_STRING(SS_LCTL("v") SS_TAP(X_ENTER));
 | 
			
		||||
        } else if ( get_mods() & MOD_MASK_CTRL ) {
 | 
			
		||||
          //Chrome
 | 
			
		||||
          clear_mods();
 | 
			
		||||
          SEND_STRING(SS_LCTL("lcNv") SS_TAP(X_ENTER));
 | 
			
		||||
        } else {
 | 
			
		||||
          SEND_STRING(SS_LCTL("lctv"));
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      break;
 | 
			
		||||
    case CTRL_CAV:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        SEND_STRING(SS_LCTL("c" SS_TAP(X_TAB)));
 | 
			
		||||
        wait_ms(50);
 | 
			
		||||
        SEND_STRING(SS_LCTL("av"));
 | 
			
		||||
      }
 | 
			
		||||
      break;
 | 
			
		||||
    case SARCASM:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        sarcasm_on = !sarcasm_on;
 | 
			
		||||
      }
 | 
			
		||||
      break;
 | 
			
		||||
 | 
			
		||||
    /* -------------------------------------------------------------------------
 | 
			
		||||
     *                            OS TOGGLING
 | 
			
		||||
     * ------------------------------------------------------------------------ */
 | 
			
		||||
    case TOG_OS:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        is_win = ! is_win;
 | 
			
		||||
        led_show_current_os();
 | 
			
		||||
      }
 | 
			
		||||
      break;
 | 
			
		||||
    case CTR_ALT:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        send_string(key_down[is_win]);
 | 
			
		||||
      } else {
 | 
			
		||||
        send_string(key_up[is_win]);
 | 
			
		||||
      }
 | 
			
		||||
      break;
 | 
			
		||||
    case OS_CTRL:
 | 
			
		||||
      if (is_win) {
 | 
			
		||||
        if (record->event.pressed) {
 | 
			
		||||
          SEND_STRING(SS_DOWN(X_LCTL));
 | 
			
		||||
        } else {
 | 
			
		||||
          SEND_STRING(SS_UP(X_LCTL));
 | 
			
		||||
        }
 | 
			
		||||
      } else {
 | 
			
		||||
        if (record->event.pressed) {
 | 
			
		||||
          SEND_STRING(SS_DOWN(X_LGUI));
 | 
			
		||||
        } else {
 | 
			
		||||
          SEND_STRING(SS_UP(X_LGUI));
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      break;
 | 
			
		||||
    case OS_WIN:
 | 
			
		||||
      if (is_win) {
 | 
			
		||||
        if (record->event.pressed) {
 | 
			
		||||
          SEND_STRING(SS_DOWN(X_LGUI));
 | 
			
		||||
        } else {
 | 
			
		||||
          SEND_STRING(SS_UP(X_LGUI));
 | 
			
		||||
        }
 | 
			
		||||
      } else {
 | 
			
		||||
        if (record->event.pressed) {
 | 
			
		||||
          SEND_STRING(SS_DOWN(X_LCTL));
 | 
			
		||||
        } else {
 | 
			
		||||
          SEND_STRING(SS_UP(X_LCTL));
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      break;
 | 
			
		||||
 | 
			
		||||
    /* -------------------------------------------------------------------------
 | 
			
		||||
     *                            STRING MACROS
 | 
			
		||||
     * ------------------------------------------------------------------------ */
 | 
			
		||||
    // case :
 | 
			
		||||
    //   if (record->event.pressed) {
 | 
			
		||||
    //     send_string_remembering_length("");
 | 
			
		||||
    //   }
 | 
			
		||||
    //   break;
 | 
			
		||||
    // case :
 | 
			
		||||
    //   if (record->event.pressed) {
 | 
			
		||||
    //     send_string_remembering_length("", "");
 | 
			
		||||
    //   }
 | 
			
		||||
    //   break;
 | 
			
		||||
    case TILD_BLOCK:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        SEND_STRING("```" SS_LSFT(SS_TAP(X_ENTER) SS_TAP(X_ENTER)) "```" SS_TAP(X_UP));
 | 
			
		||||
        char_to_del = 4;
 | 
			
		||||
      }
 | 
			
		||||
      break;
 | 
			
		||||
    case ADMINS:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        send_shifted_strings_add("admin", "/aurora/status");
 | 
			
		||||
      }
 | 
			
		||||
      break;
 | 
			
		||||
    case PRESCRIPTION:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        SEND_STRING("55\t12122019\t");
 | 
			
		||||
        char_to_del = 8;
 | 
			
		||||
      }
 | 
			
		||||
      break;
 | 
			
		||||
    case FOURS:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        SEND_STRING("4444333322221111\t1\t12\t21\t123\n");
 | 
			
		||||
        char_to_del = 16;
 | 
			
		||||
      }
 | 
			
		||||
      break;
 | 
			
		||||
      
 | 
			
		||||
  case G_ADD:
 | 
			
		||||
    if (record->event.pressed) {
 | 
			
		||||
      send_string_remembering_length("git add ");
 | 
			
		||||
    }
 | 
			
		||||
    break;
 | 
			
		||||
  case G_BRCH:
 | 
			
		||||
    if (record->event.pressed) {
 | 
			
		||||
      send_shifted_strings_add("git branch ", "-d ");
 | 
			
		||||
    }
 | 
			
		||||
    break;
 | 
			
		||||
  case G_C:
 | 
			
		||||
    if (record->event.pressed) {
 | 
			
		||||
      send_string_remembering_length("git c[Heckout/Ommit]");
 | 
			
		||||
      layer_on(GIT_C);
 | 
			
		||||
    }
 | 
			
		||||
    break;
 | 
			
		||||
  case G_CHEC:
 | 
			
		||||
    if (!record->event.pressed) {
 | 
			
		||||
      bool shifted = get_mods() & MOD_MASK_SHIFT;
 | 
			
		||||
      clear_mods();
 | 
			
		||||
            
 | 
			
		||||
      backspace_n_times(15);
 | 
			
		||||
      SEND_STRING("heckout ");
 | 
			
		||||
      char_to_del = 13;
 | 
			
		||||
      if (shifted) {
 | 
			
		||||
        SEND_STRING("-b ");
 | 
			
		||||
        char_to_del = 16;
 | 
			
		||||
      }
 | 
			
		||||
      layer_off(GIT_C);
 | 
			
		||||
    }
 | 
			
		||||
    break;
 | 
			
		||||
  case G_COMM:
 | 
			
		||||
    if (!record->event.pressed) {
 | 
			
		||||
      bool shifted = get_mods() & MOD_MASK_SHIFT;
 | 
			
		||||
      clear_mods();
 | 
			
		||||
      
 | 
			
		||||
      backspace_n_times(15);
 | 
			
		||||
      SEND_STRING("ommit -");
 | 
			
		||||
      char_to_del = 15;
 | 
			
		||||
      if (shifted) {
 | 
			
		||||
        SEND_STRING("a");
 | 
			
		||||
        char_to_del = 16;
 | 
			
		||||
      }
 | 
			
		||||
      SEND_STRING("m \"\"" SS_TAP(X_LEFT));
 | 
			
		||||
      layer_off(GIT_C);
 | 
			
		||||
    }
 | 
			
		||||
    break;
 | 
			
		||||
  case G_DEV:
 | 
			
		||||
    if (record->event.pressed) {
 | 
			
		||||
      send_shifted_strings("develop", "master");
 | 
			
		||||
    }
 | 
			
		||||
    break;
 | 
			
		||||
  case G_DIFF:
 | 
			
		||||
    if (record->event.pressed) {
 | 
			
		||||
      send_string_remembering_length("git diff ");
 | 
			
		||||
    }
 | 
			
		||||
    break;	
 | 
			
		||||
  case G_FTCH:
 | 
			
		||||
    if (record->event.pressed) {
 | 
			
		||||
      send_string_remembering_length("git fetch ");
 | 
			
		||||
    }
 | 
			
		||||
    break;
 | 
			
		||||
  case G_LOG:
 | 
			
		||||
    if (record->event.pressed) {
 | 
			
		||||
      send_string_remembering_length("git log ");
 | 
			
		||||
    }
 | 
			
		||||
    break;
 | 
			
		||||
  case G_MERG:
 | 
			
		||||
    if (record->event.pressed) {
 | 
			
		||||
      send_string_remembering_length("git merge ");
 | 
			
		||||
    }
 | 
			
		||||
    break;
 | 
			
		||||
  case G_P:
 | 
			
		||||
    if (record->event.pressed) {
 | 
			
		||||
      send_shifted_strings_add("git pu", "sh -u ");
 | 
			
		||||
    }
 | 
			
		||||
    break;
 | 
			
		||||
  case G_RST:
 | 
			
		||||
    if (record->event.pressed) {
 | 
			
		||||
      send_string_remembering_length("git reset ");
 | 
			
		||||
    }
 | 
			
		||||
    break;
 | 
			
		||||
  case G_S:
 | 
			
		||||
    if (!record->event.pressed) {
 | 
			
		||||
      send_string_remembering_length("git s[taSh/How/taTus]");
 | 
			
		||||
      layer_on(GIT_S);			
 | 
			
		||||
    }
 | 
			
		||||
    break;
 | 
			
		||||
  case G_SHOW:
 | 
			
		||||
    if (!record->event.pressed) {
 | 
			
		||||
      backspace_n_times(16);
 | 
			
		||||
      SEND_STRING("how ");
 | 
			
		||||
      char_to_del = 9;
 | 
			
		||||
      layer_off(GIT_S);
 | 
			
		||||
    }
 | 
			
		||||
    break;			
 | 
			
		||||
  case G_STSH:
 | 
			
		||||
    if (!record->event.pressed) {
 | 
			
		||||
      bool shifted = get_mods() & MOD_MASK_SHIFT;
 | 
			
		||||
      clear_mods();
 | 
			
		||||
 | 
			
		||||
      backspace_n_times(16);
 | 
			
		||||
      SEND_STRING("tash ");
 | 
			
		||||
      char_to_del = 10;
 | 
			
		||||
 | 
			
		||||
      if (shifted) {
 | 
			
		||||
        clear_mods();
 | 
			
		||||
        SEND_STRING("apply ");
 | 
			
		||||
 | 
			
		||||
        char_to_del = 16;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      layer_off(GIT_S);
 | 
			
		||||
    }
 | 
			
		||||
    break;		
 | 
			
		||||
  case G_STAT:
 | 
			
		||||
    if (!record->event.pressed) {
 | 
			
		||||
      backspace_n_times(16);
 | 
			
		||||
      SEND_STRING("tatus ");
 | 
			
		||||
      char_to_del = 11;
 | 
			
		||||
      layer_off(GIT_S);
 | 
			
		||||
    }
 | 
			
		||||
    break;
 | 
			
		||||
 | 
			
		||||
  case CTL_ALT_START ... CTL_ALT_END:
 | 
			
		||||
    if (record->event.pressed) {
 | 
			
		||||
      if (is_win) {
 | 
			
		||||
        tap_code16(LCTL(keycode - CTL_ALT_START));
 | 
			
		||||
      } else {
 | 
			
		||||
        tap_code16(LALT(keycode - CTL_ALT_START));
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    break;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return process_record_keymap(keycode, record);
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										69
									
								
								users/art/art.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								users/art/art.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,69 @@
 | 
			
		|||
#pragma once
 | 
			
		||||
#include QMK_KEYBOARD_H
 | 
			
		||||
 | 
			
		||||
#define CTL_ALT(kc) (CTL_ALT_START + ((kc) & 0xff))
 | 
			
		||||
 | 
			
		||||
extern bool is_win;
 | 
			
		||||
 | 
			
		||||
enum layer_names {
 | 
			
		||||
  QWERTY,
 | 
			
		||||
  WORKMAN,  
 | 
			
		||||
  BASE, //only specific for split75
 | 
			
		||||
#if defined(KEYBOARD_wheatfield_split75)
 | 
			
		||||
  QWERTY_MOD,
 | 
			
		||||
  LAYOUT_CHG,
 | 
			
		||||
#elif defined(KEYBOARD_ergodone)
 | 
			
		||||
  FKEYS,
 | 
			
		||||
  CTRL_NAV,
 | 
			
		||||
  SHIFT_NAV,
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  MEDIA,
 | 
			
		||||
  COMBOS,
 | 
			
		||||
  STRINGS,
 | 
			
		||||
  CONFIG,
 | 
			
		||||
  NAV,
 | 
			
		||||
  NUMPAD,
 | 
			
		||||
  GIT,
 | 
			
		||||
  GIT_C,
 | 
			
		||||
  GIT_S
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum custom_keycodes_art {
 | 
			
		||||
  CTRL_CTV = SAFE_RANGE,
 | 
			
		||||
  CTRL_LCTV,
 | 
			
		||||
  CTRL_CAV,
 | 
			
		||||
  SARCASM,
 | 
			
		||||
 | 
			
		||||
  TOG_OS,
 | 
			
		||||
  CTR_ALT,
 | 
			
		||||
  OS_CTRL,
 | 
			
		||||
  OS_WIN,
 | 
			
		||||
 | 
			
		||||
  TILD_BLOCK,
 | 
			
		||||
  ADMINS,
 | 
			
		||||
  PRESCRIPTION,
 | 
			
		||||
  FOURS,
 | 
			
		||||
  
 | 
			
		||||
  G_ADD,
 | 
			
		||||
  G_BRCH,
 | 
			
		||||
  G_C,
 | 
			
		||||
  G_CHEC,	
 | 
			
		||||
  G_COMM,
 | 
			
		||||
  G_DEV,
 | 
			
		||||
  G_DIFF,
 | 
			
		||||
  G_FTCH,
 | 
			
		||||
  G_LOG,
 | 
			
		||||
  G_MERG,
 | 
			
		||||
  G_P,
 | 
			
		||||
  G_RST,
 | 
			
		||||
  G_S,
 | 
			
		||||
  G_STAT,
 | 
			
		||||
  G_STSH,
 | 
			
		||||
  G_SHOW,
 | 
			
		||||
 | 
			
		||||
  CTL_ALT_START,
 | 
			
		||||
  CTL_ALT_END = CTL_ALT_START + 0xff,
 | 
			
		||||
 | 
			
		||||
  NEW_SAFE_RANGE  //for keymap specific codes
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										4
									
								
								users/art/config.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								users/art/config.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,4 @@
 | 
			
		|||
#pragma once
 | 
			
		||||
 | 
			
		||||
#undef TAPPING_TOGGLE
 | 
			
		||||
#define TAPPING_TOGGLE 2
 | 
			
		||||
							
								
								
									
										1
									
								
								users/art/rules.mk
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								users/art/rules.mk
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
SRC += art.c
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue