logo

qmk_firmware

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

keymap.c (13143B)


  1. /* Copyright 2021 Richard Nunez <antebios1@gmail.com>
  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. // Each layer gets a name for readability, which is then used in the keymap matrix below.
  18. // The underscores don't mean anything - you can have a layer called STUFF or any other name.
  19. // Layer names don't all need to be of the same length, obviously, and you can also skip them
  20. // entirely and just use numbers.
  21. enum custom_layer {
  22. _QWERTY,
  23. _COLEMAK,
  24. _DVORAK,
  25. _LOWER,
  26. _RAISE,
  27. _ADJUST,
  28. };
  29. enum custom_keycodes {
  30. LOWER = SAFE_RANGE,
  31. RAISE,
  32. BACKLIT
  33. };
  34. // TAP DANCE ***********************************************************
  35. //Tap Dance Declarations
  36. enum {
  37. TD_DEL_BSPC = 0,
  38. TD_ESC_GRAVE,
  39. TD_TAB_TILDE,
  40. TD_MINS_UNDS,
  41. TD_EQL_PLUS,
  42. TD_LBRC_LCBR,
  43. TD_RBRC_RCBR,
  44. TD_SCLN_COLN,
  45. TD_QUOT_DQT,
  46. TD_COMM_LABK,
  47. TD_DOT_RABK,
  48. TD_SLSH_QUES,
  49. TD_BSLS_PIPE,
  50. TD_3_F3,
  51. TD_SHIFT_CAPS
  52. };
  53. // Shift key action:
  54. // Shift held down, then use as normal and use Shift Mode of key.
  55. // Shift tapped, then Capitlize next keystroke only.
  56. // Shift double-tapped, then CAPSLOCK
  57. // Shift double-tapped again, CAPS UNLOCKED
  58. void dance_onshot_lsft(tap_dance_state_t *state, void *user_data) {
  59. switch (state->count) {
  60. case 1: // =>
  61. set_oneshot_mods (MOD_LSFT);
  62. break;
  63. case 2:
  64. register_code (KC_CAPS);
  65. //layer_on (LAYER_NAME);
  66. break;
  67. }
  68. }
  69. //Tap Dance Definitions
  70. tap_dance_action_t tap_dance_actions[] = {
  71. [TD_DEL_BSPC] = ACTION_TAP_DANCE_DOUBLE(KC_DEL, KC_BSPC),
  72. [TD_ESC_GRAVE] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_GRAVE),
  73. [TD_TAB_TILDE] = ACTION_TAP_DANCE_DOUBLE(KC_TAB, KC_TILDE),
  74. [TD_MINS_UNDS] = ACTION_TAP_DANCE_DOUBLE(KC_MINS, KC_UNDS),
  75. [TD_EQL_PLUS] = ACTION_TAP_DANCE_DOUBLE(KC_EQL, KC_PLUS),
  76. [TD_LBRC_LCBR] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, KC_LCBR),
  77. [TD_RBRC_RCBR] = ACTION_TAP_DANCE_DOUBLE(KC_RBRC, KC_RCBR),
  78. [TD_SCLN_COLN] = ACTION_TAP_DANCE_DOUBLE(KC_SCLN, KC_COLN),
  79. [TD_QUOT_DQT] = ACTION_TAP_DANCE_DOUBLE(KC_QUOT, KC_DQT),
  80. [TD_COMM_LABK] = ACTION_TAP_DANCE_DOUBLE(KC_COMM, KC_LABK),
  81. [TD_DOT_RABK] = ACTION_TAP_DANCE_DOUBLE(KC_DOT, KC_RABK),
  82. [TD_SLSH_QUES] = ACTION_TAP_DANCE_DOUBLE(KC_SLSH, KC_QUES),
  83. [TD_BSLS_PIPE] = ACTION_TAP_DANCE_DOUBLE(KC_BSLS, KC_PIPE),
  84. [TD_3_F3] = ACTION_TAP_DANCE_DOUBLE(KC_3, KC_F3),
  85. [TD_SHIFT_CAPS] = ACTION_TAP_DANCE_FN(dance_onshot_lsft)
  86. };
  87. // Fillers to make layering more clear
  88. // #define _______ KC_TRNS
  89. // #define XXXXXXX KC_NO
  90. #define KC_L1 LOWER
  91. #define KC_L2 RAISE
  92. // MO(_LOWER)
  93. // MO(_RAISE)
  94. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  95. /* Qwerty
  96. * ,-------------------------------------------------------------------------------------------------.
  97. * | DEL | Bksp | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = |
  98. * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
  99. * | HOME | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] |
  100. * |------+------+------+------+------+------+-------------+------+------+------+------+------+------|
  101. * | PGUP | CAPS | A | S | D | F | G | H | J | K | L | ; | ' | Enter|
  102. * |------+------+------+------+------+------+------|------+------+------+------+------+------+------|
  103. * | PGDN | Shift| Z | X | C | V | B | N | M | , | . | / | \ | Shift|
  104. * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
  105. * | END | Ctrl | Win | Alt | Lower| Space | Space |Raise | Alt | Prop | Ctrl | Esc |
  106. * `-------------------------------------------------------------------------------------------------'
  107. */
  108. [_QWERTY] = LAYOUT(
  109. //,---------------+-----------------+-------+-------+----------+------+----+----+------+----------------+---------------+----------------+----------------+----------------.
  110. TD(TD_DEL_BSPC), KC_BSPC , KC_1 , KC_2 , KC_3 , KC_4 ,KC_5,KC_6,KC_7 , KC_8 , KC_9 , KC_0 ,TD(TD_MINS_UNDS),TD(TD_EQL_PLUS) ,
  111. //|---------------+-----------------+-------+-------+----------+------+----+----+------+----------------+---------------+----------------+----------------+----------------|
  112. KC_HOME , TD(TD_TAB_TILDE),KC_Q ,KC_W ,KC_E ,KC_R ,KC_T,KC_Y,KC_U , KC_I , KC_O , KC_P ,TD(TD_LBRC_LCBR),TD(TD_RBRC_RCBR),
  113. //|---------------+-----------------+-------+-------+----------+------+----+----+------+----------------+---------------+----------------+----------------+----------------|
  114. KC_PGUP , KC_CAPS ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G,KC_H,KC_J ,KC_K , KC_L ,TD(TD_SCLN_COLN),TD(TD_QUOT_DQT) ,KC_ENT ,
  115. //|---------------+-----------------+-------+-------+----------+------+----+----+------+----------------+---------------+----------------+----------------+----------------|
  116. KC_PGDN ,TD(TD_SHIFT_CAPS),KC_Z ,KC_X ,KC_C ,KC_V ,KC_B,KC_N,KC_M ,TD(TD_COMM_LABK),TD(TD_DOT_RABK),TD(TD_SLSH_QUES),TD(TD_BSLS_PIPE),KC_RSFT ,
  117. //|---------------+-----------------+-------+-------+----------+------+----+----+------+----------------+---------------+----------------+----------------+----------------|
  118. KC_END , KC_LCTL ,KC_LGUI,KC_LALT, KC_L1 , KC_SPACE , KC_SPACE , KC_L2 ,KC_RALT ,KC_BTN2 ,KC_RCTL ,TD(TD_ESC_GRAVE)
  119. //`---------------+-----------------+-------+-------+----------+------+----+-----------+----------------+---------------+----------------+----------------+----------------'
  120. ),
  121. /* Lower
  122. * ,-------------------------------------------------------------------------------------------------.
  123. * | INS | ~` | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
  124. * |------+------+------+------+------+------+------+-------------+------+------+------+------+------|
  125. * | | ~ | | UP | | | | | | Next | Vol- | Vol+ | Play | |
  126. * |------+------+------+------+------+------+------+-------------+------+------+------+------+------|
  127. * | | | LEFT | DOWN |RIGHT | | | | | | | | |Enter |
  128. * |------+------+------+------+------+------+------|------+------+------+------+------+------+------|
  129. * | | | | | |ISO ~ |ISO | | | | | | | UP | |
  130. * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
  131. * | | | | | | | | | | Left | Down |Right |
  132. * `------------------------------------------------------------------------------------------+------'
  133. */
  134. [_LOWER] = LAYOUT(
  135. KC_INS, KC_GRV, KC_F1, KC_F2, KC_F3 , KC_F4 , KC_F5 , KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
  136. _______, KC_TILD, _______, KC_UP, _______ , _______ , _______ , _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______,
  137. _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______ , _______ , _______, _______, _______, _______, _______, _______, KC_ENT,
  138. _______, _______, _______, _______, _______ ,S(KC_NUHS),S(KC_NUBS), _______, _______, _______, _______, _______, KC_UP , _______,
  139. _______, _______, _______, _______, _______ , _______ , _______ , _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT
  140. ),
  141. /* Raise
  142. * ,-------------------------------------------------------------------------------------------------.
  143. * | | | | | | | | | | | | | | |
  144. * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
  145. * ,-------------------------------------------------------------------------------------------------.
  146. * | INS | Bksp | | | | | | | 7 | 8 | 9 | | | |
  147. * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
  148. * |PrtScr| | | | | | | | 4 | 5 | 6 | - | / | |
  149. * |------+------+------+------+------+-------------+------+------+------+------+------+------+------|
  150. * |ScrLck| | | | | | | | 1 | 2 | 3 | + | * |Enter |
  151. * |------+------+------+------+------+------|------+------+------+------+------+------+------+------|
  152. * |Pause | | | | |ISO # |ISO / | | 0 | , | . | = | | |
  153. * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
  154. * |CtAlDl| | | | | | | | | | | |
  155. * `-------------------------------------------------------------------------------------------------'
  156. */
  157. [_RAISE] = LAYOUT(
  158. KC_INS, KC_BSPC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_7, KC_8, KC_9, _______, _______, _______,
  159. KC_PSCR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_4, KC_5, KC_6, KC_MINS, KC_SLSH, XXXXXXX,
  160. KC_SCRL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_1, KC_2, KC_3, KC_PLUS, KC_ASTR, KC_ENT,
  161. KC_PAUS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_NUHS, KC_NUBS,XXXXXXX, KC_0, KC_COMM, KC_DOT,KC_EQL, XXXXXXX, _______,
  162. LALT(LCTL(KC_DEL)), _______, _______, _______, _______, _______, _______, _______,_______,XXXXXXX, XXXXXXX, XXXXXXX
  163. ),
  164. /* Adjust (Lower + Raise)
  165. * ,-------------------------------------------------------------------------------------------------.
  166. * | | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
  167. * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
  168. * | | | | Reset| | | | | | | | | | Del |
  169. * |------+------+------+------+------+------+------+-------------+------+------+------+------+------|
  170. * | | | | | |Audoff|Aud on|AGnorm|AGswap| | | | | |
  171. * |------+------+------+------+------+------+------+------|------+------+------+------+------+------|
  172. * | | | |Voice-|Voice+|Musoff|Mus on| | | | | | | |
  173. * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
  174. * | | | | | | | | | | | | | |
  175. * `-------------------------------------------------------------------------------------------------'
  176. */
  177. [_ADJUST] = LAYOUT(
  178. _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
  179. XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_DEL,
  180. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, AU_ON, AU_OFF, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
  181. XXXXXXX, XXXXXXX, XXXXXXX, AU_PREV, AU_NEXT, MU_ON, MU_OFF, MI_ON, MI_OFF, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  182. XXXXXXX, _______, _______, _______, _______, _______, _______, _______,_______,_______, _______, _______
  183. )
  184. };
  185. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  186. switch (keycode) {
  187. case LOWER:
  188. if (record->event.pressed) {
  189. layer_on(_LOWER);
  190. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  191. } else {
  192. layer_off(_LOWER);
  193. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  194. }
  195. return false;
  196. break;
  197. case RAISE:
  198. if (record->event.pressed) {
  199. layer_on(_RAISE);
  200. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  201. } else {
  202. layer_off(_RAISE);
  203. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  204. }
  205. return false;
  206. break;
  207. case BACKLIT:
  208. if (record->event.pressed) {
  209. register_code(KC_RSFT);
  210. #ifdef BACKLIGHT_ENABLE
  211. backlight_step();
  212. #endif
  213. } else {
  214. unregister_code(KC_RSFT);
  215. }
  216. return false;
  217. break;
  218. }
  219. return true;
  220. };