keymap.c (6406B)
1 #include QMK_KEYBOARD_H 2 3 enum custom_keycodes { 4 M_TGLHF = SAFE_RANGE, 5 M_TGG 6 }; 7 8 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 9 10 LAYOUT( 11 LT(3, KC_MSTP), KC_VOLU, KC_MPLY, KC_MPRV, KC_VOLD, KC_MNXT), 12 13 LAYOUT( 14 LT(3, KC_ESC), C(KC_Z), C(S(KC_Z)), C(KC_X), C(KC_C), C(KC_V)), 15 16 LAYOUT( 17 LT(3, KC_1), KC_2, KC_3, KC_4, M_TGLHF, M_TGG), 18 19 LAYOUT( 20 KC_TRNS, KC_TRNS, QK_BOOT, TO(0), TO(1), TO(2)), 21 22 LAYOUT( 23 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), 24 25 LAYOUT( 26 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), 27 28 LAYOUT( 29 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), 30 31 LAYOUT( 32 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), 33 34 LAYOUT( 35 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), 36 37 LAYOUT( 38 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), 39 40 LAYOUT( 41 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), 42 43 LAYOUT( 44 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), 45 46 LAYOUT( 47 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), 48 49 LAYOUT( 50 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), 51 52 LAYOUT( 53 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), 54 55 LAYOUT( 56 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) 57 58 }; 59 60 void set_switch_led(int ledId, bool state) { 61 if(state) { 62 switch(ledId) { 63 case 1: 64 gpio_write_pin_high(D7); 65 break; 66 case 2: 67 if(gpio_read_pin(B7)) { 68 gpio_write_pin_high(C6); 69 } else { 70 gpio_write_pin_high(C7); 71 } 72 break; 73 case 3: 74 gpio_write_pin_high(D4); 75 break; 76 case 4: 77 gpio_write_pin_high(E6); 78 break; 79 case 5: 80 gpio_write_pin_high(B4); 81 break; 82 case 6: 83 gpio_write_pin_high(D6); 84 break; 85 } 86 } else { 87 switch(ledId) { 88 case 1: 89 gpio_write_pin_low(D7); 90 break; 91 case 2: 92 if(gpio_read_pin(B7)) { 93 gpio_write_pin_low(C6); 94 } else { 95 gpio_write_pin_low(C7); 96 } 97 break; 98 case 3: 99 gpio_write_pin_low(D4); 100 break; 101 case 4: 102 gpio_write_pin_low(E6); 103 break; 104 case 5: 105 gpio_write_pin_low(B4); 106 break; 107 case 6: 108 gpio_write_pin_low(D6); 109 break; 110 } 111 } 112 } 113 114 115 void set_layer_led(int layerId) { 116 gpio_write_pin_high(D5); 117 gpio_write_pin_low(B6); 118 gpio_write_pin_high(B0); 119 switch(layerId) { 120 case 0: 121 gpio_write_pin_low(D5); 122 break; 123 case 1: 124 gpio_write_pin_high(B6); 125 break; 126 case 2: 127 gpio_write_pin_low(B0); 128 break; 129 } 130 } 131 132 void led_init_ports_user(void) { 133 // led voor switch #1 134 gpio_set_pin_output(D7); 135 gpio_write_pin_low(D7); 136 137 // led voor switch #2 138 gpio_set_pin_output(C6); 139 gpio_set_pin_output(C7); 140 gpio_write_pin_low(C6); 141 gpio_write_pin_low(C7); 142 143 // led voor switch #3 144 gpio_set_pin_output(D4); 145 gpio_write_pin_low(D4); 146 147 // led voor switch #4 148 gpio_set_pin_output(E6); 149 gpio_write_pin_low(E6); 150 151 // led voor switch #5 152 gpio_set_pin_output(B4); 153 gpio_write_pin_low(B4); 154 155 // led voor switch #6 156 gpio_set_pin_output(D6); 157 gpio_write_pin_low(D6); 158 159 /* 160 gpio_set_pin_output(D7); 161 gpio_write_pin_high(D7); 162 163 gpio_set_pin_output(C6); 164 gpio_write_pin_high(C6); 165 166 gpio_set_pin_output(D4); 167 gpio_write_pin_high(D4); 168 169 gpio_set_pin_output(E6); 170 gpio_write_pin_high(E6); 171 172 gpio_set_pin_output(B4); 173 gpio_write_pin_high(B4); 174 175 gpio_set_pin_output(D6); 176 gpio_write_pin_high(D6); 177 // */ 178 179 gpio_set_pin_output(D5); 180 gpio_set_pin_output(B6); 181 gpio_set_pin_output(B0); 182 //led_set_layer(0); 183 } 184 185 void matrix_init_user(void) { 186 led_init_ports_user(); 187 188 gpio_write_pin_high(B7); 189 gpio_set_pin_input(B7); 190 191 gpio_write_pin_high(D7); 192 gpio_write_pin_high(C6); 193 gpio_write_pin_high(C7); 194 gpio_write_pin_high(D4); 195 gpio_write_pin_high(E6); 196 gpio_write_pin_high(B4); 197 gpio_write_pin_high(D6); 198 199 set_layer_led(0); 200 } 201 202 /* 203 * NOTE: 204 * 205 * In case you don't understand this coding stuff, please 206 * feel free to mail me or post something 207 * at the /r/knops subreddit and I will configure the code as 208 * you wish for your needs to make the LEDs do what you want :-). 209 * 210 * Contact me at: support@knops.io 211 * 212 * 213 * Knops Mini LED Numbers: 214 * _____ _____ _____ 215 * | | | | | | 216 * | 1 | | 2 | | 3 | <--- 217 * |_____| |_____| |_____| | These LEDs are called 'Switch LEDs' 218 * _____ _____ _____ |----- To turn on/off these leds, use: 219 * | | | | | | | set_switch_led( [1-6], [true/false]); 220 * | 4 | | 5 | | 6 | <--- 221 * |_____| |_____| |_____| 222 * 223 * < 0 > < 1 > < 2 > <--- These front-LEDs are called 'Layer LEDs' 224 * To turn one of them on, use: 225 * set_layer_led( [0-2] ); 226 * 227 */ 228 229 /* 230 * This function led_set_layer gets called when you switch between layers. 231 * It allows you to turn on and off leds for each different layer and do 232 * other cool stuff. Currently the GUI does not have LED support. I am working 233 * on that, but takes time. 234 */ 235 void led_set_layer(int layer) { 236 switch(layer) { 237 238 /** 239 * Here is an example to turn LEDs on and of. By default: 240 * - the LEDs are turned on in layer 0 241 * - the LEDs are turned off in layer 1 242 * - the LEDs don't change from state for layer 2 243 */ 244 245 case 0: 246 set_layer_led(0); // Turn on only the first/left layer indicator 247 set_switch_led(1, true); 248 set_switch_led(2, true); 249 set_switch_led(3, true); 250 set_switch_led(4, true); 251 set_switch_led(5, true); 252 set_switch_led(6, true); 253 break; 254 255 case 1: 256 set_layer_led(1); // Turn on only the second/middle layer indicator 257 set_switch_led(1, false); 258 set_switch_led(2, false); 259 set_switch_led(3, false); 260 set_switch_led(4, false); 261 set_switch_led(5, false); 262 set_switch_led(6, false); 263 break; 264 265 case 2: 266 set_layer_led(2); // Turn on only the third/right layer indicator 267 268 // Keep leds for layer two in their current state, since we don't use set_switch_led(SWITCH_ID, TRUE_OR_FALSE) 269 270 break; 271 } 272 } 273 274 bool process_record_user (uint16_t keycode, keyrecord_t *record) { 275 switch(keycode) { 276 case TO(0): 277 if (record->event.pressed) { 278 led_set_layer(0); 279 } 280 break; 281 case TO(1): 282 if (record->event.pressed) { 283 led_set_layer(1); 284 } 285 break; 286 case TO(2): 287 if (record->event.pressed) { 288 led_set_layer(2); 289 } 290 break; 291 case M_TGLHF: 292 if (record->event.pressed) { 293 SEND_STRING("tglhf"); 294 tap_code(KC_ENT); 295 } 296 return false; 297 case M_TGG: 298 if (record->event.pressed) { 299 SEND_STRING("tgg"); 300 tap_code(KC_ENT); 301 } 302 return false; 303 } 304 return true; 305 }