keymap.c 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. /* Copyright 2015-2017 Jack Humbert
  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. #include "drashna.h"
  18. enum planck_keycodes {
  19. BACKLIT = NEW_SAFE_RANGE,
  20. };
  21. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  22. /* Qwerty
  23. * ,-----------------------------------------------------------------------------------.
  24. * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
  25. * |------+------+------+------+------+-------------+------+------+------+------+------|
  26. * | Esc | A | S | D | F | G | H | J | K | L | ; | " |
  27. * |------+------+------+------+------+------|------+------+------+------+------+------|
  28. * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
  29. * |------+------+------+------+------+------+------+------+------+------+------+------|
  30. * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
  31. * `-----------------------------------------------------------------------------------'
  32. */
  33. [_QWERTY] = LAYOUT_ortho_4x12_wrapper(
  34. KC_TAB, _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, KC_BSPC,
  35. KC_ESC, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, KC_QUOT,
  36. KC_LSFT, _________________QWERTY_L3_________________, _________________QWERTY_R3_________________, KC_ENT,
  37. BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
  38. ),
  39. /* Colemak
  40. * ,-----------------------------------------------------------------------------------.
  41. * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
  42. * |------+------+------+------+------+-------------+------+------+------+------+------|
  43. * | Esc | A | R | S | T | D | H | N | E | I | O | " |
  44. * |------+------+------+------+------+------|------+------+------+------+------+------|
  45. * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
  46. * |------+------+------+------+------+------+------+------+------+------+------+------|
  47. * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
  48. * `-----------------------------------------------------------------------------------'
  49. */
  50. [_COLEMAK] = LAYOUT_ortho_4x12_wrapper(
  51. KC_TAB, _________________COLEMAK_L1________________, _________________COLEMAK_R1________________, KC_BSPC,
  52. KC_ESC, _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, KC_QUOT,
  53. KC_LSFT, _________________COLEMAK_L3________________, _________________COLEMAK_R3________________, KC_ENT,
  54. BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
  55. ),
  56. /* Dvorak
  57. * ,-----------------------------------------------------------------------------------.
  58. * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp |
  59. * |------+------+------+------+------+-------------+------+------+------+------+------|
  60. * | Esc | A | O | E | U | I | D | H | T | N | S | / |
  61. * |------+------+------+------+------+------|------+------+------+------+------+------|
  62. * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
  63. * |------+------+------+------+------+------+------+------+------+------+------+------|
  64. * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
  65. * `-----------------------------------------------------------------------------------'
  66. */
  67. [_DVORAK] = LAYOUT_ortho_4x12_wrapper(
  68. KC_TAB, _________________DVORAK_L1_________________, _________________DVORAK_R1_________________, KC_BSPC,
  69. KC_ESC, _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, KC_SLSH,
  70. KC_LSFT, _________________DVORAK_L3_________________, _________________DVORAK_R3_________________, KC_ENT,
  71. BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
  72. ),
  73. [_WORKMAN] = LAYOUT_ortho_4x12_wrapper(
  74. KC_TAB, _________________WORKMAN_L1________________, _________________WORKMAN_R1________________, KC_BSPC,
  75. KC_ESC, _________________WORKMAN_L2________________, _________________WORKMAN_R2________________, KC_QUOT,
  76. KC_LSFT, _________________WORKMAN_L3________________, _________________WORKMAN_R3________________, KC_ENT,
  77. BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
  78. ),
  79. /* Lower
  80. * ,-----------------------------------------------------------------------------------.
  81. * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
  82. * |------+------+------+------+------+-------------+------+------+------+------+------|
  83. * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
  84. * |------+------+------+------+------+------|------+------+------+------+------+------|
  85. * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | |
  86. * |------+------+------+------+------+------+------+------+------+------+------+------|
  87. * | | | | | | | | Next | Vol- | Vol+ | Play |
  88. * `-----------------------------------------------------------------------------------'
  89. */
  90. [_LOWER] = LAYOUT_ortho_4x12_wrapper(
  91. KC_TILD, _________________LOWER_L1__________________, _________________LOWER_R1__________________, KC_BSPC,
  92. KC_DEL, _________________LOWER_L2__________________, _________________LOWER_R2__________________, KC_PIPE,
  93. _______, _________________LOWER_L3__________________, _________________LOWER_R3__________________, _______,
  94. _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
  95. ),
  96. /* Raise
  97. * ,-----------------------------------------------------------------------------------.
  98. * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
  99. * |------+------+------+------+------+-------------+------+------+------+------+------|
  100. * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
  101. * |------+------+------+------+------+------|------+------+------+------+------+------|
  102. * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |Pg Up |Pg Dn | |
  103. * |------+------+------+------+------+------+------+------+------+------+------+------|
  104. * | | | | | | | | Next | Vol- | Vol+ | Play |
  105. * `-----------------------------------------------------------------------------------'
  106. */
  107. [_RAISE] = LAYOUT_ortho_4x12_wrapper(
  108. KC_GRV, _________________RAISE_L1__________________, _________________RAISE_R1__________________, KC_BSPC,
  109. KC_DEL, _________________RAISE_L2__________________, _________________RAISE_R2__________________, KC_BSLS,
  110. _______, _________________RAISE_L3__________________, _________________RAISE_R3__________________, _______,
  111. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
  112. ),
  113. /* Adjust (Lower + Raise)
  114. * ,-----------------------------------------------------------------------------------.
  115. * | | Reset| | | | | | | | | | Del |
  116. * |------+------+------+------+------+-------------+------+------+------+------+------|
  117. * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| |
  118. * |------+------+------+------+------+------|------+------+------+------+------+------|
  119. * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | |
  120. * |------+------+------+------+------+------+------+------+------+------+------+------|
  121. * | | | | | | | | | | | |
  122. * `-----------------------------------------------------------------------------------'
  123. */
  124. [_ADJUST] = LAYOUT_ortho_4x12_wrapper(
  125. _______, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, KC_DEL,
  126. _______, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, _______,
  127. _______, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, _______,
  128. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
  129. )
  130. };
  131. bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
  132. switch (keycode) {
  133. #ifdef KEYBOARD_planck
  134. case BACKLIT:
  135. if (record->event.pressed) {
  136. register_code(KC_RSFT);
  137. #ifdef BACKLIGHT_ENABLE
  138. backlight_step();
  139. #endif
  140. PORTE &= ~(1<<6);
  141. } else {
  142. unregister_code(KC_RSFT);
  143. PORTE |= (1<<6);
  144. }
  145. return false;
  146. break;
  147. #endif
  148. }
  149. return true;
  150. }
  151. bool music_mask_user(uint16_t keycode) {
  152. switch (keycode) {
  153. case RAISE:
  154. case LOWER:
  155. return false;
  156. default:
  157. return true;
  158. }
  159. }