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