aboutsummaryrefslogtreecommitdiff
path: root/keyboards/splitkb/kyria/keymaps/via/keymap.c
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/splitkb/kyria/keymaps/via/keymap.c')
-rw-r--r--keyboards/splitkb/kyria/keymaps/via/keymap.c248
1 files changed, 248 insertions, 0 deletions
diff --git a/keyboards/splitkb/kyria/keymaps/via/keymap.c b/keyboards/splitkb/kyria/keymaps/via/keymap.c
new file mode 100644
index 000000000..0b79afc11
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/via/keymap.c
@@ -0,0 +1,248 @@
1/* Copyright 2019 Thomas Baart <thomas@splitkb.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
18enum layers { _BASE = 0, _NAV, _SYM, _FUNCTION, _ADJUST };
19
20// Aliases for readability
21
22#define SYM MO(_SYM)
23#define NAV MO(_NAV)
24#define FKEYS MO(_FUNCTION)
25#define ADJUST MO(_ADJUST)
26
27#define CTL_ESC MT(MOD_LCTL, KC_ESC)
28#define CTL_QUOT MT(MOD_RCTL, KC_QUOTE)
29#define CTL_MINS MT(MOD_RCTL, KC_MINUS)
30#define ALT_ENT MT(MOD_LALT, KC_ENT)
31
32// Note: LAlt/Enter (ALT_ENT) is not the same thing as the keyboard shortcut Alt+Enter.
33// The notation `mod/tap` denotes a key that activates the modifier `mod` when held down, and
34// produces the key `tap` when tapped (i.e. pressed and released).
35
36// clang-format off
37#define LAYOUT_via( \
38 L00, L01, L02, L03, L04, L05, LE0, LE1, RE0, RE1, R06, R07, R08, R09, R10, R11, \
39 L12, L13, L14, L15, L16, L17, R18, R19, R20, R21, R22, R23, \
40 L24, L25, L26, L27, L28, L29, L30, L31, R32, R33, R34, R35, R36, R37, R38, R39, \
41 L40, L41, L42, L43, L44, R45, R46, R47, R48, R49 \
42) \
43{ \
44 { LE0, LE1, L05, L04, L03, L02, L01, L00 }, \
45 { RE0, RE1, L17, L16, L15, L14, L13, L12 }, \
46 { L31, L30, L29, L28, L27, L26, L25, L24 }, \
47 { L44, L43, L42, L41, L40, KC_NO, KC_NO, KC_NO }, \
48 { KC_NO, KC_NO, R06, R07, R08, R09, R10, R11 }, \
49 { KC_NO, KC_NO, R18, R19, R20, R21, R22, R23 }, \
50 { R32, R33, R34, R35, R36, R37, R38, R39 }, \
51 { R45, R46, R47, R48, R49, KC_NO, KC_NO, KC_NO }, \
52}
53
54const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
55/*
56 * Base Layer: QWERTY
57 *
58 * ,-------------------------------------------. ,-------------------------------------------.
59 * | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
60 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
61 * |Ctrl/Esc| A | S | D | F | G | | H | J | K | L | ; : |Ctrl/' "|
62 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
63 * | LShift | Z | X | C | V | B | [ { |CapsLk| |F-keys| ] } | N | M | , < | . > | / ? | RShift |
64 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
65 * |Adjust| LGUI | LAlt/| Space| Nav | | Sym | Space| AltGr| RGUI | Menu |
66 * | | | Enter| | | | | | | | |
67 * `----------------------------------' `----------------------------------'
68 */
69 [_BASE] = LAYOUT_via(
70 KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_VOLD, KC_VOLU, KC_PGDN, KC_PGUP, KC_Y, KC_U , KC_I , KC_O , KC_P , KC_BSPC,
71 CTL_ESC , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H, KC_J , KC_K , KC_L ,KC_SCLN,CTL_QUOT,
72 KC_LSFT , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_LBRC,KC_CAPS, FKEYS , KC_RBRC, KC_N, KC_M ,KC_COMM, KC_DOT ,KC_SLSH, KC_RSFT,
73 ADJUST , KC_LGUI, ALT_ENT, KC_SPC , NAV , SYM , KC_SPC ,KC_RALT, KC_RGUI, KC_APP
74 ),
75
76/*
77 * Nav Layer: Media, navigation
78 *
79 * ,-------------------------------------------. ,-------------------------------------------.
80 * | | | | | | | | PgUp | Home | ↑ | End | VolUp| Delete |
81 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
82 * | | GUI | Alt | Ctrl | Shift| | | PgDn | ← | ↓ | → | VolDn| Insert |
83 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
84 * | | | | | | | |ScLck | | | | Pause|M Prev|M Play|M Next|VolMut| PrtSc |
85 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
86 * | | | | | | | | | | | |
87 * | | | | | | | | | | | |
88 * `----------------------------------' `----------------------------------'
89 */
90 [_NAV] = LAYOUT_via(
91 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_VOLU, KC_DEL,
92 _______, KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_VOLD, KC_INS,
93 _______, _______, _______, _______, _______, _______, _______, KC_SLCK, _______, _______,KC_PAUSE, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_PSCR,
94 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
95 ),
96
97/*
98 * Sym Layer: Numbers and symbols
99 *
100 * ,-------------------------------------------. ,-------------------------------------------.
101 * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | = |
102 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
103 * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | + |
104 * |--------+------+------+------+------+------+-------------. ,------+-------------+------+------+------+------+--------|
105 * | | | \ | : | ; | - | \ | | [ { | | | | ] } | # ~ | _ | , | . | / | ? |
106 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
107 * | | | | | | | | | | | |
108 * | | | | | | | | | | | |
109 * `----------------------------------' `----------------------------------'
110 */
111 [_SYM] = LAYOUT_via(
112 KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , _______, _______, _______, _______, KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_EQL ,
113 KC_TILD , KC_EXLM, KC_AT , KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PLUS,
114 KC_PIPE , KC_BSLS, KC_COLN, KC_SCLN, KC_MINS, KC_NUBS, KC_LBRC, _______, _______, KC_RBRC, KC_NUHS, KC_UNDS, KC_COMM, KC_DOT, KC_SLSH, KC_QUES,
115 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
116 ),
117
118/*
119 * Function Layer: Function keys
120 *
121 * ,-------------------------------------------. ,-------------------------------------------.
122 * | | F9 | F10 | F11 | F12 | | | | | | | | |
123 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
124 * | | F5 | F6 | F7 | F8 | | | | Shift| Ctrl | Alt | GUI | |
125 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
126 * | | F1 | F2 | F3 | F4 | | | | | | | | | | | | |
127 * `--------+------+------+--------------------+------+------| |------+------+------+------+------+----------------------'
128 * | | | | | | | | | | | |
129 * | | | | | | | | | | | |
130 * `----------------------------------' `----------------------------------'
131 */
132 [_FUNCTION] = LAYOUT_via(
133 _______, KC_F9 , KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
134 _______, KC_F5 , KC_F6 , KC_F7 , KC_F8 , _______, _______, KC_RSFT, KC_RCTL, KC_LALT, KC_RGUI, _______,
135 _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
136 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
137 ),
138
139/*
140 * Adjust Layer: Default layer settings, RGB
141 *
142 * ,-------------------------------------------. ,-------------------------------------------.
143 * | | | |QWERTY| | | | | | | | | |
144 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
145 * | | | |Dvorak| | | | TOG | SAI | HUI | VAI | MOD | |
146 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
147 * | | | |Colmak| | | | | | | | | SAD | HUD | VAD | RMOD | |
148 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
149 * | | | | | | | | | | | |
150 * | | | | | | | | | | | |
151 * `----------------------------------' `----------------------------------'
152 */
153 [_ADJUST] = LAYOUT_via(
154 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
155 _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD, _______,
156 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_HUD, RGB_VAD, RGB_RMOD, _______,
157 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
158 ),
159
160
161};
162// clang-format on
163
164#ifdef ENCODER_ENABLE
165static uint8_t encoder_state[2] = {0};
166static keypos_t encoder_ccw[2] = {{0, 0}, {0, 1}};
167static keypos_t encoder_cw[2] = {{1, 0}, {1, 1}};
168
169void encoder_action_unregister(void) {
170 for (int index = 0; index < 2; ++index) {
171 if (encoder_state[index]) {
172 keyevent_t encoder_event = (keyevent_t){.key = encoder_state[index] >> 1 ? encoder_cw[index] : encoder_ccw[index], .pressed = false, .time = (timer_read() | 1)};
173 encoder_state[index] = 0;
174 action_exec(encoder_event);
175 }
176 }
177}
178
179void encoder_action_register(uint8_t index, bool clockwise) {
180 keyevent_t encoder_event = (keyevent_t){.key = clockwise ? encoder_cw[index] : encoder_ccw[index], .pressed = true, .time = (timer_read() | 1)};
181 encoder_state[index] = (clockwise ^ 1) | (clockwise << 1);
182 action_exec(encoder_event);
183}
184
185void matrix_scan_user(void) { encoder_action_unregister(); }
186
187bool encoder_update_user(uint8_t index, bool clockwise) {
188 encoder_action_register(index, clockwise);
189 return false;
190};
191#endif
192
193#ifdef OLED_DRIVER_ENABLE
194void oled_task_user(void) {
195 if (is_keyboard_master()) {
196 // QMK Logo and version information
197 // clang-format off
198 static const char PROGMEM qmk_logo[] = {
199 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
200 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
201 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0};
202 // clang-format on
203
204 oled_write_P(qmk_logo, false);
205 oled_write_P(PSTR("Kyria rev1.0 w/ VIA\n\n"), false);
206
207 // Host Keyboard Layer Status
208 oled_write_P(PSTR("Layer: "), false);
209 switch (get_highest_layer(layer_state | default_layer_state)) {
210 case 0:
211 oled_write_P(PSTR("Base\n"), false);
212 break;
213 case 1:
214 oled_write_P(PSTR("Nav\n"), false);
215 break;
216 case 2:
217 oled_write_P(PSTR("Sym\n"), false);
218 break;
219 case 3:
220 oled_write_P(PSTR("Function\n"), false);
221 break;
222 case 4:
223 oled_write_P(PSTR("Adjust\n"), false);
224 break;
225 }
226
227 // Host Keyboard LED Status
228 led_t led_usb_state = host_keyboard_led_state();
229 oled_write_P(led_usb_state.num_lock ? PSTR("NUMLCK ") : PSTR(" "), false);
230 oled_write_P(led_usb_state.caps_lock ? PSTR("CAPLCK ") : PSTR(" "), false);
231 oled_write_P(led_usb_state.scroll_lock ? PSTR("SCRLCK ") : PSTR(" "), false);
232 } else {
233 // clang-format off
234 static const char PROGMEM kyria_logo[] = {
235 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,224,240,112,120, 56, 60, 28, 30, 14, 14, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 30, 28, 60, 56,120,112,240,224,192,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
236 0, 0, 0, 0, 0, 0, 0,192,224,240,124, 62, 31, 15, 7, 3, 1,128,192,224,240,120, 56, 60, 28, 30, 14, 14, 7, 7,135,231,127, 31,255,255, 31,127,231,135, 7, 7, 14, 14, 30, 28, 60, 56,120,240,224,192,128, 1, 3, 7, 15, 31, 62,124,240,224,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
237 0, 0, 0, 0,240,252,255, 31, 7, 1, 0, 0,192,240,252,254,255,247,243,177,176, 48, 48, 48, 48, 48, 48, 48,120,254,135, 1, 0, 0,255,255, 0, 0, 1,135,254,120, 48, 48, 48, 48, 48, 48, 48,176,177,243,247,255,254,252,240,192, 0, 0, 1, 7, 31,255,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
238 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,254,255,255, 1, 1, 7, 30,120,225,129,131,131,134,134,140,140,152,152,177,183,254,248,224,255,255,224,248,254,183,177,152,152,140,140,134,134,131,131,129,225,120, 30, 7, 1, 1,255,255,254, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0,255,255, 0, 0,192,192, 48, 48, 0, 0,240,240, 0, 0, 0, 0, 0, 0,240,240, 0, 0,240,240,192,192, 48, 48, 48, 48,192,192, 0, 0, 48, 48,243,243, 0, 0, 0, 0, 0, 0, 48, 48, 48, 48, 48, 48,192,192, 0, 0, 0, 0, 0,
239 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,127,255,255,128,128,224,120, 30,135,129,193,193, 97, 97, 49, 49, 25, 25,141,237,127, 31, 7,255,255, 7, 31,127,237,141, 25, 25, 49, 49, 97, 97,193,193,129,135, 30,120,224,128,128,255,255,127, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 63, 63, 3, 3, 12, 12, 48, 48, 0, 0, 0, 0, 51, 51, 51, 51, 51, 51, 15, 15, 0, 0, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 63, 63, 48, 48, 0, 0, 12, 12, 51, 51, 51, 51, 51, 51, 63, 63, 0, 0, 0, 0, 0,
240 0, 0, 0, 0, 15, 63,255,248,224,128, 0, 0, 3, 15, 63,127,255,239,207,141, 13, 12, 12, 12, 12, 12, 12, 12, 30,127,225,128, 0, 0,255,255, 0, 0,128,225,127, 30, 12, 12, 12, 12, 12, 12, 12, 13,141,207,239,255,127, 63, 15, 3, 0, 0,128,224,248,255, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
241 0, 0, 0, 0, 0, 0, 0, 3, 7, 15, 62,124,248,240,224,192,128, 1, 3, 7, 15, 30, 28, 60, 56,120,112,112,224,224,225,231,254,248,255,255,248,254,231,225,224,224,112,112,120, 56, 60, 28, 30, 15, 7, 3, 1,128,192,224,240,248,124, 62, 15, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
242 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 15, 14, 30, 28, 60, 56,120,112,112,112,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,112,112,112,120, 56, 60, 28, 30, 14, 15, 7, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
243 };
244 // clang-format on
245 oled_write_raw_P(kyria_logo, sizeof(kyria_logo));
246 }
247}
248#endif