189 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			189 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#include QMK_KEYBOARD_H
 | 
						|
 | 
						|
extern keymap_config_t keymap_config;
 | 
						|
 | 
						|
// Layer names
 | 
						|
#define _QWERTY 0
 | 
						|
#define _COLEMAKDHMK 1
 | 
						|
#define _QWERTY_MAC 2
 | 
						|
#define _COLEMAKDHMK_MAC 3
 | 
						|
#define _SYMB 4
 | 
						|
#define _ADJUST 5
 | 
						|
 | 
						|
// Custom keycodes
 | 
						|
enum custom_keycodes {
 | 
						|
  QWERTY = SAFE_RANGE,
 | 
						|
  COLEMAKDHMK,
 | 
						|
  QWERTY_MAC,
 | 
						|
  COLEMAKDHMK_MAC,
 | 
						|
  SYMB,
 | 
						|
  ADJUST,
 | 
						|
  ASC_SAR,
 | 
						|
  ASC_DAR,
 | 
						|
  ASC_SQT,
 | 
						|
  ASC_DQT,
 | 
						|
  ASC_HAP,
 | 
						|
  ASC_SAD
 | 
						|
};
 | 
						|
 | 
						|
// Shortcut to make keymap more readable
 | 
						|
#define KC_SYQT LT(_SYMB, KC_QUOT)
 | 
						|
#define KC_SYGR LT(_SYMB, KC_GRV)
 | 
						|
#define KC_SYSP LT(_SYMB, KC_SPC)
 | 
						|
#define KC_ADEN LT(_ADJUST, KC_END)
 | 
						|
#define KC_ADPU LT(_ADJUST, KC_PGUP)
 | 
						|
#define KC_CESC LCTL_T(KC_ESC)
 | 
						|
#define KC_CBSP LCTL_T(KC_BSPC)
 | 
						|
#define KC_CMIN RCTL_T(KC_MINUS)
 | 
						|
#define KC_GBSP LGUI_T(KC_BSPC)
 | 
						|
#define KC_ADEL LALT_T(KC_DEL)
 | 
						|
#define KC_APLS RALT_T(KC_PPLS)
 | 
						|
#define KC_LSEN LSFT_T(KC_ENT)
 | 
						|
#define KC_RSEN RSFT_T(KC_ENT)
 | 
						|
#define FN1 QWERTY
 | 
						|
#define FN2 COLEMAKDHMK
 | 
						|
#define FN3 QWERTY_MAC
 | 
						|
#define FN4 COLEMAKDHMK_MAC
 | 
						|
 | 
						|
