logo

qmk_firmware

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

keymap.c (13456B)


  1. /*
  2. * ----------------------------------------------------------------------------
  3. * "THE BEER-WARE LICENSE" (Revision 42):
  4. * <https://github.com/Legonut> wrote this file. As long as you retain this
  5. * notice you can do whatever you want with this stuff. If we meet some day, and
  6. * you think this stuff is worth it, you can buy me a beer in return. David Rauseo
  7. * ----------------------------------------------------------------------------
  8. */
  9. #include QMK_KEYBOARD_H
  10. #include "common_oled.h"
  11. enum keymap_layers {
  12. _QWERTY,
  13. _COLEMAK,
  14. _GAME,
  15. _FN,
  16. _ADJUST,
  17. _VIA1,
  18. _VIA2,
  19. _VIA3
  20. };
  21. enum keymap_keycodes {
  22. // Disables touch processing
  23. TCH_TOG = SAFE_RANGE,
  24. MENU_BTN,
  25. MENU_UP,
  26. MENU_DN
  27. };
  28. // Default Layers
  29. #define QWERTY DF(_QWERTY)
  30. #define COLEMAK DF(_COLEMAK)
  31. #define GAME DF(_GAME)
  32. // Momentary Layers
  33. #define FN MO(_FN)
  34. #define ADJUST MO(_ADJUST)
  35. #define FN_CAPS LT(_FN, KC_CAPS)
  36. #define FN_ESC LT(_FN, KC_ESC)
  37. /* This keyboard is enabled with an RGB Menu Control system.
  38. This functionality is enabled, but still requires a little configuration based on your exact setup.
  39. The RGB Menu will appear on the Right Half's OLED and can be controlled by the MENU keycodes:
  40. MENU_BTN - Triggers a button action for the menu
  41. MENU_UP - Triggers an increase action for the menu
  42. MENU_DN - Triggers a decrease action for the menu
  43. To finish configuration for your board, you will want to change the default keycodes for an encoder on the right half.
  44. Encoder press keycode should be set to MENU_BTN, Clockwise should be MENU_UP, and Counter Clockwise should be MENU_DN.
  45. Depending on where you add an encoder to the right half will determin in the default keymap where you should put those keycodes.
  46. */
  47. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  48. /* QWERTY
  49. * .--------------------------------------------------------------. .--------------------------------------------------------------.
  50. * | `~/ESC | 1 | 2 | 3 | 4 | 5 | - | | = | 6 | 7 | 8 | 9 | 0 | Bckspc |
  51. * |--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
  52. * | Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | \ |
  53. * |--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
  54. * | FN/Caps| A | S | D | F | G | ( | | ) | H | J | K | L | : | ' |
  55. * |--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
  56. * | Shift | Z | X | C | V | B | { | | } | N | M | , | . | / |Shft/Ent|
  57. * |--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
  58. * | Ctrl | Win | Alt | RGBTOG | Adjust | Space | Bksp | | Enter | Space | Left | Down | Up | Right | Ctrl |
  59. * '--------+--------+--------+--------+--------+--------+--------' '--------+--------+--------+--------+--------+--------+--------'
  60. * |--------+--------+--------+--------+--------. .--------+--------+--------+--------+--------|
  61. * | VolDn | VolUp | Next | Play | Prev | Touch Encoder Touch Encoder | RgbHuI | RgbHuD | RgbMdD | RgbTog | RgbMdI |
  62. * '--------+--------+--------+--------+--------' '--------+--------+--------+--------+--------'
  63. */
  64. [_QWERTY] = LAYOUT(
  65. QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
  66. KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
  67. FN_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LPRN, KC_RPRN, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
  68. KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LCBR, KC_RCBR, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SC_SENT,
  69. KC_LCTL, KC_LGUI, KC_LALT, RM_TOGG, ADJUST, KC_SPC, KC_DEL, KC_ENT, KC_SPC, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT,KC_RCTL,
  70. KC_VOLD, KC_VOLU, KC_MNXT, KC_MPLY, KC_MPRV, RM_HUEU, RM_HUED, RM_PREV, RM_TOGG, RM_NEXT
  71. ),
  72. [_COLEMAK] = LAYOUT(
  73. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  74. _______, KC_Q, KC_W, KC_F, KC_P, KC_G, _______, _______, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, _______,
  75. _______, KC_A, KC_R, KC_S, KC_T, KC_D, _______, _______, KC_H, KC_N, KC_E, KC_I, KC_O, _______,
  76. _______, KC_Z, KC_X, KC_C, KC_V, KC_B, _______, _______, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______,
  77. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  78. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
  79. ),
  80. [_GAME] = LAYOUT(
  81. _______, _______, _______, _______, _______, _______, KC_F1, KC_F5, _______, _______, _______, _______, _______, _______,
  82. _______, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_F2, KC_F6, KC_Y, KC_U, KC_I, KC_O, KC_P, _______,
  83. _______, KC_A, KC_S, KC_D, KC_F, KC_G, KC_F3, KC_F7, KC_H, KC_J, KC_K, KC_L, KC_SCLN, _______,
  84. _______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_F4, KC_F8, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______,
  85. _______, KC_NO, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  86. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
  87. ),
  88. [_FN] = LAYOUT(
  89. _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
  90. _______, KC_HOME, KC_UP, KC_END, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, KC_PSCR, KC_PGUP,
  91. _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_PGDN,
  92. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  93. _______, _______, _______, TCH_TOG, _______, _______, _______, _______, _______, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU,
  94. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
  95. ),
  96. [_ADJUST] = LAYOUT(
  97. _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
  98. _______, RM_SATD, RM_VALU, RM_SATU, QK_BOOT, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, _______, _______,
  99. _______, RM_HUED, RM_VALD, RM_HUEU, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______,
  100. _______, RM_SPDD, _______, RM_SPDU, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, GAME,
  101. _______, RM_PREV, _______, RM_NEXT, _______, _______, _______, _______, _______, KC_P0, KC_PDOT, KC_NUM, QWERTY, COLEMAK,
  102. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
  103. ),
  104. [_VIA1] = LAYOUT(
  105. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  106. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  107. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  108. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  109. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  110. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
  111. ),
  112. [_VIA2] = LAYOUT(
  113. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  114. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  115. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  116. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  117. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  118. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
  119. ),
  120. [_VIA3] = LAYOUT(
  121. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  122. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  123. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  124. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  125. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  126. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
  127. ),
  128. };
  129. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  130. switch (keycode)
  131. {
  132. case MENU_BTN:
  133. if (record->event.pressed) {
  134. rgb_menu_selection();
  135. }
  136. return false;
  137. case MENU_UP:
  138. if (record->event.pressed) {
  139. rgb_menu_action(true);
  140. }
  141. return false;
  142. case MENU_DN:
  143. if (record->event.pressed) {
  144. rgb_menu_action(false);
  145. }
  146. return false;
  147. case TCH_TOG:
  148. if (record->event.pressed) {
  149. touch_encoder_toggle();
  150. }
  151. return false; // Skip all further processing of this key
  152. default:
  153. return true;
  154. }
  155. }
  156. static void render_layer(void) {
  157. // Host Keyboard Layer Status
  158. oled_write_P(PSTR("Layer"), false);
  159. switch (get_highest_layer(layer_state)) {
  160. case _QWERTY:
  161. oled_write_ln_P(PSTR("QWRTY"), false);
  162. break;
  163. case _COLEMAK:
  164. oled_write_ln_P(PSTR("Colemk"), false);
  165. break;
  166. case _GAME:
  167. oled_write_ln_P(PSTR("Game "), false);
  168. break;
  169. case _FN:
  170. oled_write_ln_P(PSTR("FN "), false);
  171. break;
  172. case _ADJUST:
  173. oled_write_ln_P(PSTR("Adjst"), false);
  174. break;
  175. default:
  176. oled_write_ln_P(PSTR("Undef"), false);
  177. }
  178. }
  179. static void render_leds(void)
  180. {
  181. // Host Keyboard LED Status
  182. led_t led_state = host_keyboard_led_state();
  183. oled_write_P(led_state.num_lock ? PSTR("NUMLK") : PSTR(" "), false);
  184. oled_write_P(led_state.caps_lock ? PSTR("CAPLK") : PSTR(" "), false);
  185. oled_write_P(led_state.scroll_lock ? PSTR("SCRLK") : PSTR(" "), false);
  186. }
  187. static void render_touch(void)
  188. {
  189. // Host Touch LED Status
  190. oled_write_P(touch_encoder_is_on() ? PSTR("TOUCH") : PSTR(" "), false);
  191. oled_write_P(touch_encoder_is_calibrating() ? PSTR("CLBRT") : PSTR(" "), false);
  192. }
  193. bool oled_task_user(void) {
  194. if (is_keyboard_left()) {
  195. render_icon();
  196. oled_write_P(PSTR(" "), false);
  197. render_layer();
  198. oled_write_P(PSTR(" "), false);
  199. render_leds();
  200. oled_write_P(PSTR(" "), false);
  201. render_touch();
  202. }
  203. else {
  204. render_icon();
  205. oled_write_P(PSTR(" "), false);
  206. render_rgb_menu();
  207. }
  208. return false;
  209. }
  210. oled_rotation_t oled_init_user(oled_rotation_t rotation) {
  211. return OLED_ROTATION_270;
  212. }
  213. #ifdef ENCODER_MAP_ENABLE
  214. const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
  215. [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_PGUP, KC_PGDN), ENCODER_CCW_CW(KC_PGUP, KC_PGDN) },
  216. [1 ... 7] = { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) }
  217. };
  218. #endif