mirror of
				https://github.com/mfulz/qmk_firmware.git
				synced 2025-10-31 21:32:31 +01:00 
			
		
		
		
	Implement greek layers on my Promethium layout
This commit is contained in:
		
							parent
							
								
									ec05f65421
								
							
						
					
					
						commit
						c5ab0b2b61
					
				| @ -29,6 +29,8 @@ enum layers { | |||||||
|   _NUM, |   _NUM, | ||||||
|   _FUNC, |   _FUNC, | ||||||
|   _EMOJI, |   _EMOJI, | ||||||
|  |   _GREEKU, | ||||||
|  |   _GREEKL, | ||||||
|   _GUI, |   _GUI, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| @ -44,6 +46,7 @@ enum planck_keycodes { | |||||||
|   FUNC, |   FUNC, | ||||||
|   EMOJI, |   EMOJI, | ||||||
|   GUI, |   GUI, | ||||||
|  |   GREEK, | ||||||
| 
 | 
 | ||||||
|   // os switchers
 |   // os switchers
 | ||||||
|   LINUX, |   LINUX, | ||||||
| @ -106,6 +109,59 @@ enum unicode_name { | |||||||
|   SUN, // sun
 |   SUN, // sun
 | ||||||
|   MOON, // moon
 |   MOON, // moon
 | ||||||
|   SKULL, // skull
 |   SKULL, // skull
 | ||||||
|  | 
 | ||||||
|  |   // greek letters
 | ||||||
|  |   UALPH, | ||||||
|  |   UBETA, | ||||||
|  |   UGAMM, | ||||||
|  |   UDELT, | ||||||
|  |   UEPSI, | ||||||
|  |   UZETA, | ||||||
|  |   UETA, | ||||||
|  |   UTHET, | ||||||
|  |   UIOTA, | ||||||
|  |   UKAPP, | ||||||
|  |   ULAMB, | ||||||
|  |   UMU, | ||||||
|  |   UNU, | ||||||
|  |   UXI, | ||||||
|  |   UOMIC, | ||||||
|  |   UPI, | ||||||
|  |   URHO, | ||||||
|  |   USIGM, | ||||||
|  |   UTAU, | ||||||
|  |   UUPSI, | ||||||
|  |   UPHI, | ||||||
|  |   UCHI, | ||||||
|  |   UPSI, | ||||||
|  |   UOMEG, | ||||||
|  | 
 | ||||||
|  |   LALPH, | ||||||
|  |   LBETA, | ||||||
|  |   LGAMM, | ||||||
|  |   LDELT, | ||||||
|  |   LEPSI, | ||||||
|  |   LZETA, | ||||||
|  |   LETA, | ||||||
|  |   LTHET, | ||||||
|  |   LIOTA, | ||||||
|  |   LKAPP, | ||||||
|  |   LLAMB, | ||||||
|  |   LMU, | ||||||
|  |   LNU, | ||||||
|  |   LXI, | ||||||
|  |   LOMIC, | ||||||
|  |   LPI, | ||||||
|  |   LRHO, | ||||||
|  |   LSIGM, | ||||||
|  |   LTAU, | ||||||
|  |   LUPSI, | ||||||
|  |   LPHI, | ||||||
|  |   LCHI, | ||||||
|  |   LPSI, | ||||||
|  |   LOMEG, | ||||||
|  | 
 | ||||||
|  |   FSIGM, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| const uint32_t PROGMEM unicode_map[] = { | const uint32_t PROGMEM unicode_map[] = { | ||||||
| @ -156,6 +212,57 @@ const uint32_t PROGMEM unicode_map[] = { | |||||||
|   [SUN] = 0x2600, |   [SUN] = 0x2600, | ||||||
|   [MOON] = 0x1F314, |   [MOON] = 0x1F314, | ||||||
|   [SKULL] = 0x1F480, |   [SKULL] = 0x1F480, | ||||||
|  | 
 | ||||||
|  |   // greek letters
 | ||||||
|  |   [UALPH] = 0x0391, | ||||||
|  |   [UBETA] = 0x0392, | ||||||
|  |   [UGAMM] = 0x0393, | ||||||
|  |   [UDELT] = 0x0394, | ||||||
|  |   [UEPSI] = 0x0395, | ||||||
|  |   [UZETA] = 0x0396, | ||||||
|  |   [UETA] = 0x0397, | ||||||
|  |   [UTHET] = 0x0398, | ||||||
|  |   [UIOTA] = 0x0399, | ||||||
|  |   [UKAPP] = 0x039A, | ||||||
|  |   [ULAMB] = 0x039B, | ||||||
|  |   [UMU] = 0x039C, | ||||||
|  |   [UNU] = 0x039D, | ||||||
|  |   [UXI] = 0x039E, | ||||||
|  |   [UOMIC] = 0x039F, | ||||||
|  |   [UPI] = 0x03A0, | ||||||
|  |   [URHO] = 0x03A1, | ||||||
|  |   [USIGM] = 0x03A3, | ||||||
|  |   [UTAU] = 0x03A4, | ||||||
|  |   [UUPSI] = 0x03A5, | ||||||
|  |   [UPHI] = 0x03A6, | ||||||
|  |   [UCHI] = 0x03A7, | ||||||
|  |   [UPSI] = 0x03A8, | ||||||
|  |   [UOMEG] = 0x03A9, | ||||||
|  |   [LALPH] = 0x03B1, | ||||||
|  |   [LBETA] = 0x03B2, | ||||||
|  |   [LGAMM] = 0x03B3, | ||||||
|  |   [LDELT] = 0x03B4, | ||||||
|  |   [LEPSI] = 0x03B5, | ||||||
|  |   [LZETA] = 0x03B6, | ||||||
|  |   [LETA] = 0x03B7, | ||||||
|  |   [LTHET] = 0x03B8, | ||||||
|  |   [LIOTA] = 0x03B9, | ||||||
|  |   [LKAPP] = 0x03BA, | ||||||
|  |   [LLAMB] = 0x03BB, | ||||||
|  |   [LMU] = 0x03BC, | ||||||
|  |   [LNU] = 0x03BD, | ||||||
|  |   [LXI] = 0x03BE, | ||||||
|  |   [LOMIC] = 0x03BF, | ||||||
|  |   [LPI] = 0x03C0, | ||||||
|  |   [LRHO] = 0x03C1, | ||||||
|  |   [LSIGM] = 0x03C3, | ||||||
|  |   [LTAU] = 0x03C4, | ||||||
|  |   [LUPSI] = 0x03C5, | ||||||
|  |   [LPHI] = 0x03C6, | ||||||
|  |   [LCHI] = 0x03C7, | ||||||
|  |   [LPSI] = 0x03C8, | ||||||
|  |   [LOMEG] = 0x03C9, | ||||||
|  |   [FSIGM] = 0x03C2, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -165,7 +272,6 @@ const uint32_t PROGMEM unicode_map[] = { | |||||||
| // #undef KC_RSFT
 | // #undef KC_RSFT
 | ||||||
| // #define KC_RSFT MT(MOD_LSFT, KC_EQL)
 | // #define KC_RSFT MT(MOD_LSFT, KC_EQL)
 | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| // hybrid right-gui & scroll lock (mapped to Compose in OS)
 | // hybrid right-gui & scroll lock (mapped to Compose in OS)
 | ||||||
| #undef KC_RCTL | #undef KC_RCTL | ||||||
| #define KC_RCTL MT(MOD_LCTL, KC_SLCK) | #define KC_RCTL MT(MOD_LCTL, KC_SLCK) | ||||||
| @ -420,14 +526,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||||||
|  * |------+------+------+------+------+------|------+------+------+------+------+------| |  * |------+------+------+------+------+------|------+------+------+------+------+------| | ||||||
|  * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Shift | |  * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Shift | | ||||||
|  * |------+------+------+------+------+------+------+------+------+------+------+------| |  * |------+------+------+------+------+------+------+------+------+------+------+------| | ||||||
|  * | Ctrl | GUI  | Alt  | Punc | Num  |    Space    | Func |Emoji |AltGr | GUI  | Ctrl | |  * | Ctrl | Alt  | GUI  | Punc | Num  |    Space    | Func |Emoji |Greek |AltGr | Ctrl | | ||||||
|  * `-----------------------------------------------------------------------------------' |  * `-----------------------------------------------------------------------------------' | ||||||
|  */ |  */ | ||||||
| [_QWERTY] = KEYMAP( | [_QWERTY] = KEYMAP( | ||||||
|   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_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_QUOT, KC_ENT , |   KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_QUOT, KC_ENT , | ||||||
|   KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT, |   KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT, | ||||||
|   KC_LCTL, KC_LGUI, KC_LALT, PUNC,    NUM,     KC_SPC,  KC_SPC,  FUNC,    EMOJI,   KC_RALT, KC_RGUI, KC_RCTL |   KC_LCTL, KC_LALT, KC_LGUI, PUNC,    NUM,     KC_SPC,  KC_SPC,  FUNC,    EMOJI,   GREEK,   KC_RALT, KC_RCTL | ||||||
| ), | ), | ||||||
| 
 | 
 | ||||||
| /* Colemak
 | /* Colemak
 | ||||||
| @ -466,6 +572,42 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||||||
|   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ |   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ | ||||||
| ), | ), | ||||||
| 
 | 
 | ||||||
|  | /* Uppercase Greek
 | ||||||
|  |  * ,-----------------------------------------------------------------------------------. | ||||||
|  |  * |      |      |      |      |      |      |      |      |      |      |      |      | | ||||||
|  |  * |------+------+------+------+------+-------------+------+------+------+------+------| | ||||||
|  |  * |      |      |      |      |      |      |      |      |      |      |      |      | | ||||||
|  |  * |------+------+------+------+------+------+------+------+------+------+------+------| | ||||||
|  |  * |      |      |      |      |      |      |      |      |      |      |      |      | | ||||||
|  |  * |------+------+------+------+------+------+------+------+------+------+------+------| | ||||||
|  |  * |      |      |      |      |      |      |      |      |      |      |      |      | | ||||||
|  |  * `-----------------------------------------------------------------------------------' | ||||||
|  |  */ | ||||||
|  | [_GREEKU] = { | ||||||
|  |   _______, _______, _______,X(UEPSI), X(URHO), X(UTAU),X(UUPSI),X(UTHET),X(UIOTA),X(UOMIC),  X(UPI), _______, | ||||||
|  |   _______,X(UALPH),X(USIGM),X(UDELT), X(UPHI),X(UGAMM), X(UETA),  X(UXI),X(UKAPP),X(ULAMB), _______, _______, | ||||||
|  |   _______,X(UZETA), X(UCHI), X(UPSI),X(UOMEG),X(UBETA),  X(UNU),  X(UMU), _______, _______, _______, _______, | ||||||
|  |   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ | ||||||
|  | }, | ||||||
|  | 
 | ||||||
|  | /* Lowercase Greek
 | ||||||
|  |  * ,-----------------------------------------------------------------------------------. | ||||||
|  |  * |      |      |      |      |      |      |      |      |      |      |      |      | | ||||||
|  |  * |------+------+------+------+------+-------------+------+------+------+------+------| | ||||||
|  |  * |      |      |      |      |      |      |      |      |      |      |      |      | | ||||||
|  |  * |------+------+------+------+------+------+------+------+------+------+------+------| | ||||||
|  |  * |      |      |      |      |      |      |      |      |      |      |      |      | | ||||||
|  |  * |------+------+------+------+------+------+------+------+------+------+------+------| | ||||||
|  |  * |      |      |      |      |      |      |      |      |      |      |      |      | | ||||||
|  |  * `-----------------------------------------------------------------------------------' | ||||||
|  |  */ | ||||||
|  | [_GREEKL] = { | ||||||
|  |   _______, _______,X(FSIGM),X(LEPSI), X(LRHO), X(LTAU),X(LUPSI),X(LTHET),X(LIOTA),X(LOMIC),  X(LPI), _______, | ||||||
|  |   _______,X(LALPH),X(LSIGM),X(LDELT), X(LPHI),X(LGAMM), X(LETA),  X(LXI),X(LKAPP),X(LLAMB), _______, _______, | ||||||
|  |   _______,X(LZETA), X(LCHI), X(LPSI),X(LOMEG),X(LBETA),  X(LNU),  X(LMU), _______, _______, _______, _______, | ||||||
|  |   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ | ||||||
|  | }, | ||||||
|  | 
 | ||||||
| /* Punc
 | /* Punc
 | ||||||
|  * ,-----------------------------------------------------------------------------------. |  * ,-----------------------------------------------------------------------------------. | ||||||
|  * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  |   `  | |  * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  |   `  | | ||||||
| @ -581,12 +723,47 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||||||
|   if (record->event.pressed) PLAY_NOTE_ARRAY(tone_click, false, 0); |   if (record->event.pressed) PLAY_NOTE_ARRAY(tone_click, false, 0); | ||||||
|   #endif |   #endif | ||||||
| 
 | 
 | ||||||
|  |   bool lshifted = keyboard_report->mods & MOD_BIT(KC_LSFT); | ||||||
|  |   bool rshifted = keyboard_report->mods & MOD_BIT(KC_RSFT); | ||||||
|  | 
 | ||||||
|   switch (keycode) { |   switch (keycode) { | ||||||
|  |     case GREEK: | ||||||
|  |       if (record->event.pressed) { | ||||||
|  |         if (lshifted || rshifted) { | ||||||
|  |           layer_on(_GREEKU); | ||||||
|  |           layer_off(_GREEKL); | ||||||
|  |         } else { | ||||||
|  |           layer_on(_GREEKL); | ||||||
|  |           layer_off(_GREEKU); | ||||||
|  |         } | ||||||
|  |       } else { | ||||||
|  |         layer_off(_GREEKU); | ||||||
|  |         layer_off(_GREEKL); | ||||||
|  |       } | ||||||
|  |       return false; | ||||||
|  |       break; | ||||||
|  | 
 | ||||||
|  |     case KC_LSFT: | ||||||
|  |     case KC_RSFT: | ||||||
|  |       ; | ||||||
|  |       uint8_t layer = biton32(layer_state); | ||||||
|  |       if (layer == _GREEKU || layer == _GREEKL) { | ||||||
|  |         if (record->event.pressed) { | ||||||
|  |           layer_on(_GREEKU); | ||||||
|  |           layer_off(_GREEKL); | ||||||
|  |         } else { | ||||||
|  |           if (lshifted ^ rshifted) { // if only one shift is pressed
 | ||||||
|  |             layer_on(_GREEKL); | ||||||
|  |             layer_off(_GREEKU); | ||||||
|  |           } | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |       return true; | ||||||
|  |       break; | ||||||
|  | 
 | ||||||
|     // QWERTZ style comma and dot: semicolon and colon when shifted
 |     // QWERTZ style comma and dot: semicolon and colon when shifted
 | ||||||
|     case KC_COMM: |     case KC_COMM: | ||||||
|       if (record->event.pressed) { |       if (record->event.pressed) { | ||||||
|         bool lshifted = keyboard_report->mods & MOD_BIT(KC_LSFT); |  | ||||||
|         bool rshifted = keyboard_report->mods & MOD_BIT(KC_RSFT); |  | ||||||
|         if (lshifted || rshifted) { |         if (lshifted || rshifted) { | ||||||
|           if (lshifted) unregister_code(KC_LSFT); |           if (lshifted) unregister_code(KC_LSFT); | ||||||
|           if (rshifted) unregister_code(KC_RSFT); |           if (rshifted) unregister_code(KC_RSFT); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Priyadi Iman Nurcahyo
						Priyadi Iman Nurcahyo