logo

qmk_firmware

custom branch of QMK firmware git clone https://anongit.hacktivis.me/git/qmk_firmware.git

keymap.c (20336B)


  1. /* Copyright 2023 Gopolar
  2. *
  3. * This program is free software: you can redistribute it and/or modify
  4. * it under the terms of the GNU General Public License as published by
  5. * the Free Software Foundation, either version 2 of the License, or
  6. * (at your option) any later version.
  7. *
  8. * This program is distributed in the hope that it will be useful,
  9. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. * GNU General Public License for more details.
  12. *
  13. * You should have received a copy of the GNU General Public License
  14. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  15. */
  16. #include QMK_KEYBOARD_H
  17. // OLED animation
  18. #include "lib/wave.h"
  19. // Each layer gets a name for readability, which is then used in the keymap matrix below.
  20. // The underscores don't mean anything - you can have a layer called STUFF or any other name.
  21. // Layer names don't all need to be of the same length, obviously, and you can also skip them
  22. // entirely and just use numbers.
  23. // enum layer_names { };
  24. // enum layer_keycodes { };
  25. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  26. /*
  27. ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
  28. │Esc│ │F1 │F2 │F3 │F4 │ │F5 │F6 │F7 │F8 │ │F9 │F10│F11│F12│ │PSc│Scr│Pse│
  29. └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
  30. ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐
  31. │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Bckspc│ │Hom│Scr│Pse│
  32. ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
  33. │ Tab │ q │ w │ e │ r │ t │ y │ u │ i │ o │ p │ [ │ ] │ \ │ │End│Scr│Pse│
  34. ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
  35. │ Caps │ a │ s │ d │ f │ g │ h │ j │ k │ l │ ; │ ' │ Enter│
  36. ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐
  37. │LSft│ \ │ z │ x │ c │ v │ b │ n │ m │ , │ . │ / │ RSft │RSt│ │ ↑ │
  38. ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───┐
  39. │LCrl │GUI│ LAlt│ Space │ RAlt│ Fn│ RCrl│ │ ← │ ↓ │ → │
  40. └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘
  41. ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
  42. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
  43. └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
  44. ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐
  45. │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │ │ │ │ │
  46. ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
  47. │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ { │ } │ | │ │ │ │ │
  48. ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
  49. │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ : │ " │ │
  50. ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐
  51. │LSft│ | │ Z │ X │ C │ V │ B │ N │ M │ < │ > │ ? │ RSft │RSt│ │ │
  52. ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───┐
  53. │ │ │ │ │ │ │ │ │ │ │ │
  54. └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘
  55. */
  56. /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */
  57. [0] = LAYOUT_all(
  58. KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUSE,
  59. KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
  60. KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
  61. KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
  62. KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP,
  63. KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
  64. ),
  65. /*
  66. ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
  67. │Slp│ │M_T│F13│F14│F15│ │F16│Rfh│Stp│ │ │ │ │ │Est│ │ │VoD│VoU│
  68. └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
  69. ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐
  70. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │Hui│Sai│Spi│
  71. ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
  72. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │Hud│Sad│Spd│
  73. ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
  74. │ │ │ │ │ │ │ │ │ │ │ │ │ RGB_Tog│
  75. ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐
  76. │ │ │ │ │Cal│ │ │ │ │ │ │ │ │ │ │Vai│
  77. ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───┐
  78. │ │ │ │ │ │ │ │ │Rod│Vad│Mod│
  79. └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘
  80. */
  81. /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */
  82. [1] = LAYOUT_all(
  83. KC_SLEP, RGB_M_T, KC_F13, KC_F14, KC_F15, KC_F16, KC_WREF, KC_WSTP, _______, _______, _______, _______, EE_CLR, _______, KC_VOLD, KC_VOLU,
  84. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RM_HUEU, RM_SATU, RM_SPDU,
  85. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RM_HUED, RM_SATD, RM_SPDD,
  86. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RM_TOGG,
  87. _______, _______, _______, _______, KC_CALC, _______, _______, _______, _______, _______, _______, _______, _______, _______, RM_VALU,
  88. _______, _______, _______, _______, _______, _______, _______, RM_PREV, RM_VALD, RM_NEXT
  89. ),
  90. /*
  91. ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
  92. │Slp│ │F13│F14│F15│F16│ │Rfh│Stp│ │ │ │ │ │ │ │ │ │VoD│VoU│
  93. └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
  94. ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐
  95. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │Hui│Sai│Spi│
  96. ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
  97. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │Hud│Sad│Spd│
  98. ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
  99. │ │ │ │ │ │ │ │ │ │ │ │ │ RGB_Tog│
  100. ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐
  101. │ │ │ │ │Cal│ │ │ │ │ │ │ │ │ │ │Vai│
  102. ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───┐
  103. │ │ │ │ │ │ │ │ │Rod│Vad│Mod│
  104. └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘
  105. */
  106. /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */
  107. [2] = LAYOUT_all(
  108. KC_SLEP, KC_F13, KC_F14, KC_F15, KC_F16, KC_WREF, KC_WSTP, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU,
  109. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RM_HUEU, RM_SATU, RM_SPDU,
  110. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RM_HUED, RM_SATD, RM_SPDD,
  111. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RM_TOGG,
  112. _______, _______, _______, _______, KC_CALC, _______, _______, _______, _______, _______, _______, _______, _______, _______, RM_VALU,
  113. _______, _______, _______, _______, _______, _______, _______, RM_PREV, RM_VALD, RM_NEXT
  114. ),
  115. /*
  116. ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
  117. │Slp│ │F13│F14│F15│F16│ │Rfh│Stp│ │ │ │ │ │ │ │ │ │VoD│VoU│
  118. └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
  119. ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐
  120. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │Hui│Sai│Spi│
  121. ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
  122. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │Hud│Sad│Spd│
  123. ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
  124. │ │ │ │ │ │ │ │ │ │ │ │ │ RGB_Tog│
  125. ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐
  126. │ │ │ │ │Cal│ │ │ │ │ │ │ │ │ │ │Vai│
  127. ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───┐
  128. │ │ │ │ │ │ │ │ │Rod│Vad│Mod│
  129. └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘
  130. */
  131. /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */
  132. [3] = LAYOUT_all(
  133. KC_SLEP, KC_F13, KC_F14, KC_F15, KC_F16, KC_WREF, KC_WSTP, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU,
  134. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RM_HUEU, RM_SATU, RM_SPDU,
  135. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RM_HUED, RM_SATD, RM_SPDD,
  136. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RM_TOGG,
  137. _______, _______, _______, _______, KC_CALC, _______, _______, _______, _______, _______, _______, _______, _______, _______, RM_VALU,
  138. _______, _______, _______, _______, _______, _______, _______, RM_PREV, RM_VALD, RM_NEXT
  139. ),
  140. };
  141. #ifdef OLED_ENABLE
  142. static void render_layer_info(void) {
  143. switch (get_highest_layer(layer_state)) {
  144. case 0:
  145. oled_write_P(PSTR("QWERTY "), false);
  146. break;
  147. case 1:
  148. oled_write_P(PSTR("Function "), false);
  149. break;
  150. case 2:
  151. oled_write_P(PSTR("Function "), false);
  152. break;
  153. case 3:
  154. oled_write_P(PSTR("Function "), false);
  155. break;
  156. default:
  157. oled_write_P(PSTR("Undefined "), false);
  158. }
  159. }
  160. static void render_layer_number(void) {
  161. switch (get_highest_layer(layer_state)) {
  162. case 0:
  163. oled_write_P(PSTR("0"), false);
  164. break;
  165. case 1:
  166. oled_write_P(PSTR("1"), false);
  167. break;
  168. case 2:
  169. oled_write_P(PSTR("2"), false);
  170. break;
  171. case 3:
  172. oled_write_P(PSTR("3"), false);
  173. break;
  174. default:
  175. oled_write_P(PSTR("X"), false);
  176. }
  177. }
  178. bool oled_task_user(void) {
  179. led_t led_usb_state = host_keyboard_led_state();
  180. oled_write_P(led_usb_state.caps_lock ? PSTR("CAPLK ") : PSTR("----- "), false);
  181. oled_write_P(PSTR(" GOPOLAR "), false);
  182. oled_write_P(led_usb_state.scroll_lock ? PSTR(" SCRLK") : PSTR(" -----"), false);
  183. // sleep if it has been long enough since we last got a char
  184. if (timer_elapsed32(wave_sleep) > OLED_TIMEOUT) {
  185. oled_off();
  186. } else {
  187. oled_on();
  188. }
  189. // time for the next frame?
  190. if (timer_elapsed(wave_timer) > FRAME_TIMEOUT) {
  191. wave_timer = timer_read();
  192. render_frame();
  193. }
  194. oled_set_cursor(0, 3);
  195. render_layer_info();
  196. oled_write_P(PSTR("Layer: "), false);
  197. render_layer_number();
  198. return true;
  199. }
  200. #endif