keymap.c 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. #include QMK_KEYBOARD_H
  2. enum layer_number {
  3. _IONIAN = 0,
  4. _DORIAN,
  5. _PHRYGIAN,
  6. _LYDIAN,
  7. _MIXOLYDIAN,
  8. _AEOLIAN,
  9. _LOCRIAN,
  10. _MENU
  11. };
  12. enum custom_keycodes {
  13. IONIAN = SAFE_RANGE,
  14. DORIAN,
  15. PHRYGIAN,
  16. LYDIAN,
  17. MIXOLYDIAN,
  18. AEOLIAN,
  19. LOCRIAN,
  20. };
  21. #define MENU MO(_MENU)
  22. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  23. [_IONIAN] = LAYOUT_ortho_3x10(
  24. MI_C_1, MI_F_1, MI_B_1, MI_E_2, MI_A_2, MI_D_3, MI_G_3, MI_C_4, MI_OCTD, MI_OCTU,
  25. MI_D_1, MI_G_1, MI_C_2, MI_F_2, MI_B_2, MI_E_3, MI_A_3, MI_D_4, MI_TRNSD, MI_TRNSU,
  26. MI_E_1, MI_A_1, MI_D_2, MI_G_2, MI_C_3, MI_F_3, MI_B_3, MI_E_4, MI_SUS, MENU
  27. ),
  28. [_DORIAN] = LAYOUT_ortho_3x10(
  29. MI_C_1, MI_F_1, MI_As_1, MI_Ds_2, MI_A_2, MI_D_3, MI_G_3, MI_C_4, _______, _______,
  30. MI_D_1, MI_G_1, MI_C_2, MI_F_2, MI_As_2, MI_Ds_3, MI_A_3, MI_D_4, _______, _______,
  31. MI_Ds_1, MI_A_1, MI_D_2, MI_G_2, MI_C_3, MI_F_3, MI_As_3, MI_Ds_4, _______, _______
  32. ),
  33. [_PHRYGIAN] = LAYOUT_ortho_3x10(
  34. MI_C_1, MI_F_1, MI_As_1, MI_Ds_2, MI_Gs_2, MI_Cs_3, MI_G_3, MI_C_4, _______, _______,
  35. MI_Cs_1, MI_G_1, MI_C_2, MI_F_2, MI_As_2, MI_Ds_3, MI_Gs_3, MI_Cs_4, _______, _______,
  36. MI_Ds_1, MI_Gs_1, MI_Cs_2, MI_G_2, MI_C_3, MI_F_3, MI_As_3, MI_Ds_4, _______, _______
  37. ),
  38. [_LYDIAN] = LAYOUT_ortho_3x10(
  39. MI_C_1, MI_Fs_1, MI_B_1, MI_E_2, MI_A_2, MI_D_3, MI_G_3, MI_C_4, _______, _______,
  40. MI_D_1, MI_G_1, MI_C_2, MI_Fs_2, MI_B_2, MI_E_3, MI_A_3, MI_D_4, _______, _______,
  41. MI_E_1, MI_A_1, MI_D_2, MI_G_2, MI_C_3, MI_Fs_3, MI_B_3, MI_E_4, _______, _______
  42. ),
  43. [_MIXOLYDIAN] = LAYOUT_ortho_3x10(
  44. MI_C_1, MI_F_1, MI_As_1, MI_E_2, MI_A_2, MI_D_3, MI_G_3, MI_C_4, _______, _______,
  45. MI_D_1, MI_G_1, MI_C_2, MI_F_2, MI_As_2, MI_E_3, MI_A_3, MI_D_4, _______, _______,
  46. MI_E_1, MI_A_1, MI_D_2, MI_G_2, MI_C_3, MI_F_3, MI_As_3, MI_E_4, _______, _______
  47. ),
  48. [_AEOLIAN] = LAYOUT_ortho_3x10(
  49. MI_C_1, MI_F_1, MI_As_1, MI_Ds_2, MI_Gs_2, MI_D_3, MI_G_3, MI_C_4, _______, _______,
  50. MI_D_1, MI_G_1, MI_C_2, MI_F_2, MI_As_2, MI_Ds_3, MI_Gs_3, MI_D_4, _______, _______,
  51. MI_Ds_1, MI_Gs_1, MI_D_2, MI_G_2, MI_C_3, MI_F_3, MI_As_3, MI_Ds_4, _______, _______
  52. ),
  53. [_LOCRIAN] = LAYOUT_ortho_3x10(
  54. MI_C_1, MI_F_1, MI_As_1, MI_Ds_2, MI_Gs_2, MI_Cs_3, MI_Fs_3, MI_C_4, _______, _______,
  55. MI_Cs_1, MI_Fs_1, MI_C_2, MI_F_2, MI_As_2, MI_Ds_3, MI_Gs_3, MI_Cs_4, _______, _______,
  56. MI_Ds_1, MI_Gs_1, MI_Cs_2, MI_Fs_2, MI_C_3, MI_F_3, MI_As_3, MI_Ds_4, _______, _______
  57. ),
  58. [_MENU] = LAYOUT_ortho_3x10(
  59. IONIAN, LYDIAN, LOCRIAN, _______, _______, _______, _______, _______, _______, _______,
  60. DORIAN, MIXOLYDIAN, _______, _______, _______, _______, _______, _______, _______, _______,
  61. PHRYGIAN, AEOLIAN, _______, _______, _______, _______, _______, _______, QK_BOOT, _______
  62. )
  63. };
  64. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  65. switch (keycode) {
  66. case IONIAN:
  67. if (record->event.pressed) {
  68. set_single_persistent_default_layer(_IONIAN);
  69. }
  70. break;
  71. case DORIAN:
  72. if (record->event.pressed) {
  73. set_single_persistent_default_layer(_DORIAN);
  74. }
  75. break;
  76. case PHRYGIAN:
  77. if (record->event.pressed) {
  78. set_single_persistent_default_layer(_PHRYGIAN);
  79. }
  80. break;
  81. case LYDIAN:
  82. if (record->event.pressed) {
  83. set_single_persistent_default_layer(_LYDIAN);
  84. }
  85. break;
  86. case MIXOLYDIAN:
  87. if (record->event.pressed) {
  88. set_single_persistent_default_layer(_MIXOLYDIAN);
  89. }
  90. break;
  91. case AEOLIAN:
  92. if (record->event.pressed) {
  93. set_single_persistent_default_layer(_AEOLIAN);
  94. }
  95. break;
  96. case LOCRIAN:
  97. if (record->event.pressed) {
  98. set_single_persistent_default_layer(_LOCRIAN);
  99. }
  100. break;
  101. }
  102. return true;
  103. }