logo

qmk_firmware

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

keymap.c (13947B)


  1. #include QMK_KEYBOARD_H
  2. #ifdef RGBLIGHT_ENABLE
  3. //Following line allows macro to read current RGB settings
  4. extern rgblight_config_t rgblight_config;
  5. #endif
  6. // Each layer gets a name for readability, which is then used in the keymap matrix below.
  7. // The underscores don't mean anything - you can have a layer called STUFF or any other name.
  8. // Layer names don't all need to be of the same length, obviously, and you can also skip them
  9. // entirely and just use numbers.
  10. #define _QWERTY 0
  11. #define _LOWER 1
  12. #define _RAISE 2
  13. #define _ADJUST 3
  14. enum custom_keycodes {
  15. LOWER = SAFE_RANGE,
  16. RAISE,
  17. ADJUST,
  18. RGBRST
  19. };
  20. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  21. /* QWERTY
  22. * ,-----------------------------------------. ,-----------------------------------------.
  23. * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | - |
  24. * |------+------+------+------+------+------| |------+------+------+------+------+------|
  25. * | Tab | Q | W | E | R | T | | Y | U | I | O | P | = |
  26. * |------+------+------+------+------+------| |------+------+------+------+------+------|
  27. * |LShift| A | S | D | F | G | | H | J | K | L | ; | ' |
  28. * |------+------+------+------+------+------| |------+------+------+------+------+------|
  29. * |LCTRL | Z | X | C | V | B |-------.-------. ,---------------| N | M | , | . | / | \ |
  30. * `-----------------------------------------/ Del / / \ \ Bksp \----------------------------------------'
  31. * | LAlt |ADJUST| /-------/ Space / \ Enter \-------\ | [ | ] |
  32. * | | |/ LOWER / / \ \ RAISE \ | | |
  33. * `-----------------------------' '------------------------------'
  34. */
  35. [_QWERTY] = LAYOUT(
  36. KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
  37. KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_EQL,
  38. KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
  39. KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DEL, KC_SPC, KC_ENT, KC_BSPC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS,
  40. KC_LALT, ADJUST, LOWER, RAISE, KC_LBRC, KC_RBRC
  41. ),
  42. /* LOWER
  43. * ,-----------------------------------------. ,-----------------------------------------.
  44. * | ESC | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 |
  45. * |------+------+------+------+------+------| |------+------+------+------+------+------|
  46. * | Tab | / | - | 7 | 8 | 9 | | ! | @ | # | $ | % | F12 |
  47. * |------+------+------+------+------+------| |------+------+------+------+------+------|
  48. * |LShift| * | + | 4 | 5 | 6 | | ^ | & | * | ( | ) | - |
  49. * |------+------+------+------+------+------| |------+------+------+------+------+------|
  50. * |LCTRL | . | 0 | 1 | 2 | 3 |-------.-------. ,---------------| | _ | + | { | } | | |
  51. * `-----------------------------------------/ F11 / / \ \ F12 \----------------------------------------'
  52. * | LAlt | LGUI | /-------/ Space / \ Enter \-------\ | Caps | Num |
  53. * | | |/ LOWER / / \ \ \ | | |
  54. * `-----------------------------' '------------------------------'
  55. */
  56. [_LOWER] = LAYOUT(
  57. KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
  58. _______, KC_PSLS, KC_PMNS, KC_P7, KC_P8, KC_P9, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_F12,
  59. _______, KC_PAST, KC_PPLS, KC_P4, KC_P5, KC_P6, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TILD,
  60. _______, KC_PDOT, KC_P0, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
  61. _______, KC_LGUI, _______, XXXXXXX, KC_CAPS, KC_NUM
  62. ),
  63. /* RAISE
  64. * ,-----------------------------------------. ,-----------------------------------------.
  65. * | | | | | | | | | | | | | |
  66. * |------+------+------+------+------+------| |------+------+------+------+------+------|
  67. * | | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | |
  68. * |------+------+------+------+------+------| |------+------+------+------+------+------|
  69. * | F1 | F2 | F3 | F4 | F5 | F6 | | | ª | | | | |
  70. * |------+------+------+------+------+------| |------+------+------+------+------+------|
  71. * | F7 | F8 | F9 | F10 | F11 | F12 |-------.-------. ,---------------| © | « | ¨ | | | |
  72. * `-----------------------------------------/ / / \ \ \----------------------------------------'
  73. * | | | /-------/ Space / \ Enter \-------\ | | |
  74. * | | |/ / / \ \ RAISE \ | | |
  75. * `-----------------------------' '------------------------------'
  76. */
  77. [_RAISE] = LAYOUT(
  78. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  79. XXXXXXX, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXXXX,
  80. KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, XXXXXXX, KC_UP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  81. KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, _______, _______, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, XXXXXXX,
  82. XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX
  83. ),
  84. /* ADJUST
  85. * ,-----------------------------------------. ,-----------------------------------------.
  86. * |QK_BOOT | | | | | | | Mute | Vol+ | Play | | | |
  87. * |------+------+------+------+------+------| |------+------+------+------+------+------|
  88. * | | | | PSCR | SLCK | Pause| | Prev | Vol- | Next | | | |
  89. * |------+------+------+------+------+------| |------+------+------+------+------+------|
  90. * | | | |Insert| Home |PageUP| | | |RGB ON| HUE+ | SAT+ | VAL+ |
  91. * |------+------+------+------+------+------| |------+------+------+------+------+------|
  92. * | | | | Del | End |PageDN|-------.-------. ,---------------| |RGB Re| MODE | HUE- | SAT- | VAL- |
  93. * `-----------------------------------------/ / / \ \ \----------------------------------------'
  94. * | |ADJUST| /-------/ Space / \ Enter \-------\ | | |
  95. * | | |/ / / \ \ \ | | |
  96. * `-----------------------------' '------------------------------'
  97. */
  98. [_ADJUST] = LAYOUT(
  99. QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE, KC_VOLU, KC_MPLY, XXXXXXX, XXXXXXX, XXXXXXX,
  100. XXXXXXX, XXXXXXX, XXXXXXX, KC_PSCR, KC_SCRL, KC_PAUS, KC_MPRV, KC_VOLD, KC_MNXT, XXXXXXX, XXXXXXX, XXXXXXX,
  101. XXXXXXX, XXXXXXX, XXXXXXX, KC_INS, KC_HOME, KC_PGUP, XXXXXXX, XXXXXXX, UG_TOGG, UG_HUEU, UG_SATU, UG_VALU,
  102. XXXXXXX, XXXXXXX, XXXXXXX, KC_DEL, KC_END, KC_PGDN, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, RGBRST, UG_NEXT, UG_HUED, UG_SATD, UG_VALD,
  103. XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
  104. )
  105. };
  106. int RGB_current_mode;
  107. // Setting ADJUST layer RGB back to default
  108. void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) {
  109. if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) {
  110. layer_on(layer3);
  111. } else {
  112. layer_off(layer3);
  113. }
  114. }
  115. void matrix_init_user(void) {
  116. #ifdef RGBLIGHT_ENABLE
  117. RGB_current_mode = rgblight_config.mode;
  118. #endif
  119. }
  120. #ifdef OLED_ENABLE
  121. //assign the right code to your layers for OLED display
  122. #define L_QWERTY 0
  123. #define L_LOWER 2
  124. #define L_RAISE 4
  125. #define L_ADJUST 8
  126. // When add source files to SRC in rules.mk, you can use functions.
  127. const char *read_logo(void);
  128. bool oled_task_user(void) {
  129. if (is_keyboard_master()) {
  130. static char indctr[2][20][5]=
  131. {
  132. // white icon
  133. {
  134. {0x80,0x81,0x82,0x83,0},
  135. {0x88,0x89,0x8A,0x8B,0},
  136. {0x90,0x91,0x92,0x93,0},
  137. {0x98,0x99,0x9A,0x9B,0},
  138. {0x01,0x02,0x03,0x04,0},
  139. {0xA0,0xA1,0xA2,0xA3,0},
  140. {0xA8,0xA9,0xAA,0xAB,0},
  141. {0xB0,0xB1,0xB2,0xB3,0},
  142. {0xB8,0xB9,0xBA,0xBB,0},
  143. {0x21,0x22,0x23,0x24,0},
  144. {0xC0,0xC1,0xC2,0xC3,0},
  145. {0xC8,0xC9,0xCA,0xCB,0},
  146. {0xD0,0xD1,0xD2,0xD3,0},
  147. {0xD8,0xD9,0xDA,0xDB,0},
  148. {0x41,0x42,0x43,0x44,0},
  149. {0xE0,0xE1,0xE2,0xE3,0},
  150. {0xE8,0xE9,0xEA,0xEB,0},
  151. {0xF0,0xF1,0xF2,0xF3,0},
  152. {0xF8,0xF9,0xFA,0xFB,0},
  153. {0x61,0x62,0x63,0x64,0}
  154. },
  155. // Black icon
  156. {
  157. {0x84,0x85,0x86,0x87,0},
  158. {0x8C,0x8D,0x8E,0x8F,0},
  159. {0x94,0x95,0x96,0x97,0},
  160. {0x9C,0x9D,0x9E,0x9F,0},
  161. {0x05,0x06,0x07,0x08,0},
  162. {0xA4,0xA5,0xA6,0xA7,0},
  163. {0xAC,0xAD,0xAE,0xAF,0},
  164. {0xB4,0xB5,0xB6,0xB7,0},
  165. {0xBC,0xBD,0xBE,0xBF,0},
  166. {0x25,0x26,0x27,0x28,0},
  167. {0xC4,0xC5,0xC6,0xC7,0},
  168. {0xCC,0xCD,0xCE,0xCF,0},
  169. {0xD4,0xD5,0xD6,0xD7,0},
  170. {0xDC,0xDD,0xDE,0xDF,0},
  171. {0x45,0x46,0x47,0x48,0},
  172. {0xE4,0xE5,0xE6,0xE7,0},
  173. {0xEC,0xED,0xEE,0xEF,0},
  174. {0xF4,0xF5,0xF6,0xF7,0},
  175. {0xFC,0xFD,0xFE,0xFF,0},
  176. {0x65,0x66,0x67,0x68,0}
  177. }
  178. };
  179. int rown = 0;
  180. int rowc = 0;
  181. int rowl = 0;
  182. int rowr = 0;
  183. int rowa = 0;
  184. //Set Indicator icon
  185. led_t led_state = host_keyboard_led_state();
  186. if (led_state.num_lock) { rown = 1; } else { rown = 0; }
  187. if (led_state.caps_lock) { rowc = 1; } else { rowc = 0; }
  188. if (layer_state == L_LOWER) { rowl = 1; }
  189. if (layer_state == L_RAISE) { rowr = 1; }
  190. if (layer_state == L_ADJUST) { rowa = 1; }
  191. oled_write(indctr[rowl] [0], false);
  192. oled_write(indctr[rowr] [1], false);
  193. oled_write(indctr[rowa] [2], false);
  194. oled_write(indctr[rowc] [3], false);
  195. oled_write(indctr[rown] [4], false);
  196. oled_write_char(0x13, false);
  197. oled_write(indctr[rowl] [5], false);
  198. oled_write(indctr[rowr] [6], false);
  199. oled_write(indctr[rowa] [7], false);
  200. oled_write(indctr[rowc] [8], false);
  201. oled_write(indctr[rown] [9], false);
  202. oled_write_char(0x13, false);
  203. oled_write(indctr[rowl] [10], false);
  204. oled_write(indctr[rowr] [11], false);
  205. oled_write(indctr[rowa] [12], false);
  206. oled_write(indctr[rowc] [13], false);
  207. oled_write(indctr[rown] [14], false);
  208. oled_write_char(0x13, false);
  209. oled_write(indctr[rowl] [15], false);
  210. oled_write(indctr[rowr] [16], false);
  211. oled_write(indctr[rowa] [17], false);
  212. oled_write(indctr[rowc] [18], false);
  213. oled_write(indctr[rown] [19], false);
  214. }else{
  215. oled_write(read_logo(), false);
  216. }
  217. return false;
  218. }
  219. #endif
  220. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  221. switch (keycode) {
  222. case LOWER:
  223. if (record->event.pressed) {
  224. layer_on(_LOWER);
  225. } else {
  226. layer_off(_LOWER);
  227. }
  228. return false;
  229. break;
  230. case RAISE:
  231. if (record->event.pressed) {
  232. layer_on(_RAISE);
  233. } else {
  234. layer_off(_RAISE);
  235. }
  236. return false;
  237. break;
  238. case ADJUST:
  239. if (record->event.pressed) {
  240. layer_on(_ADJUST);
  241. } else {
  242. layer_off(_ADJUST);
  243. }
  244. return false;
  245. break;
  246. case QK_UNDERGLOW_MODE_NEXT:
  247. #ifdef RGBLIGHT_ENABLE
  248. if (record->event.pressed) {
  249. rgblight_mode(RGB_current_mode);
  250. rgblight_step();
  251. RGB_current_mode = rgblight_config.mode;
  252. }
  253. #endif
  254. return false;
  255. break;
  256. case RGBRST:
  257. #ifdef RGBLIGHT_ENABLE
  258. if (record->event.pressed) {
  259. eeconfig_update_rgblight_default();
  260. rgblight_enable();
  261. RGB_current_mode = rgblight_config.mode;
  262. }
  263. #endif
  264. break;
  265. }
  266. return true;
  267. }