qmk

QMK Firmware
git clone git://git.z3bra.org/qmk.git
Log | Files | Refs | Submodules | LICENSE

keymap.c (20925B)


      1 #include QMK_KEYBOARD_H
      2 
      3 extern keymap_config_t keymap_config;
      4 
      5 // Each layer gets a name for readability, which is then used in the keymap matrix below.
      6 // The underscores don't mean anything - you can have a layer called STUFF or any other name.
      7 // Layer names don't all need to be of the same length, obviously, and you can also skip them
      8 // entirely and just use numbers.
      9 #define _COLEMAK 0
     10 #define _SYMB 1
     11 #define _NAV 2
     12 #define _INTER 3
     13 #define _ADJUST 4
     14 
     15 enum custom_keycodes {
     16 	COLEMAK = SAFE_RANGE,
     17 	SYMB,
     18 	NAV,
     19 	INTER,
     20 	ADJUST,
     21 	// These use process_record_user()
     22 	M_BRACKET_LEFT,
     23 	M_BRACKET_RIGHT,
     24 	SHRUG,
     25 	WAVE,
     26 	YOSHI,
     27 	THUMB_UP,
     28 	NBSP,
     29   INV_1P,
     30   ALFRED
     31 };
     32 
     33 // Is shift being held? Let's store this in a bool.
     34 static bool shift_held = false;
     35 
     36 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
     37 	switch(keycode) {
     38 		case SHRUG:
     39 			if (record->event.pressed) {
     40 				send_unicode_hex_string("00AF 005C 005F 0028 30C4 0029 005F 002F 00AF");
     41 			}
     42 			return false;
     43 			break;
     44     case INV_1P:
     45       if (record->event.pressed) {
     46         SEND_STRING(SS_DOWN(X_LGUI)SS_DOWN(X_LALT)SS_TAP(X_BSLASH)SS_UP(X_LGUI)SS_UP(X_LALT));
     47       }
     48       return false;
     49       break;
     50     case ALFRED:
     51       if (record->event.pressed) {
     52         SEND_STRING(SS_DOWN(X_LALT)SS_TAP(X_SPACE)SS_UP(X_LALT));
     53       }
     54       return false;
     55       break;
     56 		case YOSHI:
     57 			if (record->event.pressed) {
     58 				SEND_STRING(":yellow_yoshi:");
     59 			}
     60 			return false;
     61 			break;
     62 		case THUMB_UP:
     63 			if (record->event.pressed) {
     64 				SEND_STRING(SS_LALT("D83D+DC4D"));
     65 			}
     66 			return false;
     67 			break;
     68 		case WAVE:
     69 			if (record->event.pressed) {
     70 				SEND_STRING(SS_LALT("D83D+DC4B"));
     71 			}
     72 			return false;
     73 			break;
     74 		case NBSP:
     75 			if (record->event.pressed) {
     76 				SEND_STRING(" ");
     77 			}
     78 			return false;
     79 			break;
     80 	case KC_LSFT:
     81 		shift_held = record->event.pressed;
     82 		return true;
     83 		break;
     84 	case KC_RSFT:
     85 		shift_held = record->event.pressed;
     86 		return true;
     87 		break;
     88 		case M_BRACKET_LEFT: {
     89 			if (record->event.pressed) {
     90 				if (shift_held) {
     91 					unregister_code(KC_LSFT);
     92 					unregister_code(KC_RSFT);
     93 					register_code(KC_LBRC);
     94 				} else {
     95 					register_code(KC_LSFT);
     96 					register_code(KC_9);
     97 				}
     98 			} else { // Release the key
     99 				unregister_code(KC_LBRC);
    100 				unregister_code(KC_LSFT);
    101 				unregister_code(KC_RSFT);
    102 				unregister_code(KC_9);
    103 			}
    104 			return false;
    105 			break;
    106 		}
    107 		case M_BRACKET_RIGHT: {
    108 			if (record->event.pressed) {
    109 				if (shift_held) {
    110 					unregister_code(KC_LSFT);
    111 					unregister_code(KC_RSFT);
    112 					register_code(KC_RBRC);
    113 				} else {
    114 					register_code(KC_LSFT);
    115 					register_code(KC_0);
    116 				}
    117 			} else { // Release the key
    118 				unregister_code(KC_RBRC);
    119 				unregister_code(KC_LSFT);
    120 				unregister_code(KC_RSFT);
    121 				unregister_code(KC_0);
    122 			}
    123 			return false;
    124 			break;
    125 		}
    126 	}
    127 	return true;
    128 };
    129 
    130 // Shortcut to make keymap more readable
    131 #define KC_SYQT  LT(_SYMB,KC_QUOT)
    132 #define SYM_L    MO(_SYMB)
    133 #define MO_INTR  MO(_INTER)
    134 #define TT_ADJ   TT(_ADJUST)
    135 
    136 #define UC_00E0 UC(0x00E0)
    137 #define UC_00FC UC(0x00FC)
    138 #define UC_00E8 UC(0x00E8)
    139 #define UC_00F6 UC(0x00F6)
    140 #define UC_00E1 UC(0x00E1)
    141 #define UC_00F9 UC(0x00F9)
    142 #define UC_00E9 UC(0x00E9)
    143 #define UC_00ED UC(0x00ED)
    144 #define UC_00F3 UC(0x00F3)
    145 #define UC_00E2 UC(0x00E2)
    146 #define UC_00E7 UC(0x00E7)
    147 #define UC_0171 UC(0x0171)
    148 #define UC_00EA UC(0x00EA)
    149 #define UC_0151 UC(0x0151)
    150 
    151 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    152 
    153   [_COLEMAK] = LAYOUT(
    154   //┌────────┬────────┬────────┬────────┬────────┬────────┐                                           ┌────────┬────────┬────────┬────────┬────────┬────────┐
    155      KC_GRV  ,KC_1    ,KC_2    ,KC_3    ,KC_4    ,KC_5    ,                                            KC_6    ,KC_7    ,KC_8    ,KC_9    ,KC_0    ,KC_EQL  ,
    156   //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐                         ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
    157      KC_TAB  ,KC_Q    ,KC_W    ,KC_F    ,KC_P    ,KC_G    ,KC_ESC  ,                           INV_1P ,KC_J    ,KC_L    ,KC_U    ,KC_Y    ,KC_SCLN ,KC_BSLS ,
    158   //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤                         ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
    159      SYM_L   ,KC_A    ,KC_R    ,KC_S    ,KC_T    ,KC_D    ,M_BRACKET_LEFT,            M_BRACKET_RIGHT ,KC_H    ,KC_N    ,KC_E    ,KC_I    ,KC_O    ,KC_SYQT ,
    160   //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐       ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
    161      KC_LSFT ,KC_Z    ,KC_X    ,KC_C    ,KC_V    ,KC_B    ,TT(_NAV),TT(_SYMB),      TT(_SYMB),TT(_NAV),KC_K    ,KC_M    ,KC_COMM ,KC_DOT  ,KC_SLSH ,KC_RSFT ,
    162   //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤       ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
    163      MO_INTR ,KC_LCTL ,KC_HYPR ,KC_LALT ,     KC_LCMD ,    KC_BSPC ,KC_LCTL ,        KC_ENT  ,KC_SPC  ,    ALFRED  ,     TT_ADJ  ,KC_HYPR ,KC_RCTL ,MO_INTR
    164   //└────────┴────────┴────────┴────────┘    └────────┘   └────────┴────────┘       └────────┴────────┘   └────────┘    └────────┴────────┴────────┴────────┘
    165   ),
    166 
    167   [_SYMB] = LAYOUT(
    168   //┌────────┬────────┬────────┬────────┬────────┬────────┐                                           ┌────────┬────────┬────────┬────────┬────────┬────────┐
    169      _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,                                            _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
    170   //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐                         ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
    171      _______ ,KC_1    ,KC_2    ,KC_3    ,KC_4    ,KC_5    ,_______ ,                          _______ ,KC_6    ,KC_7    ,KC_8    ,KC_9    ,KC_0    ,_______ ,
    172   //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤                         ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
    173      _______ ,KC_EXLM ,KC_AT   ,KC_HASH ,KC_DLR  ,KC_PERC ,KC_LCBR ,                          KC_RCBR ,KC_CIRC ,KC_AMPR ,KC_ASTR ,KC_MINS ,KC_UNDS ,_______ ,
    174   //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐       ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
    175      _______ ,_______ ,_______ ,KC_TILD ,KC_GRV , _______ ,_______ ,_______ ,        _______ ,_______ ,_______ ,KC_EQL  ,KC_PLUS ,_______ ,_______ ,_______ ,
    176   //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤       ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
    177      _______ ,_______ ,_______ ,_______ ,     _______ ,    _______ ,_______ ,        _______ ,_______ ,    _______ ,     _______ ,_______ ,_______ ,_______
    178   //└────────┴────────┴────────┴────────┘    └────────┘   └────────┴────────┘       └────────┴────────┘   └────────┘    └────────┴────────┴────────┴────────┘
    179   ),
    180 
    181   [_NAV] = LAYOUT(
    182   //┌────────┬────────┬────────┬────────┬────────┬────────┐                                           ┌────────┬────────┬────────┬────────┬────────┬────────┐
    183      _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,                                            _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
    184   //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐                         ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
    185      XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,                          _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
    186   //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤                         ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
    187      XXXXXXX ,XXXXXXX ,KC_VOLD ,KC_VOLU ,KC_MUTE ,XXXXXXX ,_______ ,                          _______ ,XXXXXXX ,KC_LEFT ,KC_DOWN ,KC_UP   ,KC_RIGHT,XXXXXXX ,
    188   //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐       ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
    189      XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,_______ ,        _______ ,_______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
    190   //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤       ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
    191      _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,     XXXXXXX ,    XXXXXXX ,_______ ,        _______ ,XXXXXXX ,    XXXXXXX ,     _______ ,XXXXXXX ,XXXXXXX ,_______
    192   //└────────┴────────┴────────┴────────┘    └────────┘   └────────┴────────┘       └────────┴────────┘   └────────┘    └────────┴────────┴────────┴────────┘
    193   ),
    194 
    195   [_INTER] = LAYOUT(
    196   //┌────────┬────────┬────────┬────────┬────────┬────────┐                                           ┌────────┬────────┬────────┬────────┬────────┬────────┐
    197      XXXXXXX ,_______ ,_______ ,_______ ,_______ ,_______ ,                                            _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
    198   //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐                         ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
    199      XXXXXXX ,UC_00E0 ,WAVE    ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,                          _______ ,XXXXXXX ,UC_00FC ,UC_00E8 ,YOSHI   ,UC_00F6 ,XXXXXXX ,
    200   //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤                         ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
    201      _______ ,UC_00E1 ,XXXXXXX ,SHRUG   ,THUMB_UP,XXXXXXX ,_______ ,                          _______ ,XXXXXXX ,UC_00F9 ,UC_00E9 ,UC_00ED ,UC_00F3 ,_______ ,
    202   //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐       ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
    203      XXXXXXX ,UC_00E2 ,XXXXXXX ,UC_00E7 ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,        _______ ,XXXXXXX ,XXXXXXX ,UC_0171 ,UC_00EA ,XXXXXXX ,UC_0151 ,XXXXXXX ,
    204   //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤       ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
    205      _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,     XXXXXXX ,    XXXXXXX ,_______ ,        _______ ,NBSP    ,    XXXXXXX ,     _______ ,XXXXXXX ,XXXXXXX ,_______
    206   //└────────┴────────┴────────┴────────┘    └────────┘   └────────┴────────┘       └────────┴────────┘   └────────┘    └────────┴────────┴────────┴────────┘
    207   ),
    208 
    209   [_ADJUST] = LAYOUT(
    210   //┌────────┬────────┬────────┬────────┬────────┬────────┐                                           ┌────────┬────────┬────────┬────────┬────────┬────────┐
    211      XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,                                            XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
    212   //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐                         ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
    213      XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,                          XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
    214   //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤                         ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
    215      _______ ,XXXXXXX ,RGB_VAD ,RGB_VAI ,RGB_TOG ,XXXXXXX ,_______ ,                          _______ ,XXXXXXX ,RESET   ,DEBUG   ,AU_TOG  ,XXXXXXX ,_______ ,
    216   //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐       ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
    217      XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,        _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
    218   //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤       ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
    219      _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,     XXXXXXX ,    XXXXXXX ,_______ ,        _______ ,XXXXXXX ,    XXXXXXX ,     _______ ,XXXXXXX ,XXXXXXX ,_______
    220   //└────────┴────────┴────────┴────────┘    └────────┘   └────────┴────────┘       └────────┴────────┘   └────────┘    └────────┴────────┴────────┴────────┘
    221   )
    222 
    223 };
    224 
    225 #ifdef AUDIO_ENABLE
    226 float tone_colemak[][2]     = SONG(ZELDA_TREASURE);
    227 #endif
    228 
    229 void persistent_default_layer_set(uint16_t default_layer) {
    230 	eeconfig_update_default_layer(default_layer);
    231 	default_layer_set(default_layer);
    232 }
    233 
    234 // Set unicode in Mac OS.
    235 void eeconfig_init_user(void) {
    236   set_unicode_input_mode(UC_OSX);
    237 };
    238 
    239 // Change LED colors depending on the layer.
    240 uint32_t layer_state_set_user(uint32_t state) {
    241 	switch (biton32(state)) {
    242 		case _SYMB:
    243 			rgblight_setrgb_orange();
    244 			break;
    245 		case _NAV:
    246 			rgblight_setrgb_springgreen();
    247 			break;
    248 		case _INTER:
    249 			rgblight_setrgb_teal();
    250 			break;
    251 		case _ADJUST:
    252 			rgblight_setrgb_red();
    253 			break;
    254 		default: //  for any other layers, or the default layer
    255 			rgblight_setrgb_yellow();
    256 			break;
    257 	}
    258 	return state;
    259 };