aboutsummaryrefslogtreecommitdiff
path: root/keyboards/splitkb
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/splitkb')
-rw-r--r--keyboards/splitkb/kyria/.noci0
-rw-r--r--keyboards/splitkb/kyria/config.h18
-rw-r--r--keyboards/splitkb/kyria/info.json63
-rw-r--r--keyboards/splitkb/kyria/keymaps/asapjockey/config.h47
-rw-r--r--keyboards/splitkb/kyria/keymaps/asapjockey/keymap.c313
-rw-r--r--keyboards/splitkb/kyria/keymaps/asapjockey/rules.mk5
-rw-r--r--keyboards/splitkb/kyria/keymaps/benji/config.h34
-rw-r--r--keyboards/splitkb/kyria/keymaps/benji/glcdfont.c228
-rw-r--r--keyboards/splitkb/kyria/keymaps/benji/keymap.c247
-rw-r--r--keyboards/splitkb/kyria/keymaps/benji/readme.md246
-rw-r--r--keyboards/splitkb/kyria/keymaps/benji/rules.mk3
-rw-r--r--keyboards/splitkb/kyria/keymaps/cjuniet/config.h37
-rw-r--r--keyboards/splitkb/kyria/keymaps/cjuniet/default.json33
-rw-r--r--keyboards/splitkb/kyria/keymaps/cjuniet/keymap.c127
-rw-r--r--keyboards/splitkb/kyria/keymaps/cjuniet/rules.mk6
-rw-r--r--keyboards/splitkb/kyria/keymaps/corodiak/config.h45
-rw-r--r--keyboards/splitkb/kyria/keymaps/corodiak/keymap.c321
-rw-r--r--keyboards/splitkb/kyria/keymaps/corodiak/rules.mk4
-rw-r--r--keyboards/splitkb/kyria/keymaps/cwebster2/config.h55
-rw-r--r--keyboards/splitkb/kyria/keymaps/cwebster2/keymap.c401
-rw-r--r--keyboards/splitkb/kyria/keymaps/cwebster2/rules.mk5
-rw-r--r--keyboards/splitkb/kyria/keymaps/default/config.h32
-rw-r--r--keyboards/splitkb/kyria/keymaps/default/keymap.c172
-rw-r--r--keyboards/splitkb/kyria/keymaps/default/rules.mk3
-rw-r--r--keyboards/splitkb/kyria/keymaps/drashna/config.h35
-rw-r--r--keyboards/splitkb/kyria/keymaps/drashna/keymap.c194
-rw-r--r--keyboards/splitkb/kyria/keymaps/drashna/rules.mk15
-rw-r--r--keyboards/splitkb/kyria/keymaps/ghidalgo93/config.h41
-rw-r--r--keyboards/splitkb/kyria/keymaps/ghidalgo93/keymap.c246
-rw-r--r--keyboards/splitkb/kyria/keymaps/ghidalgo93/rules.mk4
-rw-r--r--keyboards/splitkb/kyria/keymaps/gotham/README.md56
-rw-r--r--keyboards/splitkb/kyria/keymaps/gotham/config.h48
-rw-r--r--keyboards/splitkb/kyria/keymaps/gotham/encoder_utils.c94
-rw-r--r--keyboards/splitkb/kyria/keymaps/gotham/encoder_utils.h37
-rw-r--r--keyboards/splitkb/kyria/keymaps/gotham/keycodes.h16
-rw-r--r--keyboards/splitkb/kyria/keymaps/gotham/keymap.c127
-rw-r--r--keyboards/splitkb/kyria/keymaps/gotham/oled_utils.c103
-rw-r--r--keyboards/splitkb/kyria/keymaps/gotham/oled_utils.h25
-rw-r--r--keyboards/splitkb/kyria/keymaps/gotham/rules.mk21
-rw-r--r--keyboards/splitkb/kyria/keymaps/gotham/thumbstick.c195
-rw-r--r--keyboards/splitkb/kyria/keymaps/gotham/thumbstick.h98
-rw-r--r--keyboards/splitkb/kyria/keymaps/j-inc/config.h45
-rw-r--r--keyboards/splitkb/kyria/keymaps/j-inc/keymap.c376
-rw-r--r--keyboards/splitkb/kyria/keymaps/j-inc/rules.mk18
-rw-r--r--keyboards/splitkb/kyria/keymaps/jhelvy/config.h33
-rw-r--r--keyboards/splitkb/kyria/keymaps/jhelvy/keymap.c202
-rw-r--r--keyboards/splitkb/kyria/keymaps/jhelvy/rules.mk8
-rw-r--r--keyboards/splitkb/kyria/keymaps/kejadlen/config.h47
-rw-r--r--keyboards/splitkb/kyria/keymaps/kejadlen/keymap.c63
-rw-r--r--keyboards/splitkb/kyria/keymaps/kejadlen/rules.mk5
-rw-r--r--keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/config.h37
-rw-r--r--keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/keymap.c5
-rw-r--r--keyboards/splitkb/kyria/keymaps/mattir/config.h55
-rw-r--r--keyboards/splitkb/kyria/keymaps/mattir/keymap.c292
-rw-r--r--keyboards/splitkb/kyria/keymaps/mattir/readme.md141
-rw-r--r--keyboards/splitkb/kyria/keymaps/mattir/rules.mk4
-rw-r--r--keyboards/splitkb/kyria/keymaps/mattir2/config.h30
-rw-r--r--keyboards/splitkb/kyria/keymaps/mattir2/keymap.c66
-rw-r--r--keyboards/splitkb/kyria/keymaps/mattir2/readme.md67
-rw-r--r--keyboards/splitkb/kyria/keymaps/mattir2/rules.mk4
-rw-r--r--keyboards/splitkb/kyria/keymaps/ninjonas/README.md113
-rw-r--r--keyboards/splitkb/kyria/keymaps/ninjonas/config.h37
-rw-r--r--keyboards/splitkb/kyria/keymaps/ninjonas/keymap.c118
-rw-r--r--keyboards/splitkb/kyria/keymaps/ninjonas/oled.c209
-rw-r--r--keyboards/splitkb/kyria/keymaps/ninjonas/rules.mk6
-rw-r--r--keyboards/splitkb/kyria/keymaps/pierrec83/config.h65
-rw-r--r--keyboards/splitkb/kyria/keymaps/pierrec83/encoders.c64
-rw-r--r--keyboards/splitkb/kyria/keymaps/pierrec83/keymap.c18
-rw-r--r--keyboards/splitkb/kyria/keymaps/pierrec83/keymap.json1
-rw-r--r--keyboards/splitkb/kyria/keymaps/pierrec83/layers.h7
-rw-r--r--keyboards/splitkb/kyria/keymaps/pierrec83/readme.md44
-rw-r--r--keyboards/splitkb/kyria/keymaps/pierrec83/rules.mk5
-rw-r--r--keyboards/splitkb/kyria/keymaps/plattfot/README.md172
-rw-r--r--keyboards/splitkb/kyria/keymaps/plattfot/config.h44
-rw-r--r--keyboards/splitkb/kyria/keymaps/plattfot/keymap.c480
-rw-r--r--keyboards/splitkb/kyria/keymaps/plattfot/rules.mk5
-rw-r--r--keyboards/splitkb/kyria/keymaps/rmw/config.h36
-rw-r--r--keyboards/splitkb/kyria/keymaps/rmw/keymap.c200
-rw-r--r--keyboards/splitkb/kyria/keymaps/rmw/readme.md9
-rw-r--r--keyboards/splitkb/kyria/keymaps/rmw/rules.mk4
-rw-r--r--keyboards/splitkb/kyria/keymaps/shinze/config.h32
-rw-r--r--keyboards/splitkb/kyria/keymaps/shinze/keymap.c248
-rw-r--r--keyboards/splitkb/kyria/keymaps/shinze/rules.mk3
-rw-r--r--keyboards/splitkb/kyria/keymaps/tessachka/config.h29
-rw-r--r--keyboards/splitkb/kyria/keymaps/tessachka/keymap.c241
-rw-r--r--keyboards/splitkb/kyria/keymaps/tessachka/rules.mk3
-rw-r--r--keyboards/splitkb/kyria/keymaps/thomasbaart/config.h47
-rw-r--r--keyboards/splitkb/kyria/keymaps/thomasbaart/keymap.c359
-rw-r--r--keyboards/splitkb/kyria/keymaps/thomasbaart/rules.mk5
-rw-r--r--keyboards/splitkb/kyria/keymaps/via/config.h40
-rw-r--r--keyboards/splitkb/kyria/keymaps/via/keymap.c248
-rw-r--r--keyboards/splitkb/kyria/keymaps/via/rules.mk9
-rwxr-xr-xkeyboards/splitkb/kyria/keymaps/winternebs/config.h31
-rwxr-xr-xkeyboards/splitkb/kyria/keymaps/winternebs/glcdfont.c55
-rwxr-xr-xkeyboards/splitkb/kyria/keymaps/winternebs/keymap.c732
-rwxr-xr-xkeyboards/splitkb/kyria/keymaps/winternebs/rules.mk12
-rw-r--r--keyboards/splitkb/kyria/kyria.c16
-rw-r--r--keyboards/splitkb/kyria/kyria.h31
-rw-r--r--keyboards/splitkb/kyria/readme.md21
-rw-r--r--keyboards/splitkb/kyria/rev1/config.h74
-rw-r--r--keyboards/splitkb/kyria/rev1/rev1.c123
-rw-r--r--keyboards/splitkb/kyria/rev1/rev1.h67
-rw-r--r--keyboards/splitkb/kyria/rev1/rules.mk3
-rw-r--r--keyboards/splitkb/kyria/rules.mk27
-rw-r--r--keyboards/splitkb/zima/config.h41
-rw-r--r--keyboards/splitkb/zima/keymaps/via/config.h20
-rw-r--r--keyboards/splitkb/zima/keymaps/via/keymap.c68
-rw-r--r--keyboards/splitkb/zima/keymaps/via/rules.mk2
108 files changed, 9501 insertions, 21 deletions
diff --git a/keyboards/splitkb/kyria/.noci b/keyboards/splitkb/kyria/.noci
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/keyboards/splitkb/kyria/.noci
diff --git a/keyboards/splitkb/kyria/config.h b/keyboards/splitkb/kyria/config.h
new file mode 100644
index 000000000..2e1e190bd
--- /dev/null
+++ b/keyboards/splitkb/kyria/config.h
@@ -0,0 +1,18 @@
1/*
2Copyright 2019 Thomas Baart <thomas@splitkb.com>
3This program is free software: you can redistribute it and/or modify
4it under the terms of the GNU General Public License as published by
5the Free Software Foundation, either version 2 of the License, or
6(at your option) any later version.
7This program is distributed in the hope that it will be useful,
8but WITHOUT ANY WARRANTY; without even the implied warranty of
9MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10GNU General Public License for more details.
11You should have received a copy of the GNU General Public License
12along with this program. If not, see <http://www.gnu.org/licenses/>.
13*/
14
15#pragma once
16
17#include "config_common.h"
18
diff --git a/keyboards/splitkb/kyria/info.json b/keyboards/splitkb/kyria/info.json
new file mode 100644
index 000000000..a2bfd578c
--- /dev/null
+++ b/keyboards/splitkb/kyria/info.json
@@ -0,0 +1,63 @@
1{
2 "keyboard_name": "Kyria",
3 "url": "https://splitkb.com",
4 "maintainer": "splitkb.com",
5 "width": 16.5,
6 "height": 5.25,
7 "layouts": {
8 "LAYOUT": {
9 "layout": [
10 {"x":0, "y":0.75},
11 {"x":1, "y":0.75},
12 {"x":2, "y":0.25},
13 {"x":3, "y":0},
14 {"x":4, "y":0.25},
15 {"x":5, "y":0.5},
16 {"x":10.5, "y":0.5},
17 {"x":11.5, "y":0.25},
18 {"x":12.5, "y":0},
19 {"x":13.5, "y":0.25},
20 {"x":14.5, "y":0.75},
21 {"x":15.5, "y":0.75},
22 {"x":0, "y":1.75},
23 {"x":1, "y":1.75},
24 {"x":2, "y":1.25},
25 {"x":3, "y":1},
26 {"x":4, "y":1.25},
27 {"x":5, "y":1.5},
28 {"x":10.5, "y":1.5},
29 {"x":11.5, "y":1.25},
30 {"x":12.5, "y":1},
31 {"x":13.5, "y":1.25},
32 {"x":14.5, "y":1.75},
33 {"x":15.5, "y":1.75},
34 {"x":0, "y":2.75},
35 {"x":1, "y":2.75},
36 {"x":2, "y":2.25},
37 {"x":3, "y":2},
38 {"x":4, "y":2.25},
39 {"x":5, "y":2.5},
40 {"x":6, "y":3},
41 {"x":7, "y":3.25},
42 {"x":8.5, "y":3.25},
43 {"x":9.5, "y":3},
44 {"x":10.5, "y":2.5},
45 {"x":11.5, "y":2.25},
46 {"x":12.5, "y":2},
47 {"x":13.5, "y":2.25},
48 {"x":14.5, "y":2.75},
49 {"x":15.5, "y":2.75},
50 {"x":2.5, "y":3.25},
51 {"x":3.5, "y":3.25},
52 {"x":4.5, "y":3.5},
53 {"x":5.5, "y":4},
54 {"x":6.5, "y":4.25},
55 {"x":9, "y":4.25},
56 {"x":10, "y":4},
57 {"x":11, "y":3.5},
58 {"x":12, "y":3.25},
59 {"x":13, "y":3.25}
60 ]
61 }
62 }
63}
diff --git a/keyboards/splitkb/kyria/keymaps/asapjockey/config.h b/keyboards/splitkb/kyria/keymaps/asapjockey/config.h
new file mode 100644
index 000000000..e878663bf
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/asapjockey/config.h
@@ -0,0 +1,47 @@
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
17#pragma once
18
19#ifdef OLED_DRIVER_ENABLE
20 #define OLED_DISPLAY_128X64
21#endif
22
23#ifdef RGBLIGHT_ENABLE
24 #define RGBLIGHT_ANIMATIONS
25 #define RGBLIGHT_HUE_STEP 8
26 #define RGBLIGHT_SAT_STEP 8
27 #define RGBLIGHT_VAL_STEP 8
28 #define RGBLIGHT_SLEEP
29#endif
30
31// EC11K encoders have a different resolution than other EC11 encoders.
32// When using the default resolution of 4, if you notice your encoder skipping
33// every other tick, lower the resolution to 2.
34#define ENCODER_RESOLUTION 2
35
36// The Leader key allows to flexibly assign macros to key sequences.
37#define LEADER_PER_KEY_TIMING
38#define LEADER_TIMEOUT 350
39
40#define TAPPING_TERM 200
41
42// Allows to use either side as the master. Look at the documentation for info:
43// https://docs.qmk.fm/#/config_options?id=setting-handedness
44#define EE_HANDS
45
46// Allows media codes to properly register in macros and rotary encoder code
47#define TAP_CODE_DELAY 10 \ No newline at end of file
diff --git a/keyboards/splitkb/kyria/keymaps/asapjockey/keymap.c b/keyboards/splitkb/kyria/keymaps/asapjockey/keymap.c
new file mode 100644
index 000000000..9d0d2955e
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/asapjockey/keymap.c
@@ -0,0 +1,313 @@
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 {
19 QWERTY,
20 LOWER,
21 RAISE,
22 NAV,
23 ADJUST
24};
25
26enum custom_keycodes {
27 KC_LBR = SAFE_RANGE,
28 KC_RBR
29};
30
31const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
32/*
33 * Base Layer: QWERTY
34 *
35 * ,-------------------------------------------. ,-------------------------------------------.
36 * | TAB | Q | W | E | R | T | | Y | U | I | O | P | RCTL |
37 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
38 * | LCTL | A | S | D | F | G | | H | J | K | L | ; : | ' " |
39 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
40 * | LSFT | Z | X | C | V | B | Del | Raise| |Adjust| Esc | N | M | , < | . > | / ? | LSFT |
41 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
42 * | | LALT | | Bspc | Lower| | Enter| Space| [ { | ] } | |
43 * | | | | | | | | | | | |
44 * `----------------------------------' `----------------------------------'
45 */
46 [QWERTY] = LAYOUT(
47 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_RCTL,
48 KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
49 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DEL, MO(RAISE), MO(ADJUST), KC_ESC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT,
50 XXXXXXX, KC_LALT, XXXXXXX, KC_BSPC, MO(LOWER), KC_ENT, KC_SPC, KC_LBR, KC_RBR, XXXXXXX
51 ),
52/*
53 * Lower Layer: Numbers, functions, symbols
54 *
55 * ,-------------------------------------------. ,-------------------------------------------.
56 * | | 1 ! | 2 @ | 3 # | 4 $ | 5 % | | 6 ^ | 7 & | 8 * | 9 ( | 0 ) | |
57 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
58 * | | ! | @ | # | $ | % | | ^ | & | * | ( | ) | |
59 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
60 * | | F1 | F2 | F3 | F4 | F5 | | | | | | F6 | F7 | F8 | F9 | F10 | |
61 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
62 * | | | | | | | | | ( | ) | |
63 * | | | | | | | | | | | |
64 * `----------------------------------' `----------------------------------'
65 */
66 [LOWER] = LAYOUT(
67 _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
68 _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
69 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, _______, _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
70 _______, _______, _______, _______, _______, _______, _______, KC_LPRN, KC_RPRN, _______
71 ),
72/*
73 * Raise Layer: Functions, Numbers
74 *
75 * ,-------------------------------------------. ,-------------------------------------------.
76 * | | | F7 | F8 | F9 | | | | 7 & | 8 * | 9 ( | - _ | |
77 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
78 * | | | F4 | F5 | F6 | | | | 4 * | 5 % | 6 ^ | = + | RCTL |
79 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
80 * | | | F1 | F2 | F3 | | | | | | | | 1 ! | 2 @ | 3 # | \ | | |
81 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
82 * | | | | | | | | | 0 ) | | |
83 * | | | | | | | | | | | |
84 * `----------------------------------' `----------------------------------'
85 */
86 [RAISE] = LAYOUT(
87 _______, _______, KC_F7, KC_F8, KC_F9, _______, _______, KC_7, KC_8, KC_9, _______, _______,
88 _______, _______, KC_F4, KC_F5, KC_F6, _______, _______, KC_4, KC_5, KC_6, _______, KC_RCTL,
89 _______, _______, KC_F1, KC_F2, KC_F3, _______, _______, _______, _______, _______, _______, KC_1, KC_2, KC_3, _______, _______,
90 _______, _______, _______, _______, _______, _______, _______, KC_0, _______, _______
91 ),
92/*
93 * Navigation Layer
94 *
95 * ,-------------------------------------------. ,-------------------------------------------.
96 * | | | | | | | | | | Up | | | RGBTOG |
97 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
98 * | | | | | | | | | Left | Down | Right| | RGBOFF |
99 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
100 * | | | | | | | | | | | | | | | | | RGBON |
101 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
102 * | | | | | | | | | Reset|Debug | |
103 * | | | | | | | | | | | |
104 * `----------------------------------' `----------------------------------'
105 */
106 [ADJUST] = LAYOUT(
107 _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, RGB_TOG,
108 _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, RGB_HUI,
109 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD,
110 _______, _______, _______, _______, _______, _______, _______, RESET, DEBUG, _______
111 ),
112// /*
113// * Layer template
114// *
115// * ,-------------------------------------------. ,-------------------------------------------.
116// * | | | | | | | | | | | | | |
117// * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
118// * | | | | | | | | | | | | | |
119// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
120// * | | | | | | | | | | | | | | | | | |
121// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
122// * | | | | | | | | | | | |
123// * | | | | | | | | | | | |
124// * `----------------------------------' `----------------------------------'
125// */
126// [_LAYERINDEX] = LAYOUT(
127// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
128// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
129// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
130// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
131// ),
132};
133
134bool process_record_user(uint16_t keycode, keyrecord_t *record) {
135 switch (keycode) {
136 case KC_LBR: {
137 if (record->event.pressed) {
138 if ((get_mods() & MOD_MASK_SHIFT) == MOD_MASK_SHIFT) {
139 register_code(KC_9);
140 } else {
141 register_code(KC_LBRC);
142 }
143 } else { // Release the key
144 if ((get_mods() & MOD_MASK_SHIFT) == MOD_MASK_SHIFT) {
145 unregister_code(KC_9);
146 } else {
147 unregister_code(KC_LBRC);
148 }
149 }
150 return false;
151 break;
152 }
153 case KC_RBR: {
154 if (record->event.pressed) {
155 if ((get_mods() & MOD_MASK_SHIFT) == MOD_MASK_SHIFT) {
156 register_code(KC_0);
157 } else {
158 register_code(KC_RBRC);
159 }
160 } else { // Release the key
161 if ((get_mods() & MOD_MASK_SHIFT) == MOD_MASK_SHIFT) {
162 unregister_code(KC_0);
163 } else {
164 unregister_code(KC_RBRC);
165 }
166 }
167 return false;
168 break;
169 }
170 }
171 return true;
172}
173
174LEADER_EXTERNS();
175
176void matrix_scan_user(void) {
177 LEADER_DICTIONARY() {
178 leading = false;
179 leader_end();
180
181 SEQ_ONE_KEY(KC_F) { // Shift + Ctrl + F
182 tap_code16(S(C(KC_F)));
183 }
184 }
185}
186
187#ifdef OLED_DRIVER_ENABLE
188oled_rotation_t oled_init_user(oled_rotation_t rotation) {
189 return OLED_ROTATION_180;
190}
191
192static void render_kyria_logo(void) {
193 static const char PROGMEM kyria_logo[] = {
194 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,
195 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,
196 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,
197 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,
198 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,
199 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,
200 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,
201 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
202 };
203 oled_write_raw_P(kyria_logo, sizeof(kyria_logo));
204}
205
206static void render_qmk_logo(void) {
207 static const char PROGMEM qmk_logo[] = {
208 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
209 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
210 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0};
211
212 oled_write_P(qmk_logo, false);
213}
214
215static void render_status(void) {
216 // QMK Logo and version information
217 render_qmk_logo();
218 oled_write_P(PSTR(" Kyria rev1.0\n\n"), false);
219
220 // Host Keyboard Layer Status
221 oled_write_P(PSTR("Layer: "), false);
222 switch (get_highest_layer(layer_state)) {
223 case QWERTY:
224 oled_write_P(PSTR("Default\n"), false);
225 break;
226 case LOWER:
227 oled_write_P(PSTR("Lower\n"), false);
228 break;
229 case RAISE:
230 oled_write_P(PSTR("Raise\n"), false);
231 break;
232 case NAV:
233 oled_write_P(PSTR("Navigation\n"), false);
234 break;
235 case ADJUST:
236 oled_write_P(PSTR("Adjust\n"), false);
237 break;
238 default:
239 oled_write_P(PSTR("Undefined\n"), false);
240 }
241
242 // Host Keyboard LED Status
243 led_t led_state = host_keyboard_led_state();
244 oled_write_P(led_state.num_lock ? PSTR("NUMLCK ") : PSTR(" "), false);
245 oled_write_P(led_state.caps_lock ? PSTR("CAPLCK ") : PSTR(" "), false);
246 oled_write_P(led_state.scroll_lock ? PSTR("SCRLCK ") : PSTR(" "), false);
247}
248
249void oled_task_user(void) {
250 if (is_keyboard_master()) {
251 render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
252 } else {
253 render_kyria_logo();
254 }
255}
256#endif
257
258#ifdef ENCODER_ENABLE
259bool encoder_update_user(uint8_t index, bool clockwise) {
260 if (index == 0) {
261 switch (get_highest_layer(layer_state)) {
262 case QWERTY:
263 if (clockwise) { // Ctrl + I
264 tap_code16(C(KC_I));
265 } else { // Shift + F3
266 tap_code16(S(KC_F3));
267 }
268 break;
269 case LOWER:
270 // History scrubbing. For Adobe products, hold shift while moving
271 // backward to go forward instead.
272 if (clockwise) {
273 tap_code16(C(KC_Y));
274 } else {
275 tap_code16(C(KC_Z));
276 }
277 break;
278 case RAISE:
279 if (clockwise) { // Subscript: CTRL + =
280 tap_code16(C(KC_EQL));
281 }
282 break;
283 default:
284 // Nothing
285 break;
286 }
287 } else if (index == 1) {
288 switch (get_highest_layer(layer_state)) {
289 case QWERTY:
290 // Scroll by letter horizontally
291 if (clockwise) {
292 tap_code16(KC_RGHT);
293 } else {
294 tap_code16(KC_LEFT);
295 }
296 case LOWER:
297 // Nothing
298 break;
299 case RAISE:
300 // Find previous/Find next
301 if (clockwise) {
302 tap_code(KC_F3);
303 } else {
304 tap_code16(S(KC_F3));
305 }
306 default:
307 // Nothing
308 break;
309 }
310 }
311 return true;
312}
313#endif
diff --git a/keyboards/splitkb/kyria/keymaps/asapjockey/rules.mk b/keyboards/splitkb/kyria/keymaps/asapjockey/rules.mk
new file mode 100644
index 000000000..9b8e29419
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/asapjockey/rules.mk
@@ -0,0 +1,5 @@
1OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays
2ENCODER_ENABLE = yes # Enables the use of one or more encoders
3RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
4LEADER_ENABLE = yes # Enable the Leader Key feature
5MOUSEKEY_ENABLE = no
diff --git a/keyboards/splitkb/kyria/keymaps/benji/config.h b/keyboards/splitkb/kyria/keymaps/benji/config.h
new file mode 100644
index 000000000..ebbcd1df8
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/benji/config.h
@@ -0,0 +1,34 @@
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
17#pragma once
18
19#ifdef OLED_DRIVER_ENABLE
20 #define OLED_DISPLAY_128X64
21 #define OLED_FONT_H "keyboards/splitkb/kyria/keymaps/benji/glcdfont.c"
22#endif
23
24#ifdef RGBLIGHT_ENABLE
25 #define RGBLIGHT_ANIMATIONS
26 #define RGBLIGHT_HUE_STEP 8
27 #define RGBLIGHT_SAT_STEP 8
28 #define RGBLIGHT_VAL_STEP 8
29 #define RGBLIGHT_LIMIT_VAL 150
30#endif
31
32// If you are using an Elite C rev3 on the slave side, uncomment the lines below:
33// #define SPLIT_USB_DETECT
34// #define NO_USB_STARTUP_CHECK
diff --git a/keyboards/splitkb/kyria/keymaps/benji/glcdfont.c b/keyboards/splitkb/kyria/keymaps/benji/glcdfont.c
new file mode 100644
index 000000000..bb1cca338
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/benji/glcdfont.c
@@ -0,0 +1,228 @@
1#include "progmem.h"
2
3static const unsigned char font[] PROGMEM = {
4 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
6 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
7 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
8 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,
9 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,
10 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,
11 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,
12 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,
13 0x00, 0x18, 0x24, 0x18, 0x00, 0x00,
14 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,
15 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,
16 0x26, 0x29, 0x79, 0x29, 0x26, 0x00,
17 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,
18 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,
19 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,
20 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,
21 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,
22 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
23 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
24 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
25 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
26 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
27 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,
28 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,
29 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,
30 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,
31 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,
32 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,
33 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,
34 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,
35 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,
36 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
38 0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
39 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
40 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
41 0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
42 0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
43 0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
44 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
45 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
46 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
47 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
48 0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
49 0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
50 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
51 0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
52 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
53 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
54 0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
55 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
56 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
57 0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
58 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
59 0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
60 0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
61 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
62 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
63 0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
64 0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
65 0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
66 0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
67 0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
68 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,
69 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
70 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
71 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
72 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
73 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
74 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
75 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
76 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
77 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,
78 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
79 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
80 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
81 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
82 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
83 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
84 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
85 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
86 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
87 0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
88 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,
89 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
90 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
91 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
92 0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
93 0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
94 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
95 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
96 0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
97 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
98 0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
99 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
100 0x00, 0x03, 0x07, 0x08, 0x00, 0x00,
101 0x20, 0x54, 0x54, 0x78, 0x40, 0x00,
102 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00,
103 0x38, 0x44, 0x44, 0x44, 0x28, 0x00,
104 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00,
105 0x38, 0x54, 0x54, 0x54, 0x18, 0x00,
106 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00,
107 0x18, 0xA4, 0xA4, 0x9C, 0x78, 0x00,
108 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00,
109 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00,
110 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
111 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00,
112 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00,
113 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00,
114 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00,
115 0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
116 0xFC, 0x18, 0x24, 0x24, 0x18, 0x00,
117 0x18, 0x24, 0x24, 0x18, 0xFC, 0x00,
118 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00,
119 0x48, 0x54, 0x54, 0x54, 0x24, 0x00,
120 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00,
121 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00,
122 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,
123 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
124 0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
125 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00,
126 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
127 0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
128 0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
129 0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
130 0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
131 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
132 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
133 0x00, 0xF0, 0xA0, 0x00, 0xC0, 0xFE,
134 0xC0, 0x00, 0x40, 0xF8, 0x00, 0x00,
135 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00,
136 0x40, 0xC0, 0xC0, 0xC0, 0xC0, 0x00,
137 0x00, 0x00, 0x40, 0xC0, 0xC0, 0xC0,
138 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
139 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0,
140 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00,
141 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0,
142 0x40, 0x40, 0x40, 0xC0, 0xC0, 0x40,
143 0x00, 0x00, 0x00, 0x40, 0xC0, 0xC0,
144 0xC0, 0x40, 0x00, 0x00, 0x00, 0x00,
145 0x80, 0x80, 0xC0, 0xC0, 0x40, 0x40,
146 0xC0, 0xC0, 0x40, 0x00, 0x00, 0x00,
147 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
148 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
149 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
150 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
151 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
152 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
153 0x00, 0xC0, 0xF0, 0xF8, 0xFC, 0x3E,
154 0x1E, 0x06, 0x01, 0x00, 0x00, 0x00,
155 0x7F, 0x41, 0x41, 0x41, 0x7F, 0x00,
156 0x7F, 0x41, 0x41, 0x41, 0x7F, 0x00,
157 0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B,
158 0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00,
159 0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE,
160 0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00,
161 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
162 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
163 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
164 0x00, 0x00, 0x00, 0x06, 0x07, 0x0C,
165 0x1F, 0x3F, 0x7E, 0xFF, 0xFF, 0xFF,
166 0xFF, 0xFE, 0x7F, 0x3F, 0x0E, 0x0E,
167 0x0F, 0x02, 0x00, 0x00, 0xC0, 0xF0,
168 0x3C, 0x0F, 0x03, 0x0F, 0x3F, 0xFF,
169 0xFC, 0x3C, 0x07, 0x07, 0x0F, 0x3F,
170 0xFF, 0xFC, 0xE0, 0x80, 0x00, 0x60,
171 0xF8, 0xFF, 0x37, 0x30, 0x00, 0x03,
172 0x1F, 0x7F, 0xFF, 0xF8, 0xE0, 0x80,
173 0x08, 0x7F, 0xFF, 0xFF, 0xFF, 0x80,
174 0x00, 0x00, 0x00, 0xF8, 0xF0, 0xF8,
175 0xB0, 0x00, 0x00, 0x00, 0xFF, 0xFF,
176 0xFF, 0x88, 0x00, 0x00, 0x3E, 0x7F,
177 0xFF, 0xFF, 0xC1, 0x00, 0x00, 0x00,
178 0x00, 0x81, 0x80, 0x00, 0x00, 0x00,
179 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
180 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
181 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
182 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
183 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
184 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
185 0x00, 0x03, 0x0F, 0x1F, 0x3F, 0x3C,
186 0x78, 0x70, 0x60, 0x00, 0x00, 0x00,
187 0x7F, 0x41, 0x41, 0x41, 0x7F, 0x00,
188 0x7F, 0x41, 0x41, 0x41, 0x7F, 0x00,
189 0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20,
190 0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00,
191 0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F,
192 0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00,
193 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
194 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
195 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
196 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
197 0x00, 0x00, 0x00, 0x01, 0x03, 0x0F,
198 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
199 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
200 0x01, 0x00, 0x00, 0x00, 0x00, 0x03,
201 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
202 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
203 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
204 0x00, 0x01, 0x01, 0x01, 0x01, 0x01,
205 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
206 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
207 0x03, 0x00, 0x00, 0x01, 0x01, 0x01,
208 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
209 0x00, 0x01, 0x01, 0x01, 0x01, 0x01,
210 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
211 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
212 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
213 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
214 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
215 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
216 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
217 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
218 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
219 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
220 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
221 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
222 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
223 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
224 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
225 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
226 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
227 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
228};
diff --git a/keyboards/splitkb/kyria/keymaps/benji/keymap.c b/keyboards/splitkb/kyria/keymaps/benji/keymap.c
new file mode 100644
index 000000000..2e3e2b1cf
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/benji/keymap.c
@@ -0,0 +1,247 @@
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 {
19 _QWERTY = 0,
20 _LOWER,
21 _RAISE,
22 _ADJUST
23};
24
25const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
26 /*
27 * Base Layer: QWERTY
28 *
29 * ,-------------------------------------------. ,-------------------------------------------.
30 * |RAIS/ESC| Q | W | E | R | T | | Y | U | I | O | P | | \ |
31 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
32 * |Ctrl/BS | A | S | D | F | G | | H | J | K | L | ; : | ' " |
33 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
34 * | LShift | Z | X | C | V | B |LShift|LShift| |LShift|LShift| N | M | , < | . > | / ? | - _ |
35 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
36 * | GUI | Del | Enter| Space| Esc | | Enter| Space| Tab | Bksp | AltGr|
37 * | | | Alt | Lower| Raise| | Lower| Raise| | | |
38 * `----------------------------------' `----------------------------------'
39 */
40 [_QWERTY] = LAYOUT(
41 LT(_RAISE, KC_ESC), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_PIPE,
42 MT(MOD_LCTL, KC_BSPC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
43 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LSFT, KC_LSFT, KC_LSFT, KC_LSFT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_MINS,
44 KC_LGUI, KC_DEL, MT(MOD_LALT, KC_ENT), LT(_LOWER, KC_SPC), KC_LGUI, LT(_LOWER, KC_ENT), LT(_RAISE, KC_SPC), KC_TAB, KC_BSPC, KC_RALT
45 ),
46 /*
47 * Lower Layer: Symbols
48 *
49 * ,-------------------------------------------. ,-------------------------------------------.
50 * | | ! | @ | { | } | | | | | | | | | | \ |
51 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
52 * | | # | $ | ( | ) | ` | | + | - | / | * | % | ' " |
53 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
54 * | | % | ^ | [ | ] | ~ | | | | | | & | = | , | . | / ? | - _ |
55 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
56 * | | | | ; | = | | = | ; | | | |
57 * | | | | | | | | | | | |
58 * `----------------------------------' `----------------------------------'
59 */
60 [_LOWER] = LAYOUT(
61 _______, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, _______, _______, _______, _______, _______, KC_BSLS,
62 _______, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV, KC_PLUS, KC_MINS, KC_SLSH, KC_ASTR, KC_PERC, KC_QUOT,
63 _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, _______, _______, _______, _______, KC_AMPR, KC_EQL, KC_COMM, KC_DOT, KC_SLSH, KC_MINS,
64 _______, _______, _______, KC_SCLN, KC_EQL, KC_EQL, KC_SCLN, _______, _______, _______
65 ),
66 /*
67 * Raise Layer: Number keys, media, navigation
68 *
69 * ,-------------------------------------------. ,-------------------------------------------.
70 * | | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | |
71 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
72 * | | | Prev | Play | Next | VolUp| | Left | Down | Up | Right| | |
73 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
74 * | | | | | Mute | VolDn| | | | | | MLeft| Mdown| MUp |MRight| | |
75 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
76 * | |Mbtn1 |Mbtn2 |Mbtn3 | | | Mbtn4|Mbtn5 | | | |
77 * | | | | | | | | | | | |
78 * `----------------------------------' `----------------------------------'
79 */
80 [_RAISE] = LAYOUT(
81 _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
82 _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______,
83 _______, _______, _______, _______, KC_MUTE, KC_VOLD, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, _______, _______,
84 _______, KC_BTN1, KC_BTN2, KC_BTN3, _______, KC_BTN4, KC_BTN5, _______, _______, _______
85 ),
86 /*
87 * Adjust Layer: Function keys, RGB
88 *
89 * ,-------------------------------------------. ,-------------------------------------------.
90 * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | |
91 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
92 * | | TOG | SAI | HUI | VAI | MOD | | | | | F11 | F12 | |
93 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
94 * | | | SAD | HUD | VAD | RMOD | | | | | | | | | | | |
95 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
96 * | | | | | | | | | | | |
97 * | | | | | | | | | | | |
98 * `----------------------------------' `----------------------------------'
99 */
100 [_ADJUST] = LAYOUT(
101 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
102 _______, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD, _______, _______, _______, KC_F11, KC_F12, _______,
103 _______, _______, RGB_SAD, RGB_HUD, RGB_VAD, RGB_RMOD,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
104 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
105 ),
106 // /*
107 // * Layer template
108 // *
109 // * ,-------------------------------------------. ,-------------------------------------------.
110 // * | | | | | | | | | | | | | |
111 // * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
112 // * | | | | | | | | | | | | | |
113 // * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
114 // * | | | | | | | | | | | | | | | | | |
115 // * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
116 // * | | | | | | | | | | | |
117 // * | | | | | | | | | | | |
118 // * `----------------------------------' `----------------------------------'
119 // */
120 // [_LAYERINDEX] = LAYOUT(
121 // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
122 // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
123 // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
124 // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
125 // ),
126};
127
128layer_state_t layer_state_set_user(layer_state_t state) {
129 return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
130}
131
132#ifdef OLED_DRIVER_ENABLE
133oled_rotation_t oled_init_user(oled_rotation_t rotation) {
134 return OLED_ROTATION_180;
135}
136
137static void render_kyria_logo(void) {
138 static const char PROGMEM kyria_logo[] = {
139 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,192,48,24,108,244,130,194,193,25,125,119,97,1,193,226,178,52,44,24,48,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,
140 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,128,128,64,64,192,64,64,64,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,136,24,48,56,28,221,193,156,62,127,127,127,62,156,193,221,156,14,6,4,140,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,64,64,64,64,64,64,64,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,
141 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,48,76,230,243,253,254,252,190,255,223,255,255,159,158,254,249,243,230,76,48,192,0,0,0,0,0,0,0,0,0,1,6,12,26,22,38,35,65,64,67,119,95,76,65,33,32,23,27,12,6,1,0,0,0,0,0,0,0,0,0,0,192,48,12,6,3,1,0,192,224,240,248,252,254,255,224,128,0,1,3,6,12,48,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
142 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,96,130,7,15,7,3,2,6,13,255,255,255,7,2,2,3,7,7,7,131,96,31,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,31,96,128,0,0,0,127,255,255,255,255,255,255,255,255,227,99,62,0,0,128,96,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
143 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,1,3,6,4,8,9,19,17,17,19,17,19,18,10,8,4,6,3,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,1,3,6,4,8,8,17,17,17,17,17,17,17,8,8,4,6,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
144 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,128,96,48,152,72,228,52,34,10,74,74,58,178,50,116,228,200,24,176,96,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,96,48,152,200,228,228,242,242,242,242,242,242,242,228,228,200,152,48,96,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,
145 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,254,1,0,0,192,240,248,248,248,248,184,152,140,204,249,231,255,191,159,223,6,1,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,1,0,63,127,249,240,240,241,251,159,191,159,251,241,240,240,249,127,63,0,1,254,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,
146 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,3,12,24,49,39,79,79,143,143,143,143,149,149,149,67,65,33,49,24,12,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,12,24,48,32,64,71,159,135,159,135,159,135,159,135,159,71,64,32,48,24,12,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
147
148
149
150// 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,
151// 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,232,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,
152// 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,
153// 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,
154// 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,
155// 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,
156// 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,
157// 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
158 };
159 oled_write_raw_P(kyria_logo, sizeof(kyria_logo));
160}
161
162static void render_qmk_logo(void) {
163 static const char PROGMEM qmk_logo[] = {
164 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
165 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
166 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0};
167
168 oled_write_P(qmk_logo, false);
169}
170
171static void render_status(void) {
172 // QMK Logo and version information
173 //render_kyria_logo();
174 render_qmk_logo();
175 oled_write_P(PSTR("Kyria rev B3nJ.P0tt3r\n\n"), false);
176
177 // Host Keyboard Layer Status
178 oled_write_P(PSTR("Layer: "), false);
179 switch (get_highest_layer(layer_state)) {
180 case _QWERTY:
181 oled_write_P(PSTR("Chandra\n"), false);
182 break;
183 case _LOWER:
184 oled_write_P(PSTR("Jace\n"), false);
185 break;
186 case _RAISE:
187 oled_write_P(PSTR("Karn\n"), false);
188 break;
189 case _ADJUST:
190 oled_write_P(PSTR("Teferi\n"), false);
191 break;
192 default:
193 oled_write_P(PSTR("Ashiok\n"), false);
194 }
195
196 // Host Keyboard LED Status
197 led_t led_usb_state = host_keyboard_led_state();
198 oled_write_P(led_usb_state.num_lock? PSTR("NUMLCK ") : PSTR(" "), false);
199 oled_write_P(led_usb_state.caps_lock ? PSTR("CAPLCK ") : PSTR(" "), false);
200 oled_write_P(led_usb_state.scroll_lock ? PSTR("SCRLCK ") : PSTR(" "), false);
201}
202
203void oled_task_user(void) {
204 if (is_keyboard_master()) {
205 render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
206 } else {
207 render_kyria_logo();
208 }
209}
210#endif
211
212#ifdef ENCODER_ENABLE
213bool encoder_update_user(uint8_t index, bool clockwise) {
214 if (index == 0) {
215 switch (get_highest_layer(layer_state)) {
216 case _RAISE:
217 // Volume control
218 if (clockwise) {
219 tap_code(KC_VOLU);
220 } else {
221 tap_code(KC_VOLD);
222 }
223 break;
224 case _LOWER:
225 // Page up/Page down
226 if (clockwise) {
227 tap_code(KC_PGDN);
228 } else {
229 tap_code(KC_PGUP);
230 }
231 break;
232 case _QWERTY:
233 // Page up/Page down
234 if (clockwise) {
235 tap_code(KC_DOWN);
236 } else {
237 tap_code(KC_UP);
238 }
239 break;
240 default:
241 break;
242
243 }
244 }
245 return true;
246}
247#endif
diff --git a/keyboards/splitkb/kyria/keymaps/benji/readme.md b/keyboards/splitkb/kyria/keymaps/benji/readme.md
new file mode 100644
index 000000000..57ea5e817
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/benji/readme.md
@@ -0,0 +1,246 @@
1# Kyria's Default Keymap
2
3[insert pretty KLE visualization once the keymap is vetted]
4
5The default keymap contains 5 layers which allows it to include all keys found on a ISO layout TKL keyboard plus media keys.
6Hardware features of the Kyria such as OLEDs, rotary encoders and underglow are also supported.
7
8The five different layers are the following:
91. Base layer (QWERTY, Colemak-DH or Dvorak)
102. Navigation layer
113. Symbols/Numbers layer
124. Function layer
135. Adjust layer
14
15## Base layer(s)
16```
17Base Layer: -
18
19,-------------------------------------------. ,-------------------------------------------.
20| Tab | - | - | - | - | - | | - | - | - | - | - | Bksp |
21|--------+------+------+------+------+------| |------+------+------+------+------+--------|
22|Ctrl/Esc| - | - | - | - | - | | - | - | - | - | - |Ctrl/ - |
23|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
24| LShift | - | - | - | - | - | [ { |CapsLk| |F-Keys| ] } | - | - | - | - | - | RShift |
25`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
26 |Adjust| LGUI | LAlt/| Space| Nav | | Sym | Space| AltGr| RGUI | Menu |
27 | | | Enter| | | | | | | | |
28 `----------------------------------' `----------------------------------'
29```
30Three different well-known keyboard layouts are provided to fill in the placeholder `-` keys: QWERTY, Colemak-DH, and Dvorak. The default layer can be changed at runtime, more info on that in the section on the [adjust layer](#adjust-layer).
31
32For the rest of this write-up, the base layer will be assumed to be QWERTY and will be used as a reference to describe physical keys, e.g. “<kbd>B</kbd> key” vs, the much more verbose, “lower inner index key”.
33
34```
35Base Layer: QWERTY
36
37,-------------------------------------------. ,-------------------------------------------.
38| Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
39|--------+------+------+------+------+------| |------+------+------+------+------+--------|
40|Ctrl/Esc| A | S | D | F | G | | H | J | K | L | ; : |Ctrl/' "|
41|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
42| LShift | Z | X | C | V | B | [ { |CapsLk| |F-keys| ] } | N | M | , < | . > | / ? | RShift |
43`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
44 |Adjust| LGUI | LAlt/| Space| Nav | | Sym | Space| AltGr| RGUI | Menu |
45 | | | Enter| | | | | | | | |
46 `----------------------------------' `----------------------------------'
47```
48
49Aside from variations in the alpha cluster, the rest of the base keys remain the same and are designed to feel familiar.
50
51![Step-by-step animation of the transformation of an ortholinear TKL to a Kyria](https://i.imgur.com/uVDCOek.gif)
52
53<details>
54After making transformations to the classic ANSI US QWERTY TKL 60% to arrive to the layout of the Kyria, as illustrated in the animation above, the result looks like this:
55
56```
57,-------------------------------------------. ,-------------------------------------------.
58| Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
59|--------+------+------+------+------+------| |------+------+------+------+------+--------|
60| Cap Lk | A | S | D | F | G | | H | J | K | L | ; : | ' " |
61|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
62| LShift | Z | X | C | V | B | | | | | | N | M | , < | . > | / ? | RShift |
63`--------+-------------+--------------------+------+------| |------+------+--------------------+------+---------------'
64 | LCtrl| LGUI | LAlt | Space| | | | Space| AltGr| RGUI | Menu |
65 | | | | | | | | | | | |
66 `----------------------------------' '----------------------------------'
67```
68
69First thing to notice is the presence of blank keys. To fill in the blank keys above the <kbd>Space</kbd> keys, we can take inspiration from other split keyboards featuring an extra inner index column on each half. A common mapping for those kind of keys are the bracket keys that got removed in the fourth step of the animated transformation. The thumb keys besides <kbd>Space</kbd>s is prime real estate for dedicated layer-switching keys. It doesn't matter on which side is assigned the sym-layer-switch key but it helps to keep the nav-layer-switch on the left in order to keep the arrow keys on the right side like on a classic keyboard, so we'll put nav on the left and sym on the right. We'll address the remaining blank thumb keys later.
70
71The base layer is starting to form but there remains some flaws. One glaring issue is the position of Control. Control is a very commonly used function but the key on which it sits right now is way too tucked in under the hand to be able to press it comfortably with either the thumb or the pinky from resting position. In fact, installing a rotary encoder there is a common move among Kyria users and I guarantee you that activating Control by holding down a rotary encoder does not spark joy. Instead, let's employ a popular trick that involves remapping the current Caps Lock key, which is positioned at a comfortable position on the keyboard, to Control.
72
73We can go further though; a variant of this trick makes the Control key produce Escape when tapped. This is called a “modtap”. There is no use to tapping Control by itself without chording it with another key and there is no use to holding down the Esc key so why not combine the two into a single key?
74
75All of this leaves us with three blank keys.
76
77```
78,-------------------------------------------. ,-------------------------------------------.
79| Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
80|--------+------+------+------+------+------| |------+------+------+------+------+--------|
81|Ctrl/Esc| A | S | D | F | G | | H | J | K | L | ; : | ' " |
82|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
83| LShift | Z | X | C | V | B | [ { | | | | ] } | N | M | , < | . > | / ? | RShift |
84`--------+-------------+--------------------+------+------| |------+------+--------------------+------+---------------'
85 | | LGUI | LAlt | Space| Nav | | Sym | Space| AltGr| RGUI | Menu |
86 | | | | | | | | | | | |
87 `----------------------------------' '----------------------------------'
88```
89
90These keys are not easily reachable while touch typing (that is, not reachable without picking up your hand) and should thus be associated with functions that you are not likely to be typed within a stream of text. The idea is that if you have to pick up your hand to hit a key, you want it to be at a time when you are likely to be pausing your interaction with the machine, rather than in the midst of a flurry of typing. They're thus well suited for accessing the adjust layer and the function layer. We can also toss in Caps Lock even though it is an editing-type function that gets used within a stream of text because shouting in ALL-CAPS should be a deliberate action.
91
92```
93,-------------------------------------------. ,-------------------------------------------.
94| Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
95|--------+------+------+------+------+------| |------+------+------+------+------+--------|
96|Ctrl/Esc| A | S | D | F | G | | H | J | K | L | ; : | ' " |
97|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
98| LShift | Z | X | C | V | B | [ { |CapsLk| |F-keys| ] } | N | M | , < | . > | / ? | RShift |
99`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
100 |Adjust| LGUI | LAlt | Space| Nav | | Sym | Space| AltGr| RGUI | Menu |
101 | | | | | | | | | | | |
102 `----------------------------------' `----------------------------------'
103```
104
105The next glaring issue is the absence of an Enter key on the current base layer this far. Enter is a very frequently used key so it deserves to be placed at a good spot in the keymap. The best way to insert it in the keymap with minimal changes to the current layout is to use modtaps. A tempting solution is to turn the <kbd>RShift</kbd> key into a <kbd>RShift/Enter</kbd> modtap but that can result in chat messages sent too frustratingly early when you're not used to it. Using GUI is also sub-optimal because tapping the GUI modifier actually has a use as opposed to taps of the Control or the Shift key. Pressing and releasing the GUI key by itself opens the App menu in many desktop environments. The natural choice is thus <kbd>LAlt/Enter</kbd>. That way, Enter is 1u away from resting thumb position and is unlikely to get accidentally activated because Alt is very rarely used in the midst of prose.
106
107Finally, we're one Quality-Of-Life update away from the actual base layer. <kbd>Ctrl/' "</kbd> not only preserves symmetry in the keymap with <kbd>Ctrl/Esc</kbd> but also helps balance the load between your pinkies and invites you to use both hands instead of contortions. Perhaps more importantly, it also frees you from the necessity of picking up your hand, breaking touch typing position and pressing a pinky key with your ring finger in order to execute Ctrl+A or Ctrl+Z. That becomes even more important on a board with such an aggressive pinky columnar stagger like the Kyria.
108
109
110```
111,-------------------------------------------. ,-------------------------------------------.
112| Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
113|--------+------+------+------+------+------| |------+------+------+------+------+--------|
114|Ctrl/Esc| A | S | D | F | G | | H | J | K | L | ; : |Ctrl/' "|
115|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
116| LShift | Z | X | C | V | B | [ { |CapsLk| |F-keys| ] } | N | M | , < | . > | / ? | RShift |
117`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
118 |Adjust| LGUI | LAlt/| Space| Nav | | Sym | Space| AltGr| RGUI | Menu |
119 | | | Enter| | | | | | | | |
120 `----------------------------------' `----------------------------------'
121```
122
123</details>
124
125## Navigation layer
126
127```
128Nav Layer: Media, navigation
129
130,-------------------------------------------. ,-------------------------------------------.
131| | | | | | | | PgUp | Home | ↑ | End | VolUp| Delete |
132|--------+------+------+------+------+------| |------+------+------+------+------+--------|
133| | GUI | Alt | Ctrl | Shift| | | PgDn | ← | ↓ | → | VolDn| Insert |
134|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
135| | | | | | | |ScLck | | | | Pause|M Prev|M Play|M Next|VolMut| PrtSc |
136`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
137 | | | | | | | | | | | |
138 | | | | | | | | | | | |
139 `----------------------------------' `----------------------------------'
140```
141
142This is where you'll find all the keys that are generally between the main block of a classic keyboard and the numpad in addition to media controls and modifiers on easy access on the home row for fast and comfortable chording with navigation keys.
143
144Useful mnemonics:
145- “GACS” to remember the order of the modifiers on the left-hand home row
146- <kbd>Scroll Lock</kbd> is on the same key as <kbd>Caps Lock</kbd> because they're both locks
147- <kbd>Delete</kbd> is on the same key as <kbd>Backspace</kbd> because they both erase characters
148- <kbd>Home</kbd> is the leftmost position on the current line so it is above <kbd>←</kbd>. Same logic applies for <kbd>End</kbd>.
149- <kbd>Media Previous</kbd> = ⏮, <kbd>Media Next</kbd> = ⏭
150- <kbd>Page Up</kbd>, <kbd>Page Down</kbd> and <kbd>Volume Up</kbd>, <kbd>Volume Down</kbd> are positioned like the main <kbd>Up</kbd> and <kbd>Down</kbd> keys.
151
152## Sym layer
153```
154Sym Layer: Numbers, symbols
155
156,-------------------------------------------. ,-------------------------------------------.
157| ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | = |
158|--------+------+------+------+------+------| |------+------+------+------+------+--------|
159| ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | + |
160|--------+------+------+------+------+------+-------------. ,------+-------------+------+------+------+------+--------|
161| | | \ | : | ; | - | \ | | [ { | | | | ] } | # ~ | _ | , | . | / | ? |
162`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
163 | | | | | | | | | | | |
164 | | | | | | | | | | | |
165 `----------------------------------' `----------------------------------'
166```
167The top row is the unshifted num row, the home row of the layer is the shifted num row and the bottom row contains ISO keys (<kbd>\ |</kbd> and <kbd># ~</kbd>, which are respectively `KC_NUBS` and `KC_NUHS`), the hyphen `-` and the underscore `_` on the best lower row spot because of how frequent they are and redundant symbols that are already present on the base layer but are reproduced here to avoid juggling back and forth between base, shift, and sym when typing a string of symbols.
168
169The layout of the first two rows needs no introduction, you're already used to them but it's worth looking into the structure of the bottom row.
170
171The two halves are mirrored in a sense. On the right, you can find <kbd>,</kbd> <kbd>.</kbd> <kbd>/</kbd> at their usual spots with the addition of <kbd>Shift</kbd>+<kbd>/</kbd>=<kbd>?</kbd> to the right of the <kbd>/</kbd> key to remove the need to press simultaneously <kbd>Sym</kbd> and a <kbd>Shift</kbd> key to access `?`.
172
173Now, if you look at the left side, you'll notice that the mirror of <kbd>,</kbd> is <kbd>;</kbd>, the mirror of <kbd>.</kbd> is <kbd>:</kbd> and the mirror of <kbd>/</kbd> is <kbd>\\</kbd>. The same logic used for <kbd>Shift</kbd>+<kbd>/</kbd>=<kbd>?</kbd> also applies to <kbd>Shift</kbd>+<kbd>\\</kbd>=<kbd>|</kbd>.
174
175As for the ISO keys, they are positioned more or less like they would on a classic keyboard: `KC_NUBS` on the left and `KC_NUHS` on the right.
176
177## Function layer
178```
179Function Layer: Function keys
180
181,-------------------------------------------. ,-------------------------------------------.
182| | F9 | F10 | F11 | F12 | | | | | | | | |
183|--------+------+------+------+------+------| |------+------+------+------+------+--------|
184| | F5 | F6 | F7 | F8 | | | | Shift| Ctrl | Alt | GUI | |
185|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
186| | F1 | F2 | F3 | F4 | | | | | | | | | | | | |
187`--------+------+------+--------------------+------+------| |------+------+------+------+------+----------------------'
188 | | | | | | | | | | | |
189 | | | | | | | | | | | |
190 `----------------------------------' `----------------------------------'
191```
192In a similar fashion to the nav layer, pressing down `FKEYS` with the right thumb enables a numpad of function keys on the opposite hand and modifiers on the right-hand home row. Once again, mirror symmetry is leveraged in this keymap for the order of the right-hand modifiers.
193
194Since there are more than 10 function keys, the cluster of F-keys does not follow the usual 3×3+1 numpad arrangement.
195
196
197## Adjust layer
198```
199Adjust Layer: Default layer settings, RGB
200
201,-------------------------------------------. ,-------------------------------------------.
202| | | |QWERTY| | | | | | | | | |
203|--------+------+------+------+------+------| |------+------+------+------+------+--------|
204| | | |Dvorak| | | | TOG | SAI | HUI | VAI | MOD | |
205|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
206| | | |Colmak| | | | | | | | | SAD | HUD | VAD | RMOD | |
207`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
208 | | | | | | | | | | | |
209 | | | | | | | | | | | |
210 `----------------------------------' `----------------------------------'
211```
212
213Default layer settings on the left and various RGB underglow controls on the right.
214
215The default layer settings are lined up on the middle finger column because the home middle finger key is <kbd>D</kbd> on QWERTY (like the “D” in “Dvorak”) and the lower middle finger key is <kbd>C</kbd> on QWERTY (like the “C” in “Colemak”). I can hear you say that “QWERTY” doesn't start with “E” but Dvorak and Colemak were already aligned in a column so the QWERTY may as well join the formation.
216
217NOTE: The default layer settings set by those keys are *NOT* stored in EEPROM and thus do not persist through boots. If you wish to change the default layer in a non-volatile manner, either change the order of the layers in the firmware, for example like so if you want to set Dvorak as the new default:
218```c
219enum layers {
220 _DVORAK = 0,
221 _QWERTY,
222 _COLEMAK_DH,
223 _NAV,
224 _SYM,
225 _FUNCTION,
226 _ADJUST
227};
228```
229or re-define the `QWERTY`, `COLEMAK` and `DVORAK` keys to point to custom keycodes starting on `SAFE_RANGE` and calling the `set_single_persistent_default_layer` function inside of `process_record_user`.
230
231## Hardware Features
232
233### Rotary Encoder
234The left rotary encoder is programmed to control the volume whereas the right encoder sends <kbd>PgUp</kbd> or <kbd>PgDn</kbd> on every turn.
235
236### OLEDs
237The OLEDs display the current layer at the top of the active layers stack, the Kyria logo and lock status (caps lock, num lock, scroll lock).
238
239### Underglow
240The underglow LEDs should be red.
241
242## Going further...
243
244This default keymap can be used as is, unchanged, as a daily driver for your Kyria but you're invited to treat your keymap like a bonsai. At the beginning, it's just like the default keymap but from time to time, you can tweak it a little. Cut a little key here, let another combo grow there. Slowly but surely it will be a unique keymap like no other, that will fit you like a glove.
245
246Check out the #keymap-ideas channel on the official SplitKB Discord server for inspiration.
diff --git a/keyboards/splitkb/kyria/keymaps/benji/rules.mk b/keyboards/splitkb/kyria/keymaps/benji/rules.mk
new file mode 100644
index 000000000..e3486a8a9
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/benji/rules.mk
@@ -0,0 +1,3 @@
1OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays
2ENCODER_ENABLE = yes # Enables the use of one or more encoders
3RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow \ No newline at end of file
diff --git a/keyboards/splitkb/kyria/keymaps/cjuniet/config.h b/keyboards/splitkb/kyria/keymaps/cjuniet/config.h
new file mode 100644
index 000000000..d5d9c23bf
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/cjuniet/config.h
@@ -0,0 +1,37 @@
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
17#pragma once
18
19#ifdef OLED_DRIVER_ENABLE
20 #define OLED_DISPLAY_128X64
21 #define OLED_FONT_H "users/cjuniet/glcdfont.c"
22#endif
23
24#ifdef RGBLIGHT_ENABLE
25 #define RGBLIGHT_ANIMATIONS
26 #define RGBLIGHT_HUE_STEP 8
27 #define RGBLIGHT_SAT_STEP 8
28 #define RGBLIGHT_VAL_STEP 8
29 #define RGBLIGHT_SLEEP
30#endif
31
32#define EE_HANDS
33
34#define LEADER_PER_KEY_TIMING
35#define LEADER_TIMEOUT 250
36
37#define TAPPING_TOGGLE 2
diff --git a/keyboards/splitkb/kyria/keymaps/cjuniet/default.json b/keyboards/splitkb/kyria/keymaps/cjuniet/default.json
new file mode 100644
index 000000000..d08cabece
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/cjuniet/default.json
@@ -0,0 +1,33 @@
1{
2 "keyboard": "kyria/rev1",
3 "keymap": "cjuniet",
4 "layout": "LAYOUT",
5 "layers": [
6 [
7 "KC_ESC", "KC_Q", "KC_W", "KC_F", "KC_P", "KC_G", "KC_J", "KC_L", "KC_U", "KC_Y", "KC_SCLN", "KC_BSLS",
8 "LCTL_T(KC_BSPC)", "KC_A", "KC_R", "KC_S", "KC_T", "KC_D", "KC_H", "KC_N", "KC_E", "KC_I", "KC_O", "KC_QUOT",
9 "LSFT_T(KC_DEL)", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_LAPO", "LGUI_T(KC_LBRC)", "RGUI_T(KC_RBRC)", "KC_RAPC", "KC_K", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_MINS",
10 "KC_TAB", "KC_LGUI", "TT(1)", "LSFT_T(KC_SPC)", "LCTL_T(KC_ENT)", "RCTL_T(KC_ENT)", "RSFT_T(KC_SPC)", "TT(2)", "KC_RGUI", "KC_LEAD"
11 ],
12 [
13 "KC_TRNS", "KC_EXLM", "KC_AT", "KC_HASH", "KC_DLR", "KC_PERC", "KC_CIRC", "KC_AMPR", "KC_ASTR", "KC_LPRN", "KC_RPRN", "KC_TILD",
14 "KC_TRNS", "KC_MPLY", "KC_MS_L", "KC_MS_U", "KC_MS_R", "KC_WH_U", "KC_PGUP", "KC_LEFT", "KC_UP", "KC_RGHT", "KC_VOLU", "KC_GRV",
15 "KC_TRNS", "KC_MUTE", "KC_BTN1", "KC_MS_D", "KC_BTN2", "KC_WH_D", "KC_LT", "KC_TRNS", "KC_TRNS", "KC_GT", "KC_PGDN", "KC_HOME", "KC_DOWN", "KC_END", "KC_VOLD", "KC_EQL",
16 "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"
17 ],
18 [
19 "KC_TRNS", "KC_MNXT", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_PGUP", "KC_P7", "KC_P8", "KC_P9", "KC_PPLS", "KC_PMNS",
20 "KC_TRNS", "KC_MPLY", "KC_F4", "KC_F5", "KC_F6", "KC_F11", "KC_TAB", "KC_P4", "KC_P5", "KC_P6", "KC_PAST", "KC_PSLS",
21 "KC_TRNS", "KC_MPRV", "KC_F1", "KC_F2", "KC_F3", "KC_F12", "KC_LPRN", "KC_LT", "KC_GT", "KC_RPRN", "KC_PGDN", "KC_P1", "KC_P2", "KC_P3", "KC_EQL", "KC_PENT",
22 "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_P0", "KC_PDOT"
23 ],
24 [
25 "KC_TRNS", "KC_NLCK", "KC_CAPS", "KC_SLCK", "KC_LANG1", "KC_LANG2", "KC_TRNS", "KC_PSCR", "KC_SLCK", "KC_PAUS", "KC_TRNS", "KC_TRNS",
26 "KC_TRNS", "RGB_TOG", "RGB_SAI", "RGB_HUI", "RGB_VAI", "RGB_MOD", "KC_TRNS", "KC_INS", "KC_HOME", "KC_PGUP", "KC_TRNS", "KC_TRNS",
27 "KC_TRNS", "KC_NO", "RGB_SAD", "RGB_HUD", "RGB_VAD", "RGB_RMOD", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_DEL", "KC_END", "KC_PGDN", "KC_TRNS", "KC_TRNS",
28 "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"
29 ]
30 ],
31 "author": "",
32 "notes": ""
33}
diff --git a/keyboards/splitkb/kyria/keymaps/cjuniet/keymap.c b/keyboards/splitkb/kyria/keymaps/cjuniet/keymap.c
new file mode 100644
index 000000000..d0620309b
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/cjuniet/keymap.c
@@ -0,0 +1,127 @@
1#include QMK_KEYBOARD_H
2#include "cjuniet.h"
3
4enum layers {
5 _COLEMAK = 0,
6 _SYMBOLS,
7 _NUMBERS,
8 _SPECIALS
9};
10
11const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
12 [_COLEMAK] = LAYOUT(
13 KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS,
14 LCTL_T(KC_BSPC), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
15 LSFT_T(KC_DEL), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LAPO, LGUI_T(KC_LBRC), RGUI_T(KC_RBRC), KC_RAPC, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_MINS,
16 KC_TAB, KC_LGUI, TT(_SYMBOLS), LSFT_T(KC_SPC), LCTL_T(KC_ENT), RCTL_T(KC_ENT), RSFT_T(KC_SPC), TT(_NUMBERS), KC_RGUI, KC_LEAD),
17 [_SYMBOLS] = LAYOUT(
18 KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TILD,
19 KC_TRNS, KC_MPLY, KC_MS_L, KC_MS_U, KC_MS_R, KC_WH_U, KC_PGUP, KC_LEFT, KC_UP, KC_RGHT, KC_VOLU, KC_GRV,
20 KC_TRNS, KC_MUTE, KC_BTN1, KC_MS_D, KC_BTN2, KC_WH_D, KC_LT, KC_TRNS, KC_TRNS, KC_GT, KC_PGDN, KC_HOME, KC_DOWN, KC_END, KC_VOLD, KC_EQL,
21 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
22 [_NUMBERS] = LAYOUT(
23 KC_TRNS, KC_MNXT, KC_F7, KC_F8, KC_F9, KC_F10, KC_PGUP, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_PMNS,
24 KC_TRNS, KC_MPLY, KC_F4, KC_F5, KC_F6, KC_F11, KC_TAB, KC_P4, KC_P5, KC_P6, KC_PAST, KC_PSLS,
25 KC_TRNS, KC_MPRV, KC_F1, KC_F2, KC_F3, KC_F12, KC_LPRN, KC_LT, KC_GT, KC_RPRN, KC_PGDN, KC_P1, KC_P2, KC_P3, KC_EQL, KC_PENT,
26 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P0, KC_PDOT),
27 [_SPECIALS] = LAYOUT(
28 KC_TRNS, KC_NLCK, KC_CAPS, KC_SLCK, KC_LANG1, KC_LANG2, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS,
29 KC_TRNS, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, KC_TRNS,
30 KC_TRNS, KC_NO, RGB_SAD, RGB_HUD, RGB_VAD, RGB_RMOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
32};
33
34LEADER_EXTERNS();
35
36void keyboard_post_init_user(void) {
37 led_t led_state = host_keyboard_led_state();
38 if (!led_state.num_lock) {
39 tap_code(KC_NLCK);
40 }
41}
42
43layer_state_t layer_state_set_user(layer_state_t state) {
44 return update_tri_layer_state(state, _SYMBOLS, _NUMBERS, _SPECIALS);
45}
46
47void matrix_scan_user(void) {
48 LEADER_DICTIONARY() {
49 leading = false;
50 leader_end();
51
52 // Lock screen (macOS)
53 SEQ_ONE_KEY(KC_ESC) {
54 tap_code16(LCTL(LGUI(KC_Q)));
55 }
56
57 // Escape-Shift-Z-Z (VIM)
58 SEQ_ONE_KEY(KC_Z) {
59 SEND_STRING(SS_TAP(X_ESC) SS_LSFT("zz"));
60 }
61
62 // Dead grave accent (macOS)
63 SEQ_ONE_KEY(KC_E) {
64 tap_code16(LALT(KC_GRAVE));
65 }
66 }
67}
68
69oled_rotation_t oled_init_user(oled_rotation_t rotation) {
70 return OLED_ROTATION_180;
71}
72
73static void render_kyria_logo(void) {
74 static const char PROGMEM kyria_logo[] = {
75 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,
76 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,
77 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,
78 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,
79 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,
80 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,
81 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,
82 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
83 };
84 oled_write_raw_P(kyria_logo, sizeof(kyria_logo));
85}
86
87static void render_qmk_logo(void) {
88 static const char PROGMEM qmk_logo[] = {
89 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
90 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
91 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0};
92
93 oled_write_P(qmk_logo, false);
94}
95
96static void render_status(void) {
97 render_qmk_logo();
98 oled_write_ln_P(PSTR(" Chris's Kyria\n"), false);
99
100 oled_write_P(PSTR(" "), false);
101 switch (get_highest_layer(layer_state)) {
102 case _COLEMAK:
103 oled_write_P(PSTR("Colemak"), false);
104 break;
105 case _SYMBOLS:
106 oled_write_P(PSTR("Symbols"), false);
107 break;
108 case _NUMBERS:
109 oled_write_P(PSTR("Numbers"), false);
110 break;
111 case _SPECIALS:
112 oled_write_P(PSTR("Special"), false);
113 break;
114 default:
115 oled_write_P(PSTR("Undefined"), false);
116 }
117 oled_write_ln_P(PSTR(" Layer\n"), false);
118}
119
120void oled_task_user(void) {
121 if (is_keyboard_master()) {
122 render_status();
123 render_status_bar();
124 } else {
125 render_kyria_logo();
126 }
127}
diff --git a/keyboards/splitkb/kyria/keymaps/cjuniet/rules.mk b/keyboards/splitkb/kyria/keymaps/cjuniet/rules.mk
new file mode 100644
index 000000000..9699ed810
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/cjuniet/rules.mk
@@ -0,0 +1,6 @@
1ENCODER_ENABLE = no
2EXTRAKEY_ENABLE = yes
3LEADER_ENABLE = yes
4MOUSEKEY_ENABLE = yes
5OLED_DRIVER_ENABLE = yes
6RGBLIGHT_ENABLE = no
diff --git a/keyboards/splitkb/kyria/keymaps/corodiak/config.h b/keyboards/splitkb/kyria/keymaps/corodiak/config.h
new file mode 100644
index 000000000..eed94d055
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/corodiak/config.h
@@ -0,0 +1,45 @@
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
17#pragma once
18
19#ifdef OLED_DRIVER_ENABLE
20 #define OLED_DISPLAY_128X64
21#endif
22
23#ifdef RGBLIGHT_ENABLE
24 #define RGBLIGHT_ANIMATIONS
25 #define RGBLIGHT_HUE_STEP 8
26 #define RGBLIGHT_SAT_STEP 8
27 #define RGBLIGHT_VAL_STEP 8
28#endif
29
30// The Leader key allows to flexibly assign macros to key sequences.
31#define LEADER_PER_KEY_TIMING
32#define LEADER_TIMEOUT 350
33
34#define TAPPING_TERM 200
35
36// Turn off on slave
37#define WAIT_FOR_USB
38
39// If you are using an Elite C rev3 on the slave side, uncomment the lines below:
40#define SPLIT_USB_DETECT
41#define NO_USB_STARTUP_CHECK
42
43// Allows to use either side as the master. Look at the documentation for info:
44// https://docs.qmk.fm/#/config_options?id=setting-handedness
45#define EE_HANDS
diff --git a/keyboards/splitkb/kyria/keymaps/corodiak/keymap.c b/keyboards/splitkb/kyria/keymaps/corodiak/keymap.c
new file mode 100644
index 000000000..0f7e05991
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/corodiak/keymap.c
@@ -0,0 +1,321 @@
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
18typedef union {
19 uint32_t raw;
20 struct {
21 bool osIsWindows;
22 };
23} user_config_t;
24
25user_config_t user_config;
26
27enum layers {
28 _QWERTY = 0,
29 _COLEMAK,
30 _NAV,
31 _SYMBOLS,
32 _NUM,
33 _ADJUST
34};
35
36enum custom_keycodes {
37 Qwerty = SAFE_RANGE,
38 Colemak,
39 Undo,
40 Cut,
41 Copy,
42 Paste,
43 NxtWord,
44 PrvWord
45};
46
47const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
48/*
49 * Base Layer: QWERTY
50 *
51 * ,-------------------------------------------. ,-------------------------------------------.
52 * | TAB | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
53 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
54 * | NAV | A | S | D | F | G | | H | J | K | L | ; : | ' " |
55 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
56 * | LShift | Z | X | C | V | B |Enter | ESC | |ADJUST|Space | N | M | , < | . > | / ? | Del |
57 * `----------------------+------+------+------+ +------| |------+ +------+------+------+----------------------'
58 * | LCTL | GUI | RALT | | NUM | | NUM | | SYMB | NAV |LEADER|
59 * | | | | | | | | | | | |
60 * `----------------------------------' `----------------------------------'
61 */
62 [_QWERTY] = LAYOUT(
63 KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y, KC_U , KC_I , KC_O , KC_P , KC_BSPC,
64 MO(_NAV), KC_A , KC_S , KC_D , KC_F , KC_G , KC_H, KC_J , KC_K , KC_L ,KC_SCLN, KC_QUOT,
65 KC_LSFT , KC_Z , KC_X , KC_C , KC_V , KC_B , XXXXXXX, KC_ESC , MO(_ADJUST), XXXXXXX, KC_N, KC_M ,KC_COMM, KC_DOT ,KC_SLSH, RSFT_T(KC_DEL),
66 KC_LCTL, KC_LGUI, KC_RALT, KC_ENT ,TT(_NUM),TT(_NUM), KC_SPC, MO(_SYMBOLS), MO(_NAV), KC_LEAD
67 ),
68
69/*
70 * Base Layer: Colemak
71 *
72 * ,-------------------------------------------. ,-------------------------------------------.
73 * | TAB | Q | W | F | P | G | | J | L | U | Y | ; : | Bksp |
74 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
75 * | NAV | A | R | S | T | D | | H | N | E | I | O | ' " |
76 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
77 * | LShift | Z | X | C | V | B |Enter | ESC | |ADJUST|Space | K | M | , < | . > | / ? | Del |
78 * `----------------------+------+------+------+ +------| |------+ +------+------+------+----------------------'
79 * | LCTL | GUI | RALT | | NUM | | NUM | | SYMB | NAV |LEADER|
80 * | | | | | | | | | | | |
81 * `----------------------------------' `----------------------------------'
82 */
83 [_COLEMAK] = LAYOUT(
84 KC_TAB , KC_Q , KC_W , KC_F , KC_P , KC_G , KC_J, KC_L , KC_U , KC_Y ,KC_SCLN, KC_BSPC,
85 MO(_NAV), KC_A , KC_R , KC_S , KC_T , KC_D , KC_H, KC_N , KC_E , KC_I , KC_O , KC_QUOT,
86 KC_LSFT , KC_Z , KC_X , KC_C , KC_V , KC_B , XXXXXXX, KC_ESC , MO(_ADJUST), XXXXXXX, KC_K, KC_M ,KC_COMM, KC_DOT ,KC_SLSH, RSFT_T(KC_DEL),
87 KC_LCTL, KC_LGUI, KC_RALT, KC_ENT ,TT(_NUM),TT(_NUM), KC_SPC, MO(_SYMBOLS), MO(_NAV), KC_LEAD
88 ),
89
90/*
91 * Navigation Layer: Cursor, Text Navigation
92 *
93 * ,-------------------------------------------. ,-------------------------------------------.
94 * | | | |WheelU| | | | |PrvWord| Up |NxtWord| | |
95 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
96 * | | | LCTL |WheelD|LSFT | Bksp | | Bksp | Left | Down |Right | Del | |
97 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
98 * | | Undo | Cut | Copy |Paste | | | | | | | | Home | | End | | |
99 * `----------------------+------+------+------+ +------| |------+ +------+------+------+----------------------'
100 * | | | | |Space | | | | | | |
101 * | | | | | | | | | | | |
102 * `----------------------------------' `----------------------------------'
103 */
104 [_NAV] = LAYOUT(
105 _______, _______, _______, KC_WH_U, _______, _______, _______, PrvWord, KC_UP , NxtWord, _______, _______,
106 _______, _______, KC_LCTL, KC_WH_D, KC_LSFT, KC_BSPC, KC_BSPC, KC_LEFT, KC_DOWN,KC_RIGHT, KC_DEL , _______,
107 _______, Undo , Cut , Copy , Paste , _______, XXXXXXX, _______, _______, XXXXXXX, _______, KC_HOME, _______, KC_END , _______, _______,
108 _______, _______, _______, _______, KC_SPC , _______, _______, _______, _______, _______
109 ),
110
111/*
112 * Symbol Layer
113 *
114 * ,-------------------------------------------. ,-------------------------------------------.
115 * | ` ~ | ! | @ | # | $ | % | | ^ | { | } | | € | |
116 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
117 * | ~ | | | - _ | = + | & | | * | ( | ) | | | | |
118 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
119 * | | | | _ | + | | | | | | | | [ { | ] } | | \ | | |
120 * `----------------------+------+------+------+ +------| |------+ +------+------+------+----------------------'
121 * | | | | | | | | | | | |
122 * | | | | | | | | | | | |
123 * `----------------------------------' `----------------------------------'
124 */
125 [_SYMBOLS] = LAYOUT(
126 KC_GRV, KC_EXLM, KC_AT , KC_HASH, KC_DLR , KC_PERC, KC_CIRC, KC_LCBR, KC_RCBR, _______,ALGR(KC_5),_______,
127 KC_TILD, _______, _______, KC_MINS, KC_EQL , KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, KC_PIPE, _______,
128 _______, _______, _______, KC_UNDS, KC_PLUS, _______, XXXXXXX, _______, _______, XXXXXXX, _______, KC_LBRC, KC_RBRC, _______, KC_BSLS, _______,
129 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
130 ),
131/*
132 * Num Layer
133 *
134 * ,-------------------------------------------. ,-------------------------------------------.
135 * | | 1 ! | 2 @ | 3 # | 4 $ | 5 % | | / | 7 & | 8 * | 9 ( | - | |
136 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
137 * | | 6 ^ | 7 & | 8 * | 9 ( | 0 ) | | * | 4 $ | 5 % | 6 ^ | + | Space |
138 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
139 * | | | | | | | | | | | | 0 ) | 1 ! | 2 @ | 3 # | = | Enter |
140 * `----------------------+------+------+------+ +------| |------+ +------+------+------+----------------------'
141 * | | | | | | | | | | , | . |
142 * | | | | | | | | | | | |
143 * `----------------------------------' `----------------------------------'
144 */
145 [_NUM] = LAYOUT(
146 _______, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_PSLS, KC_7 , KC_8 , KC_9 , KC_PMNS, _______,
147 _______, KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_PAST, KC_4 , KC_5 , KC_6 , KC_PLUS, KC_SPC ,
148 _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, XXXXXXX, KC_0 , KC_1 , KC_2 , KC_3 , KC_PEQL, KC_ENT ,
149 _______, _______, _______, _______, _______, _______, _______, _______, KC_PCMM, KC_DOT
150 ),
151
152/*
153 * Adjust Layer: Media
154 *
155 * ,-------------------------------------------. ,-------------------------------------------.
156 * | | F9 | F10 | F11 | F12 | | | SAI | | Vol+ | | Play | |
157 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
158 * | | F5 | F6 | F7 | F8 | | | HUI | Prev | Vol- | Nxt | | |
159 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
160 * | | F1 | F2 | F3 | F4 | | | | | | | VAI | Mute | | | | |
161 * `----------------------+------+------+------+ +------| |------+ +------+------+------+----------------------'
162 * |Qwerty|Colemak| | | | | RGB | | RGB | | |
163 * | Dflt | Dflt | | | | |Toggle| | Mode | | |
164 * `----------------------------------' `----------------------------------'
165 */
166 [_ADJUST] = LAYOUT(
167 _______, KC_F9 , KC_F10 , KC_F11 , KC_F12 , _______, RGB_SAI, _______, KC_VOLU, _______, KC_MPLY, _______,
168 _______, KC_F5 , KC_F6 , KC_F7 , KC_F8 , _______, RGB_HUI, KC_MPRV, KC_VOLD, KC_MNXT, _______, _______,
169 _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , _______, XXXXXXX, _______, _______, XXXXXXX, RGB_VAI, KC_MUTE, _______, _______, _______, _______,
170 Qwerty , Colemak, _______, _______, _______, RGB_TOG, _______, RGB_MOD, _______, _______
171 ),
172
173// /*
174// * Layer template
175// *
176// * ,-------------------------------------------. ,-------------------------------------------.
177// * | | | | | | | | | | | | | |
178// * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
179// * | | | | | | | | | | | | | |
180// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
181// * | | | | | | | | | | | | | | | | | |
182// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
183// * | | | | | | | | | | | |
184// * | | | | | | | | | | | |
185// * `----------------------------------' `----------------------------------'
186// */
187// [_LAYERINDEX] = LAYOUT(
188// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
189// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
190// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
191// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
192// ),
193};
194
195void keyboard_post_init_user(void) {
196 // Call the post init code.
197
198 // Read the user config from EEPROM
199 user_config.raw = eeconfig_read_user();
200
201 // Default RGB settings, without saving settings
202 rgblight_enable_noeeprom();
203 rgblight_sethsv_noeeprom(HSV_CYAN);
204 rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
205}
206
207bool process_record_user(uint16_t keycode, keyrecord_t *record) {
208 switch(keycode) {
209 case Qwerty:
210 if (record->event.pressed) {
211 set_single_persistent_default_layer(_QWERTY);
212 }
213 break;
214 case Colemak:
215 if (record->event.pressed) {
216 set_single_persistent_default_layer(_COLEMAK);
217 }
218 break;
219 case Undo:
220 if (record->event.pressed) {
221 if (user_config.osIsWindows == 1) {
222 tap_code16(C(KC_Z));
223 } else if (user_config.osIsWindows == 0) {
224 tap_code16(G(KC_Z));
225 }
226 }
227 break;
228 case Cut:
229 if (record->event.pressed) {
230 if (user_config.osIsWindows == 1) {
231 tap_code16(C(KC_X));
232 } else if (user_config.osIsWindows == 0) {
233 tap_code16(G(KC_X));
234 }
235 }
236 break;
237 case Copy:
238 if (record->event.pressed) {
239 if (user_config.osIsWindows == 1) {
240 tap_code16(C(KC_C));
241 } else if (user_config.osIsWindows == 0) {
242 tap_code16(G(KC_C));
243 }
244 }
245 break;
246 case Paste:
247 if (record->event.pressed) {
248 if (user_config.osIsWindows == 1) {
249 tap_code16(C(KC_V));
250 } else if (user_config.osIsWindows == 0) {
251 tap_code16(G(KC_V));
252 }
253 }
254 break;
255 case PrvWord:
256 if (record->event.pressed) {
257 if (user_config.osIsWindows == 1) {
258 tap_code16(C(KC_LEFT));
259 } else if (user_config.osIsWindows == 0) {
260 tap_code16(A(KC_LEFT));
261 }
262 }
263 break;
264 case NxtWord:
265 if (record->event.pressed) {
266 if (user_config.osIsWindows == 1) {
267 tap_code16(C(KC_RGHT));
268 } else if (user_config.osIsWindows == 0) {
269 tap_code16(A(KC_RGHT));
270 }
271 }
272 break;
273 }
274 return true;
275};
276
277LEADER_EXTERNS();
278
279void matrix_scan_user(void) {
280 LEADER_DICTIONARY() {
281 leading = false;
282 leader_end();
283
284 // Set current OS indicator to macOs
285 SEQ_ONE_KEY(KC_M) {
286 user_config.osIsWindows = false;
287 eeconfig_update_user(user_config.raw);
288 }
289
290 // Set current OS indicator to Windows
291 SEQ_ONE_KEY(KC_W) {
292 user_config.osIsWindows = true;
293 eeconfig_update_user(user_config.raw);
294 }
295
296 // Screenshot
297 SEQ_ONE_KEY(KC_S) {
298 if (user_config.osIsWindows == 1) {
299 tap_code16(S(G(KC_S)));
300 } else if (user_config.osIsWindows == 0) {
301 tap_code16(S(G(KC_4)));
302 }
303 }
304
305 // Video
306 SEQ_ONE_KEY(KC_V) {
307 if (user_config.osIsWindows == 0) {
308 tap_code16(S(G(KC_5)));
309 }
310 }
311
312 // Sleep
313 SEQ_ONE_KEY(KC_P) {
314 if (user_config.osIsWindows == 1) {
315 SEND_STRING(SS_LGUI("x") "u" "h");
316 } else if (user_config.osIsWindows == 0) {
317 tap_code16(A(G(KC_PWR)));
318 }
319 }
320 }
321}
diff --git a/keyboards/splitkb/kyria/keymaps/corodiak/rules.mk b/keyboards/splitkb/kyria/keymaps/corodiak/rules.mk
new file mode 100644
index 000000000..da64c4ea5
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/corodiak/rules.mk
@@ -0,0 +1,4 @@
1# OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays
2# ENCODER_ENABLE = yes # Enables the use of one or more encoders
3RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
4LEADER_ENABLE = yes # Enables the Leader shortcut funtionality
diff --git a/keyboards/splitkb/kyria/keymaps/cwebster2/config.h b/keyboards/splitkb/kyria/keymaps/cwebster2/config.h
new file mode 100644
index 000000000..6a56d7ee9
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/cwebster2/config.h
@@ -0,0 +1,55 @@
1/* Copyright 2020 Casey Webster <casey@e1337.dev>
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
17#pragma once
18
19#ifdef OLED_DRIVER_ENABLE
20 #define OLED_DISPLAY_128X64
21#endif
22
23#ifdef RGBLIGHT_ENABLE
24 //#define RGBLIGHT_ANIMATIONS
25 //#define RGBLIGHT_EFFECT_ALTERNATING
26 #define RGBLIGHT_EFFECT_BREATHING
27 //#define RGBLIGHT_EFFECT_CHRISTMAS
28 //#define RGBLIGHT_EFFECT_KNIGHT
29 //#define RGBLIGHT_EFFECT_RAINBOW_MOOD
30 //#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
31 //#define RGBLIGHT_EFFECT_RGB_TEST
32 //#define RGBLIGHT_EFFECT_SNAKE
33 //#define RGBLIGHT_EFFECT_STATIC_GRADIENT
34 //#define RGBLIGHT_EFFECT_TWINKLE
35 #define RGBLIGHT_HUE_STEP 8
36 #define RGBLIGHT_SAT_STEP 8
37 #define RGBLIGHT_VAL_STEP 8
38 #define RGBLIGHT_SLEEP
39 #define RGBLIGHT_LIMIT_VAL 128
40 #define RGBLIGHT_EFFECT_BREATHE_MAX 128
41 #define RGBLIGHT_LAYERS
42 #define RGBLIGHT_MAX_LAYERS 16
43 //#define RGBLIGHT_STARTUP_ANIMATION
44#endif
45
46#ifdef COMBO_ENABLE
47 #define COMBO_COUNT 2
48#endif
49
50#define QMK_KEYS_PER_SCAN 4
51
52#define EE_HANDS
53
54//#define DEBUG_MATRIX_SCAN_RATE
55//#define SPLIT_MODS_ENABLE
diff --git a/keyboards/splitkb/kyria/keymaps/cwebster2/keymap.c b/keyboards/splitkb/kyria/keymaps/cwebster2/keymap.c
new file mode 100644
index 000000000..e6d8636e4
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/cwebster2/keymap.c
@@ -0,0 +1,401 @@
1/* Copyright 2020 Casey Webster <casey@e1337.dev>
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 "raw_hid.h"
18#define RAW_EPSIZE 8
19#include <stdio.h>
20
21#include "cwebster2.h"
22
23#ifdef WPM_ENABLE
24char wpm_str[10];
25uint16_t wpm_graph_timer = 0;
26#endif
27
28#ifdef COMBO_ENABLE
29enum combos {
30 ZX_COPY,
31 CV_PASTE
32};
33
34const uint16_t PROGMEM copy_combo[] = { KC_Z, KC_X, COMBO_END };
35const uint16_t PROGMEM paste_combo[] = { KC_C, KC_V, COMBO_END };
36
37combo_t key_combos[COMBO_COUNT] = {
38 [ZX_COPY] = COMBO(copy_combo, LCTL_T(KC_C)),
39 [CV_PASTE] = COMBO(paste_combo, LCTL_T(KC_V))
40};
41#endif
42
43#define LAYOUT_kyria_base( \
44 L01, L02, L03, L04, L05, R05, R04, R03, R02, R01, \
45 L11, L12, L13, L14, L15, R15, R14, R13, R12, R11, \
46 L21, L22, L23, L24, L25, R25, R24, R23, R22, R21, \
47 L33, L34, L35, R35, R34, R33 \
48 ) \
49 LAYOUT_kyria_wrapper ( \
50 KC_GRV, L01, L02, L03, L04, L05, R05, R04, R03, R02, R01, KC_BSLS, \
51 KC_CTLBS, L11, L12, L13, L14, L15, R15, R14, R13, R12, R11, KC_QUOT, \
52 KC_EQL, L21, L22, L23, L24, L25, KC_LCCL, KC_LGUI, KC_ALTCL, KC_LSFT, R25, R24, R23, R22, R21, KC_MINS, \
53 SCMD_T(KC_LBRC), C_S_T(KC_MINS), L33, L34, L35, R35, R34, R33, TO(_GAME), KC_PSCR \
54 )
55#define LAYOUT_kyria_base_wrapper(...) LAYOUT_kyria_base(__VA_ARGS__)
56
57
58const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
59/*
60 * Base Layer: QWERTY
61 */
62 [_QWERTY] = LAYOUT_kyria_base_wrapper(
63 /* ,-----------------------. ,-----------------------. */
64 _______QWERTY_L1______, _______QWERTY_R1______,
65 _______QWERTY_L2______, _______QWERTY_R2______,
66 _______QWERTY_L3______, _______QWERTY_R3______,
67 _______THUMBS_L_______, _______THUMBS_R_______
68 /* `---------------------' `---------------------' */
69 ),
70 [_COLEMAK] = LAYOUT_kyria_wrapper(
71 /* ,-----------------------. ,-----------------------. */
72 KC_GRV, _______COLEMAK_L1_____, _______COLEMAK_R1_____, KC_BSLS,
73 KC_CTLBS, _______COLEMAK_L2_____, _______COLEMAK_R2_____, KC_SCLN,
74 KC_EQL, _______COLEMAK_L3_____, KC_LCCL, KC_LGUI, KC_ALTCL, KC_LSFT, _______COLEMAK_R3_____, KC_MINS,
75 SCMD_T(KC_LBRC), C_S_T(KC_MINS), _______THUMBS_L_______, _______THUMBS_R_______, TO(_QWERTY), KC_PSCR
76 /* `---------------------' `---------------------' */
77 ),
78 // GAME layout -- qwerty without homerow mods
79 [_GAME] = LAYOUT_kyria_wrapper(
80 /* ,-------------------------------------------. ,-------------------------------------------. */
81 KC_GRV, _______QWERTY_L1______, _______QWERTY_R1______, KC_BSLS,
82 KC_CTLBS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
83 KC_LSFT, _______QWERTY_L3______, KC_LCCL, KC_LALT, KC_ALTCL, KC_LSFT, _______QWERTY_R3______, KC_MINS,
84 KC_EQL, KC_0, _______NAKED_L___T____, _______THUMBS_R_______, TO(_COLEMAK), KC_F12
85 /* `----------------------------------' `----------------------------------' */
86 ),
87 [_FN] = LAYOUT_kyria_base_wrapper(
88 /* ,-----------------------. ,-----------------------. */
89 _______FN_______L1____, _______INACTIVE_R1____,
90 _______FN_______L2____, _______INACTIVE_R2____,
91 _______FN_______L3____, _______NAV______R2____,
92 _______FN________T____, _______INACTIVE__T____
93 /* `---------------------' `---------------------' */
94 ),
95 [_SYMBOLS] = LAYOUT_kyria_base_wrapper(
96 /* ,-----------------------. ,-----------------------. */
97 _______SYM______L1____, _______INACTIVE_R1____,
98 _______SYM______L2____, _______INACTIVE_R2____,
99 _______SYM______L3____, _______INACTIVE_R3____,
100 _______SYM_______T____, _______INACTIVE__T____
101 /* `---------------------' `---------------------' */
102 ),
103 [_NUM] = LAYOUT_kyria_base_wrapper(
104 /* ,-----------------------. ,-----------------------. */
105 _______NUM______L1____, _______INACTIVE_R1____,
106 _______NUM______L2____, _______INACTIVE_R2____,
107 _______NUM______L3____, _______INACTIVE_R3____,
108 _______NUM_______T____, _______INACTIVE__T____
109 /* `---------------------' `---------------------' */
110 ),
111 [_NAV] = LAYOUT_kyria_base_wrapper(
112 /* ,-----------------------. ,-----------------------. */
113 _______INACTIVE_L1____, _______NAV______R1____,
114 _______INACTIVE_L2____, _______NAV______R2____,
115 _______INACTIVE_L3____, _______NAV______R3____,
116 _______INACTIVE__T____, _______NAV_______T____
117 /* `---------------------' `---------------------' */
118 ),
119 [_MOUSE] = LAYOUT_kyria_base_wrapper(
120 /* ,-----------------------. ,-----------------------. */
121 _______INACTIVE_L1____, _______MOUSE____R1____,
122 _______INACTIVE_L2____, _______MOUSE____R2____,
123 _______INACTIVE_L3____, _______MOUSE____R3____,
124 _______INACTIVE__T____, _______MOUSE_____T____
125 /* `---------------------' `---------------------' */
126 ),
127 [_MEDIA] = LAYOUT_kyria_base_wrapper(
128 /* ,-----------------------. ,-----------------------. */
129 _______INACTIVE_L1____, _______MEDIA____R1____,
130 _______INACTIVE_L2____, _______MEDIA____R2____,
131 _______INACTIVE_L3____, _______MEDIA____R3____,
132 _______INACTIVE__T____, _______MEDIA_____T____
133 /* `---------------------' `---------------------' */
134 ),
135};
136
137#ifdef RAW_ENABLE
138static void send_layer_via_hid(int layer) {
139 uint8_t data[RAW_EPSIZE];
140 data[0] = 1;
141 data[1] = layer;
142 raw_hid_send(data, sizeof(data));
143 return;
144}
145#endif
146
147
148#ifdef RGBLIGHT_LAYERS
149const rgblight_segment_t PROGMEM my_qwerty_layer[] = RGBLIGHT_LAYER_SEGMENTS( {0, 20, HSV_AZURE} );
150const rgblight_segment_t PROGMEM my_colemak_layer[] = RGBLIGHT_LAYER_SEGMENTS( {0, 20, HSV_BLUE} );
151const rgblight_segment_t PROGMEM my_game_layer[] = RGBLIGHT_LAYER_SEGMENTS( {0, 20, HSV_RED} );
152const rgblight_segment_t PROGMEM my_fn_layer[] = RGBLIGHT_LAYER_SEGMENTS( {0, 20, HSV_PINK} );
153const rgblight_segment_t PROGMEM my_symbols_layer[] = RGBLIGHT_LAYER_SEGMENTS( {0, 20, HSV_GREEN} );
154const rgblight_segment_t PROGMEM my_num_layer[] = RGBLIGHT_LAYER_SEGMENTS( {0, 20, HSV_CORAL} );
155const rgblight_segment_t PROGMEM my_nav_layer[] = RGBLIGHT_LAYER_SEGMENTS( {0, 20, HSV_GOLDENROD} );
156const rgblight_segment_t PROGMEM my_mouse_layer[] = RGBLIGHT_LAYER_SEGMENTS( {0, 20, HSV_TURQUOISE} );
157const rgblight_segment_t PROGMEM my_media_layer[] = RGBLIGHT_LAYER_SEGMENTS( {0, 20, HSV_MAGENTA} );
158
159const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS(
160 {0, 3, HSV_RED},
161 {7, 1, HSV_RED},
162 {10, 3, HSV_RED},
163 {17, 1, HSV_RED}
164);
165
166const rgblight_segment_t PROGMEM my_shift_layer[] = RGBLIGHT_LAYER_SEGMENTS(
167 {3, 1, HSV_RED},
168 {13, 1, HSV_RED}
169);
170
171const rgblight_segment_t PROGMEM my_ctrl_layer[] = RGBLIGHT_LAYER_SEGMENTS(
172 {4, 1, HSV_ORANGE},
173 {14, 1, HSV_ORANGE}
174);
175
176const rgblight_segment_t PROGMEM my_alt_layer[] = RGBLIGHT_LAYER_SEGMENTS(
177 {5, 1, HSV_GOLD},
178 {15, 1, HSV_GOLD}
179);
180
181const rgblight_segment_t PROGMEM my_gui_layer[] = RGBLIGHT_LAYER_SEGMENTS(
182 {9, 1, HSV_SPRINGGREEN},
183 {19, 1, HSV_SPRINGGREEN}
184);
185
186const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
187 my_colemak_layer,
188 my_qwerty_layer,
189 my_game_layer,
190 my_fn_layer,
191 my_symbols_layer,
192 my_num_layer,
193 my_nav_layer,
194 my_mouse_layer,
195 my_media_layer,
196 my_capslock_layer,
197 my_shift_layer,
198 my_ctrl_layer,
199 my_alt_layer,
200 my_gui_layer
201);
202
203void matrix_scan_keymap(void) {
204 uint8_t mods = mod_config(get_mods());
205 rgblight_set_layer_state(10, mods & MOD_MASK_SHIFT);
206 rgblight_set_layer_state(11, mods & MOD_MASK_CTRL);
207 rgblight_set_layer_state(12, mods & MOD_MASK_ALT);
208 rgblight_set_layer_state(13, mods & MOD_MASK_GUI);
209}
210#endif
211
212void keyboard_post_init_user(void) {
213 rgblight_sethsv_noeeprom(HSV_BLUE);
214 keyboard_post_init_rgb();
215#ifdef RGBLIGHT_LAYERS
216 rgblight_layers = my_rgb_layers;
217#else
218 rgblight_sethsv_noeeprom(HSV_BLUE);
219#endif
220 /*debug_enable=true;*/
221 /*debug_matrix=true;*/
222}
223
224//todo https://github.com/qmk/qmk_firmware/blob/debdc6379c7a72815df1f53e3406479381d243af/keyboards/crkbd/keymaps/soundmonster/keymap.c RGBRST
225
226layer_state_t layer_state_set_user(layer_state_t state) {
227#ifdef RGBLIGHT_LAYERS
228 for (int i = _QWERTY; i < __LAST; i++) {
229 rgblight_set_layer_state(i, layer_state_cmp(state, i));
230 }
231# ifdef RAW_ENABLE
232 send_layer_via_hid(state);
233# endif
234#endif
235 return state;
236}
237
238#ifdef RGBLIGHT_LAYERS
239bool led_update_user(led_t led_state) {
240 rgblight_set_layer_state(9, led_state.caps_lock);
241 return true;
242}
243#endif
244
245#ifdef OLED_DRIVER_ENABLE
246void suspend_power_down_user() {
247 oled_clear();
248 oled_off();
249}
250
251oled_rotation_t oled_init_user(oled_rotation_t rotation) {
252 return OLED_ROTATION_180;
253}
254
255static void render_logo(void) {
256 static const char PROGMEM qmk_logo[] = {
257 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
258 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
259 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0};
260
261 static const char PROGMEM logo[] = {
262 // canvas is 128x64. need 16 padding
263 // 80x32
264 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
265 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x60, 0xe0, 0xf0, 0xfe, 0xfe, 0xf0, 0x60, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
266 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
267 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
268 0x00, 0x00, 0x0c, 0x1c, 0x3c, 0x7c, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x7c, 0xf8, 0xe0, 0x60, 0x20, 0x10, 0x10, 0x0c, 0x0f, 0x09, 0x08, 0x00, 0x09, 0x9b, 0x5c, 0x50, 0x10, 0x20, 0x40, 0xe0, 0xf8, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0x78, 0x38, 0x38, 0x10, 0x00, 0x00,
269 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
270 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
271 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x1f, 0x1f, 0x1f, 0x1f, 0x17, 0x15, 0x3d, 0xef, 0xaf, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x40, 0xa0, 0xbf, 0xff, 0x3f, 0x3f, 0x3f, 0x1f, 0x1f, 0x1f, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
272 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
273 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
274 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
275 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
276 };
277 oled_write_raw_P(logo, sizeof(logo));
278
279 oled_advance_page(false);
280 oled_advance_page(false);
281 oled_advance_page(false);
282 oled_advance_page(false);
283 oled_write_P(qmk_logo, false);
284
285#ifdef COMBO_ENABLE
286 oled_write_P(PSTR("Combos enabled: "), false);
287 if (is_combo_enabled()) {
288 oled_write_P(PSTR("Yes\n"), false);
289 } else {
290 oled_write_P(PSTR("No\n"), false);
291 }
292#endif
293
294#ifdef SPLIT_MODS_ENABLE
295 uint8_t mods = get_mods() | get_weak_mods();
296 oled_write_P((mods & MOD_MASK_GUI) ? PSTR("GUI ") : PSTR(" "), false);
297 oled_write_P((mods & MOD_MASK_ALT) ? PSTR("ALT ") : PSTR(" "), false);
298 oled_write_P((mods & MOD_MASK_CTRL) ? PSTR("CTRL ") : PSTR(" "), false);
299 oled_write_P((mods & MOD_MASK_SHIFT) ? PSTR("SHFT ") : PSTR(" "), false);
300 oled_write_P(PSTR("\n"), false);
301
302#endif
303
304#ifdef WPM_ENABLE
305 // Write WPM
306 uint8_t n = get_current_wpm();
307 wpm_str[3] = '\0';
308 wpm_str[2] = '0' + n % 10;
309 wpm_str[1] = '0' + (n /= 10) % 10;
310 wpm_str[0] = '0' + n / 10 ;
311 //oled_write_P(PSTR("\n"), false);
312 oled_write_P(PSTR(" WPM: "), false);
313 oled_write(wpm_str, false);
314#endif
315}
316
317
318static void render_status(void) {
319 static bool isColemak = false;
320 // QMK Logo and version information
321 oled_write_P(PSTR("Kyria rev1.3\n\n"), false);
322
323 oled_write_P(isColemak ? PSTR("COLEMAK ") : PSTR("QWERTY "), false);
324
325 // Host Keyboard Layer Status
326 switch (get_highest_layer(layer_state)) {
327 case _QWERTY:
328 oled_write_P(PSTR("Default\n"), false);
329 isColemak = false;
330 break;
331 case _SYMBOLS:
332 oled_write_P(PSTR("Shifted Sym\n"), false);
333 break;
334 case _NUM:
335 oled_write_P(PSTR("Numbers\n"), false);
336 break;
337 case _NAV:
338 oled_write_P(PSTR("Navigation\n"), false);
339 break;
340 case _FN:
341 oled_write_P(PSTR("Fn\n"), false);
342 break;
343 case _GAME:
344 oled_write_P(PSTR("Game\n"), false);
345 isColemak = false;
346 break;
347 case _COLEMAK:
348 oled_write_P(PSTR("Colemak-DHm\n"), false);
349 isColemak = true;
350 break;
351 case _MEDIA:
352 oled_write_P(PSTR("Media keys\n"), false);
353 break;
354 case _MOUSE:
355 oled_write_P(PSTR("Mouse keys\n"), false);
356 break;
357 default:
358 oled_write_P(PSTR("Undefined\n"), false);
359 }
360
361 uint8_t mods = get_mods() | get_weak_mods();
362 oled_write_P(PSTR("\n"), false);
363 oled_write_P((mods & MOD_MASK_GUI) ? PSTR("GUI ") : PSTR(" "), false);
364 oled_write_P((mods & MOD_MASK_ALT) ? PSTR("ALT ") : PSTR(" "), false);
365 oled_write_P((mods & MOD_MASK_CTRL) ? PSTR("CTRL ") : PSTR(" "), false);
366 oled_write_P((mods & MOD_MASK_SHIFT) ? PSTR("SHFT ") : PSTR(" "), false);
367 oled_write_P(PSTR("\n"), false);
368
369#define I3MASK MOD_BIT(KC_LGUI)
370#define I3SMASK (MOD_BIT(KC_LGUI) | MOD_BIT(KC_LSFT))
371#define KMASK (MOD_BIT(KC_LCTL) | MOD_BIT(KC_LSFT))
372
373 oled_write_P((mods == I3MASK) ? PSTR("I3 ") : (mods == I3SMASK) ? PSTR("I3-SFT ") : PSTR(" "), false);
374 oled_write_P((mods == KMASK) ? PSTR("KITTY ") : PSTR(" "), false);
375 oled_write_P(PSTR("\n"), false);
376
377 // Host Keyboard LED Status
378 uint8_t led_usb_state = host_keyboard_leds();
379 oled_write_P(IS_LED_ON(led_usb_state, USB_LED_NUM_LOCK) ? PSTR("NUMLCK ") : PSTR(" "), false);
380 oled_write_P(IS_LED_ON(led_usb_state, USB_LED_CAPS_LOCK) ? PSTR("CAPLCK ") : PSTR(" "), false);
381 oled_write_P(IS_LED_ON(led_usb_state, USB_LED_SCROLL_LOCK) ? PSTR("SCRLCK ") : PSTR(" "), false);
382
383}
384
385void oled_task_user(void) {
386 if (is_keyboard_master()) {
387 render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
388 } else {
389 render_logo();
390 }
391}
392#endif
393
394
395#ifdef RAW_ENABLE
396void raw_hid_receive(uint8_t *data, uint8_t length) {
397 // messages from host
398 // add ability to set color
399 raw_hid_send(data, length);
400}
401#endif
diff --git a/keyboards/splitkb/kyria/keymaps/cwebster2/rules.mk b/keyboards/splitkb/kyria/keymaps/cwebster2/rules.mk
new file mode 100644
index 000000000..fe9ca3c2c
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/cwebster2/rules.mk
@@ -0,0 +1,5 @@
1OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays
2RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
3RAW_ENABLE = yes
4WPM_ENABLE = yes
5COMBO_ENABLE = no
diff --git a/keyboards/splitkb/kyria/keymaps/default/config.h b/keyboards/splitkb/kyria/keymaps/default/config.h
new file mode 100644
index 000000000..be87e7ac9
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/default/config.h
@@ -0,0 +1,32 @@
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
17#pragma once
18
19#ifdef RGBLIGHT_ENABLE
20# define RGBLIGHT_ANIMATIONS
21# define RGBLIGHT_HUE_STEP 8
22# define RGBLIGHT_SAT_STEP 8
23# define RGBLIGHT_VAL_STEP 8
24# define RGBLIGHT_LIMIT_VAL 150
25#endif
26
27// Lets you roll mod-tap keys
28#define IGNORE_MOD_TAP_INTERRUPT
29
30// If you are using an Elite C rev3 on the slave side, uncomment the lines below:
31// #define SPLIT_USB_DETECT
32// #define NO_USB_STARTUP_CHECK
diff --git a/keyboards/splitkb/kyria/keymaps/default/keymap.c b/keyboards/splitkb/kyria/keymaps/default/keymap.c
new file mode 100644
index 000000000..db545c6a2
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/default/keymap.c
@@ -0,0 +1,172 @@
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 { _QWERTY = 0, _DVORAK, _COLEMAK_DH, _NAV, _SYM, _FUNCTION, _ADJUST };
19
20// Aliases for readability
21#define QWERTY DF(_QWERTY)
22#define COLEMAK DF(_COLEMAK_DH)
23#define DVORAK DF(_DVORAK)
24
25#define SYM MO(_SYM)
26#define NAV MO(_NAV)
27#define FKEYS MO(_FUNCTION)
28#define ADJUST MO(_ADJUST)
29
30#define CTL_ESC MT(MOD_LCTL, KC_ESC)
31#define CTL_QUOT MT(MOD_RCTL, KC_QUOTE)
32#define CTL_MINS MT(MOD_RCTL, KC_MINUS)
33#define ALT_ENT MT(MOD_LALT, KC_ENT)
34
35// Note: LAlt/Enter (ALT_ENT) is not the same thing as the keyboard shortcut Alt+Enter.
36// The notation `mod/tap` denotes a key that activates the modifier `mod` when held down, and
37// produces the key `tap` when tapped (i.e. pressed and released).
38
39const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
40 /*
41 * Base Layer: QWERTY
42 *
43 * ,-------------------------------------------. ,-------------------------------------------.
44 * | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
45 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
46 * |Ctrl/Esc| A | S | D | F | G | | H | J | K | L | ; : |Ctrl/' "|
47 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
48 * | LShift | Z | X | C | V | B | [ { |CapsLk| |F-keys| ] } | N | M | , < | . > | / ? | RShift |
49 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
50 * |Adjust| LGUI | LAlt/| Space| Nav | | Sym | Space| AltGr| RGUI | Menu |
51 * | | | Enter| | | | | | | | |
52 * `----------------------------------' `----------------------------------'
53 */
54 [_QWERTY] = LAYOUT(KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, CTL_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, CTL_QUOT, 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, ADJUST, KC_LGUI, ALT_ENT, KC_SPC, NAV, SYM, KC_SPC, KC_RALT, KC_RGUI, KC_APP),
55
56 /*
57 * Base Layer: Dvorak
58 *
59 * ,-------------------------------------------. ,-------------------------------------------.
60 * | Tab | ' " | , < | . > | P | Y | | F | G | C | R | L | Bksp |
61 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
62 * |Ctrl/Esc| A | O | E | U | I | | D | H | T | N | S |Ctrl/- _|
63 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
64 * | LShift | ; : | Q | J | K | X | [ { |CapsLk| |F-keys| ] } | B | M | W | V | Z | RShift |
65 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
66 * |Adjust| LGUI | LAlt/| Space| Nav | | Sym | Space| AltGr| RGUI | Menu |
67 * | | | Enter| | | | | | | | |
68 * `----------------------------------' `----------------------------------'
69 */
70 [_DVORAK] = LAYOUT(KC_TAB, KC_QUOTE, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, CTL_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, CTL_MINS, KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_LBRC, KC_CAPS, FKEYS, KC_RBRC, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, ADJUST, KC_LGUI, ALT_ENT, KC_SPC, NAV, SYM, KC_SPC, KC_RALT, KC_RGUI, KC_APP),
71
72 /*
73 * Base Layer: Colemak DH
74 *
75 * ,-------------------------------------------. ,-------------------------------------------.
76 * | Tab | Q | W | F | P | B | | J | L | U | Y | ; : | Bksp |
77 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
78 * |Ctrl/Esc| A | R | S | T | G | | M | N | E | I | O |Ctrl/' "|
79 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
80 * | LShift | Z | X | C | D | V | [ { |CapsLk| |F-keys| ] } | K | H | , < | . > | / ? | RShift |
81 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
82 * |Adjust| LGUI | LAlt/| Space| Nav | | Sym | Space| AltGr| RGUI | Menu |
83 * | | | Enter| | | | | | | | |
84 * `----------------------------------' `----------------------------------'
85 */
86 [_COLEMAK_DH] = LAYOUT(KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, CTL_ESC, KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, CTL_QUOT, KC_LSFT, KC_Z, KC_X, KC_C, KC_D, KC_V, KC_LBRC, KC_CAPS, FKEYS, KC_RBRC, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, ADJUST, KC_LGUI, ALT_ENT, KC_SPC, NAV, SYM, KC_SPC, KC_RALT, KC_RGUI, KC_APP),
87
88 /*
89 * Nav Layer: Media, navigation
90 *
91 * ,-------------------------------------------. ,-------------------------------------------.
92 * | | | | | | | | PgUp | Home | ↑ | End | VolUp| Delete |
93 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
94 * | | GUI | Alt | Ctrl | Shift| | | PgDn | ← | ↓ | → | VolDn| Insert |
95 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
96 * | | | | | | | |ScLck | | | | Pause|M Prev|M Play|M Next|VolMut| PrtSc |
97 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
98 * | | | | | | | | | | | |
99 * | | | | | | | | | | | |
100 * `----------------------------------' `----------------------------------'
101 */
102 [_NAV] = LAYOUT(_______, _______, _______, _______, _______, _______, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_VOLU, KC_DEL, _______, KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_VOLD, KC_INS, _______, _______, _______, _______, _______, _______, _______, KC_SLCK, _______, _______, KC_PAUSE, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_PSCR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
103
104 /*
105 * Sym Layer: Numbers and symbols
106 *
107 * ,-------------------------------------------. ,-------------------------------------------.
108 * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | = |
109 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
110 * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | + |
111 * |--------+------+------+------+------+------+-------------. ,------+-------------+------+------+------+------+--------|
112 * | | | \ | : | ; | - | \ | | [ { | | | | ] } | # ~ | _ | , | . | / | ? |
113 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
114 * | | | | | | | | | | | |
115 * | | | | | | | | | | | |
116 * `----------------------------------' `----------------------------------'
117 */
118 [_SYM] = LAYOUT(KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PLUS, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
119
120 /*
121 * Function Layer: Function keys
122 *
123 * ,-------------------------------------------. ,-------------------------------------------.
124 * | | F9 | F10 | F11 | F12 | | | | | | | | |
125 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
126 * | | F5 | F6 | F7 | F8 | | | | Shift| Ctrl | Alt | GUI | |
127 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
128 * | | F1 | F2 | F3 | F4 | | | | | | | | | | | | |
129 * `--------+------+------+--------------------+------+------| |------+------+------+------+------+----------------------'
130 * | | | | | | | | | | | |
131 * | | | | | | | | | | | |
132 * `----------------------------------' `----------------------------------'
133 */
134 [_FUNCTION] = LAYOUT(_______, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, _______, KC_F5, KC_F6, KC_F7, KC_F8, _______, _______, KC_RSFT, KC_RCTL, KC_LALT, KC_RGUI, _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
135
136 /*
137 * Adjust Layer: Default layer settings, RGB
138 *
139 * ,-------------------------------------------. ,-------------------------------------------.
140 * | | | |QWERTY| | | | | | | | | |
141 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
142 * | | | |Dvorak| | | | TOG | SAI | HUI | VAI | MOD | |
143 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
144 * | | | |Colmak| | | | | | | | | SAD | HUD | VAD | RMOD | |
145 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
146 * | | | | | | | | | | | |
147 * | | | | | | | | | | | |
148 * `----------------------------------' `----------------------------------'
149 */
150 [_ADJUST] = LAYOUT(_______, _______, _______, QWERTY, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, DVORAK, _______, _______, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD, _______, _______, _______, _______, COLEMAK, _______, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_HUD, RGB_VAD, RGB_RMOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
151
152 // /*
153 // * Layer template
154 // *
155 // * ,-------------------------------------------. ,-------------------------------------------.
156 // * | | | | | | | | | | | | | |
157 // * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
158 // * | | | | | | | | | | | | | |
159 // * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
160 // * | | | | | | | | | | | | | | | | | |
161 // * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
162 // * | | | | | | | | | | | |
163 // * | | | | | | | | | | | |
164 // * `----------------------------------' `----------------------------------'
165 // */
166 // [_LAYERINDEX] = LAYOUT(
167 // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
168 // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
169 // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
170 // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
171 // ),
172};
diff --git a/keyboards/splitkb/kyria/keymaps/default/rules.mk b/keyboards/splitkb/kyria/keymaps/default/rules.mk
new file mode 100644
index 000000000..604e15465
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/default/rules.mk
@@ -0,0 +1,3 @@
1OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays
2ENCODER_ENABLE = yes # Enables the use of one or more encoders
3RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
diff --git a/keyboards/splitkb/kyria/keymaps/drashna/config.h b/keyboards/splitkb/kyria/keymaps/drashna/config.h
new file mode 100644
index 000000000..af6f73815
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/drashna/config.h
@@ -0,0 +1,35 @@
1/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.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
17#pragma once
18
19#define EE_HANDS
20
21#ifdef OLED_DRIVER_ENABLE
22# define OLED_DISPLAY_128X64
23#endif
24
25#ifdef RGBLIGHT_ENABLE
26# define RGBLIGHT_SLEEP
27# define RGBLIGHT_LIMIT_VAL 200
28# define RGBLIGHT_HUE_STEP 8
29# define RGBLIGHT_SAT_STEP 8
30# define RGBLIGHT_VAL_STEP 8
31# define RGBLIGHT_SPLIT
32// # define RGBLIGHT_LAYERS
33#endif
34
35#define KEYLOGGER_LENGTH 10
diff --git a/keyboards/splitkb/kyria/keymaps/drashna/keymap.c b/keyboards/splitkb/kyria/keymaps/drashna/keymap.c
new file mode 100644
index 000000000..14287d0ec
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/drashna/keymap.c
@@ -0,0 +1,194 @@
1/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.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
17#include "drashna.h"
18
19/*
20 * The `LAYOUT_kyria_base` macro is a template to allow the use of identical
21 * modifiers for the default layouts (eg QWERTY, Colemak, Dvorak, etc), so
22 * that there is no need to set them up for each layout, and modify all of
23 * them if I want to change them. This helps to keep consistency and ease
24 * of use. K## is a placeholder to pass through the individual keycodes
25 */
26
27// clang-format off
28#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
29#define LAYOUT_kyria_base( \
30 K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
31 K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
32 K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
33 ) \
34 LAYOUT_wrapper( \
35 KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_MINS, \
36 LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(K1B), \
37 OS_LSFT, CTL_T(K21), K22, K23, K24, K25, TG_GAME, MEH(KC_MINS), TG_DBLO, KC_CAPS, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \
38 KC_MUTE, OS_LALT, KC_GRV, KC_SPC, BK_LWER, DL_RAIS, KC_ENT, OS_RGUI, UC(0x03A8), UC(0x2E2E) \
39 )
40/* Re-pass though to allow templates to be used */
41#define LAYOUT_kyria_base_wrapper(...) LAYOUT_kyria_base(__VA_ARGS__)
42
43const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
44
45 [_QWERTY] = LAYOUT_kyria_base_wrapper(
46 _________________QWERTY_L1_________________, _________________QWERTY_R1_________________,
47 _________________QWERTY_L2_________________, _________________QWERTY_R2_________________,
48 _________________QWERTY_L3_________________, _________________QWERTY_R3_________________
49 ),
50
51 [_COLEMAK] = LAYOUT_kyria_base_wrapper(
52 _________________COLEMAK_L1________________, _________________COLEMAK_R1________________,
53 _________________COLEMAK_L2________________, _________________COLEMAK_R2________________,
54 _________________COLEMAK_L3________________, _________________COLEMAK_R3________________
55 ),
56
57 [_DVORAK] = LAYOUT_kyria_base_wrapper(
58 _________________DVORAK_L1_________________, _________________DVORAK_R1_________________,
59 _________________DVORAK_L2_________________, _________________DVORAK_R2_________________,
60 _________________DVORAK_L3_________________, _________________DVORAK_R3_________________
61 ),
62
63 [_WORKMAN] = LAYOUT_kyria_base_wrapper(
64 _________________WORKMAN_L1________________, _________________WORKMAN_R1________________,
65 _________________WORKMAN_L2________________, _________________WORKMAN_R2________________,
66 _________________WORKMAN_L3________________, _________________WORKMAN_R3________________
67 ),
68
69 [_NORMAN] = LAYOUT_kyria_base_wrapper(
70 _________________NORMAN_L1_________________, _________________NORMAN_L1_________________,
71 _________________NORMAN_L2_________________, _________________NORMAN_R2_________________,
72 _________________NORMAN_L3_________________, _________________NORMAN_R3_________________
73 ),
74
75 [_MALTRON] = LAYOUT_kyria_base_wrapper(
76 _________________MALTRON_L1________________, _________________MALTRON_R1________________,
77 _________________MALTRON_L2________________, _________________MALTRON_R2________________,
78 _________________MALTRON_L3________________, _________________MALTRON_R3________________
79 ),
80
81 [_EUCALYN] = LAYOUT_kyria_base_wrapper(
82 _________________EUCALYN_L1________________, _________________EUCALYN_R1________________,
83 _________________EUCALYN_L2________________, _________________EUCALYN_R2________________,
84 _________________EUCALYN_L3________________, _________________EUCALYN_R3________________
85 ),
86
87 [_CARPLAX] = LAYOUT_kyria_base_wrapper(
88 _____________CARPLAX_QFMLWY_L1_____________, _____________CARPLAX_QFMLWY_R1_____________,
89 _____________CARPLAX_QFMLWY_L2_____________, _____________CARPLAX_QFMLWY_R2_____________,
90 _____________CARPLAX_QFMLWY_L3_____________, _____________CARPLAX_QFMLWY_R3_____________
91 ),
92
93 [_GAMEPAD] = LAYOUT_wrapper(
94 KC_ESC, KC_K, KC_Q, KC_W, KC_E, KC_R, _______, _______, _______, _______, _______, _______,
95 KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F, _______, _______, _______, _______, _______, _______,
96 KC_LCTL, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, _______, _______, _______, LALT(KC_PSCR), _______, _______, _______, _______, _______, _______,
97 _______, MAGIC_TOGGLE_NKRO, KC_V, KC_SPC, KC_H, _______, _______, _______, _______, _______
98 ),
99
100 [_DIABLO] = LAYOUT_wrapper(
101 KC_ESC, KC_S, KC_I, KC_F, KC_M, KC_T, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO,
102 KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_G, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
103 KC_LCTL, KC_D3_1, KC_D3_2, KC_D3_3, KC_D3_4, KC_Z, KC_J, KC_L, TG_DBLO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
104 KC_DIABLO_CLEAR, KC_J, KC_NO, SFT_T(KC_SPACE), ALT_T(KC_Q), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
105 ),
106 [_LOWER] = LAYOUT_wrapper(
107 KC_F12, _________________LOWER_L1__________________, _________________LOWER_R1__________________, KC_F11,
108 _______, _________________LOWER_L2__________________, _________________LOWER_R2__________________, KC_PIPE,
109 _______, _________________LOWER_L3__________________, _______, _______, _______, _______, _________________LOWER_R3__________________, _______,
110 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
111 ),
112 [_RAISE] = LAYOUT_wrapper(
113 KC_F12, _________________RAISE_L1__________________, _________________RAISE_R1__________________, KC_F11,
114 _______, _________________RAISE_L2__________________, _________________RAISE_R2__________________, KC_BSLS,
115 _______, _________________RAISE_L3__________________, _______, _______, _______, _______, _________________RAISE_R3__________________, _______,
116 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
117 ),
118 [_ADJUST] = LAYOUT_wrapper(
119 KC_MAKE, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, KC_RESET,
120 VRSN, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, EEP_RST,
121 _______, _________________ADJUST_L3_________________, HPT_TOG, HPT_FBK, MG_NKRO, UC_MOD, _________________ADJUST_R3_________________, TG_MODS,
122 _______, _______, _______, KC_NUKE, _______, _______, _______, _______, _______, _______
123 ),
124// [_LAYERINDEX] = LAYOUT_wrapper(
125// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
126// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
127// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
128// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
129// ),
130};
131// clang-format on
132
133#ifdef OLED_DRIVER_ENABLE
134oled_rotation_t oled_init_keymap(oled_rotation_t rotation) { return OLED_ROTATION_180; }
135#endif
136
137#ifdef ENCODER_ENABLE
138bool encoder_update_user(uint8_t index, bool clockwise) {
139 if (index == 0) {
140 // Volume control
141 if (clockwise) {
142 tap_code(KC_VOLU);
143 } else {
144 tap_code(KC_VOLD);
145 }
146 } else if (index == 1) {
147 // Page up/Page down
148 if (clockwise) {
149 tap_code(KC_PGDN);
150 } else {
151 tap_code(KC_PGUP);
152 }
153 }
154 return true;
155}
156#endif
157
158#ifdef RGBLIGHT_LAYERS
159const rgblight_segment_t PROGMEM shift_layers[] = RGBLIGHT_LAYER_SEGMENTS(
160 { 8, 1, 120, 255, 255},
161 { 18, 1, 120, 255, 255}
162);
163const rgblight_segment_t PROGMEM control_layers[] = RGBLIGHT_LAYER_SEGMENTS(
164 { 6, 1, 0, 255, 255},
165 { 16, 1, 0, 255, 255}
166);
167const rgblight_segment_t PROGMEM alt_layers[] = RGBLIGHT_LAYER_SEGMENTS(
168 { 2, 1, 240, 255, 255},
169 { 17, 1, 250, 255, 255}
170);
171const rgblight_segment_t PROGMEM gui_layers[] = RGBLIGHT_LAYER_SEGMENTS(
172 { 7, 1, 51, 255, 255},
173 { 12, 1, 51, 255, 255}
174);
175
176const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
177 shift_layers,
178 control_layers,
179 alt_layers,
180 gui_layers
181);
182
183void keyboard_post_init_keymap(void) {
184 rgblight_layers = my_rgb_layers;
185}
186
187void matrix_scan_keymap(void) {
188 uint8_t mods = mod_config(get_mods()|get_oneshot_mods());
189 rgblight_set_layer_state(0, mods & MOD_MASK_SHIFT);
190 rgblight_set_layer_state(1, mods & MOD_MASK_CTRL);
191 rgblight_set_layer_state(2, mods & MOD_MASK_ALT);
192 rgblight_set_layer_state(3, mods & MOD_MASK_GUI);
193}
194#endif
diff --git a/keyboards/splitkb/kyria/keymaps/drashna/rules.mk b/keyboards/splitkb/kyria/keymaps/drashna/rules.mk
new file mode 100644
index 000000000..4036f9145
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/drashna/rules.mk
@@ -0,0 +1,15 @@
1OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays
2ENCODER_ENABLE = yes # ENables the use of one or more encoders
3RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
4RGBLIGHT_STARTUP_ANIMATION = no
5
6BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
7MOUSEKEY_ENABLE = no # Mouse keys
8EXTRAKEY_ENABLE = yes # Audio control and System control
9CONSOLE_ENABLE = no # Console for debug
10COMMAND_ENABLE = no # Commands for debug and configuration
11NKRO_ENABLE = yes # USB Nkey Rollover
12UNICODE_ENABLE = yes # Unicode
13BOOTLOADER = atmel-dfu
14
15# TAP_DANCE_ENABLE = yes
diff --git a/keyboards/splitkb/kyria/keymaps/ghidalgo93/config.h b/keyboards/splitkb/kyria/keymaps/ghidalgo93/config.h
new file mode 100644
index 000000000..c46873c8e
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/ghidalgo93/config.h
@@ -0,0 +1,41 @@
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
17#pragma once
18
19#ifdef OLED_DRIVER_ENABLE
20 #define OLED_DISPLAY_128X64
21#endif
22
23#ifdef RGBLIGHT_ENABLE
24 #define RGBLIGHT_ANIMATIONS
25 #define RGBLIGHT_HUE_STEP 8
26 #define RGBLIGHT_SAT_STEP 8
27 #define RGBLIGHT_VAL_STEP 8
28#endif
29
30// encoder resolution from default 4 to 2
31#define ENCODER_RESOLUTION 2
32
33// If you are using an Elite C rev3 on the slave side, uncomment the lines below:
34// #define SPLIT_USB_DETECT
35// #define NO_USB_STARTUP_CHECK
36
37//allows for either side as the master.
38#define EE_HANDS
39
40
41
diff --git a/keyboards/splitkb/kyria/keymaps/ghidalgo93/keymap.c b/keyboards/splitkb/kyria/keymaps/ghidalgo93/keymap.c
new file mode 100644
index 000000000..1adbcc6ee
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/ghidalgo93/keymap.c
@@ -0,0 +1,246 @@
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
18
19enum layers {
20 _QWERTY = 0,
21 _LOWER,
22 _RAISE,
23 _NAV,
24 _ADJUST
25};
26
27const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
28/*
29 * Base Layer: QWERTY
30 *
31 * ,-------------------------------------------. ,-------------------------------------------.
32 * | ESC | Q | W | E | R | T | | Y | U | I | O | P | | \ |
33 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
34 * | Ctrl | A | S | D | F | G | | H | J | K | L | ; : | ' " |
35 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
36 * | LShift | Z | X | C | V | B | | | | | | N | M | , < | . > | / ? | - _ |
37 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
38 * | | GUI | | Tab | Enter| | Bksp | Space| Alt | Home | End |
39 * | | | LCTL | Lower| | | | Raise| | | |
40 * `----------------------------------' `----------------------------------'
41 */
42 [_QWERTY] = LAYOUT(
43 KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_PIPE,
44 KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
45 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, _______, _______, _______, _______, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_MINS,
46 _______, KC_LGUI , KC_LCTL, LT(_LOWER, KC_TAB), LT(_NAV, KC_ENT), KC_BSPC, LT(_RAISE, KC_SPC), KC_RALT, KC_HOME, KC_END
47 ),
48/*
49 * Lower Layer: Number keys, media
50 *
51 * ,-------------------------------------------. ,-------------------------------------------.
52 * | | | | | | | | | 7 | 8 | 9 | | |
53 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
54 * | | | Prev | Play | Next | VolUp| | | 4 | 5 | 6 | | |
55 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
56 * | | | | | Mute | VolDn| | | | | | 0 | 1 | 2 | 3 | | |
57 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
58 * | | | | | | | | | | | |
59 * | | | | | | | | | | | |
60 * `----------------------------------' `----------------------------------'
61 */
62 [_LOWER] = LAYOUT(
63 _______, _______, _______, _______, _______, _______, _______, KC_7 , KC_8 , KC_9 , _______, _______,
64 _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, _______, KC_4 , KC_5 , KC_6 , _______, _______,
65 _______, _______, _______, _______, KC_MUTE, KC_VOLD, _______, _______, _______, _______, KC_0 , KC_1 , KC_2 , KC_3 , _______, _______,
66 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
67 ),
68/*
69 * Raise Layer: Symbols
70 *
71 * ,-------------------------------------------. ,-------------------------------------------.
72 * | | @ | ! | { | } | | | ` | ~ | & | * | | |
73 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
74 * | | # | $ | ( | ) | | | _ | - | = | | | ' " | |
75 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
76 * | | % | ^ | [ | ] | | | | | | | | + | \ | | | |
77 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
78 * | | | | | | | | | | | |
79 * | | | | | | | | | | | |
80 * `----------------------------------' `----------------------------------'
81 */
82 [_RAISE] = LAYOUT(
83 _______, KC_AT , KC_EXLM, KC_LCBR, KC_RCBR, _______, KC_GRV , KC_TILD, KC_AMPR, KC_ASTR, _______, _______,
84 _______, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, _______, KC_UNDS, KC_MINS, KC_EQL , KC_PIPE, KC_QUOT, _______,
85 _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, _______, _______, _______, _______, _______, _______, KC_PLUS, KC_BSLS, _______, _______, _______,
86 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
87 ),
88// /*
89// * Navigation Layer
90// *
91// * ,-------------------------------------------. ,-------------------------------------------.
92// * | | | | | | | | home |pg dn |pg up | end | | |
93// * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
94// * | | | | | | | | left | down | up | right| | |
95// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
96// * | | | | | | | | | | | | | | | | | |
97// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
98// * | | | | | | | | | | | |
99// * | | | | | | | | | | | |
100// * `----------------------------------' `----------------------------------'
101// */
102 [_NAV] = LAYOUT(
103 _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END , _______, _______,
104 _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, _______, _______,
105 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
106 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
107 ),
108/*
109 * Adjust Layer: Function keys, RGB
110 *
111 * ,-------------------------------------------. ,-------------------------------------------.
112 * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | |
113 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
114 * | | | | | | | | | | | F11 | F12 | |
115 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
116 * | | | | | | | | | | | | | | | | | |
117 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
118 * | | | | | | | | | | | |
119 * | | | | | | | | | | | |
120 * `----------------------------------' `----------------------------------'
121 */
122 [_ADJUST] = LAYOUT(
123 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
124 _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_F11, KC_F12, _______,
125 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
126 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
127 ),
128// /*
129// * Layer template
130// *
131// * ,-------------------------------------------. ,-------------------------------------------.
132// * | | | | | | | | | | | | | |
133// * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
134// * | | | | | | | | | | | | | |
135// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
136// * | | | | | | | | | | | | | | | | | |
137// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
138// * | | | | | | | | | | | |
139// * | | | | | | | | | | | |
140// * `----------------------------------' `----------------------------------'
141// */
142// [_LAYERINDEX] = LAYOUT(
143// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
144// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
145// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
146// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
147// ),
148};
149
150layer_state_t layer_state_set_user(layer_state_t state) {
151 return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
152}
153
154
155#ifdef OLED_DRIVER_ENABLE
156oled_rotation_t oled_init_user(oled_rotation_t rotation) {
157 return OLED_ROTATION_180;
158}
159
160static void render_kyria_logo(void) {
161 static const char PROGMEM kyria_logo[] = {
162 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,
163 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,
164 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,
165 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,
166 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,
167 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,
168 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,
169 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
170 };
171 oled_write_raw_P(kyria_logo, sizeof(kyria_logo));
172}
173
174static void render_qmk_logo(void) {
175 static const char PROGMEM qmk_logo[] = {
176 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
177 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
178 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0};
179
180 oled_write_P(qmk_logo, false);
181}
182
183static void render_status(void) {
184 // QMK Logo and version information
185 render_qmk_logo();
186 oled_write_P(PSTR("Kyria rev1.0\n\n"), false);
187
188 // Host Keyboard Layer Status
189 oled_write_P(PSTR("Layer: "), false);
190 switch (get_highest_layer(layer_state)) {
191 case _QWERTY:
192 oled_write_P(PSTR("Default\n"), false);
193 break;
194 case _LOWER:
195 oled_write_P(PSTR("Lower\n"), false);
196 break;
197 case _RAISE:
198 oled_write_P(PSTR("Raise\n"), false);
199 break;
200 case _NAV:
201 oled_write_P(PSTR("Nav\n"), false);
202 break;
203 case _ADJUST:
204 oled_write_P(PSTR("Adjust\n"), false);
205 break;
206 default:
207 oled_write_P(PSTR("Undefined\n"), false);
208 }
209
210 // Host Keyboard LED Status
211 led_t led_state = host_keyboard_led_state();
212 oled_write_P(led_state.num_lock ? PSTR("NUMLCK ") : PSTR(" "), false);
213 oled_write_P(led_state.caps_lock ? PSTR("CAPLCK ") : PSTR(" "), false);
214 oled_write_P(led_state.scroll_lock ? PSTR("SCRLCK ") : PSTR(" "), false);
215}
216
217void oled_task_user(void) {
218 if (is_keyboard_master()) {
219 render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
220 } else {
221 render_kyria_logo();
222 }
223}
224#endif
225
226#ifdef ENCODER_ENABLE
227bool encoder_update_user(uint8_t index, bool clockwise) {
228 if (index == 0) {
229 // Volume control
230 if (clockwise) {
231 tap_code(KC_VOLD);
232 } else {
233 tap_code(KC_VOLU);
234 }
235 }
236 else if (index == 1) {
237 // Page up/Page down
238 if (clockwise) {
239 tap_code(KC_PGDN);
240 } else {
241 tap_code(KC_PGUP);
242 }
243 }
244 return true;
245}
246#endif
diff --git a/keyboards/splitkb/kyria/keymaps/ghidalgo93/rules.mk b/keyboards/splitkb/kyria/keymaps/ghidalgo93/rules.mk
new file mode 100644
index 000000000..449e3d950
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/ghidalgo93/rules.mk
@@ -0,0 +1,4 @@
1OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays
2ENCODER_ENABLE = yes # Enables the use of one or more encoders
3RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
4AUTO_SHIFT_ENABLE = yes # Enable auto shift
diff --git a/keyboards/splitkb/kyria/keymaps/gotham/README.md b/keyboards/splitkb/kyria/keymaps/gotham/README.md
new file mode 100644
index 000000000..1598e95a7
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/gotham/README.md
@@ -0,0 +1,56 @@
1# Gotham's Keymap for [Kyria](https://github.com/splitkb/kyria)
2
3## Keymap
4This is my personal keymap for Kyria with some mods.
5
6More information about the Kyria keyboard can be found [here](https://blog.splitkb.com/blog/introducing-the-kyria)
7
8### Rotary Encoders
9
10Press the encoder on each half to cycle between:
11- Volume
12- Word Nav (Ctrl + Left / Right)
13- Left / Right
14- Up / Down
15- Page Up / Page Down
16
17### OLEDs
18
19Master-side OLED displays dynamic data:
20- Current layer
21- Current mode of each rotary encoder
22- Current mode of thumbstick
23
24Slave-side OLED currently only displays a static content.
25
26### Thumbstick
27
28A PSP 2000 thumbstick is attached to the right half. It will currently only function when the USB cable is connected to the right half. When I figure out how to transfer data between halves using serial link, I will make this work regardless of which side is the master.
29
30#### Thumbstick Configuration
31
32- __THUMBSTICK_ENABLE:__ Enable thumbstick.
33- __THUMBSTICK_PIN_X/Y (mandatory):__ The QMK pins to use for the respective axis. The values are from the [QMK's ADC driver](https://docs.qmk.fm/#/adc_driver). I used F0 and F1, for example.
34- __THUMBSTICK_FLIP_X/Y:__ Mirror the direction of the respective axis. Use to compensate for actual orientation of thumbstick.
35- __THUMBSTICK_DEBUG:__ Print raw and calculated values from analogReadPin to console. Will only work with CONSOLE_ENABLE turned on.
36
37#### Thumbstick Fine-tuning
38
39More tunables are described here. Values like deadzone threshold are hardware-specific. The theoretical range for analog readings is [0, 1023], but emperical readings don't extend the entire range. To find the right values, turn on CONSOLE_ENABLE in rules.mk and THUMBSTICK_DEBUG in config.h to look at the raw values from the pins using hid_listen (or QMK Toolbox).
40
41- __THUMBSTICK_DEAD_ZONE 90:__ Values below this are ignored (deadzone).
42- __THUMBSTICK_FINE_ZONE 180:__ Values below this enable fine movement.
43
44- __THUMBSTICK_MODE <mode>:__ One of THUMBSTICK_MODE_MOUSE, THUMBSTICK_MODE_ARROWS and THUMBSTICK_MODE_SCROLL. This is just the default mode, it can be changed by calling ```void thumbstick_mode_cycle(bool reverse)``` within code.
45
46- __THUMBSTICK_SPEED 127:__ Cursor speed in THUMBSTICK_MODE_MOUSE.
47- __THUMBSTICK_FINE_SPEED 64:__ Fine cursor speed in THUMBSTICK_MODE_MOUSE (kicks in when slightly nudging the thumbstick).
48- __THUMBSTICK_SCROLL_SPEED 1:__ Scrolling speed in THUMBSTICK_MODE_SCROLL.
49
50- __THUMBSTICK_EIGHT_AXIS true:__ 8-axis toggle for ARROW and SCROLL modes. Disable to fall back to 4 axes (think D-pads vs analog stick).
51- __THUMBSTICK_AXIS_SEPARATION 0.5f:__ Float value between 0 and 1, used to discretize the circular range into distinct zones for 8-axis. Imagine the top-right quadrant on a graph, and picture the diagonal. This value indicates the angular "distance" from the diagonal to either axis. Moving from the diagonal to each of the axes, this value changes from 0 to 1. So, a value of 0.5 will "sweep" from the center to half-way towards each axis, creating a zone across the diagonal. Smaller values make narrower diagonal zones, and vice versa.
52
53#### Thanks
54
55- @pyrho and u/\_GEIST\_ for the inspiration and initial reference code.
56- @zvecr and @drashna for code review and more pointers.
diff --git a/keyboards/splitkb/kyria/keymaps/gotham/config.h b/keyboards/splitkb/kyria/keymaps/gotham/config.h
new file mode 100644
index 000000000..1b84d996f
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/gotham/config.h
@@ -0,0 +1,48 @@
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
17#pragma once
18
19#define EE_HANDS
20#define IGNORE_MOD_TAP_INTERRUPT
21
22// Fix for Elite C rev3
23#define SPLIT_USB_DETECT
24// Speed up slave half startup
25#define SPLIT_USB_TIMEOUT 1000
26
27#ifdef OLED_DRIVER_ENABLE
28# define OLED_DISPLAY_128X64
29# define OLED_TIMEOUT 10000
30#endif
31
32#ifdef RGBLIGHT_ENABLE
33# define RGBLIGHT_EFFECT_BREATHING
34# define RGBLIGHT_EFFECT_RAINBOW_MOOD
35# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
36# define RGBLIGHT_EFFECT_KNIGHT
37#endif
38
39#ifdef ENCODER_ENABLE
40# define ENCODER_DIRECTION_FLIP
41# define ENCODER_RESOLUTION 2
42#endif
43
44#ifdef THUMBSTICK_ENABLE
45# define THUMBSTICK_FLIP_X
46# define THUMBSTICK_PIN_X F0
47# define THUMBSTICK_PIN_Y F1
48#endif
diff --git a/keyboards/splitkb/kyria/keymaps/gotham/encoder_utils.c b/keyboards/splitkb/kyria/keymaps/gotham/encoder_utils.c
new file mode 100644
index 000000000..1c2962339
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/gotham/encoder_utils.c
@@ -0,0 +1,94 @@
1#include "encoder_utils.h"
2
3void encoder_utils_init(void) {
4 encoder_left_mode = ENC_MODE_VOLUME;
5 encoder_right_mode = ENC_MODE_LEFT_RIGHT;
6}
7
8void set_encoder_mode(bool left, encoder_mode_t mode) {
9 if (left) {
10 encoder_left_mode = mode;
11 } else {
12 encoder_right_mode = mode;
13 }
14}
15
16encoder_mode_t get_encoder_mode(bool left) {
17 if (left) {
18 return encoder_left_mode;
19 } else {
20 return encoder_right_mode;
21 }
22}
23
24void cycle_encoder_mode(bool left, bool reverse) {
25 encoder_mode_t mode = get_encoder_mode(left);
26 if (reverse) {
27 mode = (mode == 0) ? (_ENC_MODE_LAST - 1) : (mode - 1);
28 } else {
29 mode = (mode == (_ENC_MODE_LAST - 1)) ? 0 : (mode + 1);
30 }
31 set_encoder_mode(left, mode);
32}
33
34void encoder_action_volume(uint8_t clockwise) {
35 if (clockwise) {
36 tap_code(KC_VOLU);
37 } else {
38 tap_code(KC_VOLD);
39 }
40}
41
42void encoder_action_word_nav(uint8_t clockwise) {
43 if (clockwise) {
44 tap_code16(C(KC_RIGHT));
45 } else {
46 tap_code16(C(KC_LEFT));
47 }
48}
49
50void encoder_action_left_right(uint8_t clockwise) {
51 if (clockwise) {
52 tap_code(KC_RIGHT);
53 } else {
54 tap_code(KC_LEFT);
55 }
56}
57
58void encoder_action_up_down(uint8_t clockwise) {
59 if (clockwise) {
60 tap_code(KC_UP);
61 } else {
62 tap_code(KC_DOWN);
63 }
64}
65
66void encoder_action_paging(uint8_t clockwise) {
67 if (clockwise) {
68 tap_code(KC_PGUP);
69 } else {
70 tap_code(KC_PGDN);
71 }
72}
73
74void encoder_action(encoder_mode_t mode, uint8_t clockwise) {
75 switch (mode) {
76 case ENC_MODE_VOLUME:
77 encoder_action_volume(clockwise);
78 break;
79 case ENC_MODE_WORD_NAV:
80 encoder_action_word_nav(clockwise);
81 break;
82 case ENC_MODE_LEFT_RIGHT:
83 encoder_action_left_right(clockwise);
84 break;
85 case ENC_MODE_UP_DOWN:
86 encoder_action_up_down(clockwise);
87 break;
88 case ENC_MODE_PAGING:
89 encoder_action_paging(clockwise);
90 break;
91 default:
92 encoder_action_volume(clockwise);
93 }
94}
diff --git a/keyboards/splitkb/kyria/keymaps/gotham/encoder_utils.h b/keyboards/splitkb/kyria/keymaps/gotham/encoder_utils.h
new file mode 100644
index 000000000..60db6c6bd
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/gotham/encoder_utils.h
@@ -0,0 +1,37 @@
1#pragma once
2
3#include <stdbool.h>
4
5#include "quantum.h"
6
7typedef enum {
8 ENC_MODE_VOLUME = 0,
9 ENC_MODE_WORD_NAV,
10 ENC_MODE_LEFT_RIGHT,
11 ENC_MODE_UP_DOWN,
12 ENC_MODE_PAGING,
13 _ENC_MODE_LAST // Do not use, except for looping through enum values
14} encoder_mode_t;
15
16encoder_mode_t encoder_left_mode;
17encoder_mode_t encoder_right_mode;
18
19void encoder_utils_init(void);
20
21void set_encoder_mode(bool left, encoder_mode_t mode);
22
23encoder_mode_t get_encoder_mode(bool left);
24
25void cycle_encoder_mode(bool left, bool reverse);
26
27void encoder_action_volume(uint8_t clockwise);
28
29void encoder_action_word_nav(uint8_t clockwise);
30
31void encoder_action_left_right(uint8_t clockwise);
32
33void encoder_action_up_down(uint8_t clockwise);
34
35void encoder_action_paging(uint8_t clockwise);
36
37void encoder_action(encoder_mode_t mode, uint8_t clockwise);
diff --git a/keyboards/splitkb/kyria/keymaps/gotham/keycodes.h b/keyboards/splitkb/kyria/keymaps/gotham/keycodes.h
new file mode 100644
index 000000000..0730d4925
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/gotham/keycodes.h
@@ -0,0 +1,16 @@
1#pragma once
2
3#include "quantum.h"
4
5enum layers { _QWERTY = 0, _LOWER, _RAISE, _ADJUST };
6
7enum custom_keycodes {
8 ENC_MODE_L = SAFE_RANGE,
9 ENC_MODE_R,
10 TMB_MODE,
11};
12
13#define ESC_RAISE LT(_RAISE, KC_ESC)
14#define BSLS_RAISE LT(_RAISE, KC_BSLS)
15#define SFT_QUOT MT(MOD_RSFT, KC_QUOT)
16#define CTL_MINS MT(MOD_RCTL, KC_MINS)
diff --git a/keyboards/splitkb/kyria/keymaps/gotham/keymap.c b/keyboards/splitkb/kyria/keymaps/gotham/keymap.c
new file mode 100644
index 000000000..a725e61fe
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/gotham/keymap.c
@@ -0,0 +1,127 @@
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
17#include QMK_KEYBOARD_H
18
19#include "keycodes.h"
20
21#ifdef ENCODER_ENABLE
22# include "encoder_utils.h"
23#endif
24
25#ifdef OLED_DRIVER_ENABLE
26# include "oled_utils.h"
27#endif
28
29#ifdef THUMBSTICK_ENABLE
30# include "thumbstick.h"
31#endif
32
33// clang-format off
34const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
35/*
36 * Base Layer: QWERTY
37*/
38 [_QWERTY] = LAYOUT(
39 ESC_RAISE, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, BSLS_RAISE,
40 KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, SFT_QUOT,
41 KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LGUI, KC_NO, TMB_MODE, KC_NO, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, CTL_MINS,
42 ENC_MODE_L, KC_LALT, LT(_LOWER, KC_SPC), LT(_RAISE, KC_TAB), KC_LSFT, KC_EQL, LT(_RAISE, KC_ENT), LT(_LOWER, KC_BSPC), KC_DEL, ENC_MODE_R
43 ),
44/*
45 * Lower Layer: Symbols, Navigation
46 */
47 [_LOWER] = LAYOUT(
48 _______, KC_HASH, KC_DLR, KC_LCBR, KC_RCBR, KC_PIPE, _______, _______, _______, _______, _______, KC_PIPE,
49 _______, KC_EXLM, KC_AT, KC_LPRN, KC_RPRN, KC_GRV, KC_PGUP, KC_LEFT, KC_UP, KC_RGHT, _______, KC_QUOT,
50 _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, _______, _______, _______, _______, KC_PGDN, KC_HOME, KC_DOWN, KC_END, _______, KC_MINS,
51 _______, _______, _______, KC_SCLN, KC_EQL, KC_EQL, KC_SCLN, _______, _______, _______
52 ),
53/*
54 * Raise Layer: Number keys, media, more symbols
55 */
56 [_RAISE] = LAYOUT(
57 _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
58 _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, KC_MINS, KC_PLUS, KC_ASTR, KC_SLSH, KC_PERC, _______,
59 _______, _______, _______, _______, KC_MUTE, KC_VOLD, _______, _______, _______, _______, KC_AMPR, KC_PIPE, KC_COMM, KC_DOT, KC_SLSH, _______,
60 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
61 ),
62/*
63 * Adjust Layer: Function keys, RGB
64 */
65 [_ADJUST] = LAYOUT(
66 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
67 _______, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD, _______, _______, _______, KC_F11, KC_F12, _______,
68 _______, _______, RGB_SAD, RGB_HUD, RGB_VAD, RGB_RMOD,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
69 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
70 ),
71};
72// clang-format on
73
74void matrix_init_user(void) {
75#ifdef ENCODER_ENABLE
76 encoder_utils_init();
77#endif
78}
79
80layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); }
81
82bool process_record_user(uint16_t keycode, keyrecord_t *record) {
83 switch (keycode) {
84#ifdef ENCODER_ENABLE
85 case ENC_MODE_L:
86 if (record->event.pressed) {
87 cycle_encoder_mode(true, false);
88 }
89 break;
90 case ENC_MODE_R:
91 if (record->event.pressed) {
92 cycle_encoder_mode(false, false);
93 }
94 break;
95#endif
96#ifdef THUMBSTICK_ENABLE
97 case TMB_MODE:
98 if (record->event.pressed) {
99 thumbstick_mode_cycle(false);
100 }
101#endif
102 }
103 return true;
104}
105
106#ifdef OLED_DRIVER_ENABLE
107oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; }
108
109void oled_task_user(void) { render_status(); }
110#endif
111
112#ifdef ENCODER_ENABLE
113bool encoder_update_user(uint8_t index, bool clockwise) {
114 if (index == 0) {
115 encoder_action(get_encoder_mode(true), clockwise);
116# ifdef OLED_DRIVER_ENABLE
117 oled_on();
118# endif
119 } else if (index == 1) {
120 encoder_action(get_encoder_mode(false), clockwise);
121# ifdef OLED_DRIVER_ENABLE
122 oled_on();
123# endif
124 }
125 return true;
126}
127#endif
diff --git a/keyboards/splitkb/kyria/keymaps/gotham/oled_utils.c b/keyboards/splitkb/kyria/keymaps/gotham/oled_utils.c
new file mode 100644
index 000000000..9d76c9749
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/gotham/oled_utils.c
@@ -0,0 +1,103 @@
1#include "oled_utils.h"
2
3 void render_qmk_logo(void) {
4 static const char PROGMEM qmk_logo[] = {
5 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94,
6 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4,
7 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00
8 };
9
10 oled_write_P(qmk_logo, false);
11 }
12
13void render_layer(void) {
14 oled_write_P(PSTR("\nLayer: "), false);
15 switch (get_highest_layer(layer_state)) {
16 case _QWERTY:
17 oled_write_P(PSTR("Default\n"), false);
18 break;
19 case _LOWER:
20 oled_write_P(PSTR("Lower\n"), false);
21 break;
22 case _RAISE:
23 oled_write_P(PSTR("Raise\n"), false);
24 break;
25 case _ADJUST:
26 oled_write_P(PSTR("Adjust\n"), false);
27 break;
28 default:
29 oled_write_P(PSTR("???\n"), false);
30 }
31}
32
33#ifdef ENCODER_ENABLE
34void render_encoder(encoder_mode_t mode) {
35 switch (mode) {
36 case ENC_MODE_VOLUME:
37 oled_write_P(PSTR("Volume\n"), false);
38 break;
39 case ENC_MODE_WORD_NAV:
40 oled_write_P(PSTR("Word Nav\n"), false);
41 break;
42 case ENC_MODE_LEFT_RIGHT:
43 oled_write_P(PSTR("Left / Right\n"), false);
44 break;
45 case ENC_MODE_UP_DOWN:
46 oled_write_P(PSTR("Up / Down\n"), false);
47 break;
48 case ENC_MODE_PAGING:
49 oled_write_P(PSTR("PgUp / PgDwn\n"), false);
50 break;
51 default:
52 oled_write_P(PSTR("???\n"), false);
53 }
54}
55#endif
56
57#ifdef THUMBSTICK_ENABLE
58void render_thumbstick(thumbstick_mode_t mode) {
59 switch (mode) {
60 case THUMBSTICK_MODE_MOUSE:
61 oled_write_P(PSTR("Mouse"), false);
62 break;
63 case THUMBSTICK_MODE_ARROWS:
64 oled_write_P(PSTR("Arrows"), false);
65 break;
66 case THUMBSTICK_MODE_SCROLL:
67 oled_write_P(PSTR("Scroll"), false);
68 break;
69 default:
70 oled_write_P(PSTR("???\n"), false);
71 }
72}
73#endif
74
75void render_status(void) {
76 if (is_keyboard_master()) {
77 // Host Keyboard Layer Status
78 render_layer();
79#ifdef ENCODER_ENABLE
80 // Encoder state
81 oled_write_P(PSTR("L-Enc: "), false);
82 render_encoder(encoder_left_mode);
83 oled_write_P(PSTR("R-Enc: "), false);
84 render_encoder(encoder_right_mode);
85#endif
86#ifdef THUMBSTICK_ENABLE
87 if (!isLeftHand) {
88 // Thumbstick state
89 oled_write_P(PSTR("Joystick: "), false);
90 render_thumbstick(thumbstick_state.config.mode);
91 }
92#endif
93 // Host Keyboard LED Status
94 led_t led_state = host_keyboard_led_state();
95 oled_write_P(led_state.num_lock ? PSTR("NUMLCK ") : PSTR(" "), false);
96 oled_write_P(led_state.caps_lock ? PSTR("CAPLCK ") : PSTR(" "), false);
97 oled_write_P(led_state.scroll_lock ? PSTR("SCRLCK ") : PSTR(" "), false);
98 } else {
99 // QMK Logo and version information
100 render_qmk_logo();
101 oled_write_P(PSTR("\n Kyria v1.0\n"), false);
102 }
103}
diff --git a/keyboards/splitkb/kyria/keymaps/gotham/oled_utils.h b/keyboards/splitkb/kyria/keymaps/gotham/oled_utils.h
new file mode 100644
index 000000000..7e3bf44c8
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/gotham/oled_utils.h
@@ -0,0 +1,25 @@
1#pragma once
2
3#include "keycodes.h"
4
5#ifdef ENCODER_ENABLE
6# include "encoder_utils.h"
7#endif
8
9#ifdef THUMBSTICK_ENABLE
10# include "thumbstick.h"
11#endif
12
13void render_kyria_logo(void);
14
15void render_layer(void);
16
17#ifdef ENCODER_ENABLE
18void render_encoder(encoder_mode_t mode);
19#endif
20
21#ifdef THUMBSTICK_ENABLE
22void render_thumbstick(thumbstick_mode_t mode);
23#endif
24
25void render_status(void);
diff --git a/keyboards/splitkb/kyria/keymaps/gotham/rules.mk b/keyboards/splitkb/kyria/keymaps/gotham/rules.mk
new file mode 100644
index 000000000..0bd8badb4
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/gotham/rules.mk
@@ -0,0 +1,21 @@
1CONSOLE_ENABLE = yes # Console for debug
2ENCODER_ENABLE = yes # ENables the use of one or more encoders
3RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
4MOUSEKEY_ENABLE = no # Mouse keys
5OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays
6THUMBSTICK_ENABLE = yes # Enables analog thumbstick code
7
8ifeq ($(strip $(ENCODER_ENABLE)), yes)
9 SRC += encoder_utils.c
10endif
11
12ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes)
13 SRC += oled_utils.c
14endif
15
16ifeq ($(strip $(THUMBSTICK_ENABLE)), yes)
17 POINTING_DEVICE_ENABLE = yes
18 OPT_DEFS += -DTHUMBSTICK_ENABLE
19 SRC += analog.c
20 SRC += thumbstick.c
21endif
diff --git a/keyboards/splitkb/kyria/keymaps/gotham/thumbstick.c b/keyboards/splitkb/kyria/keymaps/gotham/thumbstick.c
new file mode 100644
index 000000000..ec08fb07d
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/gotham/thumbstick.c
@@ -0,0 +1,195 @@
1#include "thumbstick.h"
2
3void thumbstick_init(void) {
4 thumbstickTimer = 0;
5 thumbstickScrollTimer = 0;
6
7 thumbstick_state.config.mode = THUMBSTICK_MODE_MOUSE;
8 thumbstick_state.config.deadZone = THUMBSTICK_DEAD_ZONE;
9 thumbstick_state.config.fineZone = THUMBSTICK_FINE_ZONE;
10 thumbstick_state.config.speed = THUMBSTICK_SPEED;
11 thumbstick_state.config.fineSpeed = THUMBSTICK_FINE_SPEED;
12 thumbstick_state.config.axisSeparation = THUMBSTICK_AXIS_SEPARATION;
13 thumbstick_state.config.eightAxis = THUMBSTICK_EIGHT_AXIS;
14
15#if defined THUMBSTICK_DEBUG
16 rawX = 0;
17 rawY = 0;
18 distX = 0;
19 distY = 0;
20 thumbstickLogTimer = 0;
21#endif
22}
23
24// Axis-level wrapper to read raw value, do logging and calculate speed
25int16_t thumbstick_get_component(uint8_t pin) {
26 uint16_t analogValue = analogReadPin(pin);
27 // Compute direction
28 bool directionIsPositive = (analogValue > THUMBSTICK_RANGE_CENTER);
29 // Compute distance from the center
30 uint16_t distance = directionIsPositive ? (analogValue - THUMBSTICK_RANGE_CENTER) : (THUMBSTICK_RANGE_CENTER - analogValue);
31#if defined THUMBSTICK_DEBUG
32 if (pin == THUMBSTICK_PIN_X) {
33 rawX = analogValue;
34 distX = distance;
35 } else {
36 rawY = analogValue;
37 distY = distance;
38 }
39#endif
40 // Compute component (range of [0 to 1023])
41 return directionIsPositive ? distance : -(int16_t)distance;
42}
43
44void thumbstick_mode_set(thumbstick_mode_t mode) { thumbstick_state.config.mode = mode; }
45
46thumbstick_mode_t thumbstick_mode_get(void) { return thumbstick_state.config.mode; }
47
48void thumbstick_mode_cycle(bool reverse) {
49 thumbstick_mode_t mode = thumbstick_mode_get();
50 if (reverse) {
51 mode = (mode == 0) ? (_THUMBSTICK_MODE_LAST - 1) : (mode - 1);
52 } else {
53 mode = (mode == (_THUMBSTICK_MODE_LAST - 1)) ? 0 : (mode + 1);
54 }
55 thumbstick_mode_set(mode);
56}
57
58// Get mouse speed
59int16_t thumbstick_get_mouse_speed(int16_t component) {
60 int16_t maxSpeed;
61 uint16_t distance = abs(component);
62 if (distance > THUMBSTICK_FINE_ZONE) {
63 maxSpeed = THUMBSTICK_SPEED;
64 } else if (distance > THUMBSTICK_DEAD_ZONE) {
65 maxSpeed = THUMBSTICK_FINE_SPEED;
66 } else {
67 return 0;
68 }
69 return (float)maxSpeed * component / THUMBSTICK_RANGE_CENTER;
70}
71
72// Fix direction within one of 8 axes (or 4 if 8-axis is disabled)
73thumbstick_direction_t thumbstick_get_discretized_direction(thumbstick_vector_t vector, float axisSeparation, bool eightAxis) {
74 thumbstick_direction_t direction;
75 uint16_t absX = abs(vector.x);
76 uint16_t absY = abs(vector.y);
77 uint16_t maxComponent = (absX > absY) ? absX : absY;
78 bool insideDeadZone = (maxComponent <= THUMBSTICK_DEAD_ZONE);
79 bool outsideDiagonalZone = ((abs(absX - absY) / (float)maxComponent) >= axisSeparation);
80 if (insideDeadZone) {
81 direction.up = direction.down = direction.left = direction.right = false;
82 } else {
83 direction.up = (vector.y < 0);
84 direction.down = (vector.y > 0);
85 direction.left = (vector.x < 0);
86 direction.right = (vector.x > 0);
87 // Let only the dominant direction remain under the right conditions
88 if (outsideDiagonalZone || !eightAxis) {
89 if (absX > absY) {
90 direction.up = direction.down = false;
91 } else {
92 direction.left = direction.right = false;
93 }
94 }
95 }
96 return direction;
97}
98
99thumbstick_direction_t scrollDirection; // Declaring global to save stack space
100void thumbstick_process(void) {
101 if (timer_elapsed(thumbstickTimer) > THUMBSTICK_TIMEOUT) {
102 thumbstickTimer = timer_read();
103#ifndef THUMBSTICK_FLIP_X
104 thumbstick_state.vector.x = thumbstick_get_component(THUMBSTICK_PIN_X);
105#else
106 thumbstick_state.vector.x = -thumbstick_get_component(THUMBSTICK_PIN_X);
107#endif
108#ifndef THUMBSTICK_FLIP_Y
109 thumbstick_state.vector.y = thumbstick_get_component(THUMBSTICK_PIN_Y);
110#else
111 thumbstick_state.vector.y = -thumbstick_get_component(THUMBSTICK_PIN_Y);
112#endif
113 switch (thumbstick_state.config.mode) {
114 case THUMBSTICK_MODE_MOUSE:
115 thumbstick_state.report.x = thumbstick_get_mouse_speed(thumbstick_state.vector.x);
116 thumbstick_state.report.y = thumbstick_get_mouse_speed(thumbstick_state.vector.y);
117 break;
118 case THUMBSTICK_MODE_ARROWS:
119 thumbstick_state.direction = thumbstick_get_discretized_direction(thumbstick_state.vector, thumbstick_state.config.axisSeparation, thumbstick_state.config.eightAxis);
120 break;
121 case THUMBSTICK_MODE_SCROLL:
122 if (timer_elapsed(thumbstickScrollTimer) > THUMBSTICK_SCROLL_TIMEOUT) {
123 thumbstickScrollTimer = timer_read();
124 scrollDirection = thumbstick_get_discretized_direction(thumbstick_state.vector, thumbstick_state.config.axisSeparation, false);
125 thumbstick_state.report.v = (scrollDirection.up || scrollDirection.down) ? (scrollDirection.up ? THUMBSTICK_SCROLL_SPEED : -THUMBSTICK_SCROLL_SPEED) : 0;
126 thumbstick_state.report.h = (scrollDirection.left || scrollDirection.right) ? (scrollDirection.left ? -THUMBSTICK_SCROLL_SPEED : THUMBSTICK_SCROLL_SPEED) : 0;
127 } else {
128 thumbstick_state.report.v = thumbstick_state.report.h = 0;
129 }
130 break;
131 default:
132 break;
133 }
134 }
135}
136
137void update_keycode_status(uint16_t keycode, bool last, bool current) {
138 if (last != current) {
139 if (current) {
140 register_code16(keycode);
141 } else {
142 unregister_code16(keycode);
143 }
144 }
145}
146
147void pointing_device_init(void) { thumbstick_init(); }
148
149void pointing_device_task(void) {
150 report_mouse_t report = pointing_device_get_report();
151
152 if (!isLeftHand) {
153 thumbstick_process();
154 switch (thumbstick_state.config.mode) {
155 case THUMBSTICK_MODE_MOUSE:
156 report.x = thumbstick_state.report.x;
157 report.y = thumbstick_state.report.y;
158#ifdef THUMBSTICK_DEBUG
159 if (timer_elapsed(thumbstickLogTimer) > 100) {
160 thumbstickLogTimer = timer_read();
161 uprintf("Raw (%d, %d); Dist (%u, %u); Vec (%d, %d);\n", rawX, rawY, distX, distY, thumbstick_state.vector.x, thumbstick_state.vector.y);
162 }
163#endif
164 break;
165 case THUMBSTICK_MODE_ARROWS:
166 update_keycode_status(KC_UP, thumbstick_state.lastDirection.up, thumbstick_state.direction.up);
167 update_keycode_status(KC_DOWN, thumbstick_state.lastDirection.down, thumbstick_state.direction.down);
168 update_keycode_status(KC_LEFT, thumbstick_state.lastDirection.left, thumbstick_state.direction.left);
169 update_keycode_status(KC_RIGHT, thumbstick_state.lastDirection.right, thumbstick_state.direction.right);
170 thumbstick_state.lastDirection = thumbstick_state.direction;
171#ifdef THUMBSTICK_DEBUG
172 if (timer_elapsed(thumbstickLogTimer) > 100) {
173 thumbstickLogTimer = timer_read();
174 uprintf("Up %d; Down %d; Left: %d; Right %d; Vec (%d, %d);\n", direction.up, direction.down, direction.left, direction.right, thumbstick_state.vector.x, thumbstick_state.vector.y);
175 }
176#endif
177 break;
178 case THUMBSTICK_MODE_SCROLL:
179 report.v = thumbstick_state.report.v;
180 report.h = thumbstick_state.report.h;
181#ifdef THUMBSTICK_DEBUG
182 if (timer_elapsed(thumbstickLogTimer) > 100) {
183 thumbstickLogTimer = timer_read();
184 uprintf("Scroll (%d, %d)\n", report.h, report.v);
185 }
186#endif
187 break;
188 default:
189 break;
190 }
191 }
192
193 pointing_device_set_report(report);
194 pointing_device_send();
195}
diff --git a/keyboards/splitkb/kyria/keymaps/gotham/thumbstick.h b/keyboards/splitkb/kyria/keymaps/gotham/thumbstick.h
new file mode 100644
index 000000000..aff939c74
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/gotham/thumbstick.h
@@ -0,0 +1,98 @@
1#pragma once
2
3typedef enum {
4 THUMBSTICK_MODE_MOUSE = 0,
5 THUMBSTICK_MODE_ARROWS,
6 THUMBSTICK_MODE_SCROLL,
7 _THUMBSTICK_MODE_LAST // Do not use, except for looping through enum values
8} thumbstick_mode_t;
9
10// Parameters
11#define THUMBSTICK_DEAD_ZONE 90 // Values below this are ignored (deadzone)
12#define THUMBSTICK_FINE_ZONE 180 // Values below this enable fine movement
13
14#define THUMBSTICK_MODE THUMBSTICK_MODE_MOUSE
15#define THUMBSTICK_SPEED 256
16#define THUMBSTICK_FINE_SPEED 96
17#define THUMBSTICK_SCROLL_SPEED 1
18
19#define THUMBSTICK_EIGHT_AXIS true
20#define THUMBSTICK_AXIS_SEPARATION 0.5f
21
22// Implicit and derived constants
23#define THUMBSTICK_TIMEOUT 10 // Mouse report throttling time in ms
24#define THUMBSTICK_SCROLL_TIMEOUT 200 // Mouse scroll throttling time in ms
25#define THUMBSTICK_RANGE_START 0
26#define THUMBSTICK_RANGE_STOP 1023
27#define THUMBSTICK_RANGE_CENTER (THUMBSTICK_RANGE_STOP - THUMBSTICK_RANGE_START + 1) / 2
28#define THUMBSTICK_RANGE_MOVEMENT (THUMBSTICK_RANGE_CENTER - THUMBSTICK_DEAD_ZONE)
29
30#include "timer.h"
31#include "analog.h"
32#include "split_util.h"
33#include "pointing_device.h"
34
35#if defined THUMBSTICK_DEBUG
36# include "print.h"
37uint16_t rawX;
38uint16_t rawY;
39uint16_t distX;
40uint16_t distY;
41uint16_t thumbstickLogTimer;
42#endif
43
44typedef struct {
45 thumbstick_mode_t mode;
46 uint16_t deadZone;
47 uint16_t fineZone;
48 uint16_t speed;
49 uint16_t fineSpeed;
50 float axisSeparation;
51 bool eightAxis;
52} thumbstick_config_t;
53
54typedef struct {
55 int16_t x;
56 int16_t y;
57} thumbstick_vector_t;
58
59typedef struct {
60 bool up;
61 bool right;
62 bool down;
63 bool left;
64} thumbstick_direction_t;
65
66typedef struct {
67 thumbstick_config_t config;
68 thumbstick_vector_t vector;
69 thumbstick_direction_t direction;
70 thumbstick_direction_t lastDirection;
71 report_mouse_t report;
72} thumbstick_state_t;
73
74uint16_t thumbstickTimer;
75uint16_t thumbstickScrollTimer;
76
77thumbstick_state_t thumbstick_state;
78
79void thumbstick_mode_set(thumbstick_mode_t mode);
80
81thumbstick_mode_t thumbstick_mode_get(void);
82
83void thumbstick_mode_cycle(bool reverse);
84
85void thumbstick_init(void);
86
87// Axis-level wrapper to read raw value, do logging and calculate speed
88int16_t thumbstick_get_component(uint8_t pin);
89
90// Get mouse speed
91int16_t thumbstick_get_mouse_speed(int16_t component);
92
93// Fix direction within one of 8 axes (or 4 if 8-axis is disabled)
94thumbstick_direction_t thumbstick_get_discretized_direction(thumbstick_vector_t vector, float axisSeparation, bool eightAxis);
95
96void thumbstick_process(void);
97
98void update_keycode_status(uint16_t keycode, bool last, bool current);
diff --git a/keyboards/splitkb/kyria/keymaps/j-inc/config.h b/keyboards/splitkb/kyria/keymaps/j-inc/config.h
new file mode 100644
index 000000000..833fbe4bd
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/j-inc/config.h
@@ -0,0 +1,45 @@
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
17#pragma once
18
19#ifdef OLED_DRIVER_ENABLE
20 #define OLED_DISPLAY_128X64
21 #define OLED_TIMEOUT 300000
22#endif
23
24// If you are using an Elite C rev3 on the slave side, uncomment the lines below:
25#define SPLIT_USB_DETECT
26#define NO_USB_STARTUP_CHECK
27#define SPLIT_USB_TIMEOUT 1000
28
29#define MASTER_RIGHT
30#define ENCODER_DIRECTION_FLIP
31
32
33#define NO_ACTION_MACRO
34#define NO_ACTION_FUNCTION
35#define NO_ACTION_ONESHOT
36#define OLED_FONT_END 127
37
38
39#ifdef RGBLIGHT_ENABLE
40 #define RGBLIGHT_LED_MAP {0,1,2,9,8,7,4,3,5,6,19,18,17,10,11,12,15,16,14,13} // Orients Kyria LEDs to a circle around both halves.
41 //#define RBGLIGHT_LED_MAP {9,8,6,7,5,3,2,4,1,0,10,12,13,11,14,16,17,15,18,19} // Orients Kyria LEDs for a left half-right half columnar progression.
42 #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
43 //#define RGBLIGHT_EFFECT_STATIC_GRADIENT
44 #define RGBLIGHT_SLEEP
45#endif
diff --git a/keyboards/splitkb/kyria/keymaps/j-inc/keymap.c b/keyboards/splitkb/kyria/keymaps/j-inc/keymap.c
new file mode 100644
index 000000000..56eac4ddf
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/j-inc/keymap.c
@@ -0,0 +1,376 @@
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#include <stdio.h>
18bool is_alt_tab_active = false;
19uint16_t alt_tab_timer = 0;
20
21char wpm_str[10];
22
23enum layers {
24 _QWERTY,
25 _2WERTY, //pronounced "twerty," obviously
26 _LOWER,
27 _RAISE,
28 _ADJUST,
29};
30
31const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
32/*
33 * Base Layer: QWERTY
34 *
35 * ,-------------------------------------------. ,-------------------------------------------.
36 * |RAIS/ESC| Q | W | E | R | T | | Y | U | I | O | P | BKSP |
37 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
38 * |Tab | A | S | D | F | G | | H | J | K | L | ; : | ' " |
39 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
40 * | CTRL | Z | X | C | V | B |Enter |Ctrl | |Ctrl |(2u) | N | M | , < | . > | / ? | - _ |
41 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
42 * | TG(1)| Alt | Win | Shift| Back | | Enter| Space| Win | Alt |TG(3) |
43 * | | | | Lower| space| | Lower| Raise| | | |
44 * `----------------------------------' `----------------------------------'
45 */
46 [_QWERTY] = LAYOUT(
47 KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
48 KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
49 KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_ENT, KC_LCTL, KC_RCTL, _______, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_MINS,
50 TG(1), KC_LALT, KC_LGUI, KC_LSFT, KC_BSPC, LT(3, KC_ENT), LT(2, KC_SPC), KC_RGUI, KC_RALT, TG(2)
51 ),
52/*
53 * This layer exists to change encoder functions.
54 *
55 * ,-------------------------------------------. ,-------------------------------------------.
56 * | | | | | | | | | | | | | |
57 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
58 * | | | | | | | | | | | | | |
59 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
60 * | | | | | | | | | | | | | | | | | |
61 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
62 * | | | | | | | | | | | |
63 * | | | | | | | | | | | |
64 * `----------------------------------' `----------------------------------'
65 */
66 [_2WERTY] = LAYOUT(
67 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
68 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
69 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
70 KC_TRNS, _______, _______, _______, _______, _______, _______, _______, _______, _______
71 ),
72/*
73 * Lower Layer: numpad and arrow
74 *
75 * ,-------------------------------------------. ,-------------------------------------------.
76 * | | | 7 | 8 | 9 | 0 | | PGUP | | UP | | | Del
77 |
78 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
79 * | CAPS | | 4 | 5 | 6 | Tab | | PGDN | Left | Down | Right| | |
80 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
81 * | | | 1 | 2 | 3 | Ent | | | | | | | LBRC | RBRC | | |\ | += |
82 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
83 * | | Tab | Ent | | | | | | | | |
84 * | | | | | | | | | | | |
85 * `----------------------------------' `----------------------------------'
86 */
87 [_LOWER] = LAYOUT(
88 _______, _______, KC_7, KC_8, KC_9, KC_0, KC_PGUP, _______, KC_UP, _______, _______, KC_DEL,
89 KC_CAPS, _______, KC_4, KC_5, KC_6, KC_TAB, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______,
90 KC_LSFT, KC_0, KC_1, KC_2, KC_3, KC_ENT, KC_TRNS, KC_TRNS, MO(4), _______, KC_LBRC, KC_RBRC, _______, _______, KC_BSLS, KC_EQL,
91 KC_TRNS, KC_TAB, KC_ENT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, _______, _______, _______
92 ),
93/*
94 * Raise Layer: F keys and media
95 *
96 * ,-------------------------------------------. ,-------------------------------------------.
97 * | | | | | | | | F9 | F10 | F11 | F12 | | |
98 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
99 * | | | Prev | Play | Next | VolUp| | F5 | F6 | F7 | F8 | | |
100 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
101 * | | | | | Mute | VolDn| | | | | | F1 | F2 | F3 | F4 | | |
102 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
103 * | | | | | | | | | | | |
104 * | | | | | | | | | | | |
105 * `----------------------------------' `----------------------------------'
106 */
107 [_RAISE] = LAYOUT(
108 _______, _______, _______, _______, _______, _______, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
109 _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, KC_F5, KC_F6, KC_F7, KC_F8, _______, _______,
110 _______, _______, _______, _______, KC_MUTE, KC_VOLD, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______,
111 _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_TRNS
112 ),
113/*
114 * Adjust Layer: Function keys, RGB
115 *
116 * ,-------------------------------------------. ,-------------------------------------------.
117 * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | |
118 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
119 * | | VAI | SAI | HUI | SPI | MOD | | | | | F11 | F12 | |
120 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
121 * | | VID | SAD | HUD | SPD | RMOD | | | | | | | | | | | |
122 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
123 * | | | | | | | | | | | |
124 * | | | | | | | | | | | |
125 * `----------------------------------' `----------------------------------'
126 */
127 [_ADJUST] = LAYOUT(
128 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
129 RGB_TOG, RGB_VAI, RGB_SAI, RGB_HUI, RGB_SPI, RGB_MOD, _______, _______, _______, KC_F11, KC_F12, _______,
130 _______, RGB_VAD, RGB_SAD, RGB_HUD, RGB_SPD, RGB_RMOD,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
131 KC_TRNS, _______, _______, _______, _______, _______, _______, _______, _______, _______
132 ),
133// /*
134// * Layer template
135// *
136// * ,-------------------------------------------. ,-------------------------------------------.
137// * | | | | | | | | | | | | | |
138// * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
139// * | | | | | | | | | | | | | |
140// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
141// * | | | | | | | | | | | | | | | | | |
142// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
143// * | | | | | | | | | | | |
144// * | | | | | | | | | | | |
145// * `----------------------------------' `----------------------------------'
146// */
147// [_LAYERINDEX] = LAYOUT(
148// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
149// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
150// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
151// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
152// ),
153};
154
155layer_state_t layer_state_set_user(layer_state_t state) {
156 return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
157}
158
159#ifdef OLED_DRIVER_ENABLE
160
161oled_rotation_t oled_init_user(oled_rotation_t rotation) {
162 return OLED_ROTATION_180;
163}
164
165static void render_status(void) {
166 // Host Keyboard Layer Status
167 oled_write_P(PSTR("Layer: "), false);
168 switch (get_highest_layer(layer_state)) {
169 case _QWERTY:
170 oled_write_P(PSTR("QWERTY"), false);
171 break;
172 case _2WERTY:
173 oled_write_P(PSTR("2WERTY"), false);
174 break;
175 case _LOWER:
176 oled_write_P(PSTR("Numpad"), false);
177 break;
178 case _RAISE:
179 oled_write_P(PSTR("F Keys"), false);
180 break;
181 case _ADJUST:
182 oled_write_P(PSTR("RGB "), false);
183 break;
184 default:
185 oled_write_P(PSTR("Undefined"), false);
186 }
187
188 //Host Keyboard LED Status
189 led_t led_state = host_keyboard_led_state();
190 oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
191 oled_write_P(led_state.caps_lock ? PSTR("CAPS ") : PSTR(" "), false);
192 oled_write_P(led_state.scroll_lock ? PSTR("SCRL") : PSTR(" "), false);
193}
194
195
196// WPM-responsive animation stuff here
197#define IDLE_FRAMES 5
198#define IDLE_SPEED 40 // below this wpm value your animation will idle
199
200// #define PREP_FRAMES 1 // uncomment if >1
201
202#define TAP_FRAMES 2
203#define TAP_SPEED 60 // above this wpm value typing animation to triggere
204
205#define ANIM_FRAME_DURATION 200 // how long each frame lasts in ms
206// #define SLEEP_TIMER 60000 // should sleep after this period of 0 wpm, needs fixing
207#define ANIM_SIZE 636 // number of bytes in array, minimize for adequate firmware size, max is 1024
208
209uint32_t anim_timer = 0;
210uint32_t anim_sleep = 0;
211uint8_t current_idle_frame = 0;
212// uint8_t current_prep_frame = 0; // uncomment if PREP_FRAMES >1
213uint8_t current_tap_frame = 0;
214
215// Images credit j-inc(/James Incandenza) and pixelbenny. Credit to obosob for initial animation approach.
216static void render_anim(void) {
217 static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = {
218 {
219 0, 0,126,126, 24, 60,102, 66, 0, 12, 28,112,112, 28, 12, 0,116,116, 20, 20,124,104, 0,124,124, 0,112,120, 44, 36,124,124,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,128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 16, 8, 8, 4, 4, 4, 8, 48, 64,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,128,128,128,
220 0, 0, 0, 0,192, 96, 48, 24, 12,132,198, 98, 35, 51, 17,145,113,241,113,145, 17, 51, 35, 98,198,132, 12, 24, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,100,130, 2, 2, 2, 2, 2, 1, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 48, 48, 0,192,193,193,194, 4, 8, 16, 32, 64,128, 0, 0, 0,128,128,128,128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8,196, 4,196, 4,196, 2,194, 2,194, 1, 1, 1, 1, 0, 0, 0,
221 0, 0,252, 15, 1, 0,248, 14, 31,109,140,148,148,164,166,249,224,255,224,249,166,164,148,148,140,109, 31, 14,248, 0, 1, 15,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 56, 4, 3, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 13, 1, 0, 64,160, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 8, 8, 16, 16, 16, 16, 16, 17, 15, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,170,255,255,195,191,127, 3,127,191,195,255,255,170,170, 0, 0, 0, 0,
222 0, 0, 31,120,192, 0, 15, 56,124,219,152, 20, 20, 18, 50,207, 3,255, 3,207, 50, 18, 20, 20,152,219,124, 56, 15, 0,192,120, 31, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 4, 4, 8, 8, 8, 8, 8, 7, 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, 2,130,135, 31, 7,159, 7, 28, 7,159, 7,159, 7, 2,130, 0, 0, 0, 0,
223 32, 16, 16, 16, 17, 11, 14, 12, 24, 16, 49, 35, 98,102, 68, 68, 71, 71, 71, 68, 68,102, 98, 35, 49, 16, 24, 12, 6, 3, 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, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 23, 0, 15, 1, 2, 1, 15, 0, 15, 2, 5, 8
224 },
225 {
226 0, 0,126,126, 24, 60,102, 66, 0, 12, 28,112,112, 28, 12, 0,116,116, 20, 20,124,104, 0,124,124, 0,112,120, 44, 36,124,124,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,128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 16, 8, 8, 4, 4, 4, 8, 48, 64,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,128,128,128,
227 0, 0, 0, 0,192, 96, 48, 24, 12,132,198, 98, 35, 51, 17,145,113,241,113,145, 17, 51, 35, 98,198,132, 12, 24, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,100,130, 2, 2, 2, 2, 2, 1, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 48, 48, 0,192,193,193,194, 4, 8, 16, 32, 64,128, 0, 0, 0,128,128,128,128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8,196, 4,196, 4,196, 2,194, 2,194, 1, 1, 1, 1, 0, 0, 0,
228 0, 0,252, 15, 1, 0,248, 14, 31,109,140,148,148,164,166,249,224,255,224,249,166,164,148,148,140,109, 31, 14,248, 0, 1, 15,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 56, 4, 3, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 13, 1, 0, 64,160, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 8, 8, 16, 16, 16, 16, 16, 17, 15, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,170,255,255,195,191,127, 3,127,191,195,255,255,170,170, 0, 0, 0, 0,
229 0, 0, 31,120,192, 0, 15, 56,124,219,152, 20, 20, 18, 50,207, 3,255, 3,207, 50, 18, 20, 20,152,219,124, 56, 15, 0,192,120, 31, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 4, 4, 8, 8, 8, 8, 8, 7, 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, 2,130,135, 31, 7,159, 7, 28, 7,159, 7,159, 7, 2,130, 0, 0, 0, 0,
230 32, 16, 16, 16, 17, 11, 14, 12, 24, 16, 49, 35, 98,102, 68, 68, 71, 71, 71, 68, 68,102, 98, 35, 49, 16, 24, 12, 6, 3, 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, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 23, 0, 15, 1, 2, 1, 15, 0, 15, 2, 5, 8
231 },
232 {
233 0, 0,126,126, 24, 60,102, 66, 0, 12, 28,112,112, 28, 12, 0,116,116, 20, 20,124,104, 0,124,124, 0,112,120, 44, 36,124,124,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,128,128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 8, 4, 2, 2, 4, 24, 96,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,128,128,128,
234 0, 0, 0, 0,192, 96, 48, 24, 12,132,198, 98, 35, 51, 17,145,113,241,113,145, 17, 51, 35, 98,198,132, 12, 24, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,194, 1, 1, 2, 2, 4, 4, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 96, 0,129,130,130,132, 8, 16, 32, 64,128, 0, 0, 0, 0,128,128,128,128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8,196, 4,196, 4,196, 2,194, 2,194, 1, 1, 1, 1, 0, 0, 0,
235 0, 0,252, 15, 1, 0,248, 14, 31,109,140,148,148,164,166,249,224,255,224,249,166,164,148,148,140,109, 31, 14,248, 0, 1, 15,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,112, 25, 6, 0, 0, 0, 0, 0, 0, 0, 24, 24, 24, 27, 3, 0, 64,160, 34, 36, 20, 18, 18, 18, 11, 8, 8, 8, 8, 5, 5, 9, 9, 16, 16, 16, 16, 16, 17, 15, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,170,255,255,195,191,127, 3,127,191,195,255,255,170,170, 0, 0, 0, 0,
236 0, 0, 31,120,192, 0, 15, 56,124,219,152, 20, 20, 18, 50,207, 3,255, 3,207, 50, 18, 20, 20,152,219,124, 56, 15, 0,192,120, 31, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 4, 4, 8, 8, 8, 8, 8, 7, 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, 2,130,135, 31, 7,159, 7, 28, 7,159, 7,159, 7, 2,130, 0, 0, 0, 0,
237 32, 16, 16, 16, 17, 11, 14, 12, 24, 16, 49, 35, 98,102, 68, 68, 71, 71, 71, 68, 68,102, 98, 35, 49, 16, 24, 12, 6, 3, 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, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 23, 0, 15, 1, 2, 1, 15, 0, 15, 2, 5, 8
238 },
239 {
240 0, 0,126,126, 24, 60,102, 66, 0, 12, 28,112,112, 28, 12, 0,116,116, 20, 20,124,104, 0,124,124, 0,112,120, 44, 36,124,124,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0,128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 4, 2, 1, 1, 2, 12, 48, 64,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,128,128,128,
241 0, 0, 0, 0,192, 96, 48, 24, 12,132,198, 98, 35, 51, 17,145,113,241,113,145, 17, 51, 35, 98,198,132, 12, 24, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30,225, 0, 0, 1, 1, 2, 2, 1, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 48, 48, 0,192,193,193,194, 4, 8, 16, 32, 64,128, 0, 0, 0,128,128,128,128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8,196, 4,196, 4,196, 2,194, 2,194, 1, 1, 1, 1, 0, 0, 0,
242 0, 0,252, 15, 1, 0,248, 14, 31,109,140,148,148,164,166,249,224,255,224,249,166,164,148,148,140,109, 31, 14,248, 0, 1, 15,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,112, 12, 3, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 13, 1, 0, 64,160, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 8, 8, 16, 16, 16, 16, 16, 17, 15, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,170,255,255,195,191,127, 3,127,191,195,255,255,170,170, 0, 0, 0, 0,
243 0, 0, 31,120,192, 0, 15, 56,124,219,152, 20, 20, 18, 50,207, 3,255, 3,207, 50, 18, 20, 20,152,219,124, 56, 15, 0,192,120, 31, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 4, 4, 8, 8, 8, 8, 8, 7, 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, 2,130,135, 31, 7,159, 7, 28, 7,159, 7,159, 7, 2,130, 0, 0, 0, 0,
244 32, 16, 16, 16, 17, 11, 14, 12, 24, 16, 49, 35, 98,102, 68, 68, 71, 71, 71, 68, 68,102, 98, 35, 49, 16, 24, 12, 6, 3, 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, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 23, 0, 15, 1, 2, 1, 15, 0, 15, 2, 5, 8
245 },
246 {
247 0, 0,126,126, 24, 60,102, 66, 0, 12, 28,112,112, 28, 12, 0,116,116, 20, 20,124,104, 0,124,124, 0,112,120, 44, 36,124,124,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,128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 4, 2, 2, 2, 4, 56, 64,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,128,128,128,
248 0, 0, 0, 0,192, 96, 48, 24, 12,132,198, 98, 35, 51, 17,145,113,241,113,145, 17, 51, 35, 98,198,132, 12, 24, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,226, 1, 1, 2, 2, 2, 2, 1, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 48, 48, 0,192,193,193,194, 4, 8, 16, 32, 64,128, 0, 0, 0,128,128,128,128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8,196, 4,196, 4,196, 2,194, 2,194, 1, 1, 1, 1, 0, 0, 0,
249 0, 0,252, 15, 1, 0,248, 14, 31,109,140,148,148,164,166,249,224,255,224,249,166,164,148,148,140,109, 31, 14,248, 0, 1, 15,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,112, 12, 3, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 13, 1, 0, 64,160, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 8, 8, 16, 16, 16, 16, 16, 17, 15, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,170,255,255,195,191,127, 3,127,191,195,255,255,170,170, 0, 0, 0, 0,
250 0, 0, 31,120,192, 0, 15, 56,124,219,152, 20, 20, 18, 50,207, 3,255, 3,207, 50, 18, 20, 20,152,219,124, 56, 15, 0,192,120, 31, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 4, 4, 8, 8, 8, 8, 8, 7, 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, 2,130,135, 31, 7,159, 7, 28, 7,159, 7,159, 7, 2,130, 0, 0, 0, 0,
251 32, 16, 16, 16, 17, 11, 14, 12, 24, 16, 49, 35, 98,102, 68, 68, 71, 71, 71, 68, 68,102, 98, 35, 49, 16, 24, 12, 6, 3, 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, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 23, 0, 15, 1, 2, 1, 15, 0, 15, 2, 5, 8
252 }
253 };
254 static const char PROGMEM prep[][ANIM_SIZE] = {
255 {
256 0, 0,126,126, 24, 60,102, 66, 0, 12, 28,112,112, 28, 12, 0,116,116, 20, 20,124,104, 0,124,124, 0,112,120, 44, 36,124,124,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0,128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 4, 2, 1, 1, 2, 12, 48, 64,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,128,128,128,
257 0, 0, 0, 0,192, 96, 48, 24, 12,132,198, 98, 35, 51, 17,145,113,241,113,145, 17, 51, 35, 98,198,132, 12, 24, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30,225, 0, 0, 1, 1, 2, 2,129,128,128, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 48, 48, 0, 0, 1,225, 26, 6, 9, 49, 53, 1,138,124, 0, 0,128,128,128,128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8,196, 4,196, 4,196, 2,194, 2,194, 1, 1, 1, 1, 0, 0, 0,
258 0, 0,252, 15, 1, 0,248, 14, 31,109,140,148,148,164,166,249,224,255,224,249,166,164,148,148,140,109, 31, 14,248, 0, 1, 15,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,112, 12, 3, 0, 0, 24, 6, 5,152,153,132,195,124, 65, 65, 64, 64, 32, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 4, 4, 4, 4, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,170,255,255,195,191,127, 3,127,191,195,255,255,170,170, 0, 0, 0, 0,
259 0, 0, 31,120,192, 0, 15, 56,124,219,152, 20, 20, 18, 50,207, 3,255, 3,207, 50, 18, 20, 20,152,219,124, 56, 15, 0,192,120, 31, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 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, 2,130,135, 31, 7,159, 7, 28, 7,159, 7,159, 7, 2,130, 0, 0, 0, 0,
260 32, 16, 16, 16, 17, 11, 14, 12, 24, 16, 49, 35, 98,102, 68, 68, 71, 71, 71, 68, 68,102, 98, 35, 49, 16, 24, 12, 6, 3, 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, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 23, 0, 15, 1, 2, 1, 15, 0, 15, 2, 5, 8
261 }
262 };
263 static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = {
264 {
265 0, 0,126,126, 24, 60,102, 66, 0, 12, 28,112,112, 28, 12, 0,116,116, 20, 20,124,104, 0,124,124, 0,112,120, 44, 36,124,124,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0,128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 4, 2, 1, 1, 2, 12, 48, 64,128, 0, 0, 0, 0, 0, 0, 0,248,248,248,248, 0, 0, 0, 0, 0,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,128,128,128,
266 0, 0, 0, 0,192, 96, 48, 24, 12,132,198, 98, 35, 51, 17,145,113,241,113,145, 17, 51, 35, 98,198,132, 12, 24, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30,225, 0, 0, 1, 1, 2, 2,129,128,128, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 48, 48, 0, 0, 1, 1, 2, 4, 8, 16, 32, 67,135, 7, 1, 0,184,188,190,159, 95, 95, 79, 76, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8,196, 4,196, 4,196, 2,194, 2,194, 1, 1, 1, 1, 0, 0, 0,
267 0, 0,252, 15, 1, 0,248, 14, 31,109,140,148,148,164,166,249,224,255,224,249,166,164,148,148,140,109, 31, 14,248, 0, 1, 15,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,112, 12, 3, 0, 0, 24, 6, 5,152,153,132, 67,124, 65, 65, 64, 64, 32, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 8, 8, 16, 16, 16, 16, 16, 17, 15, 1, 61,124,252,252,252,252,252, 60, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,170,255,255,195,191,127, 3,127,191,195,255,255,170,170, 0, 0, 0, 0,
268 0, 0, 31,120,192, 0, 15, 56,124,219,152, 20, 20, 18, 50,207, 3,255, 3,207, 50, 18, 20, 20,152,219,124, 56, 15, 0,192,120, 63, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 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, 1, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,130,135, 31, 7,159, 7, 28, 7,159, 7,159, 7, 2,130, 0, 0, 0, 0,
269 32, 16, 16, 16, 17, 11, 14, 12, 24, 16, 49, 35, 98,102, 68, 68, 71, 71, 71, 68, 68,102, 98, 35, 49, 16, 24, 12, 6, 3, 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, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 23, 0, 15, 1, 2, 1, 15, 0, 15, 2, 5, 8
270 },
271 {
272 0, 0,126,126, 24, 60,102, 66, 0, 12, 28,112,112, 28, 12, 0,116,116, 20, 20,124,104, 0,124,124, 0,112,120, 44, 36,124,124,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0,128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 4, 2, 1, 1, 2, 12, 48, 64,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,128,128,128,
273 0, 0, 0, 0,192, 96, 48, 24, 12,132,198, 98, 35, 51, 17,145,113,241,113,145, 17, 51, 35, 98,198,132, 12, 24, 48, 96,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30,225, 0, 0, 1, 1, 2, 2, 1, 0, 0, 0, 0,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 48, 48, 0, 0, 1,225, 26, 6, 9, 49, 53, 1,138,124, 0, 0,128,128,128,128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8,196, 4,196, 4,196, 2,194, 2,194, 1, 1, 1, 1, 0, 0, 0,
274 0, 0,252, 15, 1, 0,248, 14, 31,109,140,148,148,164,166,249,224,255,224,249,166,164,148,148,140,109, 31, 14,248, 0, 1, 15,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,112, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 64,160, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 4, 4, 4, 4, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,170,255,255,195,191,127, 3,127,191,195,255,255,170,170, 0, 0, 0, 0,
275 0, 0, 31,120,192, 0, 15, 56,124,219,152, 20, 20, 18, 50,207, 3,255, 3,207, 50, 18, 20, 20,152,219,124, 56, 15, 0,192,120, 31, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3,122,122,121,121,121,121, 57, 49, 2, 2, 4, 4, 8, 8, 8,136,136,135,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, 2,130,135, 31, 7,159, 7, 28, 7,159, 7,159, 7, 2,130, 0, 0, 0, 0,
276 32, 16, 16, 16, 17, 11, 14, 12, 24, 16, 49, 35, 98,102, 68, 68, 71, 71, 71, 68, 68,102, 98, 35, 49, 16, 24, 12, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,120,124,254,255, 63, 7, 0, 0, 0, 0,255,255,127,127, 63, 62, 28, 24, 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, 7, 8, 8, 23, 0, 15, 1, 2, 1, 15, 0, 15, 2, 5, 8
277 },
278 };
279
280 //assumes 1 frame prep stage
281 void animation_phase(void) {
282 if(get_current_wpm() <=IDLE_SPEED){
283 current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES;
284 oled_write_raw_P(idle[abs((IDLE_FRAMES-1)-current_idle_frame)], ANIM_SIZE);
285 }
286 if(get_current_wpm() >IDLE_SPEED && get_current_wpm() <TAP_SPEED){
287 // oled_write_raw_P(prep[abs((PREP_FRAMES-1)-current_prep_frame)], ANIM_SIZE); // uncomment if IDLE_FRAMES >1
288 oled_write_raw_P(prep[0], ANIM_SIZE); // remove if IDLE_FRAMES >1
289 }
290 if(get_current_wpm() >=TAP_SPEED){
291 current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES;
292 oled_write_raw_P(tap[abs((TAP_FRAMES-1)-current_tap_frame)], ANIM_SIZE);
293 }
294 }
295 if(get_current_wpm() != 000) {
296 oled_on(); // not essential but turns on animation OLED with any alpha keypress
297 if(timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
298 anim_timer = timer_read32();
299 animation_phase();
300 }
301 anim_sleep = timer_read32();
302 } else {
303 if(timer_elapsed32(anim_sleep) > OLED_TIMEOUT) {
304 oled_off();
305 } else {
306 if(timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
307 anim_timer = timer_read32();
308 animation_phase();
309 }
310 }
311 }
312}
313
314// static void render_skull(void) { // Helen Tseong (http://shewolfe.co/), the original artist behind the skull, sadly only allowing use of the skull for my personal use. Her (excellent) works are copyright her, and I claim no ownership. Reach out to her for permission!
315// static const char PROGMEM skull[] = {
316// };
317// oled_write_raw_P(skull, 801);
318// }
319
320void oled_task_user(void) {
321 if (is_keyboard_master()) {
322 //render_skull();
323 //oled_set_cursor(7,6);
324 render_status();
325 // Renders the current keyboard state (layer, lock, caps, scroll, etc)
326 } else {
327 render_anim();
328 oled_set_cursor(0,6);
329 uint8_t n = get_current_wpm();
330 wpm_str[3] = '\0';
331 wpm_str[2] = '0' + n % 10;
332 wpm_str[1] = '0' + (n /= 10) % 10;
333 wpm_str[0] = '0' + n / 10 ;
334 oled_write_P(PSTR(" WPM: "), false);
335 oled_write(wpm_str, false);
336
337 }
338}
339#endif
340
341#ifdef ENCODER_ENABLE
342bool encoder_update_user(uint8_t index, bool clockwise) {
343 switch(biton32(layer_state)){
344 case 1:
345 if (clockwise) {
346 tap_code16(C(KC_TAB));
347 } else {
348 tap_code16(S(C(KC_TAB)));
349 }
350 break;
351 default:
352 if (clockwise) {
353 if (!is_alt_tab_active) {
354 is_alt_tab_active = true;
355 register_code(KC_LALT);
356 }
357 alt_tab_timer = timer_read();
358 tap_code16(KC_TAB);
359 } else {
360 tap_code16(S(KC_TAB));
361 }
362 break;
363 }
364 return true;
365}
366
367void matrix_scan_user(void) {
368 if (is_alt_tab_active) {
369 if (timer_elapsed(alt_tab_timer) > 1250) {
370 unregister_code(KC_LALT);
371 is_alt_tab_active = false;
372 }
373 }
374}
375
376#endif
diff --git a/keyboards/splitkb/kyria/keymaps/j-inc/rules.mk b/keyboards/splitkb/kyria/keymaps/j-inc/rules.mk
new file mode 100644
index 000000000..87d07f667
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/j-inc/rules.mk
@@ -0,0 +1,18 @@
1OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays
2ENCODER_ENABLE = yes # Enables the use of one or more encoders
3RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
4RGBLIGHT_ANIMATIONS = yes
5WPM_ENABLE = yes
6MOUSEKEY_ENABLE = no
7
8TAP_DANCE_ENABLE = no
9STENO_ENABLE = no
10BOOTMAGIC_ENABLE =no
11TERMINAL_ENABLE = no
12GRAVE_ESC_ENABLE = no
13MAGIC_ENABLE = no
14SPACE_CADET_ENABLE = no
15KEY_LOCK_ENABLE = no
16AUDIO_ENABLE = no
17CONSOLE_ENABLE = no
18VELOCIKEY_ENABLE = no
diff --git a/keyboards/splitkb/kyria/keymaps/jhelvy/config.h b/keyboards/splitkb/kyria/keymaps/jhelvy/config.h
new file mode 100644
index 000000000..6dbc0dc1d
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/jhelvy/config.h
@@ -0,0 +1,33 @@
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
17#pragma once
18
19#ifdef OLED_DRIVER_ENABLE
20 #define OLED_DISPLAY_128X64
21#endif
22
23#define ENCODER_RESOLUTION 2
24
25#define TAPPING_FORCE_HOLD
26#define TAPPING_TERM 200
27#define AUTO_SHIFT_TIMEOUT 150
28
29#define MOUSEKEY_DELAY 100
30#define MOUSEKEY_INTERVAL 16
31#define MOUSEKEY_MAX_SPEED 2
32#define MOUSEKEY_WHEEL_MAX_SPEED 42
33#define MOUSEKEY_WHEEL_TIME_TO_MAX 15
diff --git a/keyboards/splitkb/kyria/keymaps/jhelvy/keymap.c b/keyboards/splitkb/kyria/keymaps/jhelvy/keymap.c
new file mode 100644
index 000000000..371007eeb
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/jhelvy/keymap.c
@@ -0,0 +1,202 @@
1#include QMK_KEYBOARD_H
2
3enum layers {
4 QWERTY = 0,
5 HOTKEYS,
6 TEXT,
7 SELECT,
8 NUMBERS,
9};
10
11enum custom_keycodes {
12 SIG_PROF = SAFE_RANGE,
13 SIG_JOHN,
14 R_PIPE,
15 R_ASSIGN,
16 R_COLS,
17 R_IN,
18 TEX,
19 E_GMAIL,
20 E_GWU,
21};
22
23const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
24
25[QWERTY] = LAYOUT(LALT(KC_A), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT, KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_NO, KC_NO, KC_NO, KC_NO, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, KC_LALT, KC_LCTL, KC_LGUI, MO(2), MO(4), KC_BSPC, KC_SPC, MO(1), KC_PGDN, TG(1)),
26
27[HOTKEYS] = LAYOUT(KC_F6, LGUI(LALT(KC_1)), LGUI(LALT(KC_2)), LCTL(KC_U), SGUI(KC_R), KC_F2, SGUI(KC_K), LCTL(KC_9), LCTL(KC_0), KC_F14, KC_F11, KC_F15, KC_F7, LGUI(LCTL(KC_A)), KC_F10, KC_LBRC, KC_RBRC, KC_F9, SIG_JOHN, LSFT(KC_TAB), KC_TAB, E_GMAIL, KC_F12, KC_F16, KC_F8, KC_ASTG, KC_NO, KC_LCBR, KC_RCBR, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, SIG_PROF, KC_F3, KC_F4, E_GWU, KC_F13, KC_F17, KC_F5, KC_NO, KC_LGUI, KC_LGUI, KC_LCTL, KC_BSPC, KC_SPC, KC_TRNS, KC_NO, KC_TRNS),
28
29[TEXT] = LAYOUT(LGUI(KC_BSPC), LGUI(KC_Q), LGUI(KC_W), KC_ESC, LGUI(KC_R), LGUI(KC_T), LCTL(KC_Y), LGUI(KC_LEFT), KC_UP, LGUI(KC_RGHT), KC_SCLN, R_PIPE, KC_BSPC, MO(3), LGUI(KC_S), LGUI(KC_C), LGUI(KC_V), LGUI(KC_X), KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_GRV, KC_ENT, KC_F18, LGUI(KC_A), LGUI(KC_D), KC_F1, LGUI(KC_Z), LGUI(KC_Y), KC_NO, KC_NO, KC_NO, KC_NO, KC_BSPC, LGUI(KC_F), SGUI(KC_G), LGUI(KC_G), KC_BSLS, R_ASSIGN, KC_LALT, KC_LCTL, KC_LGUI, KC_TRNS, KC_NO, KC_BSPC, KC_SPC, KC_LGUI, KC_PGUP, KC_NO),
30
31[SELECT] = LAYOUT(KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, SGUI(KC_LEFT), LSFT(KC_UP), SGUI(KC_RGHT), KC_NO, R_COLS, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, LSFT(KC_LEFT), LSFT(KC_DOWN), LSFT(KC_RGHT), KC_NO, R_IN, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, LALT(LSFT(KC_LEFT)), LALT(LSFT(KC_RIGHT)), KC_NO, TEX, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BSPC, KC_SPC, KC_LGUI, KC_NO, KC_NO),
32
33[NUMBERS] = LAYOUT(KC_NO, LGUI(KC_1), LGUI(KC_2), LGUI(KC_3), LGUI(KC_4), LGUI(KC_5), KC_EQL, KC_7, KC_8, KC_9, KC_TILD, KC_MINS, KC_NO, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_PLUS, KC_4, KC_5, KC_6, KC_COLN, KC_ENT, KC_LSPO, KC_NO, KC_NO, KC_CIRC, KC_AMPR, KC_ASTR, KC_NO, KC_NO, KC_NO, KC_NO, KC_MINS, KC_1, KC_2, KC_3, KC_SLSH, KC_PIPE, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_BSPC, KC_SPC, KC_0, KC_DOT, KC_COMM)
34
35};
36
37bool process_record_user(uint16_t keycode, keyrecord_t *record) {
38 switch (keycode) {
39 case SIG_PROF:
40 if (record->event.pressed) {
41 SEND_STRING("Cheers,\nProfessor Helveston");
42 } else {
43 }
44 break;
45
46 case SIG_JOHN:
47 if (record->event.pressed) {
48 SEND_STRING("Cheers,\nJohn");
49 } else {
50 }
51 break;
52
53 case R_PIPE:
54 if (record->event.pressed) {
55 SEND_STRING(" %>% ");
56 } else {
57 }
58 break;
59
60 case R_ASSIGN:
61 if (record->event.pressed) {
62 SEND_STRING(" <- ");
63 } else {
64 }
65 break;
66
67 case R_COLS:
68 if (record->event.pressed) {
69 SEND_STRING(".leftcol[\n]\n.rightcol[\n]\n");
70 } else {
71 }
72 break;
73
74 case R_IN:
75 if (record->event.pressed) {
76 SEND_STRING(" %in% ");
77 } else {
78 }
79 break;
80
81 case TEX:
82 if (record->event.pressed) {
83 SEND_STRING("\\text{}");
84 } else {
85 }
86 break;
87
88 case E_GMAIL:
89 if (record->event.pressed) {
90 SEND_STRING("john.helveston@gmail.com");
91 } else {
92 }
93 break;
94
95 case E_GWU:
96 if (record->event.pressed) {
97 SEND_STRING("jph@gwu.edu");
98 } else {
99 }
100 break;
101
102 }
103
104 return true;
105};
106
107#ifdef OLED_DRIVER_ENABLE
108oled_rotation_t oled_init_user(oled_rotation_t rotation) {
109 return OLED_ROTATION_180;
110}
111
112static void render_kyria_logo(void) {
113 static const char PROGMEM kyria_logo[] = {
114 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,
115 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,
116 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,
117 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,
118 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,
119 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,
120 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,
121 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
122 };
123 oled_write_raw_P(kyria_logo, sizeof(kyria_logo));
124}
125
126static void render_qmk_logo(void) {
127 static const char PROGMEM qmk_logo[] = {
128 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
129 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
130 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0};
131
132 oled_write_P(qmk_logo, false);
133}
134
135static void render_status(void) {
136 // QMK Logo and version information
137 render_qmk_logo();
138 oled_write_P(PSTR(" Kyria rev1.0\n\n"), false);
139
140 // Host Keyboard Layer Status
141 oled_write_P(PSTR("Layer: "), false);
142 switch (get_highest_layer(layer_state)) {
143 case QWERTY:
144 oled_write_P(PSTR("QWERTY\n"), false);
145 break;
146 case HOTKEYS:
147 oled_write_P(PSTR("HOTKEYS\n"), false);
148 break;
149 case TEXT:
150 oled_write_P(PSTR("TEXT\n"), false);
151 break;
152 case SELECT:
153 oled_write_P(PSTR("SELECT\n"), false);
154 break;
155 case NUMBERS:
156 oled_write_P(PSTR("NUMBERS\n"), false);
157 break;
158 default:
159 oled_write_P(PSTR("Undefined\n"), false);
160 }
161
162}
163
164void oled_task_user(void) {
165 if (is_keyboard_master()) {
166 render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
167 } else {
168 render_kyria_logo();
169 }
170}
171#endif
172
173bool encoder_update_user(uint8_t index, bool clockwise) {
174 if (IS_LAYER_ON(HOTKEYS)) {
175 if (clockwise) {
176 tap_code(KC_VOLD);
177 } else {
178 tap_code(KC_VOLU);
179 }
180 } else if (IS_LAYER_ON(TEXT)) {
181 if (clockwise) {
182 tap_code(KC_MS_WH_LEFT);
183 } else {
184 tap_code(KC_MS_WH_RIGHT);
185 }
186 } else if (IS_LAYER_ON(NUMBERS)) {
187 if (clockwise) {
188 tap_code16(G(KC_MINS));
189 } else {
190 register_code(KC_LGUI);
191 tap_code(KC_EQL);
192 unregister_code(KC_LGUI);
193 }
194 } else {
195 if (clockwise) {
196 tap_code(KC_MS_WH_UP);
197 } else {
198 tap_code(KC_MS_WH_DOWN);
199 }
200 }
201 return true;
202}
diff --git a/keyboards/splitkb/kyria/keymaps/jhelvy/rules.mk b/keyboards/splitkb/kyria/keymaps/jhelvy/rules.mk
new file mode 100644
index 000000000..ec4c65f70
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/jhelvy/rules.mk
@@ -0,0 +1,8 @@
1AUTO_SHIFT_ENABLE = yes # Autoshift by holding down a key
2OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays
3ENCODER_ENABLE = yes # Enables the use of one or more encoders
4RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
5LEADER_ENABLE = no # Enable the Leader Key feature
6MOUSEKEY_ENABLE = yes
7EXTRAKEY_ENABLE = yes
8BACKLIGHT_ENABLE = no
diff --git a/keyboards/splitkb/kyria/keymaps/kejadlen/config.h b/keyboards/splitkb/kyria/keymaps/kejadlen/config.h
new file mode 100644
index 000000000..3c0951f11
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/kejadlen/config.h
@@ -0,0 +1,47 @@
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
17#pragma once
18
19#ifdef OLED_DRIVER_ENABLE
20 #define OLED_DISPLAY_128X64
21#endif
22
23#ifdef RGBLIGHT_ENABLE
24 #define RGBLIGHT_ANIMATIONS
25 #define RGBLIGHT_HUE_STEP 8
26 #define RGBLIGHT_SAT_STEP 8
27 #define RGBLIGHT_VAL_STEP 8
28 #define RGBLIGHT_SLEEP
29#endif
30
31// EC11K encoders have a different resolution than other EC11 encoders.
32// When using the default resolution of 4, if you notice your encoder skipping
33// every other tick, lower the resolution to 2.
34#define ENCODER_RESOLUTION 2
35
36// The Leader key allows to flexibly assign macros to key sequences.
37#define LEADER_PER_KEY_TIMING
38#define LEADER_TIMEOUT 350
39
40#define TAPPING_TERM 200
41
42// Allows to use either side as the master. Look at the documentation for info:
43// https://docs.qmk.fm/#/config_options?id=setting-handedness
44#define EE_HANDS
45
46// Allows media codes to properly register in macros and rotary encoder code
47#define TAP_CODE_DELAY 10
diff --git a/keyboards/splitkb/kyria/keymaps/kejadlen/keymap.c b/keyboards/splitkb/kyria/keymaps/kejadlen/keymap.c
new file mode 100644
index 000000000..9de9be555
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/kejadlen/keymap.c
@@ -0,0 +1,63 @@
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
18
19enum layers {
20 NOR = 0,
21 NAV,
22 SYM,
23 ETC,
24};
25
26const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
27 [NOR] = LAYOUT(
28 KC_NO, KC_Q, KC_W, KC_D, KC_F, KC_K, KC_J, KC_U, KC_R, KC_L, KC_SCLN, KC_BSLS,
29 KC_LSFT, KC_A, KC_S, KC_E, KC_T, KC_G, KC_Y, KC_N, KC_I, KC_O, KC_H, KC_QUOT,
30 KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, MO(NAV), MO(ETC), MO(ETC), MO(NAV), KC_P, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
31 LCAG_T(KC_NO), KC_LALT, GUI_T(KC_TAB), LT(SYM,KC_BSPC), CTL_T(KC_ESC), SFT_T(KC_ENT), LT(SYM,KC_SPC), GUI_T(KC_TAB), KC_LALT, RCAG_T(KC_NO)
32 ),
33
34 [NAV] = LAYOUT(
35 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS,
36 KC_TRNS, KC_LSFT, KC_LCTL, KC_LOPT, KC_LCMD, KC_TRNS, KC_VOLU, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_TRNS,
37 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS,
38 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
39 ),
40
41 [SYM] = LAYOUT(
42 KC_TRNS, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_EQL, KC_7, KC_8, KC_9, KC_PLUS, KC_TRNS,
43 KC_AMPR, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_BSLS, KC_MINS, KC_4, KC_5, KC_6, KC_QUOT, KC_TRNS,
44 KC_GRV, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_ASTR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UNDS, KC_1, KC_2, KC_3, KC_DQUO, KC_TRNS,
45 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_0, KC_DOT, KC_TRNS
46 ),
47
48 [ETC] = LAYOUT(
49 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F7, KC_F8, KC_F9, KC_TRNS, KC_TRNS,
50 KC_TRNS, KC_LSFT, KC_LCTL, KC_LOPT, KC_LCMD, KC_TRNS, KC_TRNS, KC_F4, KC_F5, KC_F6, KC_TRNS, KC_TRNS,
51 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_TRNS, KC_TRNS,
52 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
53 ),
54
55 /*
56 [__TEMPLATE__] = LAYOUT(
57 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
58 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
59 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
60 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
61 ),
62 */
63};
diff --git a/keyboards/splitkb/kyria/keymaps/kejadlen/rules.mk b/keyboards/splitkb/kyria/keymaps/kejadlen/rules.mk
new file mode 100644
index 000000000..35ba17e4a
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/kejadlen/rules.mk
@@ -0,0 +1,5 @@
1OLED_DRIVER_ENABLE = no # Enables the use of OLED displays
2ENCODER_ENABLE = no # Enables the use of one or more encoders
3RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
4LEADER_ENABLE = no # Enable the Leader Key feature
5MOUSEKEY_ENABLE = no
diff --git a/keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/config.h b/keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/config.h
new file mode 100644
index 000000000..c04bee9b4
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/config.h
@@ -0,0 +1,37 @@
1// Copyright 2019 Manna Harbour
2// https://github.com/manna-harbour/miryoku
3// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*-
4
5// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
6
7#pragma once
8
9#define XXX KC_NO
10
11#if defined MIRYOKU_MAPPING_EXTENDED_THUMBS
12#define LAYOUT_miryoku( \
13 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \
14 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \
15 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \
16 N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \
17) \
18LAYOUT( \
19XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, \
20XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX, \
21XXX, K20, K21, K22, K23, K24, XXX, XXX, XXX, XXX, K25, K26, K27, K28, K29, XXX, \
22 XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX \
23)
24#else
25#define LAYOUT_miryoku( \
26 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \
27 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \
28 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \
29 N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \
30) \
31LAYOUT( \
32XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, \
33XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX, \
34XXX, K20, K21, K22, K23, K24, XXX, XXX, XXX, XXX, K25, K26, K27, K28, K29, XXX, \
35 XXX, K32, K33, K34, XXX, XXX, K35, K36, K37, XXX \
36)
37#endif
diff --git a/keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/keymap.c
new file mode 100644
index 000000000..1520387e8
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/keymap.c
@@ -0,0 +1,5 @@
1// Copyright 2019 Manna Harbour
2// https://github.com/manna-harbour/miryoku
3// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*-
4
5// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/keyboards/splitkb/kyria/keymaps/mattir/config.h b/keyboards/splitkb/kyria/keymaps/mattir/config.h
new file mode 100644
index 000000000..2c71428a9
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/mattir/config.h
@@ -0,0 +1,55 @@
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
17#pragma once
18
19#ifdef OLED_DRIVER_ENABLE
20# define OLED_DISPLAY_128X64
21# define OLED_TIMEOUT 300000
22# define OLED_UPDATE_INTERVAL 30
23#endif
24
25#ifdef RGBLIGHT_ENABLE
26# define RGBLIGHT_LIMIT_VAL 150
27# define RGBLIGHT_ANIMATIONS
28# define RGBLIGHT_HUE_STEP 8
29# define RGBLIGHT_SAT_STEP 8
30# define RGBLIGHT_VAL_STEP 8
31# define RGBLIGHT_SLEEP
32#endif
33
34// If you are using an Elite C rev3 on the slave side, uncomment the lines below:
35//#define SPLIT_USB_DETECT
36//#define NO_USB_STARTUP_CHECK
37
38// Set the layer toggle to only need 2 clicks instead of 5
39#define TAPPING_TOGGLE 2
40
41// EC11K encoders have a different resolution than other EC11 encoders.
42#define ENCODER_RESOLUTION 2
43
44// The Leader key allows to flexibly assign macros to key sequences.
45#define LEADER_PER_KEY_TIMING
46#define LEADER_TIMEOUT 350
47
48#define TAPPING_TERM 200
49
50// Allows to use either side as the master. Look at the documentation for info:
51// https://docs.qmk.fm/#/config_options?id=setting-handedness
52#define EE_HANDS
53
54// Allows media codes to properly register in macros and rotary encoder code
55#define TAP_CODE_DELAY 10
diff --git a/keyboards/splitkb/kyria/keymaps/mattir/keymap.c b/keyboards/splitkb/kyria/keymaps/mattir/keymap.c
new file mode 100644
index 000000000..0ee0f3d85
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/mattir/keymap.c
@@ -0,0 +1,292 @@
1/* Copyright 2020 Matthew Gilbert <hello+github@mattir.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 {
19 QWERTY = 0,
20 LOWER,
21 RAISE,
22 FUNCS,
23 RGBLED
24};
25
26const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
27 [QWERTY] = LAYOUT(
28 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
29 KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
30 KC_LEAD, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_GRV, XXXXXXX, XXXXXXX, KC_MINS, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT,
31 KC_MUTE, KC_LCTL, KC_LGUI, TT(RAISE), SFT_T(KC_SPC), SFT_T(KC_SPC), TT(LOWER), KC_BSPC, KC_LALT, TG(RGBLED)
32 ),
33 [LOWER] = LAYOUT(
34 _______, KC_EXLM, KC_AT, KC_HASH, KC_LCBR, KC_RCBR, _______, _______, _______, _______, _______, _______,
35 _______, KC_DLR, KC_PERC, KC_CIRC, KC_LPRN, KC_RPRN, KC_EQL, KC_PLUS, KC_MINS, KC_ASTR, KC_SLSH, _______,
36 TG(FUNCS), KC_AMPR, _______, _______, KC_LBRC, KC_RBRC, _______, XXXXXXX, XXXXXXX, _______, _______, _______, KC_COMM, KC_DOT, _______, _______,
37 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
38 ),
39 [RAISE] = LAYOUT(
40 _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
41 _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______,
42 _______, _______, KC_BTN1, KC_BTN3, KC_BTN2, _______, _______, XXXXXXX, XXXXXXX, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, _______, _______,
43 _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______, _______
44 ),
45 [FUNCS] = LAYOUT(
46 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_PPLS, KC_P7, KC_P8, KC_P9, KC_PAST, _______,
47 _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_PMNS, KC_P4, KC_P5, KC_P6, KC_PSLS, _______,
48 TG(FUNCS), KC_F11, KC_F12, _______, _______, _______, _______, XXXXXXX, XXXXXXX, _______, KC_P0, KC_P1, KC_P2, KC_P3, KC_PDOT, KC_PEQL,
49 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
50 ),
51 [RGBLED] = LAYOUT(
52 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
53 _______, _______, RGB_VAI, RGB_HUI, RGB_SAI, RGB_MOD, _______, _______, _______, _______, _______, _______,
54 _______, _______, RGB_VAD, RGB_HUD, RGB_SAD, RGB_RMOD, _______, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______, _______, _______,
55 RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, TG(RGBLED)
56 ),
57};
58
59bool is_cmd_tab_active = false;
60uint16_t cmd_tab_timer = 0;
61
62LEADER_EXTERNS();
63
64void matrix_scan_user(void) {
65 if (is_cmd_tab_active) {
66 if (timer_elapsed(cmd_tab_timer) > 1000) {
67 unregister_code(KC_LGUI);
68 is_cmd_tab_active = false;
69 }
70 }
71
72 LEADER_DICTIONARY() {
73 leading = false;
74 leader_end();
75
76 SEQ_ONE_KEY(KC_A) {
77 tap_code16(SGUI(KC_L));
78 }
79 SEQ_TWO_KEYS(KC_S, KC_S) {
80 tap_code16(SGUI(KC_5));
81 }
82 }
83}
84
85#ifdef OLED_DRIVER_ENABLE
86oled_rotation_t oled_init_user(oled_rotation_t rotation) {
87 return OLED_ROTATION_180;
88}
89
90static void render_mattir_logo(void) {
91 static const char PROGMEM mattir_logo[] = {
92 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x3c, 0xfc, 0xf8, 0xe0,
93 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0xe0, 0xc0,
95 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
100 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x83, 0x07,
101 0x1f, 0x7e, 0xf8, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
102 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf0, 0xf8, 0xfe, 0x3f, 0x1f, 0x7f, 0xff,
103 0xfc, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
104 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
105 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
106 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
107 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
108 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xfc, 0xf8, 0x1c, 0x0f, 0x07, 0x00,
109 0x00, 0x00, 0x01, 0x07, 0x1f, 0x7e, 0xf8, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
110 0x00, 0x00, 0x00, 0x80, 0xe0, 0xf0, 0xfc, 0x7f, 0x1f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0f,
111 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
112 0x00, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x80, 0x00,
113 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
114 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
115 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
116 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xfe, 0xff, 0x3f, 0x01, 0x00, 0x00, 0x00, 0x00,
117 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1f, 0x7f, 0xfc, 0xf0, 0xc0, 0x00, 0x00, 0x80,
118 0xe0, 0xf8, 0xfe, 0x3f, 0x0f, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
119 0x01, 0x3f, 0xff, 0xfe, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
120 0xfe, 0xff, 0x7f, 0xfc, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x80, 0xe0, 0xfc, 0x7f, 0xff, 0xff, 0xe0,
121 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0xe0, 0xe0, 0xe0,
122 0x00, 0x00, 0xe0, 0xfe, 0xfe, 0xfe, 0xe0, 0xe0, 0x00, 0xe0, 0xfe, 0xfe, 0xfe, 0xe0, 0x60, 0x00,
123 0xe3, 0xe3, 0xe3, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0xc0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00,
124 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
125 0x00, 0xf8, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1f, 0x3f, 0x7f, 0x1f,
126 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00,
127 0x00, 0x00, 0x07, 0xff, 0xff, 0xf8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff,
128 0xff, 0x07, 0x00, 0x01, 0x07, 0x1f, 0x7f, 0xf8, 0xfe, 0x3f, 0x07, 0x01, 0x00, 0x03, 0xff, 0xff,
129 0xfc, 0x00, 0x00, 0x00, 0x1e, 0x7f, 0xff, 0xe1, 0xc0, 0xc0, 0xc0, 0xc0, 0xe1, 0xff, 0xff, 0xff,
130 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
131 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
132 0x00, 0x00, 0x00, 0x00, 0x80, 0xfc, 0xff, 0x7f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
133 0xfe, 0xff, 0xff, 0x1f, 0x7f, 0xfe, 0xf8, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
134 0x00, 0x00, 0x00, 0x80, 0xe0, 0xf0, 0xfc, 0x7f, 0x1f, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00,
135 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
136 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
137 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01,
138 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
139 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
140 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff,
141 0xff, 0x3f, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0f, 0x3f, 0xff, 0xfc, 0xf0, 0xc0, 0x80, 0x00, 0xc0,
142 0xf0, 0xfc, 0xfe, 0x3f, 0x0f, 0x07, 0x01, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xf0, 0x00, 0x00,
143 0x00, 0x00, 0x00, 0x00, 0x78, 0xff, 0xef, 0xcf, 0xce, 0xfc, 0x7c, 0x30, 0x00, 0x00, 0x00, 0x00,
144 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
145 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
146 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
147 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
148 0x00, 0x00, 0x38, 0x3f, 0x3f, 0x3f, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x3c, 0x3f, 0x3f,
149 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x1f, 0x3f, 0x3f, 0x1f,
150 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x3f, 0x3f, 0x3c, 0x38,
151 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x39, 0x39, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x30,
152 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
153 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
154 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
155 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
156 };
157 oled_write_raw_P(mattir_logo, sizeof(mattir_logo));
158}
159
160static void render_qmk_logo(void) {
161 static const char PROGMEM qmk_logo[] = {
162 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
163 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
164 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0
165 };
166 oled_write_P(qmk_logo, false);
167}
168
169static void render_status(void) {
170 // QMK Logo and version information
171 render_qmk_logo();
172 oled_write_P(PSTR("Matt's Kyria\n\n"), false);
173 // Host Keyboard Layer Status
174 oled_write_P(PSTR("Layer: "), false);
175 switch (get_highest_layer(layer_state)) {
176 case QWERTY:
177 oled_write_P(PSTR("Default\n"), false);
178 break;
179 case LOWER:
180 oled_write_P(PSTR("Lower\n"), false);
181 break;
182 case RAISE:
183 oled_write_P(PSTR("Raise\n"), false);
184 break;
185 case FUNCS:
186 oled_write_P(PSTR("F-keys\n"), false);
187 break;
188 case RGBLED:
189 oled_write_P(PSTR("Underglow\n"), false);
190 break;
191 default:
192 oled_write_P(PSTR("No idea dog\n"), false);
193 }
194}
195
196void oled_task_user(void) {
197 if (is_keyboard_master()) {
198 render_status(); // Renders the current keyboard layer
199 } else {
200 render_mattir_logo();
201 }
202}
203#endif
204
205// Layer-specific encoder knob functions
206#ifdef ENCODER_ENABLE
207bool encoder_update_user(uint8_t index, bool clockwise) {
208 if (index == 0) { // left knob
209 switch (get_highest_layer(layer_state)) {
210 case QWERTY: // Volume
211 if (clockwise) {
212 tap_code(KC_VOLD);
213 } else {
214 tap_code(KC_VOLU);
215 }
216 break;
217 case LOWER: // Desktop switching
218 if (clockwise) {
219 tap_code16(C(KC_RIGHT));
220 } else {
221 tap_code16(C(KC_LEFT));
222 }
223 break;
224 case RAISE: // Mousewheel L/R
225 if (clockwise) {
226 tap_code(KC_WH_L);
227 } else {
228 tap_code(KC_WH_R);
229 }
230 break;
231 case RGBLED: // Underglow color
232 if (clockwise) {
233 rgblight_increase_hue();
234 } else {
235 rgblight_decrease_hue();
236 }
237 break;
238 default: // No action
239 if (clockwise) {
240 tap_code(KC_NO);
241 } else {
242 tap_code(KC_NO);
243 }
244 break;
245 }
246 } else if (index == 1) { // right knob
247 switch (get_highest_layer(layer_state)) {
248 case QWERTY: // Undo / Redo
249 if (clockwise) {
250 tap_code16(LGUI(KC_Z));
251 } else {
252 tap_code16(SGUI(KC_Z));
253 }
254 break;
255 case LOWER: // App switching
256 if (clockwise) {
257 if (!is_cmd_tab_active) {
258 is_cmd_tab_active = true;
259 register_code(KC_LGUI);
260 }
261 cmd_tab_timer = timer_read();
262 tap_code16(KC_TAB);
263 } else {
264 tap_code16(S(KC_TAB));
265 }
266 break;
267 case RAISE: // Mouse wheel U/D
268 if (clockwise) {
269 tap_code(KC_WH_U);
270 } else {
271 tap_code(KC_WH_D);
272 }
273 break;
274 case RGBLED: // Underglow brightness
275 if (clockwise) {
276 rgblight_increase_val();
277 } else {
278 rgblight_decrease_val();
279 }
280 break;
281 default: // No action
282 if (clockwise) {
283 tap_code(KC_NO);
284 } else {
285 tap_code(KC_NO);
286 }
287 break;
288 }
289 }
290 return true;
291}
292#endif
diff --git a/keyboards/splitkb/kyria/keymaps/mattir/readme.md b/keyboards/splitkb/kyria/keymaps/mattir/readme.md
new file mode 100644
index 000000000..9a3dcc1e6
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/mattir/readme.md
@@ -0,0 +1,141 @@
1# Mattir's keymap & configs for [Kyria](https://github.com/splitkb/kyria)
2
3## Keymap
4
5This is my customized keymap and layer setup for my kyria. It's based largely on the defaults, but with several things moved to new layers.
6
7Keys in the diagrams below that are blank are "transparent" and they drop down to the lowest layer that has them defined. The keys at the end of the bottom row marked as `ENC` are where my rotary encoders are installed. The 2U height `Spce/Shft` keys are multi-function. You tap them for a space, or hold them for shift.
8
9### Base layer `QWERTY`
10
11```
12,-------------------------------------------. ,-------------------------------------------.
13| Tab | Q | W | E | R | T | | Y | U | I | O | P | | \ |
14|--------+------+------+------+------+------| |------+------+------+------+------+--------|
15| Esc | A | S | D | F | G | | H | J | K | L | ; : | Enter |
16|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
17| Leader | Z | X | C | V | B | ~ ` | | | | - _ | N | M | , < | . > | / ? | ' " |
18`----------------------+------+------+------+------| Spce | | Spce |------+------+------+------+----------------------'
19 | ENC | Ctrl | Supr | Rais | Shft | | Shft | Lowr | Bksp | Alt | ENC |
20 `----------------------------------' `----------------------------------'
21```
22
23### Symbols layer `LOWER`
24
25```
26,-------------------------------------------. ,-------------------------------------------.
27| | ! | @ | # | { | } | | | | | | | |
28|--------+------+------+------+------+------| |------+------+------+------+------+--------|
29| | $ | % | ^ | ( | ) | | = | + | - | * | / | |
30|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
31| FUNCS | & | | | [ | ] | | | | | | | | , | . | | |
32`----------------------+------+------+------+------| | | |------+------+------+------+----------------------'
33 | ENC | | | | | | | | | | ENC |
34 `----------------------------------' `----------------------------------'
35```
36
37### Numbers and mouse-keys layer `RAISE`
38
39```
40,-------------------------------------------. ,-------------------------------------------.
41| | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | |
42|--------+------+------+------+------+------| |------+------+------+------+------+--------|
43| | | Prev | Play | Next | | | Left | Down | Up | Right| | |
44|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
45| | | LMsB | MMsB | RMsB | | | | | | | MLeft| Mdown| MUp |MRight| | |
46`----------------------+------+------+------+------| | | |------+------+------+------+----------------------'
47 | ENC | | | | | | | | Del | | ENC |
48 `----------------------------------' `----------------------------------'
49```
50
51### F-Keys and number-pad layer `FUNCS`
52
53```
54,-------------------------------------------. ,-------------------------------------------.
55| | F1 | F2 | F3 | F4 | F5 | | np + | np 7 | np 8 | np 9 | np * | |
56|--------+------+------+------+------+------| |------+------+------+------+------+--------|
57| | F6 | F7 | F8 | F9 | F10 | | np - | np 4 | np 5 | np 6 | np / | |
58|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
59| FUNCS | F11 | F12 | | | | | | | | | np 0 | np 1 | np 2 | np 3 | np . | = |
60`----------------------+------+------+------+------| | | |------+------+------+------+----------------------'
61 | ENC | | | | | | | | | | ENC |
62 `----------------------------------' `----------------------------------'
63```
64
65### LED Underglow layer `RGBLED`
66
67There's not much on this layer since several of the functions are set up for my rotary encoders.
68
69```
70,-------------------------------------------. ,-------------------------------------------.
71| | | | | | | | | | | | | |
72|--------+------+------+------+------+------| |------+------+------+------+------+--------|
73| | |ValUp |HueUp | SatUp| Mode | | | | | | | |
74|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
75| | |ValDn |HueDn | SatDn| Rmode| | | | | | | | | | | |
76`----------------------+------+------+------+------| | | |------+------+------+------+----------------------'
77 | ENC | | | | | | | | | | ENC |
78 `----------------------------------' `----------------------------------'
79```
80
81## Rotary Encoders
82
83I've set up the 2 rotary encoders to serve different functions depending on the active layer. I'll call them `ENC-L` and `ENC-R` for the encoder on the left side, or on the right side. Note that many of these functions are Mac-specific in my case, and if you want to use them for Windows or Linux, you'll need to tweak the key-codes generated.
84
85### Defaults
86
87If a layer is undefined somehow, I have both encoders set to be ignored on rotation.
88
89### Base layer `QWERTY`
90
91`ENC-L`
92* Rotate - Volume up and down, determined by rotation direction.
93* Click - Mute audio.
94
95`ENC-R`
96* Rotate - Undo (command-Z) and Redo (shift-command-Z)
97* Click - Toggle to `RGBLED` layer.
98
99### Symbols layer `LOWER`
100
101`ENC-L`
102* Rotate - Desktop switching on Mac
103* Click - no change (transparent)
104
105`ENC-R`
106* Rotate - App switching on Mac
107* Click - no change (transparent)
108
109### Numbers and mouse-keys layer `RAISE`
110
111`ENC-L`
112* Rotate - Mouse-wheel left and right (equal to side-swiping on Mac trackpads)
113* Click - no change (transparent)
114
115`ENC-R`
116* Rotate - Mouse-wheel up and down
117* Click - no change (transparent)
118
119### F-Keys and number-pad layer `FUNCS`
120
121`ENC-L`
122* Rotate - nothing defined, falls back to defaults
123* Click - no change (transparent)
124
125`ENC-R`
126* Rotate - nothing defined, falls back to defaults
127* Click - no change (transparent)
128
129### LED Underglow layer `RGBLED`
130
131`ENC-L`
132* Rotate - Adjust hue (color) forward and back
133* Click - Turn on/off the underglow LEDs
134
135`ENC-R`
136* Rotate - Adjust the value (brightness) up and down
137* Click - return to the base `QWERTY` layer
138
139## OLEDs
140
141There isn't much special here that isn't already in the default keymap for the Kyria. The main side (where the USB cable is plugged in) will show the QMK logo and the active layer. The secondary side (connected to the main via the TRRS cable) will show my personal logo.
diff --git a/keyboards/splitkb/kyria/keymaps/mattir/rules.mk b/keyboards/splitkb/kyria/keymaps/mattir/rules.mk
new file mode 100644
index 000000000..4f5e31be1
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/mattir/rules.mk
@@ -0,0 +1,4 @@
1OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays
2ENCODER_ENABLE = yes # Enables the use of one or more encoders
3RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
4LEADER_ENABLE = yes # Enables the use of the leader key
diff --git a/keyboards/splitkb/kyria/keymaps/mattir2/config.h b/keyboards/splitkb/kyria/keymaps/mattir2/config.h
new file mode 100644
index 000000000..ee61cfae3
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/mattir2/config.h
@@ -0,0 +1,30 @@
1/* Copyright 2021 Matt Gilbert <web@mattir.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
17#pragma once
18
19// Set the layer toggle to only need 2 clicks instead of 5
20#define TAPPING_TOGGLE 2
21
22// The Leader key allows to flexibly assign macros to key sequences.
23#define LEADER_PER_KEY_TIMING
24#define LEADER_TIMEOUT 350
25
26#define TAPPING_TERM 200
27
28// Allows to use either side as the master. Look at the documentation for info:
29// https://docs.qmk.fm/#/config_options?id=setting-handedness
30#define EE_HANDS
diff --git a/keyboards/splitkb/kyria/keymaps/mattir2/keymap.c b/keyboards/splitkb/kyria/keymaps/mattir2/keymap.c
new file mode 100644
index 000000000..53d829320
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/mattir2/keymap.c
@@ -0,0 +1,66 @@
1/* Copyright 2020 Matthew Gilbert <hello+github@mattir.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 {
19 QWERTY,
20 LOWER,
21 RAISE,
22 FUNCS
23};
24
25const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
26 [QWERTY] = LAYOUT(
27 KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
28 KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
29 KC_LEAD, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LSFT, KC_GRV, TT(FUNCS), KC_RSFT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_MINS,
30 KC_LSFT, KC_LALT, KC_LGUI, LT(LOWER, KC_SPC), LT(RAISE, KC_ENT), LT(RAISE, KC_ENT), LT(LOWER, KC_SPC), KC_BSPC, KC_LCTRL, KC_RSFT
31 ),
32 [LOWER] = LAYOUT(
33 _______, KC_EXLM, KC_AT, KC_HASH, KC_LCBR, KC_RCBR, _______, _______, _______, _______, _______, _______,
34 _______, KC_DLR, KC_PERC, KC_CIRC, KC_LPRN, KC_RPRN, KC_EQL, KC_PLUS, KC_MINS, KC_ASTR, KC_SLSH, _______,
35 _______, KC_AMPR, _______, _______, KC_LBRC, KC_RBRC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
36 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
37 ),
38 [RAISE] = LAYOUT(
39 _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
40 KC__VOLUP, _______, KC_BTN1, KC_BTN3, KC_BTN2, KC_WH_U, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_BRIU, _______,
41 KC__VOLDOWN, KC__MUTE, KC_MPRV, KC_MPLY, KC_MNXT, KC_WH_D, KC_WH_L, KC_WH_R, _______, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_BRID, _______,
42 _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______, _______
43 ),
44 [FUNCS] = LAYOUT(
45 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_PPLS, KC_P7, KC_P8, KC_P9, KC_PAST, _______,
46 _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_PMNS, KC_P4, KC_P5, KC_P6, KC_PSLS, KC_PEQL,
47 _______, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, KC_P0, KC_P1, KC_P2, KC_P3, KC_PDOT, KC_PENT,
48 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
49 ),
50};
51
52LEADER_EXTERNS();
53
54void matrix_scan_user(void) {
55 LEADER_DICTIONARY() {
56 leading = false;
57 leader_end();
58
59 SEQ_ONE_KEY(KC_A) {
60 tap_code16(SGUI(KC_L));
61 }
62 SEQ_TWO_KEYS(KC_S, KC_S) {
63 tap_code16(SGUI(KC_5));
64 }
65 }
66}
diff --git a/keyboards/splitkb/kyria/keymaps/mattir2/readme.md b/keyboards/splitkb/kyria/keymaps/mattir2/readme.md
new file mode 100644
index 000000000..117fba751
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/mattir2/readme.md
@@ -0,0 +1,67 @@
1# Mattir's keymap & configs for [Kyria](https://github.com/splitkb/kyria)
2
3## Keymap
4
5This is my customized keymap and layer setup for my second Kyria split keyboard. It's based largely on the defaults, but with several things moved to new layers. Keys in the diagrams below that are blank are "transparent" and they drop down to the lowest layer that has them defined.
6
7The PCBs for the Kyria are rev. 1.3
8Each half uses an Elite-C low-profile (rev 4) microcontroller with USB-C connector
9The boards are outfitted with Kailh Choc Jade switches and MBK keycaps
10
11Unlike my first build, this is a minimal build with no encoders, RGB LEDs, or OLED displays.
12
13### Base layer `QWERTY`
14
15```
16,-------------------------------------------. ,-------------------------------------------.
17| Esc | Q | W | E | R | T | | Y | U | I | O | P | \ | |
18|--------+------+------+------+------+------| |------+------+------+------+------+--------|
19| Tab | A | S | D | F | G | | H | J | K | L | ; : | ' " |
20|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
21| Leader | Z | X | C | V | B | Shft | ` ~ | | L3 | Shft | N | M | , < | . > | / ? | - _ |
22`----------------------+------+------+------+------|------| |------|------+------+------+------+----------------------'
23 | Shft | Alt | Supr |L1/Spc|L2/Ent| |L2/Ent|L1/Spc| Bksp | Alt | Shft |
24 `----------------------------------' `----------------------------------'
25```
26
27### Symbols layer `LOWER`
28
29```
30,-------------------------------------------. ,-------------------------------------------.
31| | ! | @ | # | { | } | | | | | | | |
32|--------+------+------+------+------+------| |------+------+------+------+------+--------|
33| | $ | % | ^ | ( | ) | | = | + | - | * | / | |
34|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
35| | & | | | [ | ] | | | | | | | | | | | |
36`----------------------+------+------+------+------|------| |------|------+------+------+------+----------------------'
37 | | | | | | | | | | | |
38 `----------------------------------' `----------------------------------'
39```
40
41### Numbers and mouse-keys layer `RAISE`
42
43```
44,-------------------------------------------. ,-------------------------------------------.
45| | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | |
46|--------+------+------+------+------+------| |------+------+------+------+------+--------|
47| Vol Up | | LMsB | MMsB | RMsB | MW Up| | Left | Down | Up | Right|Bri Up| |
48|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
49| Vol Dn | Mute | Prev | Play | Next | MW Dn| MW L | MW R | | | | MLeft| Mdown| MUp |MRight|Bri Dn| |
50`----------------------+------+------+------+------|------| |------|------+------+------+------+----------------------'
51 | | | | | | | | | Del | | |
52 `----------------------------------' `----------------------------------'
53```
54
55### F-Keys and number-pad layer `FUNCS`
56
57```
58,-------------------------------------------. ,-------------------------------------------.
59| | F1 | F2 | F3 | F4 | F5 | | np + | np 7 | np 8 | np 9 | np * | |
60|--------+------+------+------+------+------| |------+------+------+------+------+--------|
61| | F6 | F7 | F8 | F9 | F10 | | np - | np 4 | np 5 | np 6 | np / | = |
62|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
63| | F11 | F12 | | | | | | | | | np 0 | np 1 | np 2 | np 3 | np . | Enter |
64`----------------------+------+------+------+------| | | |------+------+------+------+----------------------'
65 | | | | | | | | | | | |
66 `----------------------------------' `----------------------------------'
67```
diff --git a/keyboards/splitkb/kyria/keymaps/mattir2/rules.mk b/keyboards/splitkb/kyria/keymaps/mattir2/rules.mk
new file mode 100644
index 000000000..cc5ae236f
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/mattir2/rules.mk
@@ -0,0 +1,4 @@
1OLED_DRIVER_ENABLE = no # Enables the use of OLED displays
2ENCODER_ENABLE = no # Enables the use of one or more encoders
3RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
4LEADER_ENABLE = yes # Enables the use of the leader key
diff --git a/keyboards/splitkb/kyria/keymaps/ninjonas/README.md b/keyboards/splitkb/kyria/keymaps/ninjonas/README.md
new file mode 100644
index 000000000..5c8678659
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/ninjonas/README.md
@@ -0,0 +1,113 @@
1# ninjonas Keymap for [Kyria](https://github.com/splitkb/kyria)
2
3## Keymap
4This keymap is designed based off my typing habits and is subject to change. Information about custom user macros and tap dances can be found [here](../../../../users/ninjonas).
5
6More information about the Kyria keyboard can be found [here](https://blog.splitkb.com/blog/introducing-the-kyria)
7
8### QWERTY
9```c
10// ,------—————————-------------------------------------. ,--------—————————-----------------------------------.
11// Tab, Q, W, E, R, T, Y, U, I, O, P, \
12// |--------+-----——-+——------+-——-----+——------+——-----| |------—+——------+——------+——------+——------+--------|
13// ESC, A, S, D, F, G, H, J, K, L, ;, '
14// |--------+-----——-+——------+-——-----+——------+——-----+———-----------. ,——————————————+------—+——------+——------+——------+——------+--------|
15// LShift, Z, X, C, V, B, ALT, NUMLK, N, M, ,, ., /, =
16// `--------------------------+--------+--------+-------+-------+------| |------+-------+-------+--------+--------+--------+--------+--------'
17// ALT, Cmd, Ctrl, Space, [, ], Enter, BackSP, Del, MUTE
18// `----------------------------------------' `----------------------------------------'
19```
20
21### DVORAK
22```c
23// ,------—————————-------------------------------------. ,--------—————————-----------------------------------.
24// Tab, ', ,, ., P, Y, F, G, C, R, L, \
25// |--------+-----——-+——------+-——-----+——------+——-----| |------—+——------+——------+——------+——------+--------|
26// ESC, A, O, E, U, I, D, H, T, N, S, /
27// |--------+-----——-+——------+-——-----+——------+——-----+———-----------. ,——————————————+------—+——------+——------+——------+——------+--------|
28// LShift, ;, Q, J, K, X, ALT, NUMLK, B, M, W, V, Z, =
29// `--------------------------+--------+--------+-------+-------+------| |------+-------+-------+--------+--------+--------+--------+--------'
30// ALT, Cmd, Ctrl, Space, [, ], Enter, BackSP, Del, MUTE
31// `----------------------------------------' `----------------------------------------'
32```
33
34### COLEMAK
35```c
36// ,------—————————-------------------------------------. ,--------—————————-----------------------------------.
37// Tab, Q, W, F, P, G, J, L, U, Y, ;, \
38// |--------+-----——-+——------+-——-----+——------+——-----| |------—+——------+——------+——------+——------+--------|
39// ESC, A, R, S, T, D, H, N, E, I, O, '
40// |--------+-----——-+——------+-——-----+——------+——-----+———-----------. ,——————————————+------—+——------+——------+——------+——------+--------|
41// LShift, Z, X, C, V, B, ALT, NUMLK, K, M, ,, ., /, =
42// `--------------------------+--------+--------+-------+-------+------| |------+-------+-------+--------+--------+--------+--------+--------'
43// ALT, Cmd, Ctrl, Space, [, ], Enter, BackSP, Del, MUTE
44// `----------------------------------------' `----------------------------------------'
45```
46
47### LOWER
48```c
49// ,------—————————-------------------------------------. ,--------—————————-----------------------------------.
50// , , KC_BRIU, Play, Mute, K_CSCN, PgUp, Home, Up, End, , K_MDSH
51// |--------+-----——-+——------+-——-----+——------+——-----| |------—+——------+——------+——------+——------+--------|
52// , , KC_BRID, Next, VolUp, , PgDn, Left, Down, Right, K_LOCK,
53// |--------+-----——-+——------+-——-----+——------+——-----+———-----------. ,——————————————+------—+——------+——------+——------+——------+--------|
54// , , , Prev, VolDn, [, ], , , M_CODE, M_XXX1, M_PYNV,
55// `--------------------------+--------+--------+-------+-------+------| |------+-------+-------+--------+--------+--------+--------+--------'
56//
57// `----------------------------------------' `----------------------------------------'
58```
59
60### RAISE
61```c
62// ,------—————————-------------------------------------. ,--------—————————-----------------------------------.
63// `, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -
64// |--------+-----——-+——------+-——-----+——------+——-----| |------—+——------+——------+——------+——------+--------|
65// ~, !, @, #, $, %, ^, &, *, (, ), _
66// |--------+-----——-+——------+-——-----+——------+——-----+———-----------. ,——————————————+------—+——------+——------+——------+——------+--------|
67// F11, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F12
68// `--------------------------+--------+--------+-------+-------+------| |------+-------+-------+--------+--------+--------+--------+--------'
69//
70// `----------------------------------------' `----------------------------------------'
71```
72
73### ADJUST
74```c
75// ,------—————————-------------------------------------. ,--------—————————-----------------------------------.
76// M_MAKE, EEP_RST, , , , , RGB_TOG, , , COLEMAK, DVORAK, QWERTY,
77// |--------+-----——-+——------+-——-----+——------+——-----| |------—+——------+——------+——------+——------+--------|
78// M_VRSN, M_MALL, , RGB_SAI, RGB_HUI,RGB_VAI,
79// |--------+-----——-+——------+-——-----+——------+——-----+———-----------. ,——————————————+------—+——------+——------+——------+——------+--------|
80// M_FLSH, , , RGB_SAD, RGB_HUD,RGB_VAD, RGB_M_P, RGB_M_B,RGB_M_SW, , , ,
81// `--------------------------+--------+--------+-------+-------+------| |------+-------+-------+--------+--------+--------+--------+--------'
82//
83// `----------------------------------------' `----------------------------------------'
84
85```
86
87### NUMPAD
88```c
89// ,------—————————-------------------------------------. ,--------—————————-----------------------------------.
90// , , , , , , , 7, 8, 9, +, /,
91// |--------+-----——-+——------+-——-----+——------+——-----| |------—+——------+——------+——------+——------+--------|
92// , , , , , , , 4, 5, 6, -, *,
93// |--------+-----——-+——------+-——-----+——------+——-----+———-----------. ,——————————————+------—+——------+——------+——------+——------+--------|
94// , , , , , , , , , , 0, 1, 2, 3, ., :,
95// `--------------------------+--------+--------+-------+-------+------| |------+-------+-------+--------+--------+--------+--------+--------'
96//
97// `----------------------------------------' `----------------------------------------'
98```
99
100<!--
101### TEMPLATE
102```c
103// ,------—————————-------------------------------------. ,--------—————————-----------------------------------.
104// XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
105// |--------+-----——-+——------+-——-----+——------+——-----| |------—+——------+——------+——------+——------+--------|
106// XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
107// |--------+-----——-+——------+-——-----+——------+——-----+———-----------. ,——————————————+------—+——------+——------+——------+——------+--------|
108// XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
109// `--------------------------+--------+--------+-------+-------+------| |------+-------+-------+--------+--------+--------+--------+--------'
110// XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX
111// `----------------------------------------' `----------------------------------------'
112```
113--> \ No newline at end of file
diff --git a/keyboards/splitkb/kyria/keymaps/ninjonas/config.h b/keyboards/splitkb/kyria/keymaps/ninjonas/config.h
new file mode 100644
index 000000000..5673e6c3d
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/ninjonas/config.h
@@ -0,0 +1,37 @@
1/* Copyright 2020 ninjonas
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
17#pragma once
18
19#define TAPPING_TERM 200
20
21#ifdef OLED_DRIVER_ENABLE
22 #define OLED_DISPLAY_128X64
23 #define OLED_TIMEOUT 15000
24#endif
25
26#ifdef RGBLIGHT_ENABLE
27# define RGBLIGHT_SLEEP
28# define RGBLIGHT_LIMIT_VAL 200
29# define RGBLIGHT_HUE_STEP 8
30# define RGBLIGHT_SAT_STEP 8
31# define RGBLIGHT_VAL_STEP 8
32# define RGBLIGHT_SPLIT
33#endif
34
35// If you are using an Elite C rev3 on the slave side, uncomment the lines below:
36#define SPLIT_USB_DETECT
37#define SPLIT_USB_TIMEOUT 1000
diff --git a/keyboards/splitkb/kyria/keymaps/ninjonas/keymap.c b/keyboards/splitkb/kyria/keymaps/ninjonas/keymap.c
new file mode 100644
index 000000000..ae4b3b7ba
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/ninjonas/keymap.c
@@ -0,0 +1,118 @@
1/* Copyright 2020 ninjonas
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 "ninjonas.h"
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 [_QWERTY] = LAYOUT_wrapper(
22// ,------—————————-------------------------------------. ,--------—————————-----------------------------------.
23 _____________________QWERTY_L1______________________, _____________________QWERTY_R1______________________,
24// |--------+-----——-+——------+-——-----+——------+——-----| |------—+——------+——------+——------+——------+--------|
25 _____________________QWERTY_L2______________________, _____________________QWERTY_R2______________________,
26// |--------+-----——-+——------+-——-----+——------+——-----+———-----------. ,——————————————+------—+——------+——------+——------+——------+--------|
27 _____________________QWERTY_L3______________________,XXXXXXX,KC_LALT, T_CPAP,XXXXXXX,_____________________QWERTY_R3______________________,
28// `--------------------------+--------+--------+-------+-------+------| |------+-------+-------+--------+--------+--------+--------+--------'
29 _____________MOD_LEFT_____________,T_LBRC, T_RBRC,________MOD_RIGHT________,KC_MUTE
30// `----------------------------------------' `----------------------------------------'
31 ),
32
33 [_DVORAK] = LAYOUT_wrapper(
34// ,------—————————-------------------------------------. ,--------—————————-----------------------------------.
35 _____________________DVORAK_L1______________________, _____________________DVORAK_R1______________________,
36// |--------+-----——-+——------+-——-----+——------+——-----| |------—+——------+——------+——------+——------+--------|
37 _____________________DVORAK_L2______________________, _____________________DVORAK_R2______________________,
38// |--------+-----——-+——------+-——-----+——------+——-----+———-----------. ,——————————————+------—+——------+——------+——------+——------+--------|
39 _____________________DVORAK_L3______________________,XXXXXXX,KC_LALT, T_CPAP,XXXXXXX,_____________________DVORAK_R3______________________,
40// `--------------------------+--------+--------+-------+-------+------| |------+-------+-------+--------+--------+--------+--------+--------'
41 _____________MOD_LEFT_____________,T_LBRC, T_RBRC,________MOD_RIGHT________,KC_MUTE
42// `----------------------------------------' `----------------------------------------'
43 ),
44
45 [_COLEMAK] = LAYOUT_wrapper(
46// ,------—————————-------------------------------------. ,--------—————————-----------------------------------.
47 _____________________COLEMAK_L1_____________________, _____________________COLEMAK_R1_____________________,
48// |--------+-----——-+——------+-——-----+——------+——-----| |------—+——------+——------+——------+——------+--------|
49 _____________________COLEMAK_L2_____________________, _____________________COLEMAK_R2_____________________,
50// |--------+-----——-+——------+-——-----+——------+——-----+———-----------. ,——————————————+------—+——------+——------+——------+——------+--------|
51 _____________________COLEMAK_L3_____________________,XXXXXXX,KC_LALT, T_CPAP,XXXXXXX,_____________________COLEMAK_R3_____________________,
52// `--------------------------+--------+--------+-------+-------+------| |------+-------+-------+--------+--------+--------+--------+--------'
53 _____________MOD_LEFT_____________,T_LBRC, T_RBRC,________MOD_RIGHT________,KC_MUTE
54// `----------------------------------------' `----------------------------------------'
55 ),
56
57 [_LOWER] = LAYOUT_wrapper(
58// ,------—————————-------------------------------------. ,--------—————————-----------------------------------.
59 _____________________LOWER_L1_______________________, _____________________LOWER_R1_______________________,
60// |--------+-----——-+——------+-——-----+——------+——-----| |------—+——------+——------+——------+——------+--------|
61 _____________________LOWER_L2_______________________, _____________________LOWER_R2_______________________,
62// |--------+-----——-+——------+-——-----+——------+——-----+———-----------. ,——————————————+------—+——------+——------+——------+——------+--------|
63 _____________________LOWER_L3_______________________,_______,_______, _______,_______,_____________________LOWER_R3_______________________,
64// `--------------------------+--------+--------+-------+-------+------| |------+-------+-------+--------+--------+--------+--------+--------'
65 _______,_______,_______,_______,_______, _______,_______,_______,_______,_______
66// `----------------------------------------' `----------------------------------------'
67 ),
68
69 [_RAISE] = LAYOUT_wrapper(
70// ,------—————————-------------------------------------. ,--------—————————-----------------------------------.
71 _____________________NUM_LEFT_______________________, _____________________NUM_RIGHT______________________,
72// |--------+-----——-+——------+-——-----+——------+——-----| |------—+——------+——------+——------+——------+--------|
73 _____________________SYM_LEFT_______________________, _____________________SYM_RIGHT______________________,
74// |--------+-----——-+——------+-——-----+——------+——-----+———-----------. ,——————————————+------—+——------+——------+——------+——------+--------|
75 _____________________FUNC_LEFT______________________,_______,_______, K_CPRF,_______,_____________________FUNC_RIGHT_____________________,
76// `--------------------------+--------+--------+-------+-------+------| |------+-------+-------+--------+--------+--------+--------+--------'
77 _______,_______,_______,_______,_______, _______,_______,_______,_______,_______
78// `----------------------------------------' `----------------------------------------'
79 ),
80
81 [_ADJUST] = LAYOUT_wrapper(
82// ,------—————————-------------------------------------. ,--------—————————-----------------------------------.
83 _____________________ADJUST_L1______________________, _____________________ADJUST_R1______________________,
84// |--------+-----——-+——------+-——-----+——------+——-----| |------—+——------+——------+——------+——------+--------|
85 _____________________ADJUST_L2______________________, _____________________ADJUST_R2______________________,
86// |--------+-----——-+——------+-——-----+——------+——-----+———-----------. ,——————————————+------—+——------+——------+——------+——------+--------|
87 _____________________ADJUST_L3______________________,_______,_______, _______,_______,_____________________ADJUST_R3______________________,
88// `--------------------------+--------+--------+-------+-------+------| |------+-------+-------+--------+--------+--------+--------+--------'
89 _______,_______,_______,_______,_______, _______,_______,_______,_______,_______
90// `----------------------------------------' `----------------------------------------'
91 ),
92
93 [_NUMPAD] = LAYOUT_wrapper(
94// ,------—————————-------------------------------------. ,--------—————————-----------------------------------.
95 _______, _______, _______, _______, _______,_______, _____________________NUMPAD_1_______________________,
96// |--------+-----——-+——------+-——-----+——------+——-----| |------—+——------+——------+——------+——------+--------|
97 _______, _______, _______, _______, _______,_______, _____________________NUMPAD_2_______________________,
98// |--------+-----——-+——------+-——-----+——------+——-----+———-----------. ,——————————————+------—+——------+——------+——------+——------+--------|
99 _______, _______, _______, _______,_______,_______,_______,_______, _______,_______,_____________________NUMPAD_3_______________________,
100// `--------------------------+--------+--------+-------+-------+------| |------+-------+-------+--------+--------+--------+--------+--------'
101 _______,_______,_______,_______,_______, _______,_______,_______,_______,_______
102// `----------------------------------------' `----------------------------------------'
103 ),
104
105/*
106 [_TEMPLATE] = LAYOUT_wrapper(
107// ,------—————————-------------------------------------. ,--------—————————-----------------------------------.
108 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
109// |--------+-----——-+——------+-——-----+——------+——-----| |------—+——------+——------+——------+——------+--------|
110 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
111// |--------+-----——-+——------+-——-----+——------+——-----+———-----------. ,——————————————+------—+——------+——------+——------+——------+--------|
112 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
113// `--------------------------+--------+--------+-------+-------+------| |------+-------+-------+--------+--------+--------+--------+--------'
114 XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX
115// `----------------------------------------' `----------------------------------------'
116 ),
117*/
118}; \ No newline at end of file
diff --git a/keyboards/splitkb/kyria/keymaps/ninjonas/oled.c b/keyboards/splitkb/kyria/keymaps/ninjonas/oled.c
new file mode 100644
index 000000000..65976205b
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/ninjonas/oled.c
@@ -0,0 +1,209 @@
1/* Copyright 2020 ninjonas
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 "ninjonas.h"
17
18#ifdef OLED_DRIVER_ENABLE
19oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; }
20
21static void render_logo(void) {
22 static const char PROGMEM logo[] = {
23 // Converter: https://javl.github.io/image2cpp/
24 // Image Dimensions: 128x64
25 // Code Output Format: Plain Bytes
26 // Draw Mode: Vertical, 1 bit per pixel
270x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0xc0, 0x00, 0x00, 0xe0,
280xe0, 0xe0, 0xe0, 0x00, 0x00, 0x80, 0xe0, 0xe0, 0xe0, 0xe0, 0x80, 0x00, 0x00, 0xe0, 0xe0, 0xe0,
290xe0, 0x00, 0x60, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0xe0, 0x80, 0x00, 0x00,
300xc0, 0xe0, 0xe0, 0xe0, 0x20, 0x60, 0xe0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0,
310xe0, 0x00, 0x00, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0xc0, 0x00, 0x00, 0x00,
320x80, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0x80, 0x00, 0xe0, 0xe0, 0xfc, 0xfe,
330xfe, 0xfe, 0xee, 0xee, 0x0e, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0x80,
340x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0x80, 0x00, 0x00,
350x00, 0x00, 0x79, 0xfd, 0xfd, 0xfd, 0xec, 0xee, 0x76, 0x7f, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00,
360x07, 0x3f, 0xff, 0xfc, 0xf8, 0xff, 0x7f, 0x07, 0x0f, 0x7f, 0xff, 0xf8, 0xfc, 0xff, 0x3f, 0x07,
370x00, 0x00, 0x00, 0x03, 0x1f, 0xff, 0xfe, 0xf0, 0xff, 0x7f, 0x0f, 0x07, 0x3f, 0xff, 0xfc, 0xf8,
380xff, 0x7f, 0x0f, 0x01, 0x00, 0x00, 0x01, 0x0f, 0x3f, 0xff, 0xfe, 0xf8, 0xff, 0xff, 0x1f, 0x03,
390x00, 0x00, 0x1f, 0x7f, 0x7f, 0xff, 0xf6, 0xe6, 0xe6, 0xf7, 0xf7, 0x77, 0x37, 0x17, 0x00, 0x30,
400x79, 0xfd, 0xfd, 0xfd, 0xee, 0xee, 0x76, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff,
410xff, 0xff, 0x00, 0x00, 0x00, 0x3f, 0x7f, 0x7f, 0xff, 0xf1, 0xe0, 0xe0, 0xff, 0xff, 0x7f, 0x3f,
420x0e, 0x00, 0x0e, 0x3f, 0x7f, 0xff, 0xff, 0xe0, 0xe0, 0xe1, 0xff, 0x7f, 0x7f, 0x3f, 0x04, 0x00,
430x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
440x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
450x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
460xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x07, 0x03, 0x00, 0x00, 0x00,
470x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
480x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
490x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
500x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
510x00, 0x0c, 0x3c, 0xfc, 0xfc, 0xfc, 0xc0, 0x00, 0xe0, 0xfc, 0xfc, 0x7c, 0x1c, 0x00, 0xf0, 0xf8,
520xf8, 0xfc, 0xdc, 0xdc, 0xdc, 0xfc, 0xfc, 0xf8, 0xf0, 0xe0, 0x00, 0x00, 0x30, 0xb8, 0xbc, 0xbc,
530xdc, 0xdc, 0xdc, 0xfc, 0xfc, 0xf8, 0xf0, 0x00, 0x1c, 0x1c, 0xff, 0xff, 0xff, 0xff, 0x1d, 0x1d,
540x00, 0xf0, 0xf8, 0xf8, 0xfc, 0x3c, 0x1c, 0x1c, 0xfc, 0xfc, 0xf8, 0xf0, 0xc0, 0x00, 0xe0, 0xf0,
550xf8, 0xfc, 0x3c, 0x1c, 0x1c, 0x3c, 0xfc, 0xf8, 0xf8, 0xe0, 0x00, 0x00, 0x20, 0xb8, 0xbc, 0xbc,
560xbc, 0xdc, 0xdc, 0xfc, 0xfc, 0xfc, 0xf8, 0xe0, 0x00, 0x0c, 0x7c, 0xfc, 0xfc, 0xc0, 0x00, 0xe0,
570xfc, 0xfc, 0xfc, 0xfc, 0xf0, 0x80, 0x00, 0xf8, 0xfc, 0xfc, 0x3c, 0x04, 0x0c, 0x7c, 0xfc, 0xfc,
580xf0, 0x00, 0xc0, 0xfc, 0xfc, 0x7c, 0xfc, 0xf8, 0xc0, 0x00, 0xf0, 0xfc, 0xfc, 0x7c, 0x0c, 0x00,
590x00, 0x00, 0xc0, 0xc1, 0xc7, 0xff, 0xff, 0xff, 0x7f, 0x1f, 0x03, 0x00, 0x00, 0x00, 0x07, 0x0f,
600x1f, 0x1f, 0x1e, 0x1c, 0x1c, 0x1e, 0x1e, 0x0e, 0x06, 0x00, 0x00, 0x06, 0x0f, 0x1f, 0x1f, 0x1f,
610x1d, 0x1d, 0x0e, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, 0x00,
620x00, 0x07, 0x0f, 0x0f, 0x1f, 0x1e, 0x1c, 0x1c, 0x1f, 0x1f, 0x0f, 0x07, 0x01, 0x00, 0x03, 0x07,
630x0f, 0x1f, 0x1e, 0x1c, 0x1c, 0x1e, 0x1f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x0f, 0x1f, 0x1f, 0x1f,
640x1d, 0x1d, 0x0c, 0x0f, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x03, 0x1f, 0x1f, 0x1e, 0x1f,
650x0f, 0x01, 0x00, 0x07, 0x1f, 0x1f, 0x1f, 0x1f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f,
660x1f, 0x1e, 0x1f, 0x1f, 0x03, 0x00, 0x03, 0x1f, 0x1f, 0x1e, 0x1f, 0x0f, 0x01, 0x00, 0x00, 0x00,
670x00, 0x80, 0xc1, 0xf1, 0xf9, 0xf9, 0xf9, 0xb8, 0xb8, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80,
680x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
690x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
700x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00,
710x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80,
720x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00,
730x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
740x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
750x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x03, 0x7c, 0xfe, 0xff, 0xff, 0xc7, 0x83, 0x83,
760xc7, 0xff, 0xff, 0xff, 0x7c, 0x00, 0x00, 0x7c, 0xff, 0xff, 0xff, 0xc7, 0x83, 0x83, 0xc7, 0xff,
770xff, 0xfe, 0x7c, 0x00, 0xc0, 0xe6, 0xf7, 0xf7, 0xf7, 0xbb, 0xbb, 0xdb, 0xff, 0xff, 0xff, 0xfe,
780x00, 0x00, 0x03, 0x1f, 0xff, 0xff, 0xf0, 0xe0, 0xfe, 0xff, 0x1f, 0x3f, 0xff, 0xfe, 0xe0, 0xf0,
790xff, 0xff, 0x1f, 0x03, 0x00, 0x01, 0x0f, 0x7f, 0xff, 0xf8, 0xc0, 0xfc, 0xff, 0x3f, 0x1f, 0xff,
800xfe, 0xf0, 0xe0, 0xff, 0xff, 0x3f, 0x07, 0x00, 0x01, 0x07, 0x3f, 0xff, 0xff, 0xf8, 0xe0, 0xfc,
810xff, 0x7f, 0x0f, 0x03, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xdb, 0x9b, 0x9b, 0xdf, 0xdf, 0xdf, 0xde,
820x1c, 0x00, 0xc0, 0xe6, 0xf7, 0xf7, 0xf7, 0xbb, 0xbb, 0xdb, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00,
830x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03,
840x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
850x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x03, 0x03, 0x03, 0x03,
860x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03,
870x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00,
880x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x38, 0x38, 0x38, 0x3f, 0x3f, 0x1f, 0x0f,
890x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00,
900x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00
91 };
92 oled_write_raw_P(logo, sizeof(logo));
93}
94
95static void render_qmk_logo(void) {
96 static const char PROGMEM qmk_logo[] = {
97 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
98 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
99 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0};
100
101 oled_write_P(qmk_logo, false);
102}
103
104void oled_white_space(void){
105 oled_write_P(PSTR(" "), false);
106}
107
108void oled_slash_separator(void){
109 oled_write_P(PSTR(" / "), false);
110}
111
112void render_layout_state(void) {
113 oled_write_P(PSTR("Layout: "), false);
114 switch (biton32(default_layer_state)) {
115 case _COLEMAK:
116 oled_write_P(PSTR("Colemak"), false);
117 break;
118 case _DVORAK:
119 oled_write_P(PSTR("Dvorak"), false);
120 break;
121 case _QWERTY:
122 oled_write_P(PSTR("Qwerty"), false);
123 break;
124 default:
125 oled_write_ln_P(PSTR("Undefined"), false);
126 }
127}
128#ifdef ENCODER_ENABLE
129static void render_encoder_state(void) {
130 oled_write_P(PSTR("\nEnc: "), false);
131 bool lower = layer_state_is(_LOWER) & !layer_state_is(_ADJUST);
132 bool raise = layer_state_is(_RAISE) & !layer_state_is(_ADJUST);
133 bool adjust = layer_state_is(_ADJUST);
134
135 if(lower){
136 oled_write_P(PSTR("APPSW"), left_encoder_rotated);
137 oled_slash_separator();
138 oled_write_P(PSTR("UPDN"), right_encoder_rotated);
139 } else if(raise){
140 oled_write_P(PSTR("PGUD"), left_encoder_rotated);
141 oled_slash_separator();
142 oled_write_P(PSTR("TABSW"), right_encoder_rotated);
143 } else if(adjust){
144 oled_write_P(PSTR("RHUE"), left_encoder_rotated);
145 oled_slash_separator();
146 oled_write_P(PSTR("RBRI"), right_encoder_rotated);
147 } else {
148 oled_write_P(PSTR("BRI"), left_encoder_rotated);
149 oled_slash_separator();
150 oled_write_P(PSTR("VOL"), right_encoder_rotated);
151 }
152
153 if (timer_elapsed(encoder_rotated_timer) > 200) {
154 left_encoder_rotated = false;
155 right_encoder_rotated = false;
156 }
157}
158#endif
159
160static void render_layer_state(void) {
161 oled_write_P(PSTR("\nLayer:"), false);
162 bool lower = layer_state_is(_LOWER) & !layer_state_is(_ADJUST);
163 bool raise = layer_state_is(_RAISE) & !layer_state_is(_ADJUST);
164 bool adjust = layer_state_is(_ADJUST);
165 bool numpad = layer_state_is(_NUMPAD);
166
167 if(lower){
168 oled_write_P(PSTR(" Lower "), true);
169 } else if(raise){
170 oled_write_P(PSTR(" Raise "), true);
171 } else if(adjust){
172 oled_write_P(PSTR(" Adjust "), true);
173 } else if(numpad) {
174 oled_write_P(PSTR(" Numpad "), true);
175 } else {
176 oled_write_P(PSTR(" Default"), false);
177 }
178}
179
180void render_mod_state(uint8_t modifiers) {
181 oled_write_P(PSTR("\nMods: "), false);
182 oled_write_P(PSTR("SHF"), (modifiers & MOD_MASK_SHIFT));
183 oled_white_space();
184 oled_write_P(PSTR("CTL"), (modifiers & MOD_MASK_CTRL));
185 oled_white_space();
186 oled_write_P(PSTR("ALT"), (modifiers & MOD_MASK_ALT));
187 oled_white_space();
188 oled_write_P(PSTR("GUI"), (modifiers & MOD_MASK_GUI));
189}
190
191static void render_status(void) {
192 render_qmk_logo();
193 render_layout_state();
194 #ifdef ENCODER_ENABLE
195 render_encoder_state();
196 #endif
197 render_layer_state();
198 render_mod_state(get_mods()|get_oneshot_mods());
199}
200
201void oled_task_user(void) {
202 if (is_keyboard_master()) {
203 render_status();
204 } else {
205 render_logo();
206 oled_scroll_left();
207 }
208}
209#endif \ No newline at end of file
diff --git a/keyboards/splitkb/kyria/keymaps/ninjonas/rules.mk b/keyboards/splitkb/kyria/keymaps/ninjonas/rules.mk
new file mode 100644
index 000000000..94c06b80e
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/ninjonas/rules.mk
@@ -0,0 +1,6 @@
1OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays
2ENCODER_ENABLE = yes # Enables the use of one or more encoders
3RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
4LTO_ENABLE = yes
5
6SRC += oled.c
diff --git a/keyboards/splitkb/kyria/keymaps/pierrec83/config.h b/keyboards/splitkb/kyria/keymaps/pierrec83/config.h
new file mode 100644
index 000000000..eb222c0d7
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/pierrec83/config.h
@@ -0,0 +1,65 @@
1/* Copyright 2020 Pierre Chevalier <pierrechevalier83@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
17#pragma once
18
19#ifdef OLED_DRIVER_ENABLE
20 #define OLED_DISPLAY_128X64
21#endif
22
23#ifdef RGBLIGHT_ENABLE
24 #define RGBLIGHT_ANIMATIONS
25 #define RGBLIGHT_HUE_STEP 8
26 #define RGBLIGHT_SAT_STEP 8
27 #define RGBLIGHT_VAL_STEP 8
28#endif
29
30#ifdef ENCODER_ENABLE
31 #define ENCODER_DIRECTION_FLIP
32 #define ENCODER_RESOLUTION 2
33#endif
34
35#define TAPPING_TERM 200
36#define PERMISSIVE_HOLD
37#define IGNORE_MOD_TAP_INTERRUPT
38#define TAPPING_FORCE_HOLD
39// Allows to use either side as the master. Look at the documentation for info:
40// https://docs.qmk.fm/#/config_options?id=setting-handedness
41#define EE_HANDS
42
43// Allows media codes to properly register in macros and rotary encoder code
44#define TAP_CODE_DELAY 10
45
46// If you are using an Elite C rev3 on the slave side, uncomment the lines below:
47// #define SPLIT_USB_DETECT
48// #define NO_USB_STARTUP_CHECK
49
50// Set the mouse settings to a comfortable speed/accuracy trade-off
51// Assume the screen refresh rate is 60 Htz or higher
52// The default is 50. This makes the mouse ~3 times faster and more accurate
53#define MOUSEKEY_INTERVAL 16
54// The default is 20. Since we made the mouse about 3 times faster with the previous setting,
55// give it more time to accelerate to max speed to retain precise control over short distances.
56#define MOUSEKEY_TIME_TO_MAX 40
57// The default is 300. Let's try and make this as low as possible while keeping the cursor responsive
58#define MOUSEKEY_DELAY 100
59// It makes sense to use the same delay for the mouseweel
60#define MOUSEKEY_WHEEL_DELAY 100
61// The default is 100
62#define MOUSEKEY_WHEEL_INTERVAL 50
63// The default is 40
64#define MOUSEKEY_WHEEL_TIME_TO_MAX 100
65
diff --git a/keyboards/splitkb/kyria/keymaps/pierrec83/encoders.c b/keyboards/splitkb/kyria/keymaps/pierrec83/encoders.c
new file mode 100644
index 000000000..7505925e7
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/pierrec83/encoders.c
@@ -0,0 +1,64 @@
1#include QMK_KEYBOARD_H
2#include "layers.h"
3
4#ifdef ENCODER_ENABLE
5
6bool encoder_update_user(uint8_t index, bool clockwise) {
7 if (index == 0) {
8 switch (get_highest_layer(layer_state)) {
9 case WORKMAN:
10 if (clockwise) {
11 tap_code(KC_VOLU);
12 } else {
13 tap_code(KC_VOLD);
14 }
15 break;
16 case SYMBOLS:
17 case FN:
18 if (clockwise) {
19 tap_code(KC_PGDN);
20 } else {
21 tap_code(KC_PGUP);
22 }
23 break;
24 case NAV:
25 case RNAV:
26 default:
27 if (clockwise) {
28 tap_code16(C(A(KC_RIGHT)));
29 } else {
30 tap_code16(C(A(KC_LEFT)));
31 }
32 break;
33 }
34 } else if (index == 1) {
35 switch (get_highest_layer(layer_state)) {
36 case WORKMAN:
37 if (clockwise) {
38 tap_code(KC_BRIU);
39 } else {
40 tap_code(KC_BRID);
41 }
42 break;
43 case SYMBOLS:
44 case FN:
45 if (clockwise) {
46 tap_code16(C(KC_RIGHT));
47 } else {
48 tap_code16(C(KC_LEFT));
49 }
50 break;
51 case NAV:
52 case RNAV:
53 default:
54 if (clockwise) {
55 tap_code16(C(KC_TAB));
56 } else {
57 tap_code16(C(S(KC_TAB)));
58 }
59 break;
60 }
61 }
62 return true;
63}
64#endif
diff --git a/keyboards/splitkb/kyria/keymaps/pierrec83/keymap.c b/keyboards/splitkb/kyria/keymaps/pierrec83/keymap.c
new file mode 100644
index 000000000..204895dc1
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/pierrec83/keymap.c
@@ -0,0 +1,18 @@
1#include QMK_KEYBOARD_H
2
3/* THIS FILE WAS GENERATED!
4 *
5 * This file was generated by qmk json2c. You may or may not want to
6 * edit it directly.
7 */
8
9const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
10 [0] = LAYOUT(KC_NO, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_NO, KC_NO, LSFT_T(KC_A), LT(5,KC_S), LT(1,KC_H), LT(3,KC_T), KC_G, KC_Y, LT(4,KC_N), LT(2,KC_E), LT(6,KC_O), LSFT_T(KC_I), KC_NO, KC_NO, KC_Z, KC_X, KC_M, KC_C, KC_V, TG(2), TG(2), TG(1), TG(1), KC_K, KC_L, LALT_T(KC_COMM), LCTL_T(KC_DOT), KC_SLSH, KC_NO, KC_NO, KC_NO, LCA(KC_LEFT), KC_BSPC, KC_NO, KC_NO, LT(7,KC_SPC), LCA(KC_RGHT), KC_NO, KC_NO),
11 [1] = LAYOUT(KC_TRNS, KC_TRNS, LCTL(LSFT(KC_C)), KC_PGUP, LCTL(LSFT(KC_V)), KC_TRNS, RGB_MOD, KC_BTN1, KC_WH_U, KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN2, KC_NO, KC_BTN1, KC_TRNS, RGB_RMOD, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, KC_TRNS, KC_TRNS, TG(1), TG(1), KC_TRNS, KC_TRNS, RGB_TOG, KC_WH_L, KC_WH_D, KC_WH_R, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, LCTL(LSFT(KC_TAB)), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, LCTL(KC_TAB), KC_TRNS, KC_TRNS),
12 [2] = LAYOUT(KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, KC_TRNS, RGB_MOD, KC_TRNS, KC_WH_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, KC_TRNS, RGB_RMOD, KC_LGUI, KC_NO, LCTL(KC_LALT), LCA(KC_LSFT), KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END, KC_TRNS, KC_TRNS, KC_TRNS, TG(2), TG(2), RGB_TOG, KC_TRNS, KC_WH_D, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, LGUI(KC_LEFT), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, LGUI(KC_RGHT), KC_TRNS, KC_TRNS),
13 [3] = LAYOUT(KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UNDS, KC_PIPE, KC_QUOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_CIRC, KC_ASTR, KC_AMPR, KC_NO, KC_TRNS, KC_HASH, KC_TILD, KC_SLSH, KC_DQUO, KC_DLR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_BSLS, KC_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BRID, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BRIU, KC_TRNS, KC_TRNS),
14 [4] = LAYOUT(KC_TRNS, KC_TRNS, KC_COLN, KC_LT, KC_GT, KC_SCLN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LCBR, KC_RCBR, KC_LPRN, KC_RPRN, KC_AT, KC_TRNS, KC_NO, KC_EQL, KC_PLUS, KC_PERC, KC_TRNS, KC_TRNS, KC_TRNS, KC_EXLM, KC_LBRC, KC_RBRC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_TRNS, KC_TRNS),
15 [5] = LAYOUT(KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_F4, KC_F5, KC_F6, KC_F11, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, LCTL(KC_LALT), KC_TRNS, KC_TRNS, KC_TRNS),
16 [6] = LAYOUT(KC_TRNS, KC_PSLS, KC_7, KC_8, KC_9, KC_PPLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_0, KC_4, KC_5, KC_6, KC_PMNS, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PAST, KC_1, KC_2, KC_3, KC_PEQL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
17 [7] = LAYOUT(KC_TRNS, KC_TRNS, KC_ESC, KC_COLN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, KC_TRNS, KC_TRNS, KC_PERC, KC_SLSH, KC_ENT, KC_EXLM, KC_TRNS, KC_LGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RALT_T(KC_COMM), RCTL_T(KC_DOT), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TAB, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS)
18};
diff --git a/keyboards/splitkb/kyria/keymaps/pierrec83/keymap.json b/keyboards/splitkb/kyria/keymaps/pierrec83/keymap.json
new file mode 100644
index 000000000..79d88009c
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/pierrec83/keymap.json
@@ -0,0 +1 @@
{"version":1,"notes":"My awesome keymap","documentation":"\"This file is a QMK Configurator export. You can import this at <https://config.qmk.fm>. It can also be used directly with QMK's source code.\n\nTo setup your QMK environment check out the tutorial: <https://docs.qmk.fm/#/newbs>\n\nYou can convert this file to a keymap.c using this command: `qmk json2c {keymap}`\n\nYou can compile this keymap using this command: `qmk compile {keymap}`\"\n","keyboard":"kyria/rev1","keymap":"pierrec83","layout":"LAYOUT","layers":[["KC_NO","KC_Q","KC_D","KC_R","KC_W","KC_B","KC_J","KC_F","KC_U","KC_P","KC_SCLN","KC_NO","KC_NO","LSFT_T(KC_A)","LT(5,KC_S)","LT(1,KC_H)","LT(3,KC_T)","KC_G","KC_Y","LT(4,KC_N)","LT(2,KC_E)","LT(6,KC_O)","LSFT_T(KC_I)","KC_NO","KC_NO","KC_Z","KC_X","KC_M","KC_C","KC_V","TG(2)","TG(2)","TG(1)","TG(1)","KC_K","KC_L","LALT_T(KC_COMM)","LCTL_T(KC_DOT)","KC_SLSH","KC_NO","KC_NO","KC_NO","LCA(KC_LEFT)","KC_BSPC","KC_NO","KC_NO","LT(7,KC_SPC)","LCA(KC_RGHT)","KC_NO","KC_NO"],["KC_TRNS","KC_TRNS","ANY(LCTL(LSFT(KC_C)))","KC_PGUP","ANY(LCTL(LSFT(KC_V)))","KC_TRNS","RGB_MOD","KC_BTN1","KC_WH_U","KC_BTN2","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_BTN2","KC_NO","KC_BTN1","KC_TRNS","RGB_RMOD","KC_MS_L","KC_MS_D","KC_MS_U","KC_MS_R","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_PGDN","KC_TRNS","KC_TRNS","TG(1)","TG(1)","KC_TRNS","KC_TRNS","RGB_TOG","KC_WH_L","KC_WH_D","KC_WH_R","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","ANY(LCTL(LSFT(KC_TAB)))","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","LCTL(KC_TAB)","KC_TRNS","KC_TRNS"],["KC_TRNS","KC_TRNS","KC_TRNS","KC_PGUP","KC_TRNS","KC_TRNS","RGB_MOD","KC_TRNS","KC_WH_U","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_LEFT","KC_UP","KC_DOWN","KC_RGHT","KC_TRNS","RGB_RMOD","KC_LGUI","KC_NO","LCTL(KC_LALT)","LCA(KC_LSFT)","KC_TRNS","KC_TRNS","KC_TRNS","KC_HOME","KC_PGDN","KC_END","KC_TRNS","KC_TRNS","KC_TRNS","TG(2)","TG(2)","RGB_TOG","KC_TRNS","KC_WH_D","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","LGUI(KC_LEFT)","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","LGUI(KC_RGHT)","KC_TRNS","KC_TRNS"],["KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_UNDS","KC_PIPE","KC_QUOT","KC_TRNS","KC_TRNS","KC_TRNS","KC_CIRC","KC_ASTR","KC_AMPR","KC_NO","KC_TRNS","KC_HASH","KC_TILD","KC_SLSH","KC_DQUO","KC_DLR","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_MINS","KC_BSLS","KC_GRV","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_BRID","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_BRIU","KC_TRNS","KC_TRNS"],["KC_TRNS","KC_TRNS","KC_COLN","KC_LT","KC_GT","KC_SCLN","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_LCBR","KC_RCBR","KC_LPRN","KC_RPRN","KC_AT","KC_TRNS","KC_NO","KC_EQL","KC_PLUS","KC_PERC","KC_TRNS","KC_TRNS","KC_TRNS","KC_EXLM","KC_LBRC","KC_RBRC","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_VOLD","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_VOLU","KC_TRNS","KC_TRNS"],["KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_F7","KC_F8","KC_F9","KC_F10","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_NO","KC_TRNS","KC_TRNS","KC_TRNS","KC_F4","KC_F5","KC_F6","KC_F11","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_F1","KC_F2","KC_F3","KC_F12","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","LCTL(KC_LALT)","KC_TRNS","KC_TRNS","KC_TRNS"],["KC_TRNS","KC_PSLS","KC_7","KC_8","KC_9","KC_PPLS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_0","KC_4","KC_5","KC_6","KC_PMNS","KC_TRNS","KC_TRNS","KC_NO","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_PAST","KC_1","KC_2","KC_3","KC_PEQL","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS"],["KC_TRNS","KC_TRNS","KC_ESC","KC_COLN","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_DEL","KC_TRNS","KC_TRNS","KC_TRNS","KC_PERC","KC_SLSH","KC_ENT","KC_EXLM","KC_TRNS","KC_LGUI","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","RALT_T(KC_COMM)","RCTL_T(KC_DOT)","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TAB","KC_TRNS","KC_TRNS","KC_NO","KC_TRNS","KC_TRNS","KC_TRNS"]],"author":"Anonymous"} \ No newline at end of file
diff --git a/keyboards/splitkb/kyria/keymaps/pierrec83/layers.h b/keyboards/splitkb/kyria/keymaps/pierrec83/layers.h
new file mode 100644
index 000000000..12a988d37
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/pierrec83/layers.h
@@ -0,0 +1,7 @@
1enum layers {
2 WORKMAN = 0,
3 RNAV,
4 NAV,
5 SYMBOLS,
6 FN,
7};
diff --git a/keyboards/splitkb/kyria/keymaps/pierrec83/readme.md b/keyboards/splitkb/kyria/keymaps/pierrec83/readme.md
new file mode 100644
index 000000000..fae22f836
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/pierrec83/readme.md
@@ -0,0 +1,44 @@
1@pierrec83's keymap for the Kyria
2===
3
4A comfortable for me using 34 keys.
5
6This keymap has evolved over a period of time from iterating as I observed pain points in my interacting with my home and work computers (MacOS and Linux. I edited many of the shortcuts in MacOS to match those in Linux for consistency).
7
8Features
9---
10* Mouse keys with constants tuned so the keyboard usable for me as my sole pointing device
11* Homerow layers activation
12* Minimal unhoming of the thumbs (the one side thumb key I do use does not overlap with typing english or code)
13* Minimal side-index motion thanks to workman base layer and similar principles in other layers
14* Two symbol layers, both activated with one homerow key and either another key on the same hand's homerow or a key from the other hand
15* Mousing around, including left and right clicking can be done either one-handed or fully on the homerow with both hands
16* Easy chaining of common command line or vim patterns, such as `~/`, `()`, `ESC : w ENTER` etc.
17* Outer pinky columns unused for ergonomic reasons
18* Common OS shortcuts like switching workspaces on gnome or MacOS easily accessible (for the shortcuts I use. This may not apply to others)
19
20Instructions to update the keymap
21---
22
23For now, I am still more comfortable updating the keymap through the qmk configurator as I don't trust myself to manually keep comments describing the keymap in sync with the code itself. This means that my keymap.c is generated and not really readable. For a readble view of my keymap, one must import keymap.json into [qmk configurator](https://config.qmk.fm) and use the web UI or print it.
24
25To update the keymap,
26* Load keymap.json into qmk configurator
27* Perform any edits
28* Export the keymap. This should save a json file in `~/Downloads/pierrec83.json` or equivalent for your OS
29* From the root of qmk_firmware, move the keymap to its destination:
30```
31mv ~/Downloads/pierrec83.json keyboards/kyria/keymaps/pierrec83/keymap.json
32```
33* Regenerate the `keymap.c`:
34```
35qmk json2c keyboards/kyria/keymaps/pierrec83/keymap.json -o keyboards/kyria/keymaps/pierrec83/keymap.c
36```
37* Flash the firmware (for instance, if left hand is plugged):
38```
39qmk flash -kb kyria -km pierrec83 -bl dfu-split-left
40```
41
42Author
43---
44I am @pierrec83 on Twitter, @pierrechevalier83 on github. I chose the shorter nickname for my keymap.
diff --git a/keyboards/splitkb/kyria/keymaps/pierrec83/rules.mk b/keyboards/splitkb/kyria/keymaps/pierrec83/rules.mk
new file mode 100644
index 000000000..78f0ac93f
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/pierrec83/rules.mk
@@ -0,0 +1,5 @@
1OLED_DRIVER_ENABLE = no # Enables the use of OLED displays
2ENCODER_ENABLE = yes # ENables the use of one or more encoders
3RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
4
5SRC += encoders.c
diff --git a/keyboards/splitkb/kyria/keymaps/plattfot/README.md b/keyboards/splitkb/kyria/keymaps/plattfot/README.md
new file mode 100644
index 000000000..70bb01353
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/plattfot/README.md
@@ -0,0 +1,172 @@
1# plattfot's keymap for [Kyria](https://github.com/splitkb/kyria)
2
3![Keyboard](https://i.imgur.com/mcefoHnh.jpg)
4
5Designed to be ease of use when programming, typing in both English
6and Swedish and navigating around in a tiling window manager, in my
7case [sway](https://swaywm.org/). Uses the two rotary encoders (lower
8left/right thumb row) as two palm buttons.
9
10This keymap avoids [Mod-tap](https://docs.qmk.fm/#/mod_tap) as they do
11not work for me. [Kyria](https://github.com/splitkb/kyria) has enough
12thumb keys to make it work without them.
13
14The symbols are split into two layers, one for each hand. Then the
15layers are activated by the opposite thumb. Found that having all
16symbols on one layer then have one thumb activate them made it awkward
17to press keys with the index finger on the same hand.
18
19Custom feature I call the close tap (Clotap) key, I based on a code
20snippet from a
21[reddit post](https://www.reddit.com/r/olkb/comments/citkbx/double_key_press_modifier_qmkwould_work_like/ev9cue8).
22When pressed, it will insert the closing equivivalent key and press
23`←` (left arrow). For example tapping Clotap then press `(` will
24result in the keypresses `()←`, if pressing `"` will result in `""←`,
25if pressing `)` will result in `)←(`. Really nice to have when
26programming, it is editor agnostic and saves me two keypresses (need
27to press NAV+j for `←`). It also removes the need for having specific
28macros for these as I had before.
29
30
31# Base Layer: Default
32```
33// ,-------------------------------------------. ,-------------------------------------------.
34// | Esc | Q | W | E | R | T | | Y | U | I | O | P | Del |
35// |--------+------+------+------+------+------| |------+------+------+------+------+--------|
36// | Tab | A | S | D | F | G | | H | J | K | L | ; | ' |
37// |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
38// | LShift | Z | X | C | V | B | Lead | RAISE| | LOWER|BSpace| N | M | , | . | / | RShift |
39// `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
40// | MPlay| GUI | LCtrl| Space| LALT | | RCtrl| Enter| NAV | RALT |Scroll|
41// | | | | | | | | | | | Lock |
42// `----------------------------------' `----------------------------------'
43```
44
45Setup for using the
46[EurKey](https://eurkey.steffen.bruentjen.eu/layout.html) layout. As
47it's annoying to have to toggle us and swedish layout which shifts
48symbols around.
49
50AltGr is used to access the extra keys in the
51[EurKey](https://eurkey.steffen.bruentjen.eu/layout.html) layout.
52
53## Notable features on this layer
54
55Left rotary encoder
56- Press: play/pause
57- Rotate: Volume control
58
59Right rotary encoder
60- Press: Scroll lock
61- Rotate: Page up/Page down. Used mouse scrolling at first. But
62 scrolling only works in the window where the mouse pointer
63 is. Which kind of defeated the purpose of having the scroll
64 on the keyboard, as I still needed to move my hand to the
65 mouse and then I could just use the scroll on the mouse.
66
67[Leader key](https://docs.qmk.fm/#/feature_leader_key) is mainly used
68for jumping between workspaces. Otherwise I would need to use both
69hands everytime I need to switch. With the leader key I can jump
70between 1-5 with just the left hand.
71
72# Lower Layer: Left symbols/Right function keys
73```
74// ,-------------------------------------------. ,-------------------------------------------.
75// | | ! | @ | # | $ | % | | F6 | F7 | F8 | F9 | F10 | |
76// |--------+------+------+------+------+------| |------+------+------+------+------+--------|
77// | | | | _ | \ | - | + | | F12 | | | | | |
78// |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
79// | | ° | : | ( | ) | × | |ADJUST| | | |CLOTAP| | | | | |
80// `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
81// | | | | | | | | | | | |
82// | | | | | | | | | | | |
83// `----------------------------------' `----------------------------------'
84```
85
86Symbols for the left hand, function keys for the right hand.
87
88I had the function keys at the bottom on the navigation layer. But it
89was annoying when typing version strings. Hitting f1-5+f11 involved
90both hands. And it turned out that my keybinding for closing a window
91(Super+Shift+c) and rebooting my machine (Super+Shift+f3) ended up on
92the same physical keys.
93
94Splitting them up like this allows me to hit all the function keys
95with just one hand and I wont accidentally reboot my machine when
96trying to close a window.
97
98## Notable features on this layer
99
100Left rotary encoder
101- Rotate: Skip next/previous song
102
103Clotap on the right hand.
104
105Has two Eurkey specific symbols `°` and `×` on the left hand.
106
107# Raise Layer: Left function/Right symbols + state keys
108```
109// ,-------------------------------------------. ,-------------------------------------------.
110// | | F1 | F2 | F3 | F4 | F5 | | ^ | & | * | ~ | ? | |
111// |--------+------+------+------+------+------| |------+------+------+------+------+--------|
112// | | | | | | F11 | | = | { | } | [ | ] | ` |
113// |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
114// | | | | | |CLOTAP| | | |ADJUST| | … | " | < | > | / |CapsLock|
115// `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
116// | Mute | | | | | | | | | |Insert|
117// | | | | | | | | | | | |
118// `----------------------------------' `----------------------------------'
119```
120
121Function keys for the left hand, symbols for the right hand.
122
123This layer also includes caps lock and insert.
124
125## Notable features on this layer
126
127Left rotary encoder
128- Press: mute
129
130Right rotary encoder
131- Press: Toggle insert mode
132- Rotate: Scrolling between workspaces in `sway`.
133
134Clotap on the left hand.
135
136# Navigation Layer: Number keys, navigation
137```
138 //
139 // ,-------------------------------------------. ,-------------------------------------------.
140 // | | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | |
141 // |--------+------+------+------+------+------| |------+------+------+------+------+--------|
142 // | | | | | | | | | Left | Up | Down | Right| |
143 // |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
144 // | | | | | | | | | | | | | | | | | |
145 // `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
146 // | | | | | | | | | | | |
147 // | | | | | | | | | | | |
148 // `----------------------------------' `----------------------------------'
149```
150
151Access to the number and the arrow keys. Got use to the number row
152after using [ErgoDox](https://www.ergodox.io/) keyboards for a few
153years. Do not feel I need a numpad layer, which seems to be quite
154common with small keyboards like this.
155
156# Adjust Layer: RGB
157```
158 //
159 // ,-------------------------------------------. ,-------------------------------------------.
160 // | | | | | | | | | | | | | |
161 // |--------+------+------+------+------+------| |------+------+------+------+------+--------|
162 // | | TOG | SAI | HUI | VAI | MOD | | | | | | | |
163 // |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
164 // | | | SAD | HUD | VAD | RMOD | | | | | | | | | | | |
165 // `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
166 // | | | | | | | | | | | |
167 // | | | | | | | | | | | |
168 // `----------------------------------' `----------------------------------'
169```
170
171Right now it only contains adjustment to the underglow. Activated by
172holding down `RAISE` and `LOWER` at the same time.
diff --git a/keyboards/splitkb/kyria/keymaps/plattfot/config.h b/keyboards/splitkb/kyria/keymaps/plattfot/config.h
new file mode 100644
index 000000000..5ec5fc584
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/plattfot/config.h
@@ -0,0 +1,44 @@
1/* Copyright 2019 Thomas Baart <thomas@splitkb.com>
2 * Copyright 2020-2021 Fredrik Salomonsson <plattfot@gmail.com>
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#pragma once
19
20#ifdef OLED_DRIVER_ENABLE
21 #define OLED_DISPLAY_128X64
22#endif
23
24#ifdef RGBLIGHT_ENABLE
25 #define RGBLIGHT_ANIMATIONS
26 #define RGBLIGHT_HUE_STEP 8
27 #define RGBLIGHT_SAT_STEP 8
28 #define RGBLIGHT_VAL_STEP 8
29#endif
30
31#define ENCODER_DIRECTION_FLIP
32// Fixing the skipping with the EC11K encoder
33#define ENCODER_RESOLUTION 2
34
35#define EE_HANDS
36
37// The Leader key allows to flexibly assign macros to key sequences.
38#define LEADER_PER_KEY_TIMING
39#define LEADER_TIMEOUT 350
40
41// Remove the delay for the OSL keys. Not using any other tap keys.
42// Otherwise TAPPING_TERM_PER_KEY would be the way to go.
43#define TAPPING_TERM 0
44
diff --git a/keyboards/splitkb/kyria/keymaps/plattfot/keymap.c b/keyboards/splitkb/kyria/keymaps/plattfot/keymap.c
new file mode 100644
index 000000000..78e30c156
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/plattfot/keymap.c
@@ -0,0 +1,480 @@
1/* Copyright 2020-2021 Fredrik Salomonsson <plattfot@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#include "version.h"
18
19enum custom_keycodes {
20 PLACEHOLDER = SAFE_RANGE, // can always be here
21 // New keys
22 CLO_TAP, // Close the next key press
23};
24
25// Close tap feature based on a post from drashna
26// https://www.reddit.com/r/olkb/comments/citkbx/double_key_press_modifier_qmkwould_work_like/ev9cue8/
27// Will insert the closing equivalent key and move the cursor inside.
28// For example clo_tap and then ( will result in (|), where | is the
29// cursor. For " it will be "|" as the close equivalent key is the
30// same key.
31enum close_tap_modes {
32 CLO_DISABLED = 0b000,
33 CLO_PRESSED = 0b001, // Close tap key is pressed
34 CLO_ACTIVE = 0b010, // Close tap next keypress
35 CLO_USED = 0b100, // Turn off when close tap key is released
36};
37
38#define CLO_RELEASE(flag) flag & ~CLO_PRESSED
39
40static enum close_tap_modes close_tap_it = CLO_DISABLED;
41
42enum layers {
43 _DEFAULT,
44 _LOWER,
45 _RAISE,
46 _NAV,
47 _ADJUST,
48};
49
50#define MO_ADJT MO(_ADJUST)
51#define L_RAISE OSL(_RAISE)
52#define L_LOWER OSL(_LOWER)
53#define L_NAV MO(_NAV)
54#define EU_TDOT RSA(KC_SLSH)
55#define EU_CDOT RALT(KC_EQUAL)
56#define EU_DEG RALT(KC_SCLN)
57
58// clang-format off
59const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
60/*
61 * Base Layer: Default
62 *
63 * ,-------------------------------------------. ,-------------------------------------------.
64 * | Esc | Q | W | E | R | T | | Y | U | I | O | P | Del |
65 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
66 * | Tab | A | S | D | F | G | | H | J | K | L | ; | ' |
67 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
68 * | LShift | Z | X | C | V | B | Lead | RAISE| | LOWER|BSpace| N | M | , | . | / | RShift |
69 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
70 * | MPlay| GUI | LCtrl| Space| LALT | | RCtrl| Enter| NAV | RALT |Scroll|
71 * | | | | | | | | | | | Lock |
72 * `----------------------------------' `----------------------------------'
73 */
74 [_DEFAULT] = LAYOUT(
75 KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
76 KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
77 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LEAD, L_RAISE, L_LOWER, KC_BSPC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
78 KC_MPLY,KC_LGUI,KC_LCTL, KC_SPACE, KC_LALT, KC_RCTL, KC_ENT, L_NAV, KC_RALT, KC_SLCK
79 ),
80
81/*
82 * Lower Layer: Left symbols
83 *
84 * ,-------------------------------------------. ,-------------------------------------------.
85 * | | ! | @ | # | $ | % | | F6 | F7 | F8 | F9 | F10 | |
86 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
87 * | | | | _ | \ | - | + | | F12 | | | | | |
88 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
89 * | | ° | : | ( | ) | × | |ADJUST| | | |CLOTAP| | | | | |
90 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
91 * | | | | | | | | | | | |
92 * | | | | | | | | | | | |
93 * `----------------------------------' `----------------------------------'
94 */
95 [_LOWER] = LAYOUT(
96 _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
97 _______, KC_PIPE, KC_UNDS, KC_BSLS, KC_MINS, KC_PLUS, KC_F12, _______, _______, _______, _______, _______,
98 _______, EU_DEG, KC_COLN, KC_LPRN, KC_RPRN, EU_CDOT, _______, MO_ADJT, _______, _______, CLO_TAP, _______, _______, _______, _______, _______,
99 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
100 ),
101/*
102 * Raise Layer: Right symbols + state
103 *
104 * ,-------------------------------------------. ,-------------------------------------------.
105 * | | F1 | F2 | F3 | F4 | F5 | | ^ | & | * | ~ | ? | |
106 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
107 * | | | | | | F11 | | = | { | } | [ | ] | ` |
108 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
109 * | | | | | |CLOTAP| | | |ADJUST| | … | " | < | > | / |CapsLock|
110 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
111 * | Mute | | | | | | | | | |Insert|
112 * | | | | | | | | | | | |
113 * `----------------------------------' `----------------------------------'
114 */
115 [_RAISE] = LAYOUT(
116 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_CIRC, KC_AMPR, KC_ASTR, KC_TILDE,KC_QUES, _______,
117 _______, _______, _______, _______, _______, KC_F11, KC_EQUAL,KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_GRV,
118 _______, _______, _______, _______, _______, CLO_TAP, _______, _______, MO_ADJT, _______, EU_TDOT, KC_DQUO, KC_LT, KC_GT, _______, KC_CAPS,
119 KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS
120
121 ),
122/*
123 * Navigation Layer: Number/Function keys, navigation
124 *
125 * ,-------------------------------------------. ,-------------------------------------------.
126 * | | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | |
127 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
128 * | | | | | | | | | Left | Up | Down | Right| |
129 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
130 * | | | | | | | | | | | | | | | | | |
131 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
132 * | | | | | | | | | | | |
133 * | | | | | | | | | | | |
134 * `----------------------------------' `----------------------------------'
135 */
136 [_NAV] = LAYOUT(
137 _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
138 _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, _______,
139 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
140 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
141 ),
142/*
143 * Adjust Layer: RGB
144 *
145 * ,-------------------------------------------. ,-------------------------------------------.
146 * | | | | | | | | | | | | | |
147 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
148 * | | TOG | SAI | HUI | VAI | MOD | | | | | | | |
149 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
150 * | | | SAD | HUD | VAD | RMOD | | | | | | | | | | | |
151 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
152 * | | | | | | | | | | | |
153 * | | | | | | | | | | | |
154 * `----------------------------------' `----------------------------------'
155 */
156 [_ADJUST] = LAYOUT(
157 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
158 _______, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD, _______, _______, _______, _______, _______, _______,
159 _______, _______, RGB_SAD, RGB_HUD, RGB_VAD, RGB_RMOD,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
160 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
161 ),
162// /*
163// * Layer template
164// *
165// * ,-------------------------------------------. ,-------------------------------------------.
166// * | | | | | | | | | | | | | |
167// * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
168// * | | | | | | | | | | | | | |
169// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
170// * | | | | | | | | | | | | | | | | | |
171// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
172// * | | | | | | | | | | | |
173// * | | | | | | | | | | | |
174// * `----------------------------------' `----------------------------------'
175// */
176// [_LAYERINDEX] = LAYOUT(
177// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
178// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
179// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
180// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
181// ),
182};
183// clang-format on
184
185/* void keyboard_post_init_user(void) { */
186/* rgblight_setrgb(51, 135, 204); */
187/* } */
188bool process_record_user(uint16_t keycode, keyrecord_t *record) {
189 if (record->event.pressed) {
190 switch (keycode) {
191 case CLO_TAP:
192 close_tap_it = close_tap_it & CLO_ACTIVE?
193 CLO_USED:
194 CLO_ACTIVE|CLO_PRESSED;
195 return false;
196 case KC_LEAD:
197 close_tap_it = CLO_DISABLED;
198 return true;
199 }
200 } else if (close_tap_it & CLO_ACTIVE &&
201 keycode != CLO_TAP &&
202 keycode != OSL(_RAISE) &&
203 keycode != OSL(_LOWER) &&
204 keycode != MO(_NAV)) {
205
206 close_tap_it = close_tap_it & CLO_PRESSED?
207 close_tap_it | CLO_USED:
208 CLO_DISABLED;
209 switch(keycode)
210 {
211 case KC_LPRN:
212 tap_code16(KC_RPRN);
213 tap_code16(KC_LEFT);
214 break;
215 case KC_RPRN:
216 tap_code16(KC_LEFT);
217 tap_code16(KC_LPRN);
218 break;
219 case KC_LCBR:
220 tap_code16(KC_RCBR);
221 tap_code16(KC_LEFT);
222 break;
223 case KC_RCBR:
224 tap_code16(KC_LEFT);
225 tap_code16(KC_LCBR);
226 break;
227 case KC_LBRC:
228 tap_code16(KC_RBRC);
229 tap_code16(KC_LEFT);
230 break;
231 case KC_RBRC:
232 tap_code16(KC_LEFT);
233 tap_code16(KC_LBRC);
234 break;
235 case KC_LT:
236 tap_code16(KC_GT);
237 tap_code16(KC_LEFT);
238 break;
239 case KC_GT:
240 tap_code16(KC_LEFT);
241 tap_code16(KC_LT);
242 break;
243 default:
244 tap_code16(keycode);
245 tap_code16(KC_LEFT);
246 break;
247 }
248 } else {
249 switch (keycode) {
250 case CLO_TAP:
251 close_tap_it = close_tap_it & CLO_USED?
252 CLO_DISABLED:
253 CLO_RELEASE(close_tap_it);
254 }
255 }
256
257 return true;
258}
259
260//layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); }
261
262#ifdef OLED_DRIVER_ENABLE
263oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; }
264
265// clang-format off
266static void render_qmk_logo(void) {
267 static const char PROGMEM qmk_logo[] = {
268 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
269 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
270 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0};
271
272 oled_write_P(qmk_logo, false);
273}
274// clang-format on
275static void render_static_info(void) {
276 render_qmk_logo();
277 oled_write_P(PSTR("Kyria rev1.0\n"), false);
278 oled_write_P(PSTR("Keymap: plattfot v2\n"), false);
279}
280
281static void render_status(void) {
282 // QMK Logo and version information
283 render_qmk_logo();
284 oled_write_P(PSTR("Kyria rev1.0\n"), false);
285 oled_write_P(PSTR("v" QMK_VERSION "\n"), false);
286
287 // Host Keyboard Layer Status
288 oled_write_P(PSTR("Layer: "), false);
289 switch (get_highest_layer(layer_state)) {
290 case _DEFAULT:
291 oled_write_P(PSTR("base\n"), false);
292 break;
293 case _LOWER:
294 oled_write_P(PSTR("<-sym/fun->\n"), false);
295 break;
296 case _RAISE:
297 oled_write_P(PSTR("<-fun/sym->\n"), false);
298 break;
299 case _NAV:
300 oled_write_P(PSTR("num/nav\n"), false);
301 break;
302 case _ADJUST:
303 oled_write_P(PSTR("adjust\n"), false);
304 break;
305 default:
306 oled_write_P(PSTR("undefined\n"), false);
307 }
308
309 // Host Keyboard LED Status and Double tap
310 led_t led_state = host_keyboard_led_state();
311 if (led_state.num_lock) {
312 oled_write_P(PSTR("NUMLCK "), false);
313 } else if (close_tap_it) {
314 oled_write_P(PSTR("Close "), false);
315 } else {
316 oled_write_P(PSTR(" "), false);
317 }
318
319 if (led_state.caps_lock) {
320 oled_write_P(PSTR("CAPLCK "), false);
321 } else if (close_tap_it) {
322 oled_write_P(PSTR("Tap "), false);
323 } else {
324 oled_write_P(PSTR(" "), false);
325 }
326
327 oled_write_P(led_state.scroll_lock ? PSTR("SCRLCK ") : PSTR(" "), false);
328}
329
330void oled_task_user(void) {
331 if (is_keyboard_master()) {
332 render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
333 } else {
334 render_static_info();
335 }
336}
337#endif
338
339#ifdef ENCODER_ENABLE
340bool encoder_update_user(uint8_t index, bool clockwise) {
341 if (index == 0) {
342 switch (get_highest_layer(layer_state)) {
343 case _LOWER:
344 // Skip/Prev song
345 if (clockwise) {
346 tap_code(KC_MNXT);
347 clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
348 } else {
349 tap_code(KC_MPRV);
350 clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
351 }
352 break;
353 case _NAV:
354 // Brightness control
355 if (clockwise) {
356 tap_code(KC_BRIU);
357 clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
358 } else {
359 tap_code(KC_BRID);
360 clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
361 }
362 break;
363 default:
364 // Volume control
365 if (clockwise) {
366 tap_code(KC_VOLU);
367 clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
368 } else {
369 tap_code(KC_VOLD);
370 clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
371 }
372 break;
373 }
374 } else if (index == 1) {
375 switch (get_highest_layer(layer_state)) {
376 case _RAISE:
377 // Scroll through the workspaces
378 if (clockwise) {
379 tap_code16(G(KC_GT));
380 clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
381 } else {
382 tap_code16(G(KC_LT));
383 clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
384 }
385 break;
386 default:
387 // Scrolling
388 if (clockwise) {
389 tap_code(KC_PGDN);
390 clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
391 } else {
392 tap_code(KC_PGUP);
393 clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
394 }
395 break;
396 }
397 }
398 return true;
399}
400#endif
401
402LEADER_EXTERNS();
403
404void matrix_scan_user(void) {
405 LEADER_DICTIONARY() {
406 leading = false;
407 leader_end();
408 // Sway navigation
409 SEQ_ONE_KEY(KC_Q) { // Jump to workspace 1
410 SEND_STRING(SS_LGUI("1"));
411 }
412 SEQ_ONE_KEY(KC_W) { // Jump to workspace 2
413 SEND_STRING(SS_LGUI("2"));
414 }
415 SEQ_ONE_KEY(KC_E) { // Jump to workspace 3
416 SEND_STRING(SS_LGUI("3"));
417 }
418 SEQ_ONE_KEY(KC_R) { // Jump to workspace 4
419 SEND_STRING(SS_LGUI("4"));
420 }
421 SEQ_ONE_KEY(KC_T) { // Jump to workspace 5
422 SEND_STRING(SS_LGUI("5"));
423 }
424
425 SEQ_ONE_KEY(KC_Y) { // Jump to workspace 6
426 SEND_STRING(SS_LGUI("6"));
427 }
428 SEQ_ONE_KEY(KC_U) { // Jump to workspace 7
429 SEND_STRING(SS_LGUI("7"));
430 }
431 SEQ_ONE_KEY(KC_I) { // Jump to workspace 8
432 SEND_STRING(SS_LGUI("8"));
433 }
434 SEQ_ONE_KEY(KC_O) { // Jump to workspace 9
435 SEND_STRING(SS_LGUI("9"));
436 }
437 SEQ_ONE_KEY(KC_P) { // Jump to workspace 0
438 SEND_STRING(SS_LGUI("0"));
439 }
440 SEQ_ONE_KEY(KC_G) { // View scratch pad
441 SEND_STRING(SS_LGUI("-"));
442 }
443
444 // Sway move window
445 SEQ_TWO_KEYS(KC_M, KC_Q) { // Move to workspace 1
446 SEND_STRING(SS_LSFT(SS_LGUI("1")));
447 }
448 SEQ_TWO_KEYS(KC_M, KC_W) { // Move to workspace 2
449 SEND_STRING(SS_LSFT(SS_LGUI("2")));
450 }
451 SEQ_TWO_KEYS(KC_M, KC_E) { // Move to workspace 3
452 SEND_STRING(SS_LSFT(SS_LGUI("3")));
453 }
454 SEQ_TWO_KEYS(KC_M, KC_R) { // Move to workspace 4
455 SEND_STRING(SS_LSFT(SS_LGUI("4")));
456 }
457 SEQ_TWO_KEYS(KC_M, KC_T) { // Move to workspace 5
458 SEND_STRING(SS_LSFT(SS_LGUI("5")));
459 }
460
461 SEQ_TWO_KEYS(KC_M, KC_Y) { // Move to workspace 6
462 SEND_STRING(SS_LSFT(SS_LGUI("6")));
463 }
464 SEQ_TWO_KEYS(KC_M, KC_U) { // Move to workspace 7
465 SEND_STRING(SS_LSFT(SS_LGUI("7")));
466 }
467 SEQ_TWO_KEYS(KC_M, KC_I) { // Move to workspace 8
468 SEND_STRING(SS_LSFT(SS_LGUI("8")));
469 }
470 SEQ_TWO_KEYS(KC_M, KC_O) { // Move to workspace 9
471 SEND_STRING(SS_LSFT(SS_LGUI("9")));
472 }
473 SEQ_TWO_KEYS(KC_M, KC_P) { // Move to workspace 0
474 SEND_STRING(SS_LSFT(SS_LGUI("0")));
475 }
476 SEQ_TWO_KEYS(KC_M, KC_G) { // Move to scratch pad
477 SEND_STRING(SS_LSFT(SS_LGUI("-")));
478 }
479 }
480}
diff --git a/keyboards/splitkb/kyria/keymaps/plattfot/rules.mk b/keyboards/splitkb/kyria/keymaps/plattfot/rules.mk
new file mode 100644
index 000000000..412546d09
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/plattfot/rules.mk
@@ -0,0 +1,5 @@
1OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays
2ENCODER_ENABLE = yes # Enables the use of one or more encoders
3RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
4LEADER_ENABLE = yes # Enable the Leader Key feature
5MOUSEKEY_ENABLE = no # Disable mouse, need to save space.
diff --git a/keyboards/splitkb/kyria/keymaps/rmw/config.h b/keyboards/splitkb/kyria/keymaps/rmw/config.h
new file mode 100644
index 000000000..02e5087b3
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/rmw/config.h
@@ -0,0 +1,36 @@
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
17#pragma once
18
19#define MACOSX
20
21#ifdef OLED_DRIVER_ENABLE
22 #define OLED_DISPLAY_128X64
23#endif
24
25#ifdef RGBLIGHT_ENABLE
26 #define RGBLIGHT_ANIMATIONS
27 #define RGBLIGHT_HUE_STEP 8
28 #define RGBLIGHT_SAT_STEP 8
29 #define RGBLIGHT_VAL_STEP 8
30#endif
31
32// If you are using an Elite C rev3 on the follower side, uncomment the lines below:
33// #define SPLIT_USB_DETECT
34// #define NO_USB_STARTUP_CHECK
35
36
diff --git a/keyboards/splitkb/kyria/keymaps/rmw/keymap.c b/keyboards/splitkb/kyria/keymaps/rmw/keymap.c
new file mode 100644
index 000000000..61d66588c
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/rmw/keymap.c
@@ -0,0 +1,200 @@
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#include "rmw.h"
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 [QWERTY] = LAYOUT_stack(
22 KC_TAB , KC_Q, KC_W, KC_E, KC_R, KC_T,
23 OSL(EDIT), KC_A, LT(NUMPAD,KC_S), KC_D, LT(FSYM,KC_F), KC_G,
24 TD(FRBK2) , KC_Z, KC_X, KC_C, KC_V, KC_B, TO(EDIT), KC_ESCAPE,
25 TO(ADJUST), TD(SGCA), TD(AGC), KC_BSPACE, TD(SHNTC),
26
27 KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
28 KC_H, LT(JSYM,KC_J), KC_K, KC_L, LT(EDIT,KC_SCLN), KC_QUOT,
29 KC_DEL, TO(NUMPAD), KC_N, KC_M, KC_COMM, KC_DOT, LT(MEDIA,KC_SLSH), KC_MS_BTN1,
30 SFTENT, KC_SPC, TD(GCA), TD(CTLALL), KC_CAPS
31 ),
32
33 [MINIMAK4] = LAYOUT_stack(
34 KC_TAB , KC_Q, KC_W, KC_D, KC_R, KC_K,
35 OSL(EDIT), KC_A, LT(NUMPAD,KC_S), KC_T, LT(FSYM,KC_F), KC_G,
36 OSM(MOD_LSFT) , KC_Z, KC_X, KC_C, KC_V, KC_B, TO(EDIT), KC_ESCAPE,
37 _______, TO(ADJUST), TD(SGCA), KC_BSPACE, TD(SHNTC),
38
39 KC_Y, KC_U, KC_I, KC_O, KC_P, KC_PIPE,
40 KC_H, LT(JSYM,KC_J), KC_E, KC_L, LT(EDIT,KC_SCLN), KC_QUOT,
41 KC_DEL, TO(NUMPAD), KC_N, KC_M, KC_COMM, KC_DOT, LT(MEDIA,KC_SLSH), KC_MINS,
42 SFTENT, KC_SPC, TD(GCA), TD(CTLALL), _______
43 ),
44
45 [NUMPAD] = LAYOUT_stack(
46 _______, _______, _______, _______, _______, _______,
47 _______, _______, _______, _______, _______, _______,
48 _______, _______, _______, _______, _______, _______, TO(QWERTY), _______,
49 _______, _______, _______, _______ , _______,
50
51 _______, KC_7, KC_8, KC_9, KC_KP_MINUS, _______,
52 _______, KC_4, KC_5, KC_6, KC_KP_PLUS , _______,
53 _______, TO(EDIT), _______, KC_1, KC_2, KC_3, KC_KP_SLASH, LCTL(KC_RIGHT),
54 _______, _______, KC_0, KC_DOT, _______
55 ),
56
57 [EDIT] = LAYOUT_stack(
58 _______, TASK_MAN, _______, SELW_LEFT, SELW_RIGHT, _______,
59 _______, _______ , LGUI(KC_GRV), MVW_LEFT, MVW_RIGHT , _______,
60 LCTL(KC_LEFT), R_UNDO, R_CUT , R_COPY , R_PASTE, R_REDO , TO(NUMPAD), FORM_GET,
61 _______, _______, _______, DEL_WRD, _______,
62
63 NEW_TAB , KC_PGUP, KC_UP, KC_PGDOWN, KC_PSCREEN, _______,
64 R_HOME , KC_LEFT, KC_DOWN, KC_RIGHT, R_END, _______,
65 FORM_PUT, TO(QWERTY), SEL_HOME, S(KC_LEFT), S(KC_DOWN), S(KC_RIGHT), SEL_END, _______,
66 _______, _______, _______, _______, _______
67 ),
68
69 [ADJUST] = LAYOUT_stack(
70 KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
71 TO(QWERTY), TO(EDIT), TO(NUMPAD), TO(JSYM), TO(FSYM), TO(MEDIA),
72 DF(MINIMAK4), DF(QWERTY), RGB_SAD, RGB_HUD, RGB_VAD, RGB_RMOD,_______, _______,
73 _______, _______, _______, _______, _______,
74
75 KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
76 _______, _______, _______, _______, _______, _______,
77 _______, _______, _______, _______, _______, _______, _______, _______,
78 _______, _______, _______, _______, _______
79 ),
80
81 [FSYM] = LAYOUT_stack(
82 _______, _______, _______, _______, _______, _______,
83 _______, _______, KC_TILD, KC_EXLM, _______, _______,
84 LCTL(KC_RIGHT), _______, TO(QWERTY), _______, _______, _______, _______, _______,
85 _______, _______, _______, _______, _______,
86
87 KC_CIRC, KC_AMPR , KC_ASTR, KC_GRV , _______, _______,
88 KC_EQUAL, KC_MINUS, KC_UNDS, KC_PIPE, KC_COLON, KC_DQT,
89 _______, _______, _______, KC_PLUS, KC_BSLS, KC_SLSH, _______, _______,
90 _______, _______, _______, _______, _______
91 ),
92
93 [JSYM] = LAYOUT_stack(
94 _______, KC_GRV, KC_AT , KC_LCBR, KC_RCBR, _______,
95 _______, KC_HASH, KC_DLR , KC_LPRN, KC_RPRN, KC_LEFT,
96 _______, KC_PERC, KC_CIRC, KC_LBRACKET, KC_RBRACKET, _______, _______, _______,
97 _______, _______, _______, _______, _______,
98
99 _______, _______, _______, _______, _______, _______,
100 _______, _______, KC_QUES, KC_SLSH, KC_COLON, _______,
101 _______, _______, _______, _______, _______, TO(QWERTY), _______, LCTL(KC_LEFT),
102 _______, _______, _______, _______, _______
103 ),
104
105 [MEDIA] = LAYOUT_stack(
106 _______, KC_WH_U, KC_WH_L, KC_MS_UP, KC_WH_R, _______,
107 _______, KC_WH_D, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, _______,
108 _______, _______, KC_ACL0, KC_ACL1, KC_ACL2, _______, _______, _______,
109 _______, _______, _______, _______, _______,
110
111 _______, _______, _______, _______, _______, _______,
112 _______, _______, _______, _______, _______, _______,
113 _______, _______, _______, _______, KC_VOLD, KC_MUTE, KC_VOLU, _______,
114 KC_MS_BTN1, KC_MEDIA_PLAY_PAUSE, KC_MRWD, KC_MFFD, _______
115 )
116};
117
118bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
119 switch (keycode) {
120 case FORM_GET:
121 if (record->event.pressed) {
122 tap_code(KC_BTN1);
123 tap_code16(G(KC_A));
124 tap_code16(G(KC_C));
125 }
126 return false;
127 case FORM_PUT:
128 if (record->event.pressed) {
129 tap_code16(KC_MS_BTN1);
130 tap_code16(G(KC_A));
131 tap_code16(G(KC_V));
132 }
133 return false;
134 }
135 return true;
136}
137
138#ifdef ENCODER_ENABLE
139bool encoder_update_keymap(uint8_t index, bool clockwise) {
140 if (index == 0) {
141 switch (get_highest_layer(layer_state)) {
142 case EDIT:
143 enc_move_words(clockwise);
144 break;
145 case QWERTY:
146 enc_move_desktop(clockwise);
147 default:
148 enc_history_scrubbing(clockwise);
149 break;
150 }
151 } else if (index == 1) {
152 switch (get_highest_layer(layer_state)) {
153 case QWERTY:
154 enc_scrolling(clockwise);
155 break;
156 case FSYM:
157 enc_zoom(clockwise);
158 break;
159 default:
160 enc_volume_knob(clockwise);
161 break;
162 }
163 }
164 return true;
165}
166#endif
167
168#ifdef RGBLIGHT_ENABLE // include mods, as well as layers
169layer_state_t layer_state_set_user(layer_state_t state) {
170 switch (get_highest_layer(state)) {
171 case QWERTY:
172 rgblight_setrgb (0x00, 0x00, 0x00);
173 break;
174 case MINIMAK4:
175 rgblight_setrgb (0x20, 0x20, 0x20);
176 break;
177 case NUMPAD:
178 rgblight_setrgb (0xFF, 0x00, 0x00);
179 break;
180 case EDIT:
181 rgblight_setrgb (0x00, 0xFF, 0x00);
182 break;
183 case FSYM:
184 rgblight_setrgb (0x7A, 0x7A, 0x00);
185 break;
186 case JSYM:
187 rgblight_setrgb (0x7A, 0x00, 0x7A);
188 break;
189 case MEDIA:
190 rgblight_setrgb (0x00, 0x7A, 0x7A);
191 break;
192 case ADJUST:
193 rgblight_setrgb (0x7A, 0x7A, 0x7A);
194 break;
195 default:
196 rgblight_setrgb (0x00, 0x00, 0x00);
197 }
198 return state;
199}
200#endif
diff --git a/keyboards/splitkb/kyria/keymaps/rmw/readme.md b/keyboards/splitkb/kyria/keymaps/rmw/readme.md
new file mode 100644
index 000000000..c05ca494b
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/rmw/readme.md
@@ -0,0 +1,9 @@
1# RMW Kyria Layout
2
3This is a Kyria edition of the keymap I use on the Ergodox_EZ I use for work. I write reports and code in a variety of languages on that board and the various layers provide plenty of flexibility for navigating, editing text, and writing code and prose. This keymap is mostly Mac-focused in its shortcuts and tapdances.
4
5## The theory of this keymap
6
7The base layer is either QWERTY or MINIMAK4, as desired. Overlaid on that base layer are various layers triggered by one-shots, TOs, and LTs. Tapdances are used to cram lots of mods into few keys and provide freedom to hit combinations with either hand. Mods and layer things are one-shot (where reasonable) because I prefer that.
8
9An EDIT layer provides text navigation, selection, and editing capabilities in home position. The NUMPAD layer offers a numpad and various spreadsheet-useful navigations and operations. Holding S will put the numpad under your right hand in home position. Keys F and J offer various useful symbols (mostly) on the opposite hand when held, including \[\]\(\)\{\} under the left pointer and middle fingers on bottom, middle, and top rows respectively. The MEDIA layer provides media controls (obvs) and some mouse movement and nav, in case I don't feel like reaching for the trackball/trackpad/mouse.
diff --git a/keyboards/splitkb/kyria/keymaps/rmw/rules.mk b/keyboards/splitkb/kyria/keymaps/rmw/rules.mk
new file mode 100644
index 000000000..d41ffaef6
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/rmw/rules.mk
@@ -0,0 +1,4 @@
1OLED_DRIVER_ENABLE = no # Enables the use of OLED displays
2ENCODER_ENABLE = yes # Enables the use of one or more encoders
3RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
4TAP_DANCE_ENABLE=yes # Enables Tap Dance
diff --git a/keyboards/splitkb/kyria/keymaps/shinze/config.h b/keyboards/splitkb/kyria/keymaps/shinze/config.h
new file mode 100644
index 000000000..f00bfa8e7
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/shinze/config.h
@@ -0,0 +1,32 @@
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
17#pragma once
18
19#ifdef OLED_DRIVER_ENABLE
20 #define OLED_DISPLAY_128X64
21#endif
22
23#ifdef RGBLIGHT_ENABLE
24 #define RGBLIGHT_ANIMATIONS
25 #define RGBLIGHT_HUE_STEP 8
26 #define RGBLIGHT_SAT_STEP 8
27 #define RGBLIGHT_VAL_STEP 8
28#endif
29
30// If you are using an Elite C rev3 on the slave side, uncomment the lines below:
31// #define SPLIT_USB_DETECT
32// #define NO_USB_STARTUP_CHECK
diff --git a/keyboards/splitkb/kyria/keymaps/shinze/keymap.c b/keyboards/splitkb/kyria/keymaps/shinze/keymap.c
new file mode 100644
index 000000000..98e127960
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/shinze/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#include "keymap_bepo.h"
18
19enum layers {
20 _BEPO = 0,
21 _LOWER,
22 _RAISE,
23 _ADJUST
24};
25
26#define RESC LT(_RAISE, KC_ESC)
27#define BP_EA BP_EACU
28#define BP_AG BP_AGRV
29#define BP_EG BP_EGRV
30#define BP_DC BP_DCIR
31#define BP_AP BP_QUOT
32#define BP_CO BP_COMM
33#define BP_DT BP_DOT
34#define LS KC_LSFT
35#define BP_DOL BP_DLR
36
37/* Bottom Row */
38#define BR01 KC_LCTL
39#define BR02 KC_LALT
40#define BR03 MT(MOD_LGUI, KC_ENT)
41#define BR04 LT(_LOWER, KC_SPC)
42#define BR05 LT(_RAISE, KC_ESC)
43#define BR06 LT(_LOWER, KC_ENT)
44#define BR07 LT(_RAISE, KC_SPC)
45#define BR08 KC_TAB
46#define BR09 KC_BSPC
47#define BR10 KC_RALT
48
49/* Under the screen row */
50#define U1 KC_LSFT
51
52const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
53
54/*
55 * Base Layer: BÉPO
56 *
57 * ,-------------------------------------------. ,-------------------------------------------.
58 * |RAIS/ESC| B | É | P | O | È | | ^ | V | D | L | J | | Z |
59 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
60 * | W | A | U | I | E | , | | C | T | S | R | N | M |
61 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
62 * | LShift | À | Y | X | . | K | SPC |LShift| |LShift|LShift| ’ | Q | G | H | F | Ç |
63 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
64 * | CTRL | Alt | Enter| Space| Esc | | Enter| Space| Tab | Bksp | AltGr|
65 * | | | CMD | Lower| Raise| | Lower| Raise| | | |
66 * `----------------------------------' `----------------------------------'
67 */
68 [_BEPO] = LAYOUT(
69 RESC, BP_B, BP_EA, BP_P, BP_O, BP_EG, BP_DC, BP_V, BP_D, BP_L, BP_J, BP_Z,
70 BP_W, BP_A, BP_U, BP_I, BP_E, BP_CO, BP_C, BP_T, BP_S, BP_R, BP_N, BP_M,
71 LS, BP_AG, BP_Y, BP_X, BP_DT, BP_K, KC_SPC, U1, U1, U1, BP_AP, BP_Q, BP_G, BP_H, BP_F, BP_CCED,
72 BR01, BR02, BR03, BR04, BR05, BR06, BR07, BR08, BR09, BR10
73 ),
74/*
75 * Lower Layer: Numbers and symbols ?
76 *
77 * ,-------------------------------------------. ,-------------------------------------------.
78 * | $ | " | « | » | ( | ) | | @ | + | - | / | * | = |
79 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
80 * | # | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ° |
81 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
82 * | % | | | | | | | | | | | | | | | | ` |
83 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
84 * | | | | | | | | | | | |
85 * | | | | | | | | | | | |
86 * `----------------------------------' `----------------------------------'
87 */
88 [_LOWER] = LAYOUT(
89 BP_DOL , BP_DQUO, BP_LDAQ, BP_RDAQ, BP_LPRN, BP_RPRN, BP_AT, BP_PLUS, BP_MINS, BP_SLSH, BP_ASTR, BP_EQL,
90 BP_HASH, BP_1, BP_2, BP_3, BP_4, BP_5, BP_6, BP_7, BP_8, BP_9, BP_0, BP_DEG,
91 BP_PERC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BP_GRV,
92 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
93 ),
94/*
95 * Raise Layer: Media
96 *
97 * ,-------------------------------------------. ,-------------------------------------------.
98 * | | | | | | | | | | | | | |
99 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
100 * | | | Prev | Play | Next | VolUp| | Left | Down | Up | Right| | |
101 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
102 * | | | | | Mute | VolDn| | | | | | MLeft| Mdown| MUp |MRight| | |
103 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
104 * | | | | | | | | | | | |
105 * | | | | | | | | | | | |
106 * `----------------------------------' `----------------------------------'
107 */
108 [_RAISE] = LAYOUT(
109 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
110 _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______,
111 _______, _______, _______, _______, KC_MUTE, KC_VOLD, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, _______, _______,
112 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
113 ),
114/*
115 * Adjust Layer: Function keys, RGB
116 *
117 * ,-------------------------------------------. ,-------------------------------------------.
118 * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | |
119 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
120 * | | TOG | SAI | HUI | VAI | MOD | | | | | F11 | F12 | |
121 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
122 * | | | SAD | HUD | VAD | RMOD | | | | | | | | | | | |
123 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
124 * | | | | | | | | | | | |
125 * | | | | | | | | | | | |
126 * `----------------------------------' `----------------------------------'
127 */
128 [_ADJUST] = LAYOUT(
129 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
130 _______, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD, _______, _______, _______, KC_F11, KC_F12, _______,
131 _______, _______, RGB_SAD, RGB_HUD, RGB_VAD, RGB_RMOD,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
132 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
133 ),
134// /*
135// * Layer template
136// *
137// * ,-------------------------------------------. ,-------------------------------------------.
138// * | | | | | | | | | | | | | |
139// * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
140// * | | | | | | | | | | | | | |
141// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
142// * | | | | | | | | | | | | | | | | | |
143// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
144// * | | | | | | | | | | | |
145// * | | | | | | | | | | | |
146// * `----------------------------------' `----------------------------------'
147// */
148// [_LAYERINDEX] = LAYOUT(
149// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
150// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
151// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
152// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
153// ),
154};
155
156layer_state_t layer_state_set_user(layer_state_t state) {
157 return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
158}
159
160#ifdef OLED_DRIVER_ENABLE
161oled_rotation_t oled_init_user(oled_rotation_t rotation) {
162 return OLED_ROTATION_180;
163}
164
165static void render_kyria_logo(void) {
166 static const char PROGMEM kyria_logo[] = {
167 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,
168 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,
169 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,
170 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,
171 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,
172 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,
173 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,
174 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
175 };
176 oled_write_raw_P(kyria_logo, sizeof(kyria_logo));
177}
178
179static void render_qmk_logo(void) {
180 static const char PROGMEM qmk_logo[] = {
181 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
182 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
183 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0};
184
185 oled_write_P(qmk_logo, false);
186}
187
188static void render_status(void) {
189 // QMK Logo and version information
190 render_qmk_logo();
191 oled_write_P(PSTR("Kyria rev1.0\n\n"), false);
192
193 // Host Keyboard Layer Status
194 oled_write_P(PSTR("Layer: "), false);
195 switch (get_highest_layer(layer_state)) {
196 case _BEPO:
197 oled_write_P(PSTR("BEPO\n"), false);
198 break;
199 case _LOWER:
200 oled_write_P(PSTR("NumSym\n"), false);
201 break;
202 case _RAISE:
203 oled_write_P(PSTR("Media\n"), false);
204 break;
205 case _ADJUST:
206 oled_write_P(PSTR("Adjust\n"), false);
207 break;
208 default:
209 oled_write_P(PSTR("Undefined\n"), false);
210 }
211
212 // Host Keyboard LED Status
213 uint8_t led_usb_state = host_keyboard_leds();
214 oled_write_P(IS_LED_ON(led_usb_state, USB_LED_NUM_LOCK) ? PSTR("NUMLCK ") : PSTR(" "), false);
215 oled_write_P(IS_LED_ON(led_usb_state, USB_LED_CAPS_LOCK) ? PSTR("CAPLCK ") : PSTR(" "), false);
216 oled_write_P(IS_LED_ON(led_usb_state, USB_LED_SCROLL_LOCK) ? PSTR("SCRLCK ") : PSTR(" "), false);
217}
218
219void oled_task_user(void) {
220 if (is_keyboard_master()) {
221 render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
222 } else {
223 render_kyria_logo();
224 }
225}
226#endif
227
228#ifdef ENCODER_ENABLE
229bool encoder_update_user(uint8_t index, bool clockwise) {
230 if (index == 0) {
231 // Volume control
232 if (clockwise) {
233 tap_code(KC_VOLU);
234 } else {
235 tap_code(KC_VOLD);
236 }
237 }
238 else if (index == 1) {
239 // Page up/Page down
240 if (clockwise) {
241 tap_code(KC_PGDN);
242 } else {
243 tap_code(KC_PGUP);
244 }
245 }
246 return true;
247}
248#endif
diff --git a/keyboards/splitkb/kyria/keymaps/shinze/rules.mk b/keyboards/splitkb/kyria/keymaps/shinze/rules.mk
new file mode 100644
index 000000000..604e15465
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/shinze/rules.mk
@@ -0,0 +1,3 @@
1OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays
2ENCODER_ENABLE = yes # Enables the use of one or more encoders
3RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
diff --git a/keyboards/splitkb/kyria/keymaps/tessachka/config.h b/keyboards/splitkb/kyria/keymaps/tessachka/config.h
new file mode 100644
index 000000000..a5529128d
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/tessachka/config.h
@@ -0,0 +1,29 @@
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
17#pragma once
18
19#ifdef OLED_DRIVER_ENABLE
20 #define OLED_DISPLAY_128X64
21#endif
22
23#ifdef RGBLIGHT_ENABLE
24 #define RGBLIGHT_ANIMATIONS
25 #define RGBLIGHT_HUE_STEP 8
26 #define RGBLIGHT_SAT_STEP 8
27 #define RGBLIGHT_VAL_STEP 8
28 #define RGBLIGHT_SLEEP
29#endif
diff --git a/keyboards/splitkb/kyria/keymaps/tessachka/keymap.c b/keyboards/splitkb/kyria/keymaps/tessachka/keymap.c
new file mode 100644
index 000000000..38307f964
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/tessachka/keymap.c
@@ -0,0 +1,241 @@
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
18
19enum layers {
20 QWERTY = 0,
21 LOWER,
22 RAISE,
23 ADJUST
24};
25
26enum custom_keycodes {
27 RGBRST = SAFE_RANGE,
28 KC_RACL
29};
30
31const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
32/*
33 * Base Layer: QWERTY
34 *
35 * ,-------------------------------------------. ,-------------------------------------------.
36 * | ESC | Q | W | E | R | T | | Y | U | I | O | P | BSPC |
37 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
38 * | TAB/ADJ| A | S | D | F | G | | H | J | K | L | ; : | ENTER |
39 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
40 * | LSHIFT | Z | X | C | V | B | | | | | | N | M | , < | . > | / ? | F16 |
41 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
42 * | | | | | Space| | MYCM | Calc | F15 | | |
43 * | | | Ctrl | LAlt | Lower| | Raise| | | | |
44 * `----------------------------------' `----------------------------------'
45 */
46 [QWERTY] = LAYOUT(
47 KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
48 LT(ADJUST,KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
49 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_F16,
50 XXXXXXX, XXXXXXX, KC_LCTL, KC_LALT, LT(LOWER,KC_SPC), LT(RAISE,KC_MYCM), KC_CALC, KC_F15, XXXXXXX, XXXXXXX
51 ),
52/*
53 * Lower Layer: Numbers and symbols
54 *
55 * ,-------------------------------------------. ,-------------------------------------------.
56 * | ` | 1 ! | 2 @ | 3 # | 4 $ | 5 % | | 6 ^ | 7 & | 8 * | 9 ( | 0 ) | DEL |
57 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
58 * | CAPS | - _ | = + | [ { | ] } | | | | | | | ' " | |
59 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
60 * | LSHIFT | TAB | | | | | | | | | | Home | PgDn | PgUp | End | \ | | |
61 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
62 * | | | | | Space| | Space| | | | |
63 * | | | Ctrl | LAlt | Lower| | | | | | |
64 * `----------------------------------' `----------------------------------'
65 */
66 [LOWER] = LAYOUT(
67 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
68 KC_CAPS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_QUOT, KC_NO,
69 KC_LSFT, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_BSLS, KC_NO,
70 _______, _______, _______, _______, _______, KC_SPC, KC_NO, KC_NO, _______, _______
71 ),
72/*
73 * Raise Layer: Function Keys
74 *
75 * ,-------------------------------------------. ,-------------------------------------------.
76 * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 |
77 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
78 * | | |EEPRST| | | | | | | | | | F12 |
79 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
80 * | LSHIFT | TAB | RESET| | | | | | | | | Play | | | | | |
81 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
82 * | | | | | Space| | MYCM | Prev | Next | | |
83 * | | | Ctrl | LAlt | | | Raise| | | | |
84 * `----------------------------------' `----------------------------------'
85 */
86 [RAISE] = LAYOUT(
87 KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
88 KC_NO, KC_NO, EEP_RST, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12,
89 KC_LSFT, KC_TAB, RESET, KC_NO, KC_NO, KC_NO, _______, _______, _______, _______, KC_MPLY, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
90 _______, _______, _______, _______, KC_SPC , KC_MPRV, KC_MNXT, _______, _______, _______
91 ),
92/*
93 * Adjust Layer: Arrow keys, RGB
94 *
95 * ,-------------------------------------------. ,-------------------------------------------.
96 * | | BTN2 | Up | BTN1 |RGBMOD|RGBTOG| | | | | | | |
97 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
98 * | | Left | Down | Right|RGBSAI|RGBHUI| | | | | | | |
99 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
100 * | RGBRST | |RGBVAI|RGBVAD|RGBSAD|RGBHUD| | | | | | | | | | | |
101 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
102 * | | | WBAK | BTN3 | WFWD | | MYCM | Calc | F15 | | |
103 * | | | | | | | Raise| | | | |
104 * `----------------------------------' `----------------------------------'
105 */
106 [ADJUST] = LAYOUT(
107 KC_NO, KC_BTN2, KC_UP, KC_BTN1, RGB_MOD, RGB_TOG, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
108 KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, RGB_SAI, RGB_HUI, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
109 RGBRST, KC_NO, RGB_VAI, RGB_VAD, RGB_SAD, RGB_HUD, _______, _______, _______, _______, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
110 _______, _______, KC_WBAK, KC_BTN3, KC_WFWD, _______, _______, _______, _______, _______
111 ),
112// /*
113// * Layer template
114// *
115// * ,-------------------------------------------. ,-------------------------------------------.
116// * | | | | | | | | | | | | | |
117// * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
118// * | | | | | | | | | | | | | |
119// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
120// * | | | | | | | | | | | | | | | | | |
121// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
122// * | | | | | | | | | | | |
123// * | | | | | | | | | | | |
124// * `----------------------------------' `----------------------------------'
125// */
126// [LAYERINDEX] = LAYOUT(
127// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
128// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
129// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
130// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
131// ),
132};
133
134layer_state_t layer_state_set_user(layer_state_t state) {
135 return update_tri_layer_state(state, LOWER, RAISE, ADJUST);
136}
137
138// bool process_record_user(uint16_t keycode, keyrecord_t *record) {
139// switch (keycode) {
140// case MyCustomKeycode:
141// if (record->event.pressed) {
142// // What to do if the button was pressed
143// } else {
144// // What to do if the button was released
145// }
146// break;
147// }
148// return true;
149// }
150
151#ifdef OLED_DRIVER_ENABLE
152oled_rotation_t oled_init_user(oled_rotation_t rotation) {
153 return OLED_ROTATION_180;
154}
155
156static void render_kyria_logo(void) {
157 static const char PROGMEM kyria_logo[] = {
158 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,
159 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,
160 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,
161 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,
162 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,
163 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,
164 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,
165 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
166 };
167 oled_write_raw_P(kyria_logo, sizeof(kyria_logo));
168}
169
170static void render_tessachka_logo(void) {
171 static const char PROGMEM Tessachka_OLED_Logo_Inverted[] =
172 {
173 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 192, 192, 192, 192, 192, 192, 192,
174 192, 192, 192, 64, 0, 0, 128, 128, 192, 192, 192, 192, 192, 192, 64, 0, 0,
175 128, 192, 192, 192, 192, 192, 192, 192, 192, 192, 64, 0, 0, 128, 192, 192, 192,
176 192, 192, 192, 192, 192, 192, 64, 0, 0, 0, 0, 0, 0, 192, 192, 0, 0,
177 0, 0, 0, 0, 0, 128, 192, 192, 192, 192, 192, 192, 192, 192, 128, 0, 0,
178 192, 128, 0, 0, 0, 0, 0, 0, 0, 0, 128, 192, 0, 192, 128, 0, 0,
179 0, 0, 128, 192, 192, 128, 0, 0, 0, 0, 0, 0, 0, 192, 192, 0, 0,
180 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
181 1, 1, 1, 1, 255, 255, 255, 127, 1, 1, 1, 0, 24, 126, 255, 255, 219,
182 219, 153, 153, 153, 137, 128, 128, 0, 135, 143, 159, 153, 153, 153, 153, 153, 153,
183 249, 240, 224, 0, 135, 143, 159, 153, 153, 153, 153, 153, 153, 249, 240, 224, 0,
184 0, 192, 240, 252, 159, 135, 135, 159, 124, 240, 192, 0, 60, 255, 255, 231, 195,
185 129, 0, 0, 0, 129, 195, 195, 195, 0, 255, 255, 255, 24, 24, 24, 24, 24,
186 24, 255, 255, 255, 0, 255, 255, 255, 28, 62, 127, 247, 227, 193, 128, 0, 0,
187 0, 192, 240, 252, 159, 135, 135, 159, 124, 240, 192, 0, 0, 0, 0, 0, 0,
188 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 0, 0,
189 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 3, 3, 3, 3, 1, 0, 0,
190 0, 1, 3, 3, 3, 3, 3, 3, 3, 3, 1, 0, 0, 0, 1, 3, 3,
191 3, 3, 3, 3, 3, 3, 1, 0, 0, 3, 3, 3, 3, 3, 3, 1, 0,
192 0, 1, 3, 3, 0, 0, 1, 3, 3, 3, 3, 3, 3, 3, 3, 1, 0,
193 0, 0, 1, 3, 0, 0, 0, 0, 0, 0, 3, 1, 0, 0, 0, 1, 3,
194 0, 0, 0, 0, 1, 3, 3, 1, 0, 3, 3, 3, 3, 3, 3, 1, 0,
195 0, 1, 3, 3, 0, 0, 0, 0, 0, 0
196 };
197 oled_write_raw_P(Tessachka_OLED_Logo_Inverted, sizeof(Tessachka_OLED_Logo_Inverted));
198 oled_advance_page(false);
199 oled_advance_page(false);
200 oled_advance_page(false);
201}
202
203static void render_status(void) {
204 // Logo and version information
205 render_tessachka_logo();
206 oled_write_P(PSTR("Kyria rev1.0\n\n"), false);
207
208 // Host Keyboard Layer Status
209 oled_write_P(PSTR("Layer: "), false);
210 switch (get_highest_layer(layer_state)) {
211 case QWERTY:
212 oled_write_P(PSTR("Default\n"), false);
213 break;
214 case LOWER:
215 oled_write_P(PSTR("Lower\n"), false);
216 break;
217 case RAISE:
218 oled_write_P(PSTR("Raise\n"), false);
219 break;
220 case ADJUST:
221 oled_write_P(PSTR("Adjust\n"), false);
222 break;
223 default:
224 oled_write_P(PSTR("Undefined\n"), false);
225 }
226
227 // Host Keyboard LED Status
228 uint8_t led_usb_state = host_keyboard_leds();
229 oled_write_P(IS_LED_ON(led_usb_state, USB_LED_NUM_LOCK) ? PSTR("NUMLCK ") : PSTR(" "), false);
230 oled_write_P(IS_LED_ON(led_usb_state, USB_LED_CAPS_LOCK) ? PSTR("CAPLCK ") : PSTR(" "), false);
231 oled_write_P(IS_LED_ON(led_usb_state, USB_LED_SCROLL_LOCK) ? PSTR("SCRLCK ") : PSTR(" "), false);
232}
233
234void oled_task_user(void) {
235 if (is_keyboard_master()) {
236 render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
237 } else {
238 render_kyria_logo();
239 }
240}
241#endif
diff --git a/keyboards/splitkb/kyria/keymaps/tessachka/rules.mk b/keyboards/splitkb/kyria/keymaps/tessachka/rules.mk
new file mode 100644
index 000000000..b7d691efd
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/tessachka/rules.mk
@@ -0,0 +1,3 @@
1OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays
2RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
3MOUSEKEY_ENABLE = yes
diff --git a/keyboards/splitkb/kyria/keymaps/thomasbaart/config.h b/keyboards/splitkb/kyria/keymaps/thomasbaart/config.h
new file mode 100644
index 000000000..6128133ed
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/thomasbaart/config.h
@@ -0,0 +1,47 @@
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
17#pragma once
18
19#ifdef OLED_DRIVER_ENABLE
20 #define OLED_DISPLAY_128X64
21#endif
22
23#ifdef RGBLIGHT_ENABLE
24 #define RGBLIGHT_ANIMATIONS
25 #define RGBLIGHT_HUE_STEP 8
26 #define RGBLIGHT_SAT_STEP 8
27 #define RGBLIGHT_VAL_STEP 8
28 #define RGBLIGHT_SLEEP
29#endif
30
31// EC11K encoders have a different resolution than other EC11 encoders.
32// When using the default resolution of 4, if you notice your encoder skipping
33// every other tick, lower the resolution to 2.
34#define ENCODER_RESOLUTION 2
35
36// The Leader key allows to flexibly assign macros to key sequences.
37#define LEADER_PER_KEY_TIMING
38#define LEADER_TIMEOUT 350
39
40#define TAPPING_TERM 200
41
42// Allows to use either side as the master. Look at the documentation for info:
43// https://docs.qmk.fm/#/config_options?id=setting-handedness
44#define EE_HANDS
45
46// Allows media codes to properly register in macros and rotary encoder code
47#define TAP_CODE_DELAY 10
diff --git a/keyboards/splitkb/kyria/keymaps/thomasbaart/keymap.c b/keyboards/splitkb/kyria/keymaps/thomasbaart/keymap.c
new file mode 100644
index 000000000..aed9d9762
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/thomasbaart/keymap.c
@@ -0,0 +1,359 @@
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
18uint16_t copy_paste_timer;
19
20enum layers {
21 QWERTY = 0,
22 LOWER,
23 RAISE,
24 NAV,
25 ADJUST
26};
27
28enum custom_keycodes {
29 KC_CCCV = SAFE_RANGE
30};
31
32const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
33/*
34 * Base Layer: QWERTY
35 *
36 * ,-------------------------------------------. ,-------------------------------------------.
37 * | ESC | Q | W | E | R | T | | Y | U | I | O | P | | \ |
38 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
39 * | LSFT | A | S | D | F | G | | H | J | K | L | ; : | ' " |
40 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
41 * | LCTL | Z | X | C | V | B | CCCV | | | Del |Leader| N | M | , < | . > | / ? | - _ |
42 * `----------------------+------+------+------+------+ | |------+------+------+------+------+----------------------'
43 * | GUI | Alt | | Space| Enter| | Bspc | Space| | Tab | AltGr|
44 * | | | Lower| Shift| Alt | | | Nav | Raise| | |
45 * `----------------------------------' `----------------------------------'
46 */
47 [QWERTY] = LAYOUT(
48 KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_PIPE,
49 KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
50 KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_CCCV, XXXXXXX, KC_DEL, KC_LEAD, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_MINS,
51 KC_LGUI, KC_LALT, MO(LOWER), MT(MOD_LSFT, KC_SPC), MT(MOD_LALT, KC_ENT), KC_BSPC, LT(NAV, KC_SPC), MO(RAISE), KC_TAB, KC_RALT
52 ),
53/*
54 * Lower Layer: Numpad, Media
55 *
56 * ,-------------------------------------------. ,-------------------------------------------.
57 * | | | | VolUp| | | | / ? | 7 & | 8 * | 9 ( | - _ | |
58 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
59 * | | | Prev | Play | Next | | | * | 4 $ | 5 % | 6 ^ | , < | + |
60 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
61 * | | | | VolDn| Mute | | | | | | | 0 ) | 1 ! | 2 @ | 3 # | = + | |
62 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
63 * | | | | | | | | | | | |
64 * | | | Lower| | | | | Nav | Raise| | |
65 * `----------------------------------' `----------------------------------'
66 */
67 [LOWER] = LAYOUT(
68 _______, _______, _______, KC_VOLU, _______, _______, KC_SLSH, KC_7, KC_8, KC_9, KC_MINS, _______,
69 _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_ASTR, KC_4, KC_5, KC_6, KC_COMM, KC_PLUS,
70 _______, _______, _______, KC_VOLD, KC_MUTE, _______, _______, _______, _______, _______, KC_0, KC_1, KC_2, KC_3, KC_EQL, _______,
71 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
72 ),
73/*
74 * Raise Layer: Symbols
75 *
76 * ,-------------------------------------------. ,-------------------------------------------.
77 * | | ! | @ | { | } | | | | | _ | € | | | \ |
78 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
79 * | | # | $ | ( | ) | ` | | + | - | / | * | % | ' " |
80 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
81 * | | % | ^ | [ | ] | ~ | | | | | | & | = | , | . | / ? | - _ |
82 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
83 * | | | | | | | | | | | |
84 * | | | Lower| | | | | Nav | Raise| | |
85 * `----------------------------------' `----------------------------------'
86 */
87 [RAISE] = LAYOUT(
88 _______, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, _______, KC_UNDS, ALGR(KC_5),_______,_______,KC_BSLS,
89 _______, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV, KC_PLUS, KC_MINS, KC_SLSH, KC_ASTR, KC_PERC, KC_QUOT,
90 _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, _______, _______, _______, _______, KC_AMPR, KC_EQL, KC_COMM, KC_DOT, KC_SLSH, KC_MINS,
91 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
92 ),
93/*
94 * Navigation Layer
95 *
96 * ,-------------------------------------------. ,-------------------------------------------.
97 * | | | | | | | | PgUp | Home | Up | End | | ScrlLk |
98 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
99 * | | | | | | | | PgDn | Left | Down | Right| | CapsLk |
100 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
101 * | | | | | | | | | | | | | | | | | |
102 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
103 * | | | | | | | | | | | |
104 * | | | Lower| | | | | Nav | Raise| | |
105 * `----------------------------------' `----------------------------------'
106 */
107 [NAV] = LAYOUT(
108 _______, _______, _______, _______, _______, _______, KC_PGUP, KC_HOME, KC_UP, KC_END, _______, KC_SLCK,
109 _______, _______, _______, _______, _______, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_CAPS,
110 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
111 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
112 ),
113/*
114 * Adjust Layer
115 *
116 * ,-------------------------------------------. ,-------------------------------------------.
117 * | | | | | | | | | F7 | F8 | F9 | F10 | |
118 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
119 * | | | SAI | HUI | VAI | | | | F4 | F5 | F6 | F11 | |
120 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
121 * | | | SAD | HUD | VAD | | | | | | | | F1 | F2 | F3 | F12 | |
122 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
123 * | | | | | | | | | | | |
124 * | | | | | | | | | | | |
125 * `----------------------------------' `----------------------------------'
126 */
127 [ADJUST] = LAYOUT(
128 _______, _______, _______, _______, _______, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, _______,
129 _______, _______, RGB_SAI, RGB_HUI, RGB_VAI, _______, _______, KC_F4, KC_F5, KC_F6, KC_F11, _______,
130 _______, _______, RGB_SAD, RGB_HUD, RGB_VAD, _______, _______, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F12, _______,
131 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
132 ),
133// /*
134// * Layer template
135// *
136// * ,-------------------------------------------. ,-------------------------------------------.
137// * | | | | | | | | | | | | | |
138// * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
139// * | | | | | | | | | | | | | |
140// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
141// * | | | | | | | | | | | | | | | | | |
142// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
143// * | | | | | | | | | | | |
144// * | | | | | | | | | | | |
145// * `----------------------------------' `----------------------------------'
146// */
147// [_LAYERINDEX] = LAYOUT(
148// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
149// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
150// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
151// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
152// ),
153};
154
155layer_state_t layer_state_set_user(layer_state_t state) {
156 return update_tri_layer_state(state, LOWER, RAISE, ADJUST);
157}
158
159bool process_record_user(uint16_t keycode, keyrecord_t *record) {
160 switch (keycode) {
161 case KC_CCCV: // One key copy/paste
162 if (record->event.pressed) {
163 copy_paste_timer = timer_read();
164 } else {
165 if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) { // Hold, copy
166 tap_code16(LCTL(KC_C));
167 } else { // Tap, paste
168 tap_code16(LCTL(KC_V));
169 }
170 }
171 break;
172 }
173 return true;
174}
175
176
177bool is_alt_tab_active = false;
178uint16_t alt_tab_timer = 0;
179
180LEADER_EXTERNS();
181
182void matrix_scan_user(void) {
183 if (is_alt_tab_active) {
184 if (timer_elapsed(alt_tab_timer) > 1000) {
185 unregister_code(KC_LALT);
186 is_alt_tab_active = false;
187 }
188 }
189
190 LEADER_DICTIONARY() {
191 leading = false;
192 leader_end();
193
194 SEQ_ONE_KEY(KC_C) { // Inline Code
195 SEND_STRING("`` " SS_TAP(X_LEFT) SS_TAP(X_LEFT));
196 }
197 SEQ_ONE_KEY(KC_P) { // Invoke Password Manager
198 SEND_STRING(SS_LCTRL(SS_LALT("\\")));
199 }
200 SEQ_ONE_KEY(KC_S) { // Windows screenshot
201 SEND_STRING(SS_LGUI("\nS"));
202 }
203 SEQ_TWO_KEYS(KC_F, KC_P) { // Fusion Projection prefix
204 SEND_STRING("[Projection] ");
205 }
206 SEQ_TWO_KEYS(KC_B, KC_B) { // Basecone invoice description
207 SEND_STRING("[Leveranciersnaam] [Factuurnummer]");
208 }
209 SEQ_TWO_KEYS(KC_E, KC_S) { // Support email splitkb
210 SEND_STRING("support@splitkb.com");
211 }
212 SEQ_TWO_KEYS(KC_E, KC_T) { // Email splitkb
213 SEND_STRING("thomas@splitkb.com");
214 }
215 SEQ_TWO_KEYS(KC_E, KC_P) { // Email personal
216 SEND_STRING("mail@thomasbaart.nl");
217 }
218 SEQ_TWO_KEYS(KC_S, KC_D) { // Splitkb documentation
219 SEND_STRING("https://docs.splitkb.com/");
220 }
221 SEQ_TWO_KEYS(KC_S, KC_V) { // Splitkb VAT number
222 SEND_STRING("NL210593349B01");
223 }
224 SEQ_TWO_KEYS(KC_B, KC_C) { // Discord bongocat
225 SEND_STRING(":bongocat:\n");
226 }
227 SEQ_TWO_KEYS(KC_C, KC_B) { // Discord code block
228 SEND_STRING("```c" SS_LSFT("\n\n") "``` " SS_TAP(X_UP));
229 }
230 SEQ_TWO_KEYS(KC_Y, KC_S) { // Greeting
231 SEND_STRING("Yours sincerely,\n\nThomas Baart");
232 }
233 SEQ_THREE_KEYS(KC_M, KC_V, KC_G) { // Greeting
234 SEND_STRING("Met vriendelijke groet,\n\nThomas Baart");
235 }
236 }
237}
238
239#ifdef OLED_DRIVER_ENABLE
240oled_rotation_t oled_init_user(oled_rotation_t rotation) {
241 return OLED_ROTATION_180;
242}
243
244static void render_kyria_logo(void) {
245 static const char PROGMEM kyria_logo[] = {
246 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,
247 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,
248 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,
249 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,
250 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,
251 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,
252 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,
253 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
254 };
255 oled_write_raw_P(kyria_logo, sizeof(kyria_logo));
256}
257
258static void render_qmk_logo(void) {
259 static const char PROGMEM qmk_logo[] = {
260 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
261 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
262 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0};
263
264 oled_write_P(qmk_logo, false);
265}
266
267static void render_status(void) {
268 // QMK Logo and version information
269 render_qmk_logo();
270 oled_write_P(PSTR(" Kyria rev1.0\n\n"), false);
271
272 // Host Keyboard Layer Status
273 oled_write_P(PSTR("Layer: "), false);
274 switch (get_highest_layer(layer_state)) {
275 case QWERTY:
276 oled_write_P(PSTR("Default\n"), false);
277 break;
278 case LOWER:
279 oled_write_P(PSTR("Lower\n"), false);
280 break;
281 case RAISE:
282 oled_write_P(PSTR("Raise\n"), false);
283 break;
284 case NAV:
285 oled_write_P(PSTR("Navigation\n"), false);
286 break;
287 case ADJUST:
288 oled_write_P(PSTR("Adjust\n"), false);
289 break;
290 default:
291 oled_write_P(PSTR("Undefined\n"), false);
292 }
293
294 // Host Keyboard LED Status
295 uint8_t led_usb_state = host_keyboard_leds();
296 oled_write_P(IS_LED_ON(led_usb_state, USB_LED_NUM_LOCK) ? PSTR("NUMLCK ") : PSTR(" "), false);
297 oled_write_P(IS_LED_ON(led_usb_state, USB_LED_CAPS_LOCK) ? PSTR("CAPLCK ") : PSTR(" "), false);
298 oled_write_P(IS_LED_ON(led_usb_state, USB_LED_SCROLL_LOCK) ? PSTR("SCRLCK ") : PSTR(" "), false);
299}
300
301void oled_task_user(void) {
302 if (is_keyboard_master()) {
303 render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
304 } else {
305 render_kyria_logo();
306 }
307}
308#endif
309
310#ifdef ENCODER_ENABLE
311bool encoder_update_user(uint8_t index, bool clockwise) {
312 if (index == 0) {
313 switch (biton32(layer_state)) {
314 case QWERTY:
315 // History scrubbing. For Adobe products, hold shift while moving
316 // backward to go forward instead.
317 if (clockwise) {
318 tap_code16(C(KC_Z));
319 } else {
320 tap_code16(C(KC_Y));
321 }
322 break;
323 default:
324 // Switch between windows on Windows with alt tab.
325 if (clockwise) {
326 if (!is_alt_tab_active) {
327 is_alt_tab_active = true;
328 register_code(KC_LALT);
329 }
330 alt_tab_timer = timer_read();
331 tap_code16(KC_TAB);
332 } else {
333 tap_code16(S(KC_TAB));
334 }
335 break;
336 }
337 } else if (index == 1) {
338 switch (biton32(layer_state)) {
339 case QWERTY:
340 // Scrolling with PageUp and PgDn.
341 if (clockwise) {
342 tap_code(KC_PGDN);
343 } else {
344 tap_code(KC_PGUP);
345 }
346 break;
347 default:
348 // Volume control.
349 if (clockwise) {
350 tap_code(KC_VOLU);
351 } else {
352 tap_code(KC_VOLD);
353 }
354 break;
355 }
356 }
357 return true;
358}
359#endif
diff --git a/keyboards/splitkb/kyria/keymaps/thomasbaart/rules.mk b/keyboards/splitkb/kyria/keymaps/thomasbaart/rules.mk
new file mode 100644
index 000000000..9b8e29419
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/thomasbaart/rules.mk
@@ -0,0 +1,5 @@
1OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays
2ENCODER_ENABLE = yes # Enables the use of one or more encoders
3RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
4LEADER_ENABLE = yes # Enable the Leader Key feature
5MOUSEKEY_ENABLE = no
diff --git a/keyboards/splitkb/kyria/keymaps/via/config.h b/keyboards/splitkb/kyria/keymaps/via/config.h
new file mode 100644
index 000000000..3ca93f4fd
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/via/config.h
@@ -0,0 +1,40 @@
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
17#pragma once
18
19#define LAYER_STATE_8BIT
20#define DYNAMIC_KEYMAP_LAYER_COUNT 5
21#define IGNORE_MOD_TAP_INTERRUPT
22
23#undef LOCKING_SUPPORT_ENABLE
24#undef LOCKING_RESYNC_ENABLE
25
26#ifdef RGBLIGHT_ENABLE
27# define RGBLIGHT_EFFECT_BREATHING
28# define RGBLIGHT_EFFECT_RAINBOW_MOOD
29# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
30# define RGBLIGHT_EFFECT_SNAKE
31# define RGBLIGHT_EFFECT_KNIGHT
32# define RGBLIGHT_EFFECT_STATIC_GRADIENT
33
34# define RGBLIGHT_HUE_STEP 8
35# define RGBLIGHT_SAT_STEP 8
36# define RGBLIGHT_VAL_STEP 8
37# define RGBLIGHT_LIMIT_VAL 150
38#endif
39
40#define USB_POLLING_INTERVAL_MS 1
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
diff --git a/keyboards/splitkb/kyria/keymaps/via/rules.mk b/keyboards/splitkb/kyria/keymaps/via/rules.mk
new file mode 100644
index 000000000..1a13a974e
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/via/rules.mk
@@ -0,0 +1,9 @@
1OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays
2ENCODER_ENABLE = yes # Enables the use of one or more encoders
3RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
4VIA_ENABLE = yes
5NKRO_ENABLE = yes
6KEY_LOCK_ENABLE = no
7SPACE_CADET_ENABLE = no
8MAGIC_ENABLE = no
9GRAVE_ESCAPE_ENABLE = no
diff --git a/keyboards/splitkb/kyria/keymaps/winternebs/config.h b/keyboards/splitkb/kyria/keymaps/winternebs/config.h
new file mode 100755
index 000000000..472d57739
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/winternebs/config.h
@@ -0,0 +1,31 @@
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#pragma once
17
18#define OLED_FONT_H "keyboards/splitkb/kyria/keymaps/winternebs/glcdfont.c"
19#define OLED_FONT_END 127
20#ifdef OLED_DRIVER_ENABLE
21 #define OLED_DISPLAY_128X64
22#endif
23
24#define FORCE_NKRO
25#define ENCODER_RESOLUTION 4
26
27#define NO_ACTION_MACRO
28#define NO_ACTION_FUNCTION
29#define NO_ACTION_ONESHOT
30#define TAPPING_FORCE_HOLD
31#define IGNORE_MOD_TAP_INTERRUPT
diff --git a/keyboards/splitkb/kyria/keymaps/winternebs/glcdfont.c b/keyboards/splitkb/kyria/keymaps/winternebs/glcdfont.c
new file mode 100755
index 000000000..7303c6aff
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/winternebs/glcdfont.c
@@ -0,0 +1,55 @@
1#include "progmem.h"
2
3// Helidox 8x6 font with QMK Firmware Logo
4// Online editor: http://teripom.x0.com/
5
6static const unsigned char font[] PROGMEM = {// 'download (1)', 192x32px
70x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x5b, 0x4f, 0x5b, 0x3e, 0x00, 0x3e, 0x6b, 0x4f, 0x6b,
80x3e, 0x00, 0x1c, 0x3e, 0x7c, 0x3e, 0x1c, 0x00, 0x18, 0x3c, 0x7e, 0x3c, 0x18, 0x00, 0x1c, 0x57,
90x7d, 0x57, 0x1c, 0x00, 0x1c, 0x5e, 0x7f, 0x5e, 0x1c, 0x00, 0x00, 0x18, 0x3c, 0x18, 0x00, 0x00,
100xff, 0xe7, 0xc3, 0xe7, 0xff, 0x00, 0x00, 0x18, 0x24, 0x18, 0x00, 0x00, 0xff, 0xe7, 0xdb, 0xe7,
110xff, 0x00, 0x30, 0x48, 0x3a, 0x06, 0x0e, 0x00, 0x26, 0x29, 0x79, 0x29, 0x26, 0x00, 0x40, 0x7f,
120x05, 0x05, 0x07, 0x00, 0x40, 0x7f, 0x05, 0x25, 0x3f, 0x00, 0x5a, 0x3c, 0xe7, 0x3c, 0x5a, 0x00,
130x7f, 0x3e, 0x1c, 0x1c, 0x08, 0x00, 0x08, 0x1c, 0x1c, 0x3e, 0x7f, 0x00, 0x14, 0x22, 0x7f, 0x22,
140x14, 0x00, 0x5f, 0x5f, 0x00, 0x5f, 0x5f, 0x00, 0x06, 0x09, 0x7f, 0x01, 0x7f, 0x00, 0x00, 0x66,
150x89, 0x95, 0x6a, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x94, 0xa2, 0xff, 0xa2, 0x94, 0x00,
160x08, 0x04, 0x7e, 0x04, 0x08, 0x00, 0x10, 0x20, 0x7e, 0x20, 0x10, 0x00, 0x08, 0x08, 0x2a, 0x1c,
170x08, 0x00, 0x08, 0x1c, 0x2a, 0x08, 0x08, 0x00, 0x1e, 0x10, 0x10, 0x10, 0x10, 0x00, 0x0c, 0x1e,
180x0c, 0x1e, 0x0c, 0x00, 0x30, 0x38, 0x3e, 0x38, 0x30, 0x00, 0x06, 0x0e, 0x3e, 0x0e, 0x06, 0x00,
190x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x07,
200x00, 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14, 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12, 0x00, 0x23, 0x13,
210x08, 0x64, 0x62, 0x00, 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, 0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
220x00, 0x1c, 0x22, 0x41, 0x00, 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00, 0x00, 0x2a, 0x1c, 0x7f, 0x1c,
230x2a, 0x00, 0x08, 0x08, 0x3e, 0x08, 0x08, 0x00, 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, 0x08, 0x08,
240x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
250x3e, 0x51, 0x49, 0x45, 0x3e, 0x00, 0x00, 0x42, 0x7f, 0x40, 0x00, 0x00, 0x72, 0x49, 0x49, 0x49,
260x46, 0x00, 0x21, 0x41, 0x49, 0x4d, 0x33, 0x00, 0x18, 0x14, 0x12, 0x7f, 0x10, 0x00, 0x27, 0x45,
270x45, 0x45, 0x39, 0x00, 0x3c, 0x4a, 0x49, 0x49, 0x31, 0x00, 0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
280x36, 0x49, 0x49, 0x49, 0x36, 0x00, 0x46, 0x49, 0x49, 0x29, 0x1e, 0x00, 0x00, 0x00, 0x14, 0x00,
290x00, 0x00, 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, 0x14, 0x14,
300x14, 0x14, 0x14, 0x00, 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, 0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
310x3e, 0x41, 0x5d, 0x59, 0x4e, 0x00, 0x7c, 0x12, 0x11, 0x12, 0x7c, 0x00, 0x7f, 0x49, 0x49, 0x49,
320x36, 0x00, 0x3e, 0x41, 0x41, 0x41, 0x22, 0x00, 0x7f, 0x41, 0x41, 0x41, 0x3e, 0x00, 0x7f, 0x49,
330x49, 0x49, 0x41, 0x00, 0x7f, 0x09, 0x09, 0x09, 0x01, 0x00, 0x3e, 0x41, 0x41, 0x51, 0x73, 0x00,
340x7f, 0x08, 0x08, 0x08, 0x7f, 0x00, 0x00, 0x41, 0x7f, 0x41, 0x00, 0x00, 0x20, 0x40, 0x41, 0x3f,
350x01, 0x00, 0x7f, 0x08, 0x14, 0x22, 0x41, 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x00, 0x7f, 0x02,
360x1c, 0x02, 0x7f, 0x00, 0x7f, 0x04, 0x08, 0x10, 0x7f, 0x00, 0x3e, 0x41, 0x41, 0x41, 0x3e, 0x00,
370x7f, 0x09, 0x09, 0x09, 0x06, 0x00, 0x3e, 0x41, 0x51, 0x21, 0x5e, 0x00, 0x7f, 0x09, 0x19, 0x29,
380x46, 0x00, 0x26, 0x49, 0x49, 0x49, 0x32, 0x00, 0x03, 0x01, 0x7f, 0x01, 0x03, 0x00, 0x3f, 0x40,
390x40, 0x40, 0x3f, 0x00, 0x1f, 0x20, 0x40, 0x20, 0x1f, 0x00, 0x3f, 0x40, 0x38, 0x40, 0x3f, 0x00,
400x63, 0x14, 0x08, 0x14, 0x63, 0x00, 0x03, 0x04, 0x78, 0x04, 0x03, 0x00, 0x61, 0x59, 0x49, 0x4d,
410x43, 0x00, 0x00, 0x7f, 0x41, 0x41, 0x41, 0x00, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00, 0x41,
420x41, 0x41, 0x7f, 0x00, 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
430x00, 0x03, 0x07, 0x08, 0x00, 0x00, 0x20, 0x54, 0x54, 0x78, 0x40, 0x00, 0x7f, 0x28, 0x44, 0x44,
440x38, 0x00, 0x38, 0x44, 0x44, 0x44, 0x28, 0x00, 0x38, 0x44, 0x44, 0x28, 0x7f, 0x00, 0x38, 0x54,
450x54, 0x54, 0x18, 0x00, 0x00, 0x08, 0x7e, 0x09, 0x02, 0x00, 0x18, 0xa4, 0xa4, 0x9c, 0x78, 0x00,
460x7f, 0x08, 0x04, 0x04, 0x78, 0x00, 0x00, 0x44, 0x7d, 0x40, 0x00, 0x00, 0x20, 0x40, 0x40, 0x3d,
470x00, 0x00, 0x7f, 0x10, 0x28, 0x44, 0x00, 0x00, 0x00, 0x41, 0x7f, 0x40, 0x00, 0x00, 0x7c, 0x04,
480x78, 0x04, 0x78, 0x00, 0x7c, 0x08, 0x04, 0x04, 0x78, 0x00, 0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
490xfc, 0x18, 0x24, 0x24, 0x18, 0x00, 0x18, 0x24, 0x24, 0x18, 0xfc, 0x00, 0x7c, 0x08, 0x04, 0x04,
500x08, 0x00, 0x48, 0x54, 0x54, 0x54, 0x24, 0x00, 0x04, 0x04, 0x3f, 0x44, 0x24, 0x00, 0x3c, 0x40,
510x40, 0x20, 0x7c, 0x00, 0x1c, 0x20, 0x40, 0x20, 0x1c, 0x00, 0x3c, 0x40, 0x30, 0x40, 0x3c, 0x00,
520x44, 0x28, 0x10, 0x28, 0x44, 0x00, 0x4c, 0x90, 0x90, 0x90, 0x7c, 0x00, 0x44, 0x64, 0x54, 0x4c,
530x44, 0x00, 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x41,
540x36, 0x08, 0x00, 0x00, 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, 0x3c, 0x26, 0x23, 0x26, 0x3c, 0x00
55}; \ No newline at end of file
diff --git a/keyboards/splitkb/kyria/keymaps/winternebs/keymap.c b/keyboards/splitkb/kyria/keymaps/winternebs/keymap.c
new file mode 100755
index 000000000..3a31efdf3
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/winternebs/keymap.c
@@ -0,0 +1,732 @@
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
18#ifdef CONSOLE_ENABLE
19 #include <print.h>
20#endif
21enum custom_keycodes {
22 QWERTY = SAFE_RANGE,
23 WORKMAN,
24 ADJUST,
25 SBKSP,
26 ENDW
27};
28
29enum layers {
30 _QWERTY = 0,
31 _WORKMAN,
32 _LOWER,
33 _RAISE,
34 _ADJUST
35};
36#define RAISE LT(_RAISE, KC_ENT)
37#define LOWER MO(_LOWER)
38#define HOME_A KC_A
39#define HOME_S KC_S
40#define HOME_H CTL_T(KC_H)
41#define HOME_T SFT_T(KC_T)
42#define HOME_N SFT_T(KC_N)
43#define HOME_E CTL_T(KC_E)
44#define HOME_O KC_O
45#define HOME_I KC_I
46const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
47/*
48 * Base Layer: QWERTY
49 *
50 * ,-------------------------------------------. ,-------------------------------------------.
51 * | ESC | Q | W | E | R | T | | Y | U | I | O | P | |
52 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
53 * | TAB | A | S | D | F | G | | H | J | K | L | ; | ' |
54 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
55 * | CTRL | Z | X | C | V | B | | | | | | N | M | , | . | / | ENTER |
56 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
57 * | GUI | ALT | LOWER| Space| | | SHIFT| Bksp | RAISE| | |
58 * `----------------------------------' `----------------------------------'
59 */
60 [_QWERTY] = LAYOUT(
61 KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, _______,
62 KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
63 KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, _______, _______, _______, _______, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
64 KC_LGUI, KC_LALT, LOWER, KC_SPC, _______, KC_LSFT, KC_BSPC, RAISE, _______, _______
65 ),
66 /*
67 * Workman Layer
68 *
69 * ,-------------------------------------------. ,-------------------------------------------.
70 * | ESC | Q | D | R | W | B | | J | F | U | P | ; | Bksp |
71 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
72 * | TAB | A | S | H | T | G | | Y | N | E | O | I | ' |
73 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
74 * | | Z | X | M | C | V | SHIFT| Space| | | ENTER| K | L | , | . | / | |
75 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
76 * | GUI | ESC | LOWER| Space| SWAP | | SWAP | Bksp | RAISE| | |
77 * `----------------------------------' `----------------------------------'
78 */
79 [_WORKMAN] = LAYOUT(
80 KC_ESC, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_BSPC,
81 KC_TAB, HOME_A, HOME_S, HOME_H, HOME_T, KC_G, KC_Y, HOME_N, HOME_E, HOME_O, HOME_I, KC_QUOT,
82 XXXXXXX, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_LSFT, KC_SPC, SH_MON, KC_ENT, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH, XXXXXXX,
83 KC_LGUI, KC_LALT, LOWER, KC_SPC, SH_MON, SH_MON, KC_BSPC, RAISE, XXXXXXX, _______
84 ),
85/*
86 * Lower Layer: NUM/symb
87 *
88 * ,-------------------------------------------. ,-------------------------------------------.
89 * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | |
90 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
91 * | DEL | $ | + | ( | ) | @ | | | | - | = | _ | * | \ |
92 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
93 * | | ! | # | { | } | ~ | | | | | | & | [ | ] | % | ^ | |
94 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
95 * |prints| | | | | | | | | | |
96 * `----------------------------------' `----------------------------------'
97 */
98 [_LOWER] = LAYOUT(
99 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
100 KC_DEL, KC_DLR, KC_PLUS, KC_LPRN, KC_RPRN, KC_AT, KC_PIPE, KC_MINS, KC_EQL, KC_UNDS, KC_ASTR, KC_BSLS,
101 _______, KC_EXLM, KC_HASH, KC_LCBR, KC_RCBR, KC_TILD, _______, _______, _______, _______, KC_AMPR, KC_LBRC, KC_RBRC, KC_PERC, KC_CIRC, _______,
102 KC_PSCR, _______, _______, _______, _______, _______, KC_BSPC, _______, _______, _______
103 ),
104 /*
105 * Raise Layer: VIM Movement
106 *
107 * ,-------------------------------------------. ,-------------------------------------------.
108 * | | | PgDn | | Word | Back | | Down | | PgUp | | | |
109 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
110 * | | | | Left | | | | | | End | | | |
111 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
112 * | | | | | | | | | | | | Up | Right| | | | |
113 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
114 * | | | | | | | | | | | |
115 * | | | | | | | | | | | |
116 * `----------------------------------' `----------------------------------'
117 */
118 [_RAISE] = LAYOUT(
119 _______, _______, KC_PGDN, _______, C(KC_RGHT), C(KC_LEFT), KC_DOWN, _______, KC_PGUP, _______, _______, _______,
120 _______, _______, _______, KC_LEFT, _______, _______, _______, _______, ENDW, _______, _______, _______,
121 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, KC_RGHT, _______, _______, _______, _______,
122 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
123 ),
124 /*
125 * Layer template
126 *
127 * ,-------------------------------------------. ,-------------------------------------------.
128 * | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 |
129 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
130 * | | | | | | | | | | | | | |
131 * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
132 * | | | | |QWERTY|WRKMAN| | | | | | | | | | | |
133 * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
134 * | | | | | | | | | | | |
135 * | | | | | | | | | | | |
136 * `----------------------------------' `----------------------------------'
137 */
138 [_ADJUST] = LAYOUT(
139 KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
140 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
141 _______, _______, _______, _______, QWERTY, WORKMAN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
142 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
143 ),
144// /*
145// * Layer template
146// *
147// * ,-------------------------------------------. ,-------------------------------------------.
148// * | | | | | | | | | | | | | |
149// * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
150// * | | | | | | | | | | | | | |
151// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
152// * | | | | | | | | | | | | | | | | | |
153// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
154// * | | | | | | | | | | | |
155// * | | | | | | | | | | | |
156// * `----------------------------------' `----------------------------------'
157// */
158// [_LAYERINDEX] = LAYOUT(
159// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
160// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
161// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
162// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
163// ),
164};
165
166
167layer_state_t layer_state_set_user(layer_state_t state) {
168 return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
169}
170
171#ifdef ENCODER_ENABLE
172bool encoder_update_user(uint8_t index, bool clockwise) {
173 if (index == 0) {
174 // Volume control
175 if (clockwise) {
176 tap_code(KC_RGHT);
177 } else {
178 tap_code(KC_LEFT);
179 }
180 }
181 else if (index == 1) {
182 // Page up/Page down
183 if (clockwise) {
184 tap_code(KC_DOWN);
185 } else {
186 tap_code(KC_UP);
187 }
188 }
189 return true;
190}
191#endif
192#ifdef OLED_DRIVER_ENABLE
193bool left = false;
194bool right = false;
195bool lastl = false;
196bool lastr = false;
197#endif
198bool bksp = false;
199bool process_record_user(uint16_t keycode, keyrecord_t *record) {
200 #ifdef CONSOLE_ENABLE
201 uprintf("KL: kc: %u, col: %u, row: %u, pressed: %u, total: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed, record->event.key.col + 10 * record->event.key.row);
202 #endif
203 #ifdef OLED_DRIVER_ENABLE
204 if(record->event.pressed){
205 uint8_t n = record->event.key.col + 10 * record->event.key.row;
206 if (n<40) {
207 left = true;
208 }
209 else {
210 right = true;
211 }
212 }
213 #endif
214 switch (keycode) {
215 case QWERTY:
216 if (record->event.pressed) {
217 set_single_persistent_default_layer(_QWERTY);
218 }
219 return false;
220 break;
221 case WORKMAN:
222 if (record->event.pressed) {
223 set_single_persistent_default_layer(_WORKMAN);
224 }
225 return false;
226 break;
227 case SBKSP:
228 if (record->event.pressed) {
229 register_code(KC_LSFT);
230 bksp = true;
231 }
232 else {
233 unregister_code(KC_LSFT);
234 if (bksp) {
235 tap_code(KC_BSPC);
236 }
237 }
238 return false;
239 break;
240 case ENDW:
241 if (record->event.pressed) {
242 register_code(KC_LCTL);
243 tap_code(KC_RGHT);
244 unregister_code(KC_LCTL);
245 tap_code(KC_LEFT);
246 }
247 }
248 bksp = false;
249 return true;
250
251}
252
253#ifdef OLED_DRIVER_ENABLE
254oled_rotation_t oled_init_user(oled_rotation_t rotation) {
255 return OLED_ROTATION_180;
256}
257
258
259
260char wpm_str[10];
261// WPM-responsive animation stuff here
262#define IDLE_FRAMES 2
263#define IDLE_SPEED 10 // below this wpm value your animation will idle
264
265
266#define TAP_FRAMES 3
267
268#define ANIM_FRAME_DURATION 400 // how long each frame lasts in ms
269// #define SLEEP_TIMER 60000 // should sleep after this period of 0 wpm, needs fixing
270#define ANIM_SIZE 896 // number of bytes in array, minimize for adequate firmware size, max is 1024
271
272uint32_t anim_timer = 0;
273uint32_t anim_sleep = 0;
274uint8_t current_idle_frame = 0;
275// uint8_t current_prep_frame = 0; // uncomment if PREP_FRAMES >1
276uint8_t current_tap_frame = 0;
277// Credit to obosob for initial animation approach.
278static void render_anim(void) {
279 static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = {
280 {
281// 'bongo0', 128x56px
2820x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2830x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2840x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x60, 0x20, 0x30, 0x30, 0x10,
2850x18, 0x08, 0x0c, 0x04, 0x04, 0x04, 0x86, 0x82, 0xc2, 0x42, 0x22, 0x12, 0x12, 0x12, 0x12, 0x14,
2860x14, 0x14, 0x14, 0x14, 0x18, 0x19, 0x19, 0x11, 0x11, 0x10, 0x10, 0x00, 0x20, 0xf0, 0x2f, 0x24,
2870x66, 0xda, 0xd1, 0x11, 0x91, 0x91, 0x11, 0x11, 0x11, 0x12, 0x1e, 0x04, 0x00, 0x00, 0x00, 0x00,
2880x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2890x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2900x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2910x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2920x00, 0x00, 0xc0, 0x20, 0x18, 0x04, 0x02, 0x01, 0x80, 0x80, 0x00, 0x40, 0x40, 0xc0, 0x40, 0x30,
2930x90, 0x88, 0x44, 0x42, 0x42, 0x41, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20,
2940x20, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0xf0, 0x88, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00,
2950x00, 0x00, 0x01, 0x03, 0x06, 0x08, 0x71, 0x81, 0x02, 0x06, 0x04, 0x08, 0x10, 0x20, 0xc0, 0x00,
2960x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2970x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2980x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2990x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3000x00, 0x03, 0x82, 0xe2, 0x39, 0x09, 0x05, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x39,
3010x1c, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
3020xe0, 0xf0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x18, 0x20, 0x40, 0x80, 0x00, 0x00,
3030x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01,
3040x06, 0x38, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3050x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3060x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00,
3070x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x40, 0x20, 0x30,
3080x18, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3090x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3100x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02,
3110x02, 0x04, 0x08, 0x08, 0x10, 0x08, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xf3, 0x06, 0x0c, 0x10,
3120x20, 0x20, 0xc1, 0xff, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3130x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3140x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3150x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0xfa, 0x06, 0x06, 0x03, 0x03, 0x02, 0x02, 0x04, 0x18,
3160xf0, 0x80, 0xc0, 0x60, 0x20, 0x10, 0x18, 0x0c, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x10, 0x10,
3170x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x40,
3180x40, 0x40, 0x80, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3190x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00,
3200x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3210x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3220x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3230x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03, 0x01, 0x01,
3240x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3250x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
3260x8e, 0x03, 0x01, 0x01, 0x01, 0x03, 0x06, 0x9c, 0xf0, 0x80, 0xc0, 0x40, 0x60, 0x20, 0x30, 0x10,
3270x08, 0x0d, 0x07, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x07, 0x04, 0x00,
3280x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10,
3290x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3300x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3310x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3320x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3330x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3340x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3350x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3360x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3370x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
338 },
339 {
340// 'bongo1', 128x56px
3410x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3420x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3430x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40,
3440x60, 0x20, 0x20, 0x20, 0x20, 0x00, 0x10, 0x10, 0x10, 0x90, 0x90, 0x90, 0x90, 0x90, 0xa0, 0xa0,
3450xa0, 0xa0, 0xa0, 0xc0, 0xc0, 0xc1, 0x80, 0x80, 0x81, 0x81, 0x02, 0x06, 0x84, 0x7c, 0x5f, 0x58,
3460x4c, 0x46, 0x42, 0x42, 0x42, 0x43, 0x61, 0x23, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3470x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3480x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3490x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3500x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xa0, 0x20, 0x20,
3510x30, 0x10, 0x10, 0x18, 0x08, 0x08, 0x0c, 0x04, 0x06, 0x02, 0x03, 0x01, 0x08, 0x18, 0x18, 0x28,
3520x68, 0x44, 0x84, 0x84, 0x86, 0x02, 0x02, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3530x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x09, 0x07, 0x01, 0x01, 0x03,
3540x06, 0x06, 0x10, 0x3c, 0x4c, 0xc8, 0x88, 0x08, 0x08, 0x18, 0x10, 0x30, 0x60, 0xc0, 0x80, 0x00,
3550x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3560x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3570x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3580x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
3590x01, 0x01, 0x81, 0xc1, 0x21, 0x31, 0x11, 0x0d, 0x05, 0x01, 0x03, 0x02, 0x06, 0x0e, 0xc6, 0xe4,
3600x04, 0x04, 0x04, 0x06, 0x02, 0x03, 0x01, 0x03, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
3610x81, 0x01, 0x01, 0x01, 0x00, 0x00, 0x07, 0x0c, 0x30, 0x40, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00,
3620x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x1e, 0x30, 0x40, 0x80, 0x00, 0x00, 0x00, 0x01, 0x07,
3630x1c, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3640x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3650x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00,
3660x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x40, 0x20, 0x30,
3670x18, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
3680x00, 0x00, 0x00, 0x02, 0x04, 0x08, 0x08, 0x08, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
3690x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x02, 0x02,
3700x06, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x0c, 0x04, 0x0c, 0x3c, 0x15, 0xd3, 0x72, 0x10, 0x20,
3710x20, 0x20, 0x21, 0x23, 0x26, 0x24, 0x2c, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3720x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3730x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3740x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0xfa, 0x06, 0x06, 0x03, 0x03, 0x02, 0x02, 0x04, 0x18,
3750xf0, 0x80, 0xc0, 0x60, 0x20, 0x10, 0x18, 0x0c, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x10, 0x10,
3760x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x40,
3770x40, 0x40, 0x80, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3780x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00,
3790x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3800x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3810x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3820x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03, 0x01, 0x01,
3830x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3840x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
3850x8e, 0x03, 0x01, 0x01, 0x01, 0x03, 0x06, 0x9c, 0xf0, 0x80, 0xc0, 0x40, 0x60, 0x20, 0x30, 0x10,
3860x08, 0x0d, 0x07, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x07, 0x04, 0x00,
3870x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10,
3880x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3890x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3900x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3910x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3920x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3930x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3940x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3950x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3960x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
397 }
398 };
399 static const char PROGMEM prep[][ANIM_SIZE] = {
400 {
401// 'bongo2', 128x56px
4020x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4030x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4040x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x60, 0x20, 0x30, 0x30, 0x10,
4050x18, 0x08, 0x0c, 0x04, 0x04, 0x04, 0x86, 0x82, 0xc2, 0x42, 0x22, 0x12, 0x12, 0x12, 0x12, 0x14,
4060x14, 0x14, 0x14, 0x14, 0x18, 0x19, 0x19, 0x11, 0x11, 0x10, 0x10, 0x00, 0x20, 0xf0, 0x2f, 0x24,
4070x66, 0xda, 0xd1, 0x11, 0x91, 0x91, 0x11, 0x11, 0x11, 0x12, 0x1e, 0x04, 0x00, 0x00, 0x00, 0x00,
4080x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4090x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4100x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4110x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4120x00, 0x00, 0xc0, 0x20, 0x18, 0x04, 0x02, 0x01, 0x80, 0x80, 0x00, 0x40, 0x40, 0xc0, 0x40, 0x30,
4130x90, 0x88, 0x44, 0x42, 0x42, 0x41, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20,
4140x20, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0xf0, 0x88, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00,
4150x00, 0x00, 0x01, 0x03, 0x06, 0x08, 0x71, 0x81, 0x02, 0x06, 0x04, 0x08, 0x10, 0x20, 0xc0, 0x00,
4160x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4170x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4180x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4190x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x08, 0x0c, 0x04, 0x04,
4200x04, 0x07, 0x0a, 0x92, 0xf9, 0xc9, 0x05, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x39,
4210x1c, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
4220xe0, 0xf0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x46, 0x78, 0x20, 0x20, 0x20, 0x20, 0x40,
4230x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01,
4240x06, 0x38, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4250x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4260x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00,
4270x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1e, 0x64, 0xc4, 0x04, 0x04,
4280x00, 0x02, 0x03, 0x01, 0x00, 0x01, 0x03, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4290x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4300x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xe0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x60, 0x20,
4310x30, 0x19, 0x0e, 0x38, 0xcc, 0x08, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xf3, 0x06, 0x0c, 0x10,
4320x20, 0x20, 0xc1, 0xff, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4330x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4340x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4350x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0x05, 0x07, 0x0e,
4360x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x10, 0x10,
4370x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x40,
4380x40, 0x40, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x83, 0x87, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
4390x00, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x38, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00,
4400x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4410x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4420x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4430x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4440x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4450x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4460x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
4470x01, 0x01, 0x03, 0x02, 0x02, 0x02, 0x03, 0x03, 0x02, 0x04, 0x04, 0x04, 0x04, 0x07, 0x04, 0x00,
4480x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10,
4490x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4500x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4510x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4520x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4530x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4540x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4550x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4560x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4570x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
458
459 }
460 };
461 static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = {
462 {
463 // 'bongo3', 128x56px
4640x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4650x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4660x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x60, 0x20, 0x30, 0x30, 0x10,
4670x18, 0x08, 0x0c, 0x04, 0x04, 0x04, 0x86, 0x82, 0xc2, 0x42, 0x22, 0x12, 0x12, 0x12, 0x12, 0x14,
4680x14, 0x14, 0x14, 0x14, 0x18, 0x19, 0x19, 0x11, 0x11, 0x10, 0x10, 0x00, 0x20, 0xf0, 0x2f, 0x24,
4690x66, 0xda, 0xd1, 0x11, 0x91, 0x91, 0x11, 0x11, 0x11, 0x12, 0x1e, 0x04, 0x00, 0x00, 0x00, 0x00,
4700x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4710x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4720x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4730x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
4740x00, 0x00, 0xc0, 0x20, 0x18, 0x04, 0x02, 0x01, 0x80, 0x80, 0x00, 0x40, 0x40, 0xc0, 0x40, 0x30,
4750x90, 0x88, 0x44, 0x42, 0x42, 0x41, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20,
4760x20, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0xf0, 0x88, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00,
4770x00, 0x00, 0x01, 0x03, 0x06, 0x08, 0x71, 0x81, 0x02, 0x06, 0x04, 0x08, 0x10, 0x20, 0xc0, 0x00,
4780x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4790x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4800x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4810x00, 0x00, 0x00, 0x1f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
4820x00, 0x03, 0x82, 0xe2, 0x39, 0x09, 0x05, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x39,
4830x1c, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
4840xe0, 0xf0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x46, 0x78, 0x20, 0x20, 0x20, 0x20, 0x40,
4850x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01,
4860x06, 0x38, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4870x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4880x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0xe0, 0xf8, 0xf8, 0xf0,
4890xe0, 0xe0, 0xc0, 0xc0, 0x80, 0x01, 0x03, 0x1f, 0x0f, 0x07, 0x00, 0x80, 0xc0, 0x40, 0x20, 0x30,
4900x18, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4910x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4920x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xe0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x60, 0x20,
4930x30, 0x19, 0x0e, 0x38, 0xcc, 0x08, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xf3, 0x06, 0x0c, 0x10,
4940x20, 0x20, 0xc1, 0xff, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4950x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4960x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x3f, 0x3f, 0x3f,
4970x1f, 0x1f, 0x0f, 0x07, 0x01, 0x02, 0x02, 0xfa, 0x06, 0x06, 0x03, 0x03, 0x02, 0x02, 0x04, 0x18,
4980xf0, 0x80, 0xc0, 0x60, 0x20, 0x10, 0x18, 0x0c, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x10, 0x10,
4990x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x40,
5000x40, 0x40, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x83, 0x87, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
5010x00, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x38, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00,
5020x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5030x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5040x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5050x00, 0x00, 0x00, 0x80, 0xe0, 0xf0, 0xf8, 0xf9, 0xe1, 0x81, 0x02, 0x02, 0x02, 0x03, 0x01, 0x01,
5060x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5070x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5080x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
5090x01, 0x01, 0x03, 0x02, 0x02, 0x02, 0x03, 0x03, 0x02, 0x04, 0x04, 0x04, 0x04, 0x07, 0x04, 0x00,
5100x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10,
5110x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5120x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5130x08, 0x1c, 0x1f, 0x1f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
5140x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5150x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5160x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5170x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5180x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5190x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
520 },
521 {
522 // 'bongo4', 128x56px
5230x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5240x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5250x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x60, 0x20, 0x30, 0x30, 0x10,
5260x18, 0x08, 0x0c, 0x04, 0x04, 0x04, 0x86, 0x82, 0xc2, 0x42, 0x22, 0x12, 0x12, 0x12, 0x12, 0x14,
5270x14, 0x14, 0x14, 0x14, 0x18, 0x19, 0x19, 0x11, 0x11, 0x10, 0x10, 0x00, 0x20, 0xf0, 0x2f, 0x24,
5280x66, 0xda, 0xd1, 0x11, 0x91, 0x91, 0x11, 0x11, 0x11, 0x12, 0x1e, 0x04, 0x00, 0x00, 0x00, 0x00,
5290x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5300x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5310x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5320x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5330x00, 0x00, 0xc0, 0x20, 0x18, 0x04, 0x02, 0x01, 0x80, 0x80, 0x00, 0x40, 0x40, 0xc0, 0x40, 0x30,
5340x90, 0x88, 0x44, 0x42, 0x42, 0x41, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20,
5350x20, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0xf0, 0x88, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00,
5360x00, 0x00, 0x01, 0x03, 0x06, 0x08, 0x71, 0x81, 0x02, 0x06, 0x04, 0x08, 0x10, 0x20, 0xc0, 0x00,
5370x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5380x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5390x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5400x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x08, 0x0c, 0x04, 0x04,
5410x04, 0x07, 0x0a, 0x92, 0xf9, 0xc9, 0x05, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x39,
5420x1c, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
5430xe0, 0xf0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x18, 0x20, 0x40, 0x80, 0x00, 0x00,
5440x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01,
5450x06, 0x38, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5460x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5470x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00,
5480x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1e, 0x64, 0xc4, 0x04, 0x04,
5490x00, 0x02, 0x03, 0x01, 0x00, 0x01, 0x03, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5500x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5510x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02,
5520x02, 0x04, 0x08, 0x08, 0x10, 0x08, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xf3, 0x06, 0x0c, 0x10,
5530x20, 0x20, 0xc1, 0xff, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5540x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5550x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5560x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0x05, 0x07, 0x0e,
5570x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x10, 0x10,
5580x10, 0x10, 0x10, 0x10, 0x20, 0xa0, 0xa0, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x40,
5590x40, 0x40, 0x80, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5600x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00,
5610x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5620x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5630x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5640x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5650x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5660x00, 0x00, 0x00, 0x7c, 0x7f, 0x7f, 0x7f, 0x3f, 0x3f, 0x3e, 0x1e, 0x1e, 0x1c, 0x0c, 0x00, 0xf8,
5670x8e, 0x03, 0x01, 0x01, 0x01, 0x03, 0x06, 0x9c, 0xf0, 0x80, 0xc0, 0x40, 0x60, 0x20, 0x30, 0x10,
5680x08, 0x0d, 0x07, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x07, 0x04, 0x00,
5690x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10,
5700x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5710x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5720x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5730x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5740x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x30, 0x38, 0x38, 0x78, 0x7c, 0x7e, 0xff, 0xff, 0xff, 0xfc,
5750xf1, 0xe1, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x03, 0x07, 0x06, 0x0e,
5760x1e, 0x3e, 0x3e, 0x7e, 0x7e, 0x1e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5770x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5780x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
579 },
580 {
581// 'bongo5', 128x56px
5820x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5830x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5840x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x60, 0x20, 0x30, 0x30, 0x10,
5850x18, 0x08, 0x0c, 0x04, 0x04, 0x04, 0x86, 0x82, 0xc2, 0x42, 0x22, 0x12, 0x12, 0x12, 0x12, 0x14,
5860x14, 0x14, 0x14, 0x14, 0x18, 0x19, 0x19, 0x11, 0x11, 0x10, 0x10, 0x00, 0x20, 0xf0, 0x2f, 0x24,
5870x66, 0xda, 0xd1, 0x11, 0x91, 0x91, 0x11, 0x11, 0x11, 0x12, 0x1e, 0x04, 0x00, 0x00, 0x00, 0x00,
5880x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5890x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5900x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5910x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
5920x00, 0x00, 0xc0, 0x20, 0x18, 0x04, 0x02, 0x01, 0x80, 0x80, 0x00, 0x40, 0x40, 0xc0, 0x40, 0x30,
5930x90, 0x88, 0x44, 0x42, 0x42, 0x41, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20,
5940x20, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0xf0, 0x88, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00,
5950x00, 0x00, 0x01, 0x03, 0x06, 0x08, 0x71, 0x81, 0x02, 0x06, 0x04, 0x08, 0x10, 0x20, 0xc0, 0x00,
5960x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5970x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5980x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5990x00, 0x00, 0x00, 0x1f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
6000x00, 0x03, 0x82, 0xe2, 0x39, 0x09, 0x05, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x39,
6010x1c, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
6020xe0, 0xf0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x18, 0x20, 0x40, 0x80, 0x00, 0x00,
6030x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01,
6040x06, 0x38, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6050x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6060x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0xe0, 0xf8, 0xf8, 0xf0,
6070xe0, 0xe0, 0xc0, 0xc0, 0x80, 0x01, 0x03, 0x1f, 0x0f, 0x07, 0x00, 0x80, 0xc0, 0x40, 0x20, 0x30,
6080x18, 0x0e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6090x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6100x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02,
6110x02, 0x04, 0x08, 0x08, 0x10, 0x08, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xf3, 0x06, 0x0c, 0x10,
6120x20, 0x20, 0xc1, 0xff, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6130x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6140x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x3f, 0x3f, 0x3f,
6150x1f, 0x1f, 0x0f, 0x07, 0x01, 0x02, 0x02, 0xfa, 0x06, 0x06, 0x03, 0x03, 0x02, 0x02, 0x04, 0x18,
6160xf0, 0x80, 0xc0, 0x60, 0x20, 0x10, 0x18, 0x0c, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x10, 0x10,
6170x10, 0x10, 0x10, 0x10, 0x20, 0xa0, 0xa0, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x40,
6180x40, 0x40, 0x80, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6190x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00,
6200x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6210x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6220x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6230x00, 0x00, 0x00, 0x80, 0xe0, 0xf0, 0xf8, 0xf9, 0xe1, 0x81, 0x02, 0x02, 0x02, 0x03, 0x01, 0x01,
6240x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6250x00, 0x00, 0x00, 0x7c, 0x7f, 0x7f, 0x7f, 0x3f, 0x3f, 0x3e, 0x1e, 0x1e, 0x1c, 0x0c, 0x00, 0xf8,
6260x8e, 0x03, 0x01, 0x01, 0x01, 0x03, 0x06, 0x9c, 0xf0, 0x80, 0xc0, 0x40, 0x60, 0x20, 0x30, 0x10,
6270x08, 0x0d, 0x07, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x07, 0x04, 0x00,
6280x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10,
6290x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6300x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6310x08, 0x1c, 0x1f, 0x1f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
6320x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6330x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x30, 0x38, 0x38, 0x78, 0x7c, 0x7e, 0xff, 0xff, 0xff, 0xfc,
6340xf1, 0xe1, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x03, 0x07, 0x06, 0x0e,
6350x1e, 0x3e, 0x3e, 0x7e, 0x7e, 0x1e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6360x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6370x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
638 }
639 };
640
641 //assumes 1 frame prep stage
642 void animation_phase(void) {
643 if(get_current_wpm() <= IDLE_SPEED){
644 current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES;
645 oled_write_raw_P(idle[abs((IDLE_FRAMES-1)-current_idle_frame)], ANIM_SIZE);
646 }
647 else {
648 // if is true 2 frames in a row make it false;
649 if(left && !lastl && right && !lastr) {
650 oled_write_raw_P(tap[2], ANIM_SIZE);
651 }
652 else if (left && !lastl) {
653 oled_write_raw_P(tap[0], ANIM_SIZE);
654 }
655 else if (right && !lastr) {
656 oled_write_raw_P(tap[1], ANIM_SIZE);
657 }
658 else {
659 oled_write_raw_P(prep[0], ANIM_SIZE);
660 left = false;
661 right = false;
662 }
663 lastl = left;
664 lastr = right;
665 left = false;
666 right = false;
667 }
668 }
669 if(get_current_wpm() != 000) {
670 oled_on(); // not essential but turns on animation OLED with any alpha keypress
671 if(timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
672 anim_timer = timer_read32();
673 animation_phase();
674 }
675 anim_sleep = timer_read32();
676 } else {
677 if(timer_elapsed32(anim_sleep) > OLED_TIMEOUT) {
678 oled_off();
679 } else {
680 if(timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
681 anim_timer = timer_read32();
682 animation_phase();
683 }
684 }
685 }
686}
687bool wpm_keycode_user(uint16_t keycode) {
688 return true;
689}
690static void render_logo(void) {
691 oled_set_cursor(0,0);
692 oled_write_P(PSTR(" play asc "), false);
693 oled_set_cursor(3,3);
694 oled_write_P(PSTR(" play asc "), false);
695 oled_set_cursor(6,6);
696 oled_write_P(PSTR(" play asc "), false);
697}
698void oled_task_user(void) {
699 if (is_keyboard_master()) {
700 render_anim();
701 oled_set_cursor(0,7);
702 uint8_t n = get_current_wpm();
703 wpm_str[3] = '\0';
704 wpm_str[2] = '0' + n % 10;
705 wpm_str[1] = '0' + (n /= 10) % 10;
706 wpm_str[0] = '0' + n / 10 ;
707 oled_write_P(PSTR("WPM: "), false);
708 oled_write(wpm_str, false);
709 oled_write_P(PSTR(" "), false);
710 switch (get_highest_layer(layer_state)) {
711 case _QWERTY:
712 oled_write_ln_P(PSTR("base"), false);
713 break;
714 case _LOWER:
715 oled_write_ln_P(PSTR("LOWER"), false);
716 break;
717 case _RAISE:
718 oled_write_ln_P(PSTR("RAISE"), false);
719 break;
720 case _ADJUST:
721 oled_write_ln_P(PSTR("ADJUST"), false);
722 break;
723 default:
724 oled_write_ln_P(PSTR("Undefined"), false);
725 }
726 } else {
727 render_logo();
728 oled_scroll_left();
729
730 }
731}
732#endif
diff --git a/keyboards/splitkb/kyria/keymaps/winternebs/rules.mk b/keyboards/splitkb/kyria/keymaps/winternebs/rules.mk
new file mode 100755
index 000000000..5831e23cb
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/winternebs/rules.mk
@@ -0,0 +1,12 @@
1OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays
2ENCODER_ENABLE = yes # Enables the use of one or more
3NKRO_ENABLE = yes
4WPM_ENABLE = yes
5CONSOLE_ENABLE = no # Console for debug
6AUDIO_ENABLE = no # Audio output
7SPACE_CADET_ENABLE = no
8EXTRAKEY_ENABLE = no
9MOUSEKEY_ENABLE = no
10BOOTMAGIC_ENABLE = no
11SWAP_HANDS_ENABLE = yes
12LTO_ENABLE = yes
diff --git a/keyboards/splitkb/kyria/kyria.c b/keyboards/splitkb/kyria/kyria.c
new file mode 100644
index 000000000..21ed5e84c
--- /dev/null
+++ b/keyboards/splitkb/kyria/kyria.c
@@ -0,0 +1,16 @@
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 "kyria.h"
diff --git a/keyboards/splitkb/kyria/kyria.h b/keyboards/splitkb/kyria/kyria.h
new file mode 100644
index 000000000..2b1a29815
--- /dev/null
+++ b/keyboards/splitkb/kyria/kyria.h
@@ -0,0 +1,31 @@
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#pragma once
17
18#include "quantum.h"
19
20#if defined(KEYBOARD_splitkb_kyria_rev1)
21# include "rev1.h"
22#endif
23
24/* This a shortcut to help you visually see your layout.
25 *
26 * The first section contains all of the arguments representing the physical
27 * layout of the board and position of the keys.
28 *
29 * The second converts the arguments into a two-dimensional array which
30 * represents the switch matrix.
31 */
diff --git a/keyboards/splitkb/kyria/readme.md b/keyboards/splitkb/kyria/readme.md
new file mode 100644
index 000000000..ed4b14508
--- /dev/null
+++ b/keyboards/splitkb/kyria/readme.md
@@ -0,0 +1,21 @@
1# Kyria
2
3![Kyria](https://cdn.shopify.com/s/files/1/0227/9171/6941/products/PlateCase_f1870016-98b8-43a9-8aed-3eaf073b367b_900x.jpg?v=1568934600)
4
5An ergonomical 40% split keyboard
6
7Keyboard Maintainer: [splitkb.com](https://github.com/splitkb)
8Hardware Supported: Pro Micro 5V/16MHz and compatible.
9Hardware Availability: [splitkb.com](https://splitkb.com) and partners.
10
11Make example for this keyboard (after setting up your build environment):
12
13 make kyria:default
14
15Example of flashing this keyboard:
16
17 make kyria/rev1:default:flash
18
19See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
20
21A build guide for the Kyria can be found at [docs.splitkb.com](https://docs.splitkb.com/hc/en-us/articles/360010552059-Kyria-Build-Guide-Introduction).
diff --git a/keyboards/splitkb/kyria/rev1/config.h b/keyboards/splitkb/kyria/rev1/config.h
new file mode 100644
index 000000000..1b7dc9849
--- /dev/null
+++ b/keyboards/splitkb/kyria/rev1/config.h
@@ -0,0 +1,74 @@
1/*
2Copyright 2019 Thomas Baart <thomas@splitkb.com>
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#pragma once
19
20/* USB Device descriptor parameter */
21#define VENDOR_ID 0x8D1D
22#define PRODUCT_ID 0x9D9D
23#define DEVICE_VER 0x0001
24#define MANUFACTURER splitKB
25#define PRODUCT Kyria
26
27/* key matrix size */
28/* Rows are doubled up */
29#define MATRIX_ROWS 8
30#define MATRIX_COLS 8
31
32// wiring
33#define MATRIX_ROW_PINS \
34 { B4, E6, D7, D4 }
35#define MATRIX_COL_PINS \
36 { B6, B2, B3, B1, F7, F6, F5, F4 }
37#define UNUSED_PINS
38
39#define ENCODERS_PAD_A \
40 { C6 }
41#define ENCODERS_PAD_B \
42 { B5 }
43#define ENCODERS_PAD_A_RIGHT \
44 { B5 }
45#define ENCODERS_PAD_B_RIGHT \
46 { C6 }
47
48/* COL2ROW, ROW2COL*/
49#define DIODE_DIRECTION COL2ROW
50
51/* define if matrix has ghost (lacks anti-ghosting diodes) */
52//#define MATRIX_HAS_GHOST
53
54/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
55#define DEBOUNCE 5
56
57/*
58 * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
59 */
60#define SOFT_SERIAL_PIN D2
61
62#define RGB_DI_PIN D3
63#define RGBLED_SPLIT \
64 { 10, 10 }
65#define RGBLED_NUM 20
66
67/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
68#define LOCKING_SUPPORT_ENABLE
69/* Locking resynchronize hack */
70#define LOCKING_RESYNC_ENABLE
71
72#ifdef OLED_DRIVER_ENABLE
73# define OLED_DISPLAY_128X64
74#endif
diff --git a/keyboards/splitkb/kyria/rev1/rev1.c b/keyboards/splitkb/kyria/rev1/rev1.c
new file mode 100644
index 000000000..fef272e38
--- /dev/null
+++ b/keyboards/splitkb/kyria/rev1/rev1.c
@@ -0,0 +1,123 @@
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 "rev1.h"
17
18#ifdef SWAP_HANDS_ENABLE
19// clang-format off
20__attribute__ ((weak)) const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
21 {{0, 4}, {1, 4}, {2, 4}, {3, 4}, {4, 4}, {5, 4}, {6, 4}, {7, 4}},
22 {{0, 5}, {1, 5}, {2, 5}, {3, 5}, {4, 5}, {5, 5}, {6, 5}, {7, 5}},
23 {{0, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6}, {5, 6}, {6, 6}, {7, 6}},
24 {{0, 7}, {1, 7}, {2, 7}, {3, 7}, {4, 7}, {5, 7}, {6, 7}, {7, 7}},
25 {{0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0}, {6, 0}, {7, 0}},
26 {{0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {5, 1}, {6, 1}, {7, 1}},
27 {{0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}, {5, 2}, {6, 2}, {7, 2}},
28 {{0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {5, 3}, {6, 3}, {7, 3}}
29};
30// clang-format on
31#endif
32
33#ifdef OLED_DRIVER_ENABLE
34__attribute__((weak)) oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; }
35
36__attribute__((weak)) void oled_task_user(void) {
37 if (is_keyboard_master()) {
38 // QMK Logo and version information
39 // clang-format off
40 static const char PROGMEM qmk_logo[] = {
41 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
42 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
43 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0};
44 // clang-format on
45
46 oled_write_P(qmk_logo, false);
47 oled_write_P(PSTR("Kyria rev1.0\n\n"), false);
48
49 // Host Keyboard Layer Status
50 oled_write_P(PSTR("Layer: "), false);
51 switch (get_highest_layer(layer_state | default_layer_state)) {
52 case 0:
53 oled_write_P(PSTR("QWERTY\n"), false);
54 break;
55 case 1:
56 oled_write_P(PSTR("Dvorak\n"), false);
57 break;
58 case 2:
59 oled_write_P(PSTR("Colemak-DH\n"), false);
60 break;
61 case 3:
62 oled_write_P(PSTR("Nav\n"), false);
63 break;
64 case 4:
65 oled_write_P(PSTR("Sym\n"), false);
66 break;
67 case 5:
68 oled_write_P(PSTR("Function\n"), false);
69 break;
70 case 6:
71 oled_write_P(PSTR("Adjust\n"), false);
72 break;
73 default:
74 oled_write_P(PSTR("Undefined\n"), false);
75 }
76
77 // Host Keyboard LED Status
78 led_t led_usb_state = host_keyboard_led_state();
79 oled_write_P(led_usb_state.num_lock ? PSTR("NUMLCK ") : PSTR(" "), false);
80 oled_write_P(led_usb_state.caps_lock ? PSTR("CAPLCK ") : PSTR(" "), false);
81 oled_write_P(led_usb_state.scroll_lock ? PSTR("SCRLCK ") : PSTR(" "), false);
82 } else {
83 // clang-format off
84 static const char PROGMEM kyria_logo[] = {
85 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,
86 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,
87 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,
88 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,
89 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,
90 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,
91 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,
92 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
93 };
94 // clang-format on
95 oled_write_raw_P(kyria_logo, sizeof(kyria_logo));
96 }
97}
98#endif
99
100#ifdef ENCODER_ENABLE
101bool encoder_update_kb(uint8_t index, bool clockwise) {
102 if (!encoder_update_user(index, clockwise)) {
103 return false;
104 }
105
106 if (index == 0) {
107 // Volume control
108 if (clockwise) {
109 tap_code(KC_VOLU);
110 } else {
111 tap_code(KC_VOLD);
112 }
113 } else if (index == 1) {
114 // Page up/Page down
115 if (clockwise) {
116 tap_code(KC_PGDN);
117 } else {
118 tap_code(KC_PGUP);
119 }
120 }
121 return true;
122}
123#endif
diff --git a/keyboards/splitkb/kyria/rev1/rev1.h b/keyboards/splitkb/kyria/rev1/rev1.h
new file mode 100644
index 000000000..bf9864fe3
--- /dev/null
+++ b/keyboards/splitkb/kyria/rev1/rev1.h
@@ -0,0 +1,67 @@
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#pragma once
17
18#include "kyria.h"
19
20/* This a shortcut to help you visually see your layout.
21 *
22 * The first section contains all of the arguments representing the physical
23 * layout of the board and position of the keys.
24 *
25 * The second converts the arguments into a two-dimensional array which
26 * represents the switch matrix.
27 */
28#define LAYOUT( \
29 L00, L01, L02, L03, L04, L05, R06, R07, R08, R09, R10, R11, \
30 L12, L13, L14, L15, L16, L17, R18, R19, R20, R21, R22, R23, \
31 L24, L25, L26, L27, L28, L29, L30, L31, R32, R33, R34, R35, R36, R37, R38, R39, \
32 L40, L41, L42, L43, L44, R45, R46, R47, R48, R49 \
33) \
34{ \
35 { KC_NO, KC_NO, L05, L04, L03, L02, L01, L00 }, \
36 { KC_NO, KC_NO, L17, L16, L15, L14, L13, L12 }, \
37 { L31, L30, L29, L28, L27, L26, L25, L24 }, \
38 { L44, L43, L42, L41, L40, KC_NO, KC_NO, KC_NO }, \
39 { KC_NO, KC_NO, R06, R07, R08, R09, R10, R11 }, \
40 { KC_NO, KC_NO, R18, R19, R20, R21, R22, R23 }, \
41 { R32, R33, R34, R35, R36, R37, R38, R39 }, \
42 { R45, R46, R47, R48, R49, KC_NO, KC_NO, KC_NO }, \
43}
44
45#define LAYOUT_stack( \
46 L00, L01, L02, L03, L04, L05, \
47 L12, L13, L14, L15, L16, L17, \
48 L24, L25, L26, L27, L28, L29, L30, L31, \
49 L40, L41, L42, L43, L44, \
50 \
51 R06, R07, R08, R09, R10, R11, \
52 R18, R19, R20, R21, R22, R23, \
53 R32, R33, R34, R35, R36, R37, R38, R39, \
54 R45, R46, R47, R48, R49 \
55) \
56{ \
57 { KC_NO, KC_NO, L05, L04, L03, L02, L01, L00 }, \
58 { KC_NO, KC_NO, L17, L16, L15, L14, L13, L12 }, \
59 { L31, L30, L29, L28, L27, L26, L25, L24 }, \
60 { L44, L43, L42, L41, L40, KC_NO, KC_NO, KC_NO }, \
61 { KC_NO, KC_NO, R06, R07, R08, R09, R10, R11 }, \
62 { KC_NO, KC_NO, R18, R19, R20, R21, R22, R23 }, \
63 { R32, R33, R34, R35, R36, R37, R38, R39 }, \
64 { R45, R46, R47, R48, R49, KC_NO, KC_NO, KC_NO }, \
65}
66
67#define LAYOUT_split_3x6_5 LAYOUT
diff --git a/keyboards/splitkb/kyria/rev1/rules.mk b/keyboards/splitkb/kyria/rev1/rules.mk
new file mode 100644
index 000000000..8b1c9616c
--- /dev/null
+++ b/keyboards/splitkb/kyria/rev1/rules.mk
@@ -0,0 +1,3 @@
1OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays
2ENCODER_ENABLE = yes # ENables the use of one or more encoders
3RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
diff --git a/keyboards/splitkb/kyria/rules.mk b/keyboards/splitkb/kyria/rules.mk
new file mode 100644
index 000000000..0b1eddbc5
--- /dev/null
+++ b/keyboards/splitkb/kyria/rules.mk
@@ -0,0 +1,27 @@
1# MCU name
2MCU = atmega32u4
3
4# Bootloader selection
5BOOTLOADER = atmel-dfu
6
7# Build Options
8# change yes to no to disable
9#
10BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
11MOUSEKEY_ENABLE = yes # Mouse keys
12EXTRAKEY_ENABLE = yes # Audio control and System control
13CONSOLE_ENABLE = no # Console for debug
14COMMAND_ENABLE = no # Commands for debug and configuration
15# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
16SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
17# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
18NKRO_ENABLE = no # USB Nkey Rollover
19BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
20MIDI_ENABLE = no # MIDI support
21UNICODE_ENABLE = no # Unicode
22BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
23AUDIO_ENABLE = no # Audio output on port C6
24SPLIT_KEYBOARD = yes # Split common
25LTO_ENABLE = yes
26
27DEFAULT_FOLDER = splitkb/kyria/rev1
diff --git a/keyboards/splitkb/zima/config.h b/keyboards/splitkb/zima/config.h
index fcfa37ff3..7e79e7f35 100644
--- a/keyboards/splitkb/zima/config.h
+++ b/keyboards/splitkb/zima/config.h
@@ -20,15 +20,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
20#include "config_common.h" 20#include "config_common.h"
21 21
22/* USB Device descriptor parameter */ 22/* USB Device descriptor parameter */
23#define VENDOR_ID 0xFEED 23#define VENDOR_ID 0x8D1D
24#define PRODUCT_ID 0xF75B 24#define PRODUCT_ID 0xF75B
25#define DEVICE_VER 0x0001 25#define DEVICE_VER 0x0001
26#define MANUFACTURER splitkb 26#define MANUFACTURER splitkb
27#define PRODUCT Zima 27#define PRODUCT Zima
28 28
29/* key matrix size */ 29/* key matrix size */
30#define MATRIX_ROWS 4 30#define MATRIX_ROWS 4
31#define MATRIX_COLS 3 31#define MATRIX_COLS 3
32 32
33/* 33/*
34 * Keyboard Matrix Assignments 34 * Keyboard Matrix Assignments
@@ -37,9 +37,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
37 { C6, D6, D5 }, \ 37 { C6, D6, D5 }, \
38 { C7, F7, D4 }, \ 38 { C7, F7, D4 }, \
39 { E6, F5, F6 }, \ 39 { E6, F5, F6 }, \
40 { F0, F1, F4 } \ 40 { F0, F1, F4 }, \
41} 41}
42
43#define UNUSED_PINS 42#define UNUSED_PINS
44 43
45#define ENCODERS_PAD_A { B4 } 44#define ENCODERS_PAD_A { B4 }
@@ -53,11 +52,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
53#define AUDIO_CLICKY 52#define AUDIO_CLICKY
54#define NO_MUSIC_MODE 53#define NO_MUSIC_MODE
55 54
56#define RGB_DI_PIN B5 55#define RGB_DI_PIN B5
57#define RGBLED_NUM 5 56#define RGBLED_NUM 5
58#define RGBLIGHT_HUE_STEP 8 57#define RGBLIGHT_HUE_STEP 8
59#define RGBLIGHT_SAT_STEP 8 58#define RGBLIGHT_SAT_STEP 8
60#define RGBLIGHT_VAL_STEP 8 59#define RGBLIGHT_VAL_STEP 8
61#define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ 60#define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
62#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ 61#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
63#define RGBLIGHT_EFFECT_BREATHING 62#define RGBLIGHT_EFFECT_BREATHING
@@ -67,7 +66,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
67#define RGBLIGHT_EFFECT_TWINKLE 66#define RGBLIGHT_EFFECT_TWINKLE
68 67
69/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ 68/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
70#define DEBOUNCE 5 69#define DEBOUNCE 5
71 70
72/* define if matrix has ghost (lacks anti-ghosting diodes) */ 71/* define if matrix has ghost (lacks anti-ghosting diodes) */
73//#define MATRIX_HAS_GHOST 72//#define MATRIX_HAS_GHOST
@@ -77,16 +76,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
77/* Locking resynchronize hack */ 76/* Locking resynchronize hack */
78// #define LOCKING_RESYNC_ENABLE 77// #define LOCKING_RESYNC_ENABLE
79 78
80#define FB_ERM_LRA 0 79#define FB_ERM_LRA 0
81#define FB_BRAKEFACTOR 3 /* For 1x:0, 2x:1, 3x:2, 4x:3, 6x:4, 8x:5, 16x:6, Disable Braking:7 */ 80#define FB_BRAKEFACTOR 3 /* For 1x:0, 2x:1, 3x:2, 4x:3, 6x:4, 8x:5, 16x:6, Disable Braking:7 */
82#define FB_LOOPGAIN 1 /* For Low:0, Medium:1, High:2, Very High:3 */ 81#define FB_LOOPGAIN 1 /* For Low:0, Medium:1, High:2, Very High:3 */
83 82
84/* Please refer to your datasheet for the optimal setting for your specific motor. */ 83/* Please refer to your datasheet for the optimal setting for your specific motor. */
85#define RATED_VOLTAGE 3 84#define RATED_VOLTAGE 3
86#define V_PEAK 5 85#define V_PEAK 5
87 86
88#define DRV_GREETING alert_750ms 87#define DRV_GREETING alert_750ms
89#define DRV_MODE_DEFAULT buzz 88#define DRV_MODE_DEFAULT buzz
90// EC11K encoders have a different resolution than other EC11 encoders. 89// EC11K encoders have a different resolution than other EC11 encoders.
91// When using the default resolution of 4, if you notice your encoder skipping 90// When using the default resolution of 4, if you notice your encoder skipping
92// every other tick, lower the resolution to 2. 91// every other tick, lower the resolution to 2.
diff --git a/keyboards/splitkb/zima/keymaps/via/config.h b/keyboards/splitkb/zima/keymaps/via/config.h
new file mode 100644
index 000000000..5a0e407c9
--- /dev/null
+++ b/keyboards/splitkb/zima/keymaps/via/config.h
@@ -0,0 +1,20 @@
1/* Copyright 2019 Thomas Baart
2 * Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#pragma once
19
20#define DYNAMIC_KEYMAP_LAYER_COUNT 8
diff --git a/keyboards/splitkb/zima/keymaps/via/keymap.c b/keyboards/splitkb/zima/keymaps/via/keymap.c
new file mode 100644
index 000000000..e9fb001bb
--- /dev/null
+++ b/keyboards/splitkb/zima/keymaps/via/keymap.c
@@ -0,0 +1,68 @@
1/* Copyright 2019 Thomas Baart
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
18const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
19 // clang-format off
20 [0] = LAYOUT_ortho_4x3(/* Base */
21 KC_MUTE, TG(1), TG(2),
22 KC_P7, KC_P8, KC_P9,
23 KC_P4, KC_P5, KC_P6,
24 KC_P1, KC_P2, KC_P3
25 ),
26 [1] = LAYOUT_ortho_4x3(/* Layer 1 */
27 RESET, _______, XXXXXXX,
28 AU_ON, AU_OFF, XXXXXXX,
29 CK_TOGG, XXXXXXX, CK_UP,
30 CK_RST, XXXXXXX, CK_DOWN
31 ),
32 [2] = LAYOUT_ortho_4x3(/* Layer 2*/
33 RGB_TOG, RGB_MOD, _______,
34 RGB_HUI, RGB_SAI, RGB_VAI,
35 RGB_HUD, RGB_SAD, RGB_VAD,
36 HPT_TOG, HPT_FBK, HPT_CONT
37 ),
38 [3] = LAYOUT_ortho_4x3(
39 _______, _______, _______,
40 _______, _______, _______,
41 _______, _______, _______,
42 _______, _______, _______
43 ),
44 [4] = LAYOUT_ortho_4x3(
45 _______, _______, _______,
46 _______, _______, _______,
47 _______, _______, _______,
48 _______, _______, _______
49 ),
50 [5] = LAYOUT_ortho_4x3(
51 _______, _______, _______,
52 _______, _______, _______,
53 _______, _______, _______,
54 _______, _______, _______
55 ),
56 [6] = LAYOUT_ortho_4x3(
57 _______, _______, _______,
58 _______, _______, _______,
59 _______, _______, _______,
60 _______, _______, _______
61 ),
62 [7] = LAYOUT_ortho_4x3(
63 _______, _______, _______,
64 _______, _______, _______,
65 _______, _______, _______,
66 _______, _______, _______
67 ),
68};
diff --git a/keyboards/splitkb/zima/keymaps/via/rules.mk b/keyboards/splitkb/zima/keymaps/via/rules.mk
new file mode 100644
index 000000000..1eb438e46
--- /dev/null
+++ b/keyboards/splitkb/zima/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
1VIA_ENABLE = yes
2HAPTIC_ENABLE = no