Add OS specific layers that can be switched with macros (#436)
This commit is contained in:
		
							parent
							
								
									bab6a8fde5
								
							
						
					
					
						commit
						ba116ceb49
					
				
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -21,8 +21,12 @@ extern keymap_config_t keymap_config; | ||||
| #define _RAISE 4 | ||||
| #define _FCT 5 | ||||
| #define _SETUP 6 | ||||
| #define _MUSIC 7 | ||||
| #define _MAC 7 | ||||
| #define _WIN 8 | ||||
| #define _LIN 9 | ||||
| #define _MICMUTE 16 | ||||
| #define _OS 17 | ||||
| 
 | ||||
| 
 | ||||
| // Macro name shortcuts
 | ||||
| #define QWERTY M(_QWERTY) | ||||
| @ -31,12 +35,19 @@ extern keymap_config_t keymap_config; | ||||
| #define LOWER M(_LOWER) | ||||
| #define RAISE M(_RAISE) | ||||
| #define FCT M(_FCT) | ||||
| #define OS M(_OS) | ||||
| #define MAC M(_MAC) | ||||
| #define WIN M(_WIN) | ||||
| #define LIN M(_LIN) | ||||
| #define MICMUTE M(_MICMUTE) | ||||
| 
 | ||||
| #define MACPRNT LGUI(LSFT(KC_3)) | ||||
| #define MACPRNT2 LGUI(LSFT(KC_4)) | ||||
| #define WINPRNT KC_PSCR | ||||
| #define WINPRNT2 LGUI(KC_PSCR) | ||||
| #define CYCLWIN LGUI(KC_GRV) | ||||
| #define MAC_SLEP LSFT(LCTL(KC_POWER)) | ||||
| #define MACSLEEP LSFT(LCTL(KC_POWER)) | ||||
| #define WINSLEEP KC_SLEP | ||||
| 
 | ||||
| // Fillers to make layering more clear
 | ||||
| #define _______ KC_TRNS | ||||
| @ -48,21 +59,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||
|   {KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC}, | ||||
|   {KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT}, | ||||
|   {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT }, | ||||
|   {FCT,     KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT} | ||||
|   {OS,     KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT} | ||||
| }, | ||||
| 
 | ||||
| [_COLEMAK] = { | ||||
|   {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC}, | ||||
|   {KC_ESC,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT}, | ||||
|   {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT }, | ||||
|   {FCT,     KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT} | ||||
|   {OS,      KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT} | ||||
| }, | ||||
| 
 | ||||
| [_DVORAK] = { | ||||
|   {KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSPC}, | ||||
|   {KC_ESC,  KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_SLSH}, | ||||
|   {KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_ENT }, | ||||
|   {FCT,     KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT} | ||||
|   {OS,      KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT} | ||||
| }, | ||||
| 
 | ||||
| [_LOWER] = { | ||||
| @ -76,29 +87,43 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||
|   {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC}, | ||||
|   {_______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS}, | ||||
|   {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, | ||||
|   {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} | ||||
| }, | ||||
| 
 | ||||
| [_FCT] = { /* Function */ | ||||
|   {BL_STEP, MAC_SLEP,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_DELT}, | ||||
|   {_______, MICMUTE, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, XXXXXXX, KC_F5,   KC_F6,   KC_F7,   KC_F8,   MACPRNT}, | ||||
|   {_______, CYCLWIN, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX, KC_F9,   KC_F10,  KC_F11,  KC_F12, MACPRNT2}, | ||||
|   {FCT,     _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_PGDOWN,KC_PGUP,KC_END } | ||||
|   {_RAISE,  _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} | ||||
| }, | ||||
| 
 | ||||
| [_SETUP] = { /* Setup */ | ||||
|   {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, | ||||
|   {_______, _______, _______, _______, _______, _______, _______, QWERTY,  COLEMAK, DVORAK,  _______, _______}, | ||||
|   {_______, _______, _______, WIN,     MAC,     _______, _______, QWERTY,  COLEMAK, DVORAK,  _______, _______}, | ||||
|   {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, | ||||
|   {_______, _______, _______, _______, _______, RESET,   RESET,   _______, _______, _______, _______, _______} | ||||
| }, | ||||
| [_MAC] = { /* Mac */ | ||||
|   {CYCLWIN,MACSLEEP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_DELT}, | ||||
|   {_______, MICMUTE, KC_MUTE, KC_VOLD, KC_VOLU, MACPRNT,MACPRNT2, KC_F5,   KC_F6,   KC_F7,   KC_F8,   XXXXXXX}, | ||||
|   {_______, BL_STEP, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX, KC_F9,   KC_F10,  KC_F11,  KC_F12,  XXXXXXX}, | ||||
|   {_______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_PGDOWN,KC_PGUP,KC_END } | ||||
| }, | ||||
| [_WIN] = { /* Windows */ | ||||
|   {CYCLWIN,WINSLEEP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_DELT}, | ||||
|   {_______, MICMUTE, KC_MUTE, KC_VOLD, KC_VOLU, WINPRNT,WINPRNT2, KC_F5,   KC_F6,   KC_F7,   KC_F8,   XXXXXXX}, | ||||
|   {_______, BL_STEP, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX, KC_F9,   KC_F10,  KC_F11,  KC_F12,  XXXXXXX}, | ||||
|   {_______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_PGDOWN,KC_PGUP,KC_END } | ||||
| }, | ||||
| [_LIN] = { /* Linux */ | ||||
|   {KC_L,    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, | ||||
|   {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, | ||||
|   {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, | ||||
|   {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} | ||||
| } | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| int currentOs = _MAC; | ||||
| const uint16_t PROGMEM fn_actions[] = { | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| #ifdef AUDIO_ENABLE | ||||
| 
 | ||||
| float tone_startup[][2] = { | ||||
|   {440.0*pow(2.0,(31)/12.0), 12}, | ||||
|   {440.0*pow(2.0,(28)/12.0), 8}, | ||||
| @ -188,7 +213,23 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) | ||||
|             unregister_code(KC_RGUI); | ||||
|           }  | ||||
|         break; | ||||
| 
 | ||||
|         case _OS: | ||||
|           if (record->event.pressed) { | ||||
|             layer_on(currentOs); | ||||
|           } else { | ||||
|             layer_off(_MAC); | ||||
|             layer_off(_WIN); | ||||
|             layer_off(_LIN); | ||||
|           } | ||||
|         break; | ||||
|         case _MAC: | ||||
|         case _WIN: | ||||
|         case _LIN: | ||||
|           if (record->event.pressed) { | ||||
|             layer_off(currentOs); | ||||
|             currentOs = id; | ||||
|           } | ||||
|         break;         | ||||
|       } | ||||
|     return MACRO_NONE; | ||||
| }; | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user