Implement greek layers on my Promethium layout
This commit is contained in:
		
							parent
							
								
									ec05f65421
								
							
						
					
					
						commit
						c5ab0b2b61
					
				
					 1 changed files with 182 additions and 5 deletions
				
			
		| 
						 | 
				
			
			@ -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…
	
	Add table
		Add a link
		
	
		Reference in a new issue