add bdn9/eosti keymap (#7105)
This commit is contained in:
		
				
					committed by
					
						 Joel Challis
						Joel Challis
					
				
			
			
				
	
			
			
			
						parent
						
							f87908228a
						
					
				
				
					commit
					454c99d128
				
			
							
								
								
									
										1
									
								
								keyboards/keebio/bdn9/keymaps/eosti/config.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								keyboards/keebio/bdn9/keymaps/eosti/config.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| #define TAPPING_TERM 175 | ||||
							
								
								
									
										161
									
								
								keyboards/keebio/bdn9/keymaps/eosti/keymap.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										161
									
								
								keyboards/keebio/bdn9/keymaps/eosti/keymap.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,161 @@ | ||||
| #include QMK_KEYBOARD_H | ||||
|  | ||||
| enum layer_names { | ||||
|     _BASE, | ||||
|     _MACRO, | ||||
|     _MOD | ||||
| }; | ||||
|  | ||||
| enum custom_keycodes { | ||||
|     M801 = SAFE_RANGE, | ||||
|     M802, | ||||
|     M803, | ||||
|     M804, | ||||
|     M805, | ||||
|     M806, | ||||
|     MAIL_C | ||||
| }; | ||||
|  | ||||
| // tapdance keycodes | ||||
| enum td_keycodes { | ||||
|     LAY  // Our example key: `LALT` when held, `(` when tapped. Add additional keycodes for each tapdance. | ||||
| }; | ||||
|  | ||||
| // define a type containing as many tapdance states as you need | ||||
| typedef enum { | ||||
|   SINGLE_TAP, | ||||
|   SINGLE_HOLD, | ||||
| } td_state_t; | ||||
|  | ||||
| // create a global instance of the tapdance state type | ||||
| static td_state_t td_state; | ||||
|  | ||||
| // declare your tapdance functions: | ||||
|  | ||||
| // function to determine the current tapdance state | ||||
| int cur_dance (qk_tap_dance_state_t *state); | ||||
|  | ||||
| // `finished` and `reset` functions for each tapdance keycode | ||||
| void altlp_finished (qk_tap_dance_state_t *state, void *user_data); | ||||
| void altlp_reset (qk_tap_dance_state_t *state, void *user_data); | ||||
|  | ||||
| bool process_record_user(uint16_t keycode, keyrecord_t *record) { | ||||
|   switch (keycode) { | ||||
|     case M801: | ||||
|       if (record->event.pressed) { | ||||
|         SEND_STRING("M801" SS_TAP(X_ENTER)); | ||||
|       } | ||||
|       break; | ||||
|     case M802: | ||||
|       if (record->event.pressed) { | ||||
|           SEND_STRING("M802" SS_TAP(X_ENTER)); | ||||
|       } | ||||
|       break; | ||||
|     case M803: | ||||
|       if (record->event.pressed) { | ||||
|           SEND_STRING("M803" SS_TAP(X_ENTER)); | ||||
|       } | ||||
|       break; | ||||
|      case M804: | ||||
|       if (record->event.pressed) { | ||||
|           SEND_STRING("M804" SS_TAP(X_ENTER)); | ||||
|       } | ||||
|       break;  | ||||
|     case M805: | ||||
|       if (record->event.pressed) { | ||||
|           SEND_STRING("M805" SS_TAP(X_ENTER)); | ||||
|       } | ||||
|       break; | ||||
|     case M806: | ||||
|       if (record->event.pressed) { | ||||
|           SEND_STRING("M806" SS_TAP(X_ENTER)); | ||||
|       } | ||||
|       break; | ||||
|     case MAIL_C: | ||||
|       if (record->event.pressed) { | ||||
|           SEND_STRING(SS_TAP(X_ENTER) SS_TAP(X_DOWN) SS_TAP(X_DOWN) SS_TAP(X_ENTER)); | ||||
|       } | ||||
|       break; | ||||
|   } | ||||
|  | ||||
|   return true; | ||||
| }; | ||||
|  | ||||
| #define EX_ARR LCTL(LSFT(KC_ENTER)) | ||||
|  | ||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||
|     [_BASE] = LAYOUT( | ||||
|     // ┌────────┬────────┬────────┐ | ||||
|          KC_MUTE, KC_UP,  TD(LAY), | ||||
|     // ├────────┼────────┼────────┤ | ||||
|          KC_LEFT, KC_DOWN, KC_RGHT, | ||||
|     // ├────────┼────────┼────────┤ | ||||
|          KC_NO,   KC_NO,   KC_NO | ||||
|     // └────────┴────────┴────────┘ | ||||
|         ), | ||||
|     [_MACRO] = LAYOUT( | ||||
|     // ┌────────┬────────┬────────┐ | ||||
|         _______,  KC_SPC, TG(_MACRO), | ||||
|     // ├────────┼────────┼────────┤ | ||||
|           M801,    M802,    M803, | ||||
|     // ├────────┼────────┼────────┤ | ||||
|          MAIL_C,  KC_NO,   EX_ARR | ||||
|     // └────────┴────────┴────────┘ | ||||
|         ), | ||||
|     [_MOD] = LAYOUT( | ||||
|     // ┌────────┬────────┬────────┐ | ||||
|         _______,  BL_STEP,TG(_MOD), | ||||
|     // ├────────┼────────┼────────┤ | ||||
|          KC_NO,  RGB_MOD,  KC_NO, | ||||
|     // ├────────┼────────┼────────┤ | ||||
|          KC_NO,   KC_NO,   KC_NO | ||||
|     // └────────┴────────┴────────┘ | ||||
|         ) | ||||
| }; | ||||
|  | ||||
| void encoder_update_user(uint8_t index, bool clockwise) { | ||||
|     if (index == 0) { | ||||
|         if (clockwise) { | ||||
|             tap_code(KC_VOLD); | ||||
|         } else { | ||||
|             tap_code(KC_VOLU); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| // determine the tapdance state to return | ||||
| int cur_dance (qk_tap_dance_state_t *state) { | ||||
|   if (state->count == 1) { | ||||
|     if (state->interrupted || !state->pressed) { return SINGLE_TAP; } | ||||
|     else { return SINGLE_HOLD; } | ||||
|   } else { return 3; } // any number higher than the maximum state value you return above | ||||
| } | ||||
|  | ||||
| // handle the possible states for each tapdance keycode you define: | ||||
|  | ||||
| void altlp_finished (qk_tap_dance_state_t *state, void *user_data) { | ||||
|   td_state = cur_dance(state); | ||||
|   switch (td_state) { | ||||
|     case SINGLE_TAP: | ||||
|       layer_on(_MACRO); | ||||
|       break; | ||||
|     case SINGLE_HOLD: | ||||
|       layer_on(_MOD); | ||||
|       break; | ||||
|   } | ||||
| } | ||||
|  | ||||
| void altlp_reset (qk_tap_dance_state_t *state, void *user_data) { | ||||
|   switch (td_state) { | ||||
|     case SINGLE_TAP: | ||||
|       break; | ||||
|     case SINGLE_HOLD: | ||||
|       layer_off(_MOD); | ||||
|       break; | ||||
|   } | ||||
| } | ||||
|  | ||||
| // define `ACTION_TAP_DANCE_FN_ADVANCED()` for each tapdance keycode, passing in `finished` and `reset` functions | ||||
| qk_tap_dance_action_t tap_dance_actions[] = { | ||||
|   [LAY] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, altlp_finished, altlp_reset) | ||||
| }; | ||||
							
								
								
									
										9
									
								
								keyboards/keebio/bdn9/keymaps/eosti/readme.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								keyboards/keebio/bdn9/keymaps/eosti/readme.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | ||||
| # EosTi's BDN9 Macropad Layout | ||||
|  | ||||
| ## Features | ||||
|  | ||||
| - Single encoder in the top left to control volume, push to mute | ||||
| - Arrow keys on home layer | ||||
| - Tap upper right to toggle to macro layer | ||||
| - Hold upper right to change keyboard functions (aka RGB) | ||||
| - 520 entire bytes free! | ||||
							
								
								
									
										1
									
								
								keyboards/keebio/bdn9/keymaps/eosti/rules.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								keyboards/keebio/bdn9/keymaps/eosti/rules.mk
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| TAP_DANCE_ENABLE=yes | ||||
		Reference in New Issue
	
	Block a user