config

Personal configuration.
git clone git://code.dwrz.net/config
Log | Files | Refs

keymap.c (5936B)


      1 // https://docs.qmk.fm/#/feature_audio
      2 // MACROS:
      3 // DM_REC1
      4 // DM_REC2
      5 // DM_PLY1
      6 // DM_PLY2
      7 // DM_RSTP
      8 
      9 #include QMK_KEYBOARD_H
     10 
     11 #define LT_EDT LT(_EDIT, KC_Q)
     12 #define LT_FUN LT(_FUNC, KC_NO)
     13 #define LT_MOU LT(_MOUSE, KC_COMM)
     14 #define LT_NAV LT(_NAV, KC_A)
     15 #define LT_NUM LT(_NUM, KC_E)
     16 #define LT_SYM LT(_SYMBOL, KC_O)
     17 
     18 #define RED 0
     19 #define YELLOW 43
     20 #define PURPLE 191
     21 #define GREEN 85
     22 #define BLUE 170
     23 #define CYAN 128
     24 
     25 enum layers {
     26 	_MAIN,
     27 	_NAV,
     28 	_MOUSE,
     29 	_NUM,
     30 	_SYMBOL,
     31 	_EDIT,
     32 	_FUNC,
     33 };
     34 
     35 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     36 	[_MAIN] = LAYOUT_ortho_4x12(
     37 		KC_ESC,  KC_QUOT, LT_MOU, KC_DOT,  KC_P,    KC_Y,    KC_F,   KC_G,    KC_C,    KC_R,    KC_L,  KC_DEL,
     38 		KC_TAB,  LT_NAV,  LT_SYM, LT_NUM,  KC_U,    KC_I,    KC_D,   KC_H,    KC_T,    KC_N,    KC_S,  KC_ENT,
     39 		KC_LSFT, KC_SCLN, LT_EDT, KC_J,    KC_K,    KC_X,    KC_B,   KC_M,    KC_W,    KC_V,    KC_Z,  KC_MINS,
     40 		KC_APP,  KC_ALGR, LT_FUN, KC_LALT, KC_LGUI, KC_BSPC, KC_SPC, KC_RCTL, KC_LEFT, KC_RGHT, KC_UP, KC_DOWN
     41 	),
     42 	[_NAV] = LAYOUT_ortho_4x12(
     43 		KC_NO,   KC_NO,   KC_NO, KC_NO,   KC_NO,   KC_NO, KC_NO,  KC_NO,   KC_HOME, KC_UP,   KC_END,   KC_PGUP,
     44 		KC_NO,   KC_TRNS, KC_NO, KC_NO,   KC_NO,   KC_NO, KC_NO,  KC_NO,   KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN,
     45 		KC_LSFT, KC_NO,   KC_NO, KC_NO,   KC_NO,   KC_NO, KC_NO,  KC_NO,   KC_NO,   KC_NO,   KC_NO,    KC_NO,
     46 		KC_NO,   KC_NO,   KC_NO, KC_LALT, KC_LGUI, KC_NO, KC_SPC, KC_RCTL, KC_HOME, KC_END,  KC_PGUP,  KC_PGDN
     47 	),
     48 	[_MOUSE] = LAYOUT_ortho_4x12(
     49 		KC_NO, KC_NO,   KC_TRNS, KC_ACL2, KC_NO,   KC_NO, KC_NO,   KC_NO,   KC_WH_L, KC_MS_U, KC_WH_R, KC_WH_U,
     50 		KC_NO, KC_ACL0, KC_NO,   KC_ACL1, KC_LCTL, KC_NO, KC_NO,   KC_NO,   KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D,
     51 		KC_NO, KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO, KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,
     52 		KC_NO, KC_NO,   KC_NO,   KC_LALT, KC_LGUI, KC_NO, KC_BTN3, KC_BTN1, KC_BTN2, KC_NO,   KC_NO,   KC_NO
     53 	),
     54 	[_NUM] = LAYOUT_ortho_4x12(
     55 		KC_NO, KC_NO,  KC_COMM, KC_DOT,  KC_NO,   KC_NO,   KC_NO,  KC_CIRC, KC_7,    KC_8,    KC_9,    KC_0,
     56 		KC_NO, KC_NO,  KC_NO,   KC_TRNS, KC_COLN, KC_NO,   KC_NO,  KC_PERC, KC_4,    KC_5,    KC_6,    KC_EQL,
     57 		KC_NO, KC_NO,  KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,  KC_0,    KC_1,    KC_2,    KC_3,    KC_NO,
     58 		KC_NO, KC_NO,  KC_NO,   KC_NO,   KC_LGUI, KC_BSPC, KC_SPC, KC_RCTL, KC_SLSH, KC_ASTR, KC_PLUS, KC_MINS
     59 	),
     60 	[_SYMBOL] = LAYOUT_ortho_4x12(
     61 		KC_TILD, KC_GRV,  KC_NO,   KC_QUES, KC_NO,   KC_NO,  KC_LBRC, KC_RBRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
     62 		KC_NO,   KC_MINS, KC_TRNS, KC_PPLS, KC_COLN, KC_NO,  KC_LCBR, KC_RCBR, KC_DLR,  KC_PERC, KC_CIRC, KC_EQL,
     63 		KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,  KC_BSLS, KC_SLSH, KC_EXLM, KC_AT,   KC_HASH, KC_PIPE,
     64 		KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_LGUI, KC_NO,  KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO
     65 	),
     66 	[_EDIT] = LAYOUT_ortho_4x12(
     67 		KC_NO, KC_NO,   KC_NO,   KC_NO, KC_PSTE, KC_NO,  KC_NO, KC_NO, KC_COPY, QK_REP, QK_AREP, KC_INS,
     68 		KC_NO, KC_AGIN, KC_NO,   KC_NO, KC_UNDO, KC_NO,  KC_NO, KC_NO, KC_NO,   KC_NO,  KC_SLCT, KC_NO,
     69 		KC_NO, KC_NO,   KC_TRNS, KC_NO, KC_CUT,  KC_NO,  KC_NO, KC_NO, KC_NO,   KC_NO,  KC_NO,   KC_NO,
     70 		KC_NO, KC_NO,   KC_NO,   KC_NO, KC_NO,   KC_CLR, KC_NO, KC_NO, KC_NO,   KC_NO,  KC_NO,   KC_NO
     71 	),
     72 	[_FUNC] = LAYOUT_ortho_4x12(
     73 		KC_F1,   KC_F2,  KC_F3,   KC_F4,  KC_F5,  KC_F6,  KC_F7,   KC_F8,  KC_F9,   KC_F10,  KC_F11,  KC_F12,
     74 		KC_F13,  KC_F14, KC_F15,  KC_F16, KC_F17, KC_F18, KC_F19,  KC_F20, KC_F21,  KC_F22,  KC_F23,  KC_F24,
     75 		KC_NO,   KC_NO,  KC_NO,   KC_NO,  KC_NO,  KC_NO,  KC_NO,   KC_NO,  RGB_VAD, RGB_VAI, KC_NO,   KC_MUTE,
     76 		KC_SYRQ, KC_NO,  KC_TRNS, KC_NO,  KC_NO,  KC_NO,  KC_PSCR, KC_NO,  KC_BRID, KC_BRIU, KC_VOLU, KC_VOLD
     77 	),
     78 };
     79 
     80 // https://docs.qmk.fm/#/feature_rgb_matrix
     81 void set_led_color(uint8_t layer,
     82 		   uint8_t row,
     83 		   uint8_t col,
     84 		   uint8_t led_min,
     85 		   uint8_t led_max) {
     86 	uint8_t i = g_led_config.matrix_co[row][col];
     87 	if (i == NO_LED || i < led_min || i >= led_max) {
     88 		return;
     89 	}
     90 
     91 	// FIX
     92 	bool underglow = HAS_FLAGS(g_led_config.flags[i], LED_FLAG_UNDERGLOW);
     93 	if (underglow) {
     94 		rgb_matrix_set_color(i, RGB_RED);
     95 		return;
     96 	}
     97 	bool unused = keymap_key_to_keycode(layer, (keypos_t){col,row}) <= KC_TRNS;
     98 	if (unused && !underglow) {
     99 		rgb_matrix_set_color(i, RGB_OFF);
    100 		return;
    101 	}
    102 
    103 	// Determine the hue and value of the layer.
    104 	HSV hsv = {0, 0, 0};
    105 
    106 	// Limit brightness to current value.
    107 	hsv.v = rgb_matrix_get_val();
    108 
    109 	// Set the color (hue and saturation).
    110 	switch (layer) {
    111         case _NAV:
    112 		hsv.h = RED;
    113 		hsv.s = 255;
    114 		break;
    115         case _MOUSE:
    116 		hsv.h = YELLOW;
    117 		hsv.s = 255;
    118 		break;
    119         case _NUM:
    120 		hsv.h = GREEN;
    121 		hsv.s = 255;
    122 		break;
    123         case _SYMBOL:
    124 		hsv.h = PURPLE;
    125 		hsv.s = 255;
    126 		break;
    127 	case _EDIT:
    128 		hsv.h = CYAN;
    129 		hsv.s = 255;
    130 		break;
    131         case _FUNC:
    132 		hsv.h = BLUE;
    133 		hsv.s = 255;
    134 		break;
    135 	default:
    136 		if (keymap_key_to_keycode(layer, (keypos_t){col,row}) == LT_NAV) {
    137 			hsv.h = RED;
    138 			hsv.s = 255;
    139 		} else if (keymap_key_to_keycode(layer, (keypos_t){col,row}) == LT_MOU) {
    140 			hsv.h = YELLOW;
    141 			hsv.s = 255;
    142 		} else if (keymap_key_to_keycode(layer, (keypos_t){col,row}) == LT_SYM) {
    143 			hsv.h = PURPLE;
    144 			hsv.s = 255;
    145 		} else if (keymap_key_to_keycode(layer, (keypos_t){col,row}) == LT_NUM) {
    146 			hsv.h = GREEN;
    147 			hsv.s = 255;
    148 		} else if (keymap_key_to_keycode(layer, (keypos_t){col,row}) == LT_EDT) {
    149 			hsv.h = CYAN;
    150 			hsv.s = 255;
    151 		} else if (keymap_key_to_keycode(layer, (keypos_t){col,row}) == LT_FUN) {
    152 			hsv.h = BLUE;
    153 			hsv.s = 255;
    154 		} else {
    155 			hsv.s = 0;
    156 		}
    157 	}
    158 
    159 	RGB rgb = hsv_to_rgb(hsv);
    160 	rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
    161 }
    162 
    163 bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
    164 	uint8_t layer = get_highest_layer(layer_state);
    165 	for (uint8_t row = 0; row < MATRIX_ROWS; ++row) {
    166 		for (uint8_t col = 0; col < MATRIX_COLS; ++col) {
    167 			set_led_color(layer, row, col, led_min, led_max);
    168 		}
    169 	}
    170 
    171 	return false;
    172 }