keymap.c 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. /* Copyright 2018 Carlos Filoteo
  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. #ifdef LED_ENABLE
  18. #include "uart.h"
  19. #endif
  20. #include "keymap_norwegian.h"
  21. #define LT3_TAB LT(3, KC_TAB)
  22. #define MT_RSFT_ENT MT(MOD_RSFT, KC_ENT)
  23. #define CTRADEL LALT(LCTL(KC_DEL))
  24. #define ALTTAB LALT(KC_TAB)
  25. enum custom_keycodes {
  26. LED_TOG = SAFE_RANGE,
  27. LED_CHG
  28. };
  29. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  30. /* Base Layer - L0
  31. * ,-------------------------------------------------------------------------.
  32. * | Esc | Q | W | E | R | T | Y | U | I | O | P |Bspace |
  33. * |-------------------------------------------------------------------------+
  34. * |Tab/L3| A | S | D | F | G | H | J | K | L | ' |Ent/RS|
  35. * |-------------------------------------------------------------------------+
  36. * | Shift | Z | X | C | V | B | N | M | , | . | Up | L4 |
  37. * |-------------------------------------------------------------------------+
  38. * | Ctrl| Gui | L4 | Alt | L2 | Space | L1 | Ctrl| Left| Down|Right|
  39. * `-------------------------------------------------------------------------'
  40. */
  41. LAYOUT( /* Base - L0 */
  42. KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
  43. LT3_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, NO_QUOT, MT_RSFT_ENT,
  44. KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, MO(4),
  45. KC_LCTL, KC_LGUI, MO(4), KC_LALT, MO(2), KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
  46. ),
  47. /* FN Layer 1
  48. * ,-------------------------------------------------------------------------.
  49. * | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Delete|
  50. * |-------------------------------------------------------------------------+
  51. * | | | | | | | | | + | = | * | / |
  52. * |-------------------------------------------------------------------------+
  53. * | | | | | | | | | - | _ | PgUp| |
  54. * |-------------------------------------------------------------------------+
  55. * | | | |Capsl| | | | | Home| PgDn| End |
  56. * `-------------------------------------------------------------------------'
  57. */
  58. LAYOUT( /* Right modifier - L1 */
  59. KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DELETE,
  60. _______, _______, _______, _______, _______, _______, _______, _______, NO_PLUS, NO_EQL, NO_ASTR, NO_SLSH,
  61. _______, _______, _______, _______, _______, _______, _______, _______, NO_MINS, NO_UNDS, KC_PGUP, _______,
  62. _______, _______, _______, KC_CAPS, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
  63. ),
  64. /* FN Layer 2
  65. * ,-------------------------------------------------------------------------.
  66. * | § | ! | " | # | ¤ | % | & | / | = | + | \ | Delete|
  67. * |-------------------------------------------------------------------------+
  68. * | | | ? | { | [ | ( | ) | ] | } | F10 | F11 | F12 |
  69. * |-------------------------------------------------------------------------+
  70. * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | PgUp| |
  71. * |-------------------------------------------------------------------------+
  72. * | | | |Capsl| | | | | Home| PgDn| End |
  73. * `-------------------------------------------------------------------------'
  74. */
  75. LAYOUT( /* Left modifier - L2 */
  76. NO_SECT, KC_EXCLAIM, NO_DQUO, KC_HASH, NO_CURR, KC_PERCENT, NO_AMPR, NO_SLSH, NO_EQL, NO_PLUS, NO_BSLS, KC_DELETE,
  77. _______, _______, NO_QUES, NO_LCBR, NO_LBRC, NO_LPRN, NO_RPRN, NO_RBRC, NO_RCBR, KC_F10, KC_F11, KC_F12,
  78. _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_PGUP, _______,
  79. _______, _______, _______, KC_CAPS, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
  80. ),
  81. /* FN Layer 3
  82. * ,-------------------------------------------------------------------------.
  83. * | Esc | Calc|Webhm| Comp|Webrf| | | | | |PrtSc|CtrAlDl|
  84. * |-------------------------------------------------------------------------+
  85. * | | | | | | | |VolDn|VolUp| | | |
  86. * |-------------------------------------------------------------------------+
  87. * | |LEDtg|LEDch| | |QK_BOOT| | Mute| |MouB1|MousU|MouB2|
  88. * |-------------------------------------------------------------------------+
  89. * | | | | | | | | |MousL|MousD|MousR|
  90. * `-------------------------------------------------------------------------'
  91. */
  92. LAYOUT( /* Hold Tab down - L3 */
  93. KC_ESC, KC_CALC, KC_WHOM, KC_MYCM, KC_WREF, _______, _______, _______, _______, _______, KC_PSCR, CTRADEL,
  94. _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, _______, _______, _______,
  95. _______, LED_TOG, LED_CHG, _______, _______, QK_BOOT, _______, KC_MUTE, _______, KC_MS_BTN1, KC_MS_U, KC_MS_BTN2,
  96. _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R
  97. ),
  98. /* FN Layer 4
  99. * ,-------------------------------------------------------------------------.
  100. * | | | @ | £ | $ | ~ | | ¨ | ´ | ` | Å | |
  101. * |-------------------------------------------------------------------------+
  102. * | | | | € | | | | | ^ | Ø | Æ | |
  103. * |-------------------------------------------------------------------------+
  104. * | | < | | | | | | µ | | | | |
  105. * |-------------------------------------------------------------------------+
  106. * | | | | | | | | L5 | | | |
  107. * `-------------------------------------------------------------------------'
  108. */
  109. LAYOUT( /* Norsk - L4 */
  110. _______, _______, NO_AT, NO_PND, NO_DLR, NO_TILD, _______, NO_QUOT, NO_ACUT, NO_GRV, NO_ARNG, _______,
  111. _______, _______, _______, NO_EURO, _______, _______, _______, _______, NO_CIRC, NO_OSTR, NO_AE, _______,
  112. _______, NO_LABK, _______, _______, _______, _______, _______, NO_MICR, _______, _______, _______, _______,
  113. _______, _______, _______, _______, _______, _______, _______, TO(5), _______, _______, _______
  114. ),
  115. /* GAMING Layer (toggle on and off)
  116. * ,-------------------------------------------------------------------------.
  117. * | Esc | Q | W | E | R | T | Y | F1 | F2 | F3 | F4 |Alt+Tab|
  118. * |-------------------------------------------------------------------------+
  119. * | Tab | A | S | D | F | G | H | F5 | F6 | F7 | F8 | Enter|
  120. * |-------------------------------------------------------------------------+
  121. * | Shift | 1 | 2 | 3 | 4 | 5 | 6 | F9 | F10 | F11 | Up |TOGGL|
  122. * |-------------------------------------------------------------------------+
  123. * | Ctrl| Z | X | C | B | Space | M | V |Left |Down |Right|
  124. * `-------------------------------------------------------------------------'
  125. */
  126. LAYOUT( /* GAMING, toggled on and off - L5 */
  127. KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_F1, KC_F2, KC_F3, KC_F4, ALTTAB,
  128. KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_F5, KC_F6, KC_F7, KC_F8, KC_ENT,
  129. KC_LSFT, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_F9, KC_F10, KC_F11, KC_UP, TO(0),
  130. KC_LCTL, KC_Z, KC_X, KC_C, KC_B, KC_SPC, KC_M, KC_V, KC_LEFT, KC_DOWN, KC_RGHT
  131. ),
  132. };
  133. //LED keymap functions
  134. #ifdef LED_ENABLE
  135. void led_chmode(void) {
  136. uart_write(0x65);
  137. }
  138. void led_toggle(void) {
  139. uart_write(0x64);
  140. }
  141. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  142. if (record->event.pressed) {
  143. switch(keycode) {
  144. case LED_TOG:
  145. #ifdef LED_ENABLE
  146. led_toggle();
  147. #endif
  148. return false;
  149. case LED_CHG:
  150. #ifdef LED_ENABLE
  151. led_chmode();
  152. #endif
  153. return false;
  154. }
  155. }
  156. return true;
  157. };
  158. #endif