// Send custom strings or change default base layer
 | 
						|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
						|
  if (record->event.pressed) {
 | 
						|
    switch(keycode) {
 | 
						|
      case ASC_SAR:
 | 
						|
        SEND_STRING("->");
 | 
						|
        return false;
 | 
						|
      case ASC_DAR:
 | 
						|
        SEND_STRING("=>");
 | 
						|
        return false;
 | 
						|
      case ASC_SQT:
 | 
						|
        // SS_RALT(): Avoid sending dead key on software intl layouts
 | 
						|
        SEND_STRING(SS_RALT("'"));
 | 
						|
        return false;
 | 
						|
      case ASC_DQT:
 | 
						|
        // SS_RALT(SS_LSFT()): Avoid sending dead key on software intl layouts
 | 
						|
        SEND_STRING(SS_RALT(SS_LSFT("\"")));
 | 
						|
        return false;
 | 
						|
      case ASC_HAP:
 | 
						|
        SEND_STRING(":-) ");
 | 
						|
        return false;
 | 
						|
      case ASC_SAD:
 | 
						|
        SEND_STRING(":-( ");
 | 
						|
        return false;
 | 
						|
      case QWERTY:
 | 
						|
        if (record->event.pressed) {
 | 
						|
          set_single_persistent_default_layer(_QWERTY);
 | 
						|
        }
 | 
						|
        return false;
 | 
						|
        break;
 | 
						|
      case COLEMAKDHMK:
 | 
						|
        if (record->event.pressed) {
 | 
						|
          set_single_persistent_default_layer(_COLEMAKDHMK);
 | 
						|
        }
 | 
						|
        return false;
 | 
						|
        break;
 | 
						|
      case QWERTY_MAC:
 | 
						|
        if (record->event.pressed) {
 | 
						|
          set_single_persistent_default_layer(_QWERTY_MAC);
 | 
						|
        }
 | 
						|
        return false;
 | 
						|
        break;
 | 
						|
      case COLEMAKDHMK_MAC:
 | 
						|
        if (record->event.pressed) {
 | 
						|
          set_single_persistent_default_layer(_COLEMAKDHMK_MAC);
 | 
						|
        }
 | 
						|
        return false;
 | 
						|
        break;
 | 
						|
    }
 | 
						|
  }
 | 
						|
  return true;
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
						|
 | 
						|
  [_QWERTY] = LAYOUT(
 | 
						|
  //┌────────┬────────┬────────┬────────┬────────┬────────┐                                           ┌────────┬────────┬────────┬────────┬────────┬────────┐
 | 
						|
     KC_SYGR ,KC_1    ,KC_2    ,KC_3    ,KC_4    ,KC_5    ,                                            KC_6    ,KC_7    ,KC_8    ,KC_9    ,KC_0    ,KC_SYQT ,
 | 
						|
  //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐                         ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
 | 
						|
     KC_TAB  ,KC_Q    ,KC_W    ,KC_E    ,KC_R    ,KC_T    ,KC_DEL  ,                          KC_BSPC ,KC_Y    ,KC_U    ,KC_I    ,KC_O    ,KC_P    ,KC_EQL  ,
 | 
						|
  //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤                         ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
 | 
						|
     KC_CESC ,KC_A    ,KC_S    ,KC_D    ,KC_F    ,KC_G    ,KC_LBRC ,                          KC_RBRC ,KC_H    ,KC_J    ,KC_K    ,KC_L    ,KC_SCLN ,KC_CMIN ,
 | 
						|
  //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐       ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
 | 
						|
     KC_LSPO ,KC_Z    ,KC_X    ,KC_C    ,KC_V    ,KC_B    ,KC_ADPU ,KC_PGDN ,        KC_HOME ,KC_ADEN ,KC_N    ,KC_M    ,KC_COMM ,KC_DOT  ,KC_SLSH ,KC_RSPC ,
 | 
						|
  //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤       ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
 | 
						|
     KC_SYSP ,KC_BSLS ,KC_QUOT ,KC_LGUI ,     KC_ADEL ,    KC_CBSP ,KC_LSEN ,        KC_RSEN ,KC_SYSP ,    KC_APLS ,     KC_LEFT ,KC_DOWN ,KC_UP   ,KC_RGHT
 | 
						|
  //└────────┴────────┴────────┴────────┘    └────────┘   └────────┴────────┘       └────────┴────────┘   └────────┘    └────────┴────────┴────────┴────────┘
 | 
						|
  ),
 | 
						|
 | 
						|
  [_COLEMAKDHMK] = LAYOUT(
 | 
						|
  //┌────────┬────────┬────────┬────────┬────────┬────────┐                                           ┌────────┬────────┬────────┬────────┬────────┬────────┐
 | 
						|
     KC_SYGR ,KC_1    ,KC_2    ,KC_3    ,KC_4    ,KC_5    ,                                            KC_6    ,KC_7    ,KC_8    ,KC_9    ,KC_0    ,KC_SYQT ,
 | 
						|
  //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐                         ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
 | 
						|
     KC_TAB  ,KC_Q    ,KC_W    ,KC_F    ,KC_P    ,KC_B    ,KC_DEL  ,                          KC_BSPC ,KC_J    ,KC_L    ,KC_U    ,KC_Y    ,KC_SCLN ,KC_EQL  ,
 | 
						|
  //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤                         ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
 | 
						|
     KC_CESC ,KC_A    ,KC_R    ,KC_S    ,KC_T    ,KC_G    ,KC_LBRC ,                          KC_RBRC ,KC_M    ,KC_N    ,KC_E    ,KC_I    ,KC_O    ,KC_CMIN ,
 | 
						|
  //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐       ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
 | 
						|
     KC_LSPO ,KC_Z    ,KC_X    ,KC_C    ,KC_D    ,KC_V    ,KC_ADPU ,KC_PGDN ,        KC_HOME ,KC_ADEN ,KC_K    ,KC_H    ,KC_COMM ,KC_DOT  ,KC_SLSH ,KC_RSPC ,
 | 
						|
  //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤       ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
 | 
						|
     KC_SYSP ,KC_BSLS ,KC_QUOT ,KC_LGUI ,     KC_ADEL ,    KC_CBSP ,KC_LSEN ,        KC_RSEN ,KC_SYSP ,    KC_APLS ,     KC_LEFT ,KC_DOWN ,KC_UP   ,KC_RGHT
 | 
						|
  //└────────┴────────┴────────┴────────┘    └────────┘   └────────┴────────┘       └────────┴────────┘   └────────┘    └────────┴────────┴────────┴────────┘
 | 
						|
  ),
 | 
						|
 | 
						|
  [_QWERTY_MAC] = LAYOUT(
 | 
						|
  //┌────────┬────────┬────────┬────────┬────────┬────────┐                                           ┌────────┬────────┬────────┬────────┬────────┬────────┐
 | 
						|
     KC_SYGR ,KC_1    ,KC_2    ,KC_3    ,KC_4    ,KC_5    ,                                            KC_6    ,KC_7    ,KC_8    ,KC_9    ,KC_0    ,KC_SYQT ,
 | 
						|
  //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐                         ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
 | 
						|
     KC_TAB  ,KC_Q    ,KC_W    ,KC_E    ,KC_R    ,KC_T    ,KC_DEL  ,                          KC_BSPC ,KC_Y    ,KC_U    ,KC_I    ,KC_O    ,KC_P    ,KC_EQL  ,
 | 
						|
  //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤                         ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
 | 
						|
     KC_CESC ,KC_A    ,KC_S    ,KC_D    ,KC_F    ,KC_G    ,KC_LBRC ,                          KC_RBRC ,KC_H    ,KC_J    ,KC_K    ,KC_L    ,KC_SCLN ,KC_CMIN ,
 | 
						|
  //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐       ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
 | 
						|
     KC_LSPO ,KC_Z    ,KC_X    ,KC_C    ,KC_V    ,KC_B    ,KC_ADPU ,KC_PGDN ,        KC_HOME ,KC_ADEN ,KC_N    ,KC_M    ,KC_COMM ,KC_DOT  ,KC_SLSH ,KC_RSPC ,
 | 
						|
  //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤       ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
 | 
						|
     KC_SYSP ,KC_BSLS ,KC_QUOT ,KC_LCTL ,     KC_ADEL ,    KC_GBSP ,KC_LSEN ,        KC_RSEN ,KC_SYSP ,    KC_APLS ,     KC_LEFT ,KC_DOWN ,KC_UP   ,KC_RGHT
 | 
						|
  //└────────┴────────┴────────┴────────┘    └────────┘   └────────┴────────┘       └────────┴────────┘   └────────┘    └────────┴────────┴────────┴────────┘
 | 
						|
  ),
 | 
						|
 | 
						|
  [_COLEMAKDHMK_MAC] = LAYOUT(
 | 
						|
  //┌────────┬────────┬────────┬────────┬────────┬────────┐                                           ┌────────┬────────┬────────┬────────┬────────┬────────┐
 | 
						|
     KC_SYGR ,KC_1    ,KC_2    ,KC_3    ,KC_4    ,KC_5    ,                                            KC_6    ,KC_7    ,KC_8    ,KC_9    ,KC_0    ,KC_SYQT ,
 | 
						|
  //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐                         ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
 | 
						|
     KC_TAB  ,KC_Q    ,KC_W    ,KC_F    ,KC_P    ,KC_B    ,KC_DEL  ,                          KC_BSPC ,KC_J    ,KC_L    ,KC_U    ,KC_Y    ,KC_SCLN ,KC_EQL  ,
 | 
						|
  //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤                         ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
 | 
						|
     KC_CESC ,KC_A    ,KC_R    ,KC_S    ,KC_T    ,KC_G    ,KC_LBRC ,                          KC_RBRC ,KC_M    ,KC_N    ,KC_E    ,KC_I    ,KC_O    ,KC_CMIN ,
 | 
						|
  //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐       ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
 | 
						|
     KC_LSPO ,KC_Z    ,KC_X    ,KC_C    ,KC_D    ,KC_V    ,KC_ADPU ,KC_PGDN ,        KC_HOME ,KC_ADEN ,KC_K    ,KC_H    ,KC_COMM ,KC_DOT  ,KC_SLSH ,KC_RSPC ,
 | 
						|
  //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤       ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
 | 
						|
     KC_SYSP ,KC_BSLS ,KC_QUOT ,KC_LCTL ,     KC_ADEL ,    KC_GBSP ,KC_LSEN ,        KC_RSEN ,KC_SYSP ,    KC_APLS ,     KC_LEFT ,KC_DOWN ,KC_UP   ,KC_RGHT
 | 
						|
  //└────────┴────────┴────────┴────────┘    └────────┘   └────────┴────────┘       └────────┴────────┘   └────────┘    └────────┴────────┴────────┴────────┘
 | 
						|
  ),
 | 
						|
 | 
						|
  [_SYMB] = LAYOUT(
 | 
						|
  //┌────────┬────────┬────────┬────────┬────────┬────────┐                                           ┌────────┬────────┬────────┬────────┬────────┬────────┐
 | 
						|
     XXXXXXX ,KC_F1   ,KC_F2   ,KC_F3   ,KC_F4   ,KC_F5   ,                                            KC_F6   ,KC_F7   ,KC_F8   ,KC_F9   ,KC_F10  ,XXXXXXX ,
 | 
						|
  //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐                         ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
 | 
						|
     _______ ,KC_CIRC ,KC_BSLS ,KC_PMNS ,KC_UNDS ,XXXXXXX ,_______ ,                          _______ ,XXXXXXX ,KC_KP_7 ,KC_KP_8 ,KC_KP_9 ,KC_F11  ,KC_APP  ,
 | 
						|
  //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤                         ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
 | 
						|
     _______ ,KC_PAST ,KC_PIPE ,ASC_SQT ,KC_TILD ,KC_QUOT ,ASC_SAR ,                          ASC_DAR ,XXXXXXX ,KC_KP_4 ,KC_KP_5 ,KC_KP_6 ,KC_F12  ,KC_PSCR ,
 | 
						|
  //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐       ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
 | 
						|
     _______ ,KC_HASH ,KC_AMPR  ,KC_AT  ,ASC_DQT ,KC_GRV  ,ASC_SAD ,ASC_HAP ,        _______ ,_______ ,XXXXXXX ,KC_KP_1 ,KC_KP_2 ,KC_KP_3 ,KC_UP   ,_______ ,
 | 
						|
  //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤       ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
 | 
						|
     _______ ,_______ ,_______ ,_______ ,     _______ ,    _______ ,_______ ,        _______ ,_______ ,    KC_KP_0 ,     KC_PDOT ,KC_LEFT ,KC_DOWN ,KC_RGHT
 | 
						|
  //└────────┴────────┴────────┴────────┘    └────────┘   └────────┴────────┘       └────────┴────────┘   └────────┘    └────────┴────────┴────────┴────────┘
 | 
						|
  ),
 | 
						|
 | 
						|
  [_ADJUST] = LAYOUT(
 | 
						|
  //┌────────┬────────┬────────┬────────┬────────┬────────┐                                           ┌────────┬────────┬────────┬────────┬────────┬────────┐
 | 
						|
     XXXXXXX ,FN1     ,FN2     ,FN3     ,FN4     ,XXXXXXX ,                                            XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
 | 
						|
  //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐                         ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
 | 
						|
     XXXXXXX ,RESET   ,RGB_M_P ,RGB_TOG ,RGB_MOD ,RGB_HUD ,RGB_HUI ,                          RGB_SAD ,RGB_SAI ,RGB_VAD ,RGB_VAI ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
 | 
						|
  //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤                         ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
 | 
						|
     XXXXXXX ,XXXXXXX ,RGB_M_B ,RGB_M_R ,RGB_M_SW,RGB_M_SN,XXXXXXX ,                          XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
 | 
						|
  //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐       ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
 | 
						|
     XXXXXXX ,XXXXXXX ,RGB_M_K ,RGB_M_X ,RGB_M_G ,XXXXXXX ,_______ ,XXXXXXX ,        XXXXXXX ,_______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
 | 
						|
  //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤       ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
 | 
						|
     XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,     XXXXXXX ,    XXXXXXX ,XXXXXXX ,        XXXXXXX ,XXXXXXX ,    XXXXXXX ,     XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX
 | 
						|
  //└────────┴────────┴────────┴────────┘    └────────┘   └────────┴────────┘       └────────┴────────┘   └────────┘    └────────┴────────┴────────┴────────┘
 | 
						|
  )
 | 
						|
 | 
						|
};
 |