You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					137 lines
				
				5.0 KiB
			
		
		
			
		
	
	
					137 lines
				
				5.0 KiB
			|   
											8 years ago
										 | #include QMK_KEYBOARD_H
 | ||
|   
											9 years ago
										 | #include "debug.h"
 | ||
|  | #include "action_layer.h"
 | ||
|  | #include "version.h"
 | ||
|  | 
 | ||
|  | #define BASE 0 // default layer
 | ||
|  | #define SYMB 1 // symbols
 | ||
|  | #define MDIA 2 // media keys
 | ||
|  | 
 | ||
|  | enum custom_keycodes { | ||
|  |   PLACEHOLDER = SAFE_RANGE, // can always be here
 | ||
|  |   EPRM, | ||
|  |   VRSN, | ||
|  |   RGB_SLD | ||
|  | }; | ||
|  | 
 | ||
|  | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
|  | /* Keymap 0: Basic layer
 | ||
|  |  * | ||
|  |  * ,--------------------------------------------------.           ,--------------------------------------------------. | ||
|  |  * |   =    |   1  |   2  |   3  |   4  |   5  | LEFT |           | RIGHT|   6  |   7  |   8  |   9  |   0  |   -    | | ||
|  |  * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------| | ||
|  |  * | Del    |   Q  |   W  |   E  |   R  |   T  |  L1  |           |  L1  |   Y  |   U  |   I  |   O  |   P  |   \    | | ||
|  |  * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------| | ||
|  |  * | BkSp   |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |; / L2|' / Cmd | | ||
|  |  * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------| | ||
|  |  * | LShift |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl| RShift |
 | ||
|  |  * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------' | ||
|  |  *   |Grv/L1|  '"  |AltShf| Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  | | ||
|  |  *   `----------------------------------'                                       `----------------------------------' | ||
|  |  *                                        ,-------------.       ,-------------. | ||
|  |  *                                        | App  | LGui |       | Alt  |Ctrl/Esc| | ||
|  |  *                                 ,------|------|------|       |------+--------+------. | ||
|  |  *                                 |      |      | Home |       | PgUp |        |      | | ||
|  |  *                                 | Space|Backsp|------|       |------|  Tab   |Enter | | ||
|  |  *                                 |      |ace   | End  |       | PgDn |        |      | | ||
|  |  *                                 `--------------------'       `----------------------' | ||
|  |  */ | ||
|  | // If it accepts an argument (i.e, is a function), it doesn't need KC_.
 | ||
|  | // Otherwise, it needs KC_*
 | ||
|   
											8 years ago
										 | [BASE] = LAYOUT_ergodox(  // layer 0 : default
 | ||
|   
											9 years ago
										 |         // left hand
 | ||
|  |         EPRM,         EPRM,         EPRM,   EPRM,   EPRM,   EPRM,   EPRM, | ||
|  |         EPRM,        EPRM,         EPRM,   EPRM,   EPRM,   EPRM,   EPRM, | ||
|  |         EPRM,        EPRM,         EPRM,   EPRM,   EPRM,   EPRM, | ||
|  |         EPRM,        EPRM,  EPRM,   EPRM,   EPRM,   EPRM,   EPRM, | ||
|  |         EPRM,        EPRM,      EPRM,  EPRM,EPRM, | ||
|  |                                               EPRM,  EPRM, | ||
|  |                                                               EPRM, | ||
|  |                                                EPRM,EPRM,EPRM, | ||
|  |         // right hand
 | ||
|  |              EPRM,     EPRM,   EPRM,  EPRM,   EPRM,   EPRM,             EPRM, | ||
|  |              EPRM,    EPRM,   EPRM,  EPRM,   EPRM,   EPRM,             EPRM, | ||
|  |                           EPRM,   EPRM,  EPRM,   EPRM,   EPRM,EPRM, | ||
|  |              EPRM,EPRM,   EPRM,  EPRM,EPRM, EPRM,   EPRM, | ||
|  |                                   EPRM, EPRM,EPRM,EPRM,          EPRM, | ||
|  |              EPRM,        EPRM, | ||
|  |              EPRM, | ||
|  |              EPRM,EPRM, EPRM | ||
|  |     ) | ||
|  | }; | ||
|  | 
 | ||
|  | const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) | ||
|  | { | ||
|  |   // MACRODOWN only works in this function
 | ||
|  |       switch(id) { | ||
|  |         case 0: | ||
|  |         if (record->event.pressed) { | ||
|  |           SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); | ||
|  |         } | ||
|  |         break; | ||
|  |         case 1: | ||
|  |         if (record->event.pressed) { // For resetting EEPROM
 | ||
|  |           eeconfig_init(); | ||
|  |         } | ||
|  |         break; | ||
|  |       } | ||
|  |     return MACRO_NONE; | ||
|  | }; | ||
|  | 
 | ||
|  | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | ||
|  |   switch (keycode) { | ||
|  |     // dynamically generate these.
 | ||
|  |     case EPRM: | ||
|  |       if (record->event.pressed) { | ||
|  |         eeconfig_init(); | ||
|  |       } | ||
|  |       return false; | ||
|  |       break; | ||
|  |     case VRSN: | ||
|  |       if (record->event.pressed) { | ||
|  |         SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); | ||
|  |       } | ||
|  |       return false; | ||
|  |       break; | ||
|  |     case RGB_SLD: | ||
|  |       if (record->event.pressed) { | ||
|  |         #ifdef RGBLIGHT_ENABLE
 | ||
|  |           rgblight_mode(1); | ||
|  |         #endif
 | ||
|  |       } | ||
|  |       return false; | ||
|  |       break; | ||
|  |   } | ||
|  |   return true; | ||
|  | } | ||
|  | 
 | ||
|  | // Runs just one time when the keyboard initializes.
 | ||
|  | void matrix_init_user(void) { | ||
|   
											9 years ago
										 |   eeconfig_init(); | ||
|   
											9 years ago
										 | }; | ||
|  | 
 | ||
|  | 
 | ||
|  | // Runs constantly in the background, in a loop.
 | ||
|  | void matrix_scan_user(void) { | ||
|  | 
 | ||
|  |     uint8_t layer = biton32(layer_state); | ||
|  | 
 | ||
|  |     ergodox_board_led_off(); | ||
|  |     ergodox_right_led_1_off(); | ||
|  |     ergodox_right_led_2_off(); | ||
|  |     ergodox_right_led_3_off(); | ||
|  |     switch (layer) { | ||
|  |       // TODO: Make this relevant to the ErgoDox EZ.
 | ||
|  |         case 1: | ||
|  |             ergodox_right_led_1_on(); | ||
|  |             break; | ||
|  |         case 2: | ||
|  |             ergodox_right_led_2_on(); | ||
|  |             break; | ||
|  |         default: | ||
|  |             // none
 | ||
|  |             break; | ||
|  |     } | ||
|  | 
 | ||
|  | }; |