mirror of
				https://github.com/mfulz/qmk_firmware.git
				synced 2025-10-31 13:22: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, | ||||
|   _FUNC, | ||||
|   _EMOJI, | ||||
|   _GREEKU, | ||||
|   _GREEKL, | ||||
|   _GUI, | ||||
| }; | ||||
| 
 | ||||
| @ -44,6 +46,7 @@ enum planck_keycodes { | ||||
|   FUNC, | ||||
|   EMOJI, | ||||
|   GUI, | ||||
|   GREEK, | ||||
| 
 | ||||
|   // os switchers
 | ||||
|   LINUX, | ||||
| @ -106,6 +109,59 @@ enum unicode_name { | ||||
|   SUN, // sun
 | ||||
|   MOON, // moon
 | ||||
|   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[] = { | ||||
| @ -156,6 +212,57 @@ const uint32_t PROGMEM unicode_map[] = { | ||||
|   [SUN] = 0x2600, | ||||
|   [MOON] = 0x1F314, | ||||
|   [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
 | ||||
| // #define KC_RSFT MT(MOD_LSFT, KC_EQL)
 | ||||
| 
 | ||||
| 
 | ||||
| // hybrid right-gui & scroll lock (mapped to Compose in OS)
 | ||||
| #undef KC_RCTL | ||||
| #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 | | ||||
|  * |------+------+------+------+------+------+------+------+------+------+------+------| | ||||
|  * | Ctrl | GUI  | Alt  | Punc | Num  |    Space    | Func |Emoji |AltGr | GUI  | Ctrl | | ||||
|  * | Ctrl | Alt  | GUI  | Punc | Num  |    Space    | Func |Emoji |Greek |AltGr | Ctrl | | ||||
|  * `-----------------------------------------------------------------------------------' | ||||
|  */ | ||||
| [_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_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_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
 | ||||
| @ -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
 | ||||
|  * ,-----------------------------------------------------------------------------------. | ||||
|  * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  |   `  | | ||||
| @ -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); | ||||
|   #endif | ||||
| 
 | ||||
|   bool lshifted = keyboard_report->mods & MOD_BIT(KC_LSFT); | ||||
|   bool rshifted = keyboard_report->mods & MOD_BIT(KC_RSFT); | ||||
| 
 | ||||
|   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
 | ||||
|     case KC_COMM: | ||||
|       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) unregister_code(KC_LSFT); | ||||
|           if (rshifted) unregister_code(KC_RSFT); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Priyadi Iman Nurcahyo
						Priyadi Iman Nurcahyo