aboutsummaryrefslogtreecommitdiff
path: root/keyboards
diff options
context:
space:
mode:
authorjohn-ezra <47311764+john-ezra@users.noreply.github.com>2021-10-02 07:50:55 -0700
committerGitHub <noreply@github.com>2021-10-02 07:50:55 -0700
commit79ad30a9d59c897b8aefb4dad755d74d9f32f15f (patch)
tree9167017ce300823f6096383d35fab6e90899394a /keyboards
parent54b8d6a89182390533ccd1cb715fbaf59720bf3e (diff)
downloadqmk_firmware-79ad30a9d59c897b8aefb4dad755d74d9f32f15f.tar.gz
qmk_firmware-79ad30a9d59c897b8aefb4dad755d74d9f32f15f.zip
[Keymap] Updates to Personal Kyria Keymap (#14669)
Co-authored-by: Drashna Jaelre <drashna@live.com> Co-authored-by: Ryan <fauxpark@gmail.com>
Diffstat (limited to 'keyboards')
-rw-r--r--keyboards/splitkb/kyria/keymaps/john-ezra/config.h22
-rw-r--r--keyboards/splitkb/kyria/keymaps/john-ezra/glcdfont.c276
-rw-r--r--keyboards/splitkb/kyria/keymaps/john-ezra/keymap.c130
-rw-r--r--keyboards/splitkb/kyria/keymaps/john-ezra/oled.c540
-rw-r--r--keyboards/splitkb/kyria/keymaps/john-ezra/readme.md20
-rw-r--r--keyboards/splitkb/kyria/keymaps/john-ezra/rules.mk7
6 files changed, 851 insertions, 144 deletions
diff --git a/keyboards/splitkb/kyria/keymaps/john-ezra/config.h b/keyboards/splitkb/kyria/keymaps/john-ezra/config.h
index 77f095767..70b41675a 100644
--- a/keyboards/splitkb/kyria/keymaps/john-ezra/config.h
+++ b/keyboards/splitkb/kyria/keymaps/john-ezra/config.h
@@ -16,19 +16,15 @@
16 16
17#pragma once 17#pragma once
18 18
19#ifdef OLED_DRIVER_ENABLE 19#define OLED_FONT_H "keyboards/splitkb/kyria/keymaps/john-ezra/glcdfont.c"
20 #define OLED_DISPLAY_128X64 20#define OLED_FONT_END 255
21#endif 21#define OLED_TIMEOUT 30000
22#define OLED_DISPLAY_128X64
22 23
23#ifdef RGBLIGHT_ENABLE 24#ifdef RGBLIGHT_ENABLE
24 #define RGBLIGHT_EFFECT_RAINBOW_MOOD 25 #define RGBLIGHT_HUE_STEP 5
25 #define RGBLIGHT_EFFECT_RAINBOW_SWIRL 26 #define RGBLIGHT_SAT_STEP 5
26 #define RGBLIGHT_EFFECT_STATIC_GRADIENT 27 #define RGBLIGHT_VAL_STEP 5
27 #define RGBLIGHT_EFFECT_TWINKLE
28
29 #define RGBLIGHT_HUE_STEP 8
30 #define RGBLIGHT_SAT_STEP 8
31 #define RGBLIGHT_VAL_STEP 8
32 #define RGBLIGHT_LIMIT_VAL 150 28 #define RGBLIGHT_LIMIT_VAL 150
33#endif 29#endif
34 30
@@ -38,3 +34,7 @@
38#define TAPPING_TERM 125 34#define TAPPING_TERM 125
39 35
40#define SPLIT_WPM_ENABLE 36#define SPLIT_WPM_ENABLE
37
38#define USB_POLLING_INTERVAL_MS 1
39
40#define DEBUG_MATRIX_SCAN_RATE
diff --git a/keyboards/splitkb/kyria/keymaps/john-ezra/glcdfont.c b/keyboards/splitkb/kyria/keymaps/john-ezra/glcdfont.c
new file mode 100644
index 000000000..86fb5d86e
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/john-ezra/glcdfont.c
@@ -0,0 +1,276 @@
1/* Copyright 2021 John Ezra
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 "progmem.h"
18
19static const unsigned char font[] PROGMEM = {
20 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
21 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
22 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
23 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
24 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,
25 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,
26 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,
27 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,
28 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,
29 0x00, 0x18, 0x24, 0x18, 0x00, 0x00,
30 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,
31 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,
32 0x26, 0x29, 0x79, 0x29, 0x26, 0x00,
33 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,
34 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,
35 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,
36 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,
37 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,
38 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
39 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
40 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
41 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
42 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
43 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,
44 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,
45 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,
46 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,
47 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,
48 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,
49 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,
50 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,
51 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,
52 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
54 0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
55 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
56 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
57 0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
58 0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
59 0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
60 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
61 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
62 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
63 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
64 0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
65 0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
66 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
67 0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
68 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
69 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
70 0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
71 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
72 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
73 0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
74 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
75 0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
76 0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
77 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
78 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
79 0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
80 0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
81 0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
82 0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
83 0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
84 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,
85 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
86 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
87 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
88 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
89 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
90 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
91 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
92 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
93 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,
94 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
95 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
96 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
97 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
98 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
99 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
100 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
101 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
102 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
103 0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
104 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,
105 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
106 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
107 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
108 0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
109 0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
110 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
111 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
112 0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
113 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
114 0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
115 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
116 0x00, 0x03, 0x07, 0x08, 0x00, 0x00,
117 0x20, 0x54, 0x54, 0x78, 0x40, 0x00,
118 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00,
119 0x38, 0x44, 0x44, 0x44, 0x28, 0x00,
120 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00,
121 0x38, 0x54, 0x54, 0x54, 0x18, 0x00,
122 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00,
123 0x18, 0x24, 0x24, 0x1C, 0x78, 0x00,
124 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00,
125 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00,
126 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
127 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00,
128 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00,
129 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00,
130 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00,
131 0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
132 0x7C, 0x18, 0x24, 0x24, 0x18, 0x00,
133 0x18, 0x24, 0x24, 0x18, 0x7C, 0x00,
134 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00,
135 0x48, 0x54, 0x54, 0x54, 0x24, 0x00,
136 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00,
137 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00,
138 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,
139 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
140 0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
141 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00,
142 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
143 0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
144 0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
145 0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
146 0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
147 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
148 0x00, 0xF0, 0x08, 0x24, 0x52, 0xE2,
149 0x42, 0x42, 0x42, 0xE2, 0x52, 0x22,
150 0x24, 0x22, 0x42, 0x82, 0x02, 0x02,
151 0x22, 0x22, 0x02, 0x02, 0xFE, 0x00,
152 0x00, 0xF0, 0x08, 0x04, 0x02, 0x82,
153 0x42, 0x22, 0x42, 0x82, 0x02, 0x02,
154 0x04, 0x82, 0x42, 0x22, 0x12, 0x22,
155 0x42, 0x82, 0x02, 0x02, 0xFE, 0x00,
156 0x00, 0xF0, 0x08, 0x84, 0x42, 0x42,
157 0x82, 0x82, 0x42, 0x42, 0x42, 0x82,
158 0x04, 0x82, 0xC2, 0xE2, 0xF2, 0xE2,
159 0xC2, 0x82, 0x02, 0x02, 0xFE, 0x00,
160 0x00, 0xF0, 0x08, 0x44, 0x42, 0xF2,
161 0x42, 0x42, 0x42, 0xF2, 0x42, 0x42,
162 0x04, 0x82, 0xE2, 0x92, 0x92, 0x92,
163 0xE2, 0x82, 0x02, 0x02, 0xFE, 0x00,
164 0x00, 0xF0, 0x08, 0x84, 0x82, 0x02,
165 0x82, 0x02, 0x02, 0x82, 0x82, 0x02,
166 0x02, 0x02, 0x82, 0x82, 0x02, 0x02,
167 0xE2, 0x12, 0x12, 0xE2, 0x02, 0x62,
168 0x92, 0x92, 0x22, 0x02, 0xFE, 0x00,
169 0x00, 0xF0, 0x08, 0x04, 0xF2, 0x02,
170 0x02, 0x02, 0xF2, 0x02, 0x82, 0x02,
171 0x02, 0x02, 0x02, 0x02, 0x02, 0x22,
172 0xF2, 0x02, 0x02, 0xE2, 0x12, 0x12,
173 0x12, 0xE2, 0x02, 0x02, 0xFE, 0x00,
174 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
175 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
176 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
177 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
178 0x02, 0xFE, 0x00, 0x00, 0xF0, 0x08,
179 0x02, 0xFE, 0x00, 0x00, 0xF0, 0xF8,
180 0x00, 0x7F, 0x40, 0x44, 0x4A, 0x47,
181 0x42, 0x42, 0x42, 0x47, 0x4A, 0x44,
182 0x40, 0x40, 0x40, 0x40, 0x41, 0x42,
183 0x44, 0x44, 0x40, 0x40, 0x7F, 0x00,
184 0x00, 0x7F, 0x40, 0x40, 0x41, 0x40,
185 0x40, 0x40, 0x40, 0x40, 0x41, 0x40,
186 0x41, 0x41, 0x4F, 0x48, 0x48, 0x48,
187 0x4F, 0x41, 0x41, 0x40, 0x7F, 0x00,
188 0x00, 0x7F, 0x40, 0x41, 0x42, 0x42,
189 0x42, 0x41, 0x41, 0x42, 0x42, 0x41,
190 0x40, 0x40, 0x40, 0x4B, 0x4B, 0x4B,
191 0x40, 0x40, 0x40, 0x40, 0x7F, 0x00,
192 0x00, 0x7F, 0x40, 0x42, 0x42, 0x4F,
193 0x42, 0x42, 0x42, 0x4F, 0x42, 0x42,
194 0x40, 0x4F, 0x4F, 0x4F, 0x48, 0x4F,
195 0x4F, 0x4F, 0x40, 0x40, 0x7F, 0x00,
196 0x00, 0x7F, 0x40, 0x4F, 0x40, 0x4F,
197 0x40, 0x4F, 0x44, 0x4A, 0x4A, 0x4F,
198 0x48, 0x47, 0x48, 0x48, 0x45, 0x40,
199 0x47, 0x48, 0x48, 0x47, 0x40, 0x44,
200 0x48, 0x48, 0x47, 0x40, 0x7F, 0x00,
201 0x00, 0x7F, 0x40, 0x40, 0x47, 0x48,
202 0x47, 0x48, 0x47, 0x40, 0x4E, 0x40,
203 0x4F, 0x41, 0x41, 0x4E, 0x40, 0x48,
204 0x4F, 0x48, 0x40, 0x47, 0x48, 0x48,
205 0x48, 0x47, 0x40, 0x40, 0x7F, 0x00,
206 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
207 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
208 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
209 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
210 0x40, 0x7F, 0x00, 0x00, 0x7F, 0x40,
211 0x40, 0x7F, 0x00, 0x00, 0x7F, 0x7F,
212 0x00, 0xF0, 0xF8, 0xDC, 0xAE, 0x1E,
213 0xBE, 0xBE, 0xBE, 0x1E, 0xAE, 0xDE,
214 0xDC, 0xDE, 0xBE, 0x7E, 0xFE, 0xFE,
215 0xDE, 0xDE, 0xFE, 0xFE, 0xFE, 0x00,
216 0x00, 0xF0, 0xF8, 0xFC, 0xFE, 0x7E,
217 0xBE, 0xDE, 0xBE, 0x7E, 0xFE, 0xFE,
218 0xFC, 0x7E, 0x3E, 0x1E, 0x0E, 0x1E,
219 0x3E, 0x7E, 0xFE, 0xFE, 0xFE, 0x00,
220 0x00, 0xF0, 0xF8, 0x7C, 0xBE, 0xBE,
221 0x7E, 0x7E, 0xBE, 0xBE, 0xBE, 0x7E,
222 0xFC, 0x7E, 0x3E, 0x1E, 0x0E, 0x1E,
223 0x3E, 0x7E, 0xFE, 0xFE, 0xFE, 0x00,
224 0x00, 0xF0, 0xF8, 0xBC, 0xBE, 0x0E,
225 0xBE, 0xBE, 0xBE, 0x0E, 0xBE, 0xBE,
226 0xFC, 0x7E, 0x1E, 0x6E, 0x6E, 0x6E,
227 0x1E, 0x7E, 0xFE, 0xFE, 0xFE, 0x00,
228 0x00, 0xF0, 0xF8, 0x7C, 0x7E, 0xFE,
229 0x7E, 0xFE, 0xFE, 0x7E, 0x7E, 0xFE,
230 0xFE, 0xFE, 0x7E, 0x7E, 0xFE, 0xFE,
231 0x1E, 0xEE, 0xEE, 0x1E, 0xFE, 0x9E,
232 0x6E, 0x6E, 0xDE, 0xFE, 0xFE, 0x00,
233 0x00, 0xF0, 0xF8, 0xFC, 0x0E, 0xFE,
234 0xFE, 0xFE, 0x0E, 0xFE, 0x7E, 0xFE,
235 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xDE,
236 0x0E, 0xFE, 0xFE, 0x1E, 0xEE, 0xEE,
237 0xEE, 0x1E, 0xFE, 0xFE, 0xFE, 0x00,
238 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
239 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
240 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
241 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
242 0xFE, 0xFE, 0x00, 0x00, 0xF0, 0x08,
243 0xFE, 0xFE, 0x00, 0x00, 0xF0, 0xF8,
244 0x00, 0x7F, 0x7F, 0x7B, 0x75, 0x78,
245 0x7D, 0x7D, 0x7D, 0x78, 0x75, 0x7B,
246 0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x7D,
247 0x7B, 0x7B, 0x7F, 0x7F, 0x7F, 0x00,
248 0x00, 0x7F, 0x7F, 0x7F, 0x7E, 0x7F,
249 0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x7F,
250 0x7E, 0x7E, 0x70, 0x70, 0x70, 0x70,
251 0x70, 0x7E, 0x7E, 0x7F, 0x7F, 0x00,
252 0x00, 0x7F, 0x7F, 0x7E, 0x7D, 0x7D,
253 0x7D, 0x7E, 0x7E, 0x7D, 0x7D, 0x7E,
254 0x7F, 0x7F, 0x7F, 0x74, 0x74, 0x74,
255 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x00,
256 0x00, 0x7F, 0x7F, 0x7D, 0x7D, 0x70,
257 0x7D, 0x7D, 0x7D, 0x70, 0x7D, 0x7D,
258 0x7F, 0x70, 0x70, 0x70, 0x77, 0x70,
259 0x70, 0x70, 0x7F, 0x7F, 0x7F, 0x00,
260 0x00, 0x7F, 0x7F, 0x70, 0x7F, 0x70,
261 0x7F, 0x70, 0x7B, 0x75, 0x75, 0x70,
262 0x77, 0x78, 0x77, 0x77, 0x7A, 0x7F,
263 0x78, 0x77, 0x77, 0x78, 0x7F, 0x7B,
264 0x77, 0x77, 0x78, 0x7F, 0x7F, 0x00,
265 0x00, 0x7F, 0x7F, 0x7F, 0x78, 0x77,
266 0x78, 0x77, 0x78, 0x7F, 0x71, 0x7F,
267 0x70, 0x7E, 0x7E, 0x71, 0x7F, 0x77,
268 0x70, 0x77, 0x7F, 0x78, 0x77, 0x77,
269 0x77, 0x78, 0x7F, 0x7F, 0x7F, 0x00,
270 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
271 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
272 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
273 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
274 0x7F, 0x7F, 0x00, 0x00, 0x7F, 0x40,
275 0x7F, 0x7F, 0x00, 0x00, 0x7F, 0x7F,
276};
diff --git a/keyboards/splitkb/kyria/keymaps/john-ezra/keymap.c b/keyboards/splitkb/kyria/keymaps/john-ezra/keymap.c
index f42cbf1d0..6937007e5 100644
--- a/keyboards/splitkb/kyria/keymaps/john-ezra/keymap.c
+++ b/keyboards/splitkb/kyria/keymaps/john-ezra/keymap.c
@@ -1,23 +1,25 @@
1/* Copyright 2021 John Ezra 1/* Copyright 2021 John Ezra
2 * 2*
3 * This program is free software: you can redistribute it and/or modify 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 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 5* the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version. 6* (at your option) any later version.
7 * 7*
8 * This program is distributed in the hope that it will be useful, 8* This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of 9* but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details. 11* GNU General Public License for more details.
12 * 12*
13 * You should have received a copy of the GNU General Public License 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/>. 14* along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */ 15*/
16 16
17#include QMK_KEYBOARD_H 17#include QMK_KEYBOARD_H
18 18
19enum kyria_layers { 19enum kyria_layers {
20 _HNTS, 20 _HNTS,
21 _GAME,
22 _NUMPAD,
21 _LOWER, 23 _LOWER,
22 _RAISE, 24 _RAISE,
23 _ADJUST 25 _ADJUST
@@ -25,20 +27,27 @@ enum kyria_layers {
25 27
26enum kyria_keycodes { 28enum kyria_keycodes {
27 HNTS = SAFE_RANGE, 29 HNTS = SAFE_RANGE,
30 ESC_NUM,
28 LOWER, 31 LOWER,
29 RAISE, 32 RAISE,
33 MSS_CTL,
30 CPY_PST, 34 CPY_PST,
31 UNDO, 35 UNDO,
32 FIND 36 FIND
33}; 37};
34 38
35#define HNTS DF(_HNTS) 39#define HNTS DF(_HNTS)
36#define QWERTY DF(_QWERTY) 40#define GAME TG(_GAME)
41#define NUMPAD TG(_NUMPAD)
42#define MSS_CTL MT(MOD_LCTL, C(KC_UP))
37#define BSP_CMD MT(MOD_LGUI, KC_BSPC) 43#define BSP_CMD MT(MOD_LGUI, KC_BSPC)
44#define TAB_CMD MT(MOD_LGUI, KC_TAB)
38#define SFT_ENT MT(MOD_LSFT, KC_ENT) 45#define SFT_ENT MT(MOD_LSFT, KC_ENT)
46#define ALT_ESC MT(MOD_LALT, KC_ESC)
47#define ALT_TAB A(KC_TAB)
39#define UNDO G(KC_Z) 48#define UNDO G(KC_Z)
40#define FIND G(KC_F) 49#define FIND G(KC_F)
41#define MSS_CTL C(KC_UP) 50
42 51
43const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 52const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
44 53
@@ -52,15 +61,57 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
52 * |-------+-------+-------+-------+-------+-------+---------------. ,---------------+-------+-------+-------+-------+-------+-------| 61 * |-------+-------+-------+-------+-------+-------+---------------. ,---------------+-------+-------+-------+-------+-------+-------|
53 * | Undo | K | V | M | F | G | Esc |MssnCtl| |MssnCtl| Esc | J | ; : | , < | . > | / ? | ' " | 62 * | Undo | K | V | M | F | G | Esc |MssnCtl| |MssnCtl| Esc | J | ; : | , < | . > | / ? | ' " |
54 * `-------+-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-----------------------' 63 * `-------+-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-----------------------'
55 * | Ctrl | Alt | Lower | Space | BSPC | | Tab | Shift | Raise | Del | Caps | 64 * | Numpad| Enter | Lower | Space | BSPC | | Tab | Shift | Raise | Del | Caps |
56 * `---------------------------------------' `---------------------------------------' 65 * `---------------------------------------' `---------------------------------------'
57 */ 66 */
58 67
59[_HNTS] = LAYOUT( 68[_HNTS] = LAYOUT(
60 FIND, KC_Z, KC_R, KC_L, KC_D, KC_W, KC_Y, KC_P, KC_U, KC_X, KC_Q, KC_BSLS, 69 FIND, KC_Z, KC_R, KC_L, KC_D, KC_W, KC_Y, KC_P, KC_U, KC_X, KC_Q, KC_BSLS,
61 CPY_PST, KC_H, KC_N, KC_T, KC_S, KC_C, KC_B, KC_I, KC_E, KC_O, KC_A, KC_GRV, 70 CPY_PST, KC_H, KC_N, KC_T, KC_S, KC_C, KC_B, KC_I, KC_E, KC_O, KC_A, KC_GRV,
62 UNDO, KC_K, KC_V, KC_M, KC_F, KC_G, KC_ESC, MSS_CTL, MSS_CTL, KC_ESC, KC_J, KC_SCLN, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT, 71 UNDO, KC_K, KC_V, KC_M, KC_F, KC_G, ALT_ESC, MSS_CTL, MSS_CTL, ALT_ESC, KC_J, KC_SCLN, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT,
63 KC_LCTL, KC_LALT, LOWER, KC_SPC, BSP_CMD, KC_TAB, SFT_ENT, RAISE, KC_DEL, KC_CAPS 72 NUMPAD, SFT_ENT, LOWER, KC_SPC, BSP_CMD, TAB_CMD, SFT_ENT, RAISE, KC_DEL, KC_CAPS
73),
74
75/*
76 * Game: Gaming Layer
77 *
78 * ,-----------------------------------------------. ,-----------------------------------------------.
79 * | 0 | Z | R | L | D | W | | Y | P | U | X | Q | Esc |
80 * |-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
81 * | 1 | H | N | T | S | C | | B | I | E | O | A | Enter |
82 * |-------+-------+-------+-------+-------+-------+---------------. ,---------------+-------+-------+-------+-------+-------+-------|
83 * | 2 | K | V | M | F | G | 8 | 9 | |Default| Esc | J | ; : | , < | . > | / ? |Alt+Tab|
84 * `-------+-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-----------------------'
85 * | 3 | 4 | 5 | 6 | 7 | | Tab | Shift | Raise | Del | Caps |
86 * `---------------------------------------' `---------------------------------------'
87 */
88
89[_GAME] = LAYOUT(
90 KC_0, KC_Z, KC_R, KC_L, KC_D, KC_W, KC_Y, KC_P, KC_U, KC_X, KC_Q, KC_ESC,
91 KC_1, KC_H, KC_N, KC_T, KC_S, KC_C, KC_B, KC_I, KC_E, KC_O, KC_A, KC_ENT,
92 KC_2, KC_K, KC_V, KC_M, KC_F, KC_G, KC_8, KC_9, GAME, ALT_ESC, KC_J, KC_SCLN, KC_COMM, KC_DOT, KC_SLSH, ALT_TAB,
93 KC_3, KC_4, KC_5, KC_6, KC_7, TAB_CMD, SFT_ENT, RAISE, KC_DEL, KC_CAPS
94),
95
96/*
97 * Numpad
98 *
99 * ,-----------------------------------------------. ,-----------------------------------------------.
100 * | * | + | 7 | 8 | 9 | 0 | | | | | | | |
101 * |-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
102 * | / | - | 4 | 5 | 6 | ( | | | Left | Up | Down | Right | |
103 * |-------+-------+-------+-------+-------+-------+---------------. ,---------------+-------+-------+-------+-------+-------+-------|
104 * | = | . | 1 | 2 | 3 | ) | | | | | | | | | | | |
105 * `-------+-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-----------------------'
106 * | | | | | | | | | | | |
107 * `---------------------------------------' `---------------------------------------'
108 */
109
110[_NUMPAD] = LAYOUT(
111 KC_ASTR, KC_PLUS, KC_7, KC_8, KC_9, KC_0, _______, _______, _______, _______, _______, _______,
112 KC_SLSH, KC_MINS, KC_4, KC_5, KC_6, KC_LPRN, _______, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, _______,
113 KC_EQL, KC_DOT, KC_1, KC_2, KC_3, KC_RPRN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
114 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
64), 115),
65 116
66/* 117/*
@@ -105,26 +156,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
105 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ 156 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
106), 157),
107 158
108 /* 159/*
109 * Adjust: Function Keys & RGB 160 * Adjust: Function Keys & RGB
110 * 161 *
111 * ,-----------------------------------------------. ,-----------------------------------------------. 162 * ,-----------------------------------------------. ,-----------------------------------------------.
112 * | Reset | | | | | | | | NKRO |CG SWAP| | | HNTS | 163 * | Reset | | | | | | | | NKRO |CG SWAP| | | HNTS |
113 * |-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------| 164 * |-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
114 * | | TOG | SAI | HUI | VAI | MOD | | | | | | | | 165 * | | TOG | SAI | HUI | VAI | MOD | | |Bright+|Bright-| | | |
115 * |-------+-------+-------+-------+-------+-------+---------------. ,---------------+-------+-------+-------+-------+-------+-------| 166 * |-------+-------+-------+-------+-------+-------+---------------. ,---------------+-------+-------+-------+-------+-------+-------|
116 * | | | SAD | HUD | VAD | RMOD | | | | | | | |Bright+|Bright-| | | 167 * | | | SAD | HUD | VAD | RMOD | | | | | | | | | | | |
117 * `-------+-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-----------------------' 168 * `-------+-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-----------------------'
118 * | | | | | | | | | | | | 169 * | | | | | | | | | | | |
119 * `---------------------------------------' `---------------------------------------' 170 * `---------------------------------------' `---------------------------------------'
120 */ 171 */
121 172
122[_ADJUST] = LAYOUT( 173[_ADJUST] = LAYOUT(
123 RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, HNTS, 174 RESET, _______, _______, _______, _______, _______, _______, NK_TOGG, CG_TOGG, _______, GAME, HNTS,
124 _______, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD, CG_TOGG, NK_TOGG, KC_BRID, KC_BRIU, _______, _______, 175 _______, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD, _______, KC_BRIU, KC_BRID, _______, _______, _______,
125 _______, _______, RGB_SAD, RGB_HUD, RGB_VAD,RGB_RMOD,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 176 _______, _______, RGB_SAD, RGB_HUD, RGB_VAD,RGB_RMOD,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
126 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ 177 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
127), 178),
179
128}; 180};
129 181
130bool process_record_user(uint16_t keycode, keyrecord_t *record) { 182bool process_record_user(uint16_t keycode, keyrecord_t *record) {
@@ -167,6 +219,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
167 } 219 }
168 } 220 }
169 break; 221 break;
222 case MSS_CTL:
223 if (record->event.pressed && record->tap.count) {
224 tap_code16(C(KC_UP));
225 return false;
226 }
227 break;
170 case UNDO: // Tap to Undo, Tap with GUI to Redo 228 case UNDO: // Tap to Undo, Tap with GUI to Redo
171 if (get_mods() & MOD_MASK_GUI) { 229 if (get_mods() & MOD_MASK_GUI) {
172 if (record->event.pressed) { 230 if (record->event.pressed) {
diff --git a/keyboards/splitkb/kyria/keymaps/john-ezra/oled.c b/keyboards/splitkb/kyria/keymaps/john-ezra/oled.c
index e02783912..fe9c96d55 100644
--- a/keyboards/splitkb/kyria/keymaps/john-ezra/oled.c
+++ b/keyboards/splitkb/kyria/keymaps/john-ezra/oled.c
@@ -1,18 +1,18 @@
1/* Copyright 2021 John Ezra 1/* Copyright 2021 John Ezra
2 * 2*
3 * This program is free software: you can redistribute it and/or modify 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 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 5* the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version. 6* (at your option) any later version.
7 * 7*
8 * This program is distributed in the hope that it will be useful, 8* This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of 9* but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details. 11* GNU General Public License for more details.
12 * 12*
13 * You should have received a copy of the GNU General Public License 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/>. 14* along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */ 15*/
16 16
17//Sets up what the OLED screens display. 17//Sets up what the OLED screens display.
18 18
@@ -26,7 +26,7 @@ int vert_count = 0;
26 26
27//============= USER CONFIG PARAMS =============== 27//============= USER CONFIG PARAMS ===============
28float max_wpm = 150.0f; //WPM value at the top of the graph window 28float max_wpm = 150.0f; //WPM value at the top of the graph window
29int graph_refresh_interval = 80; //in milliseconds 29int graph_refresh_interval = 100; //in milliseconds
30int graph_area_fill_interval = 3; //determines how dense the horizontal lines under the graph line are; lower = more dense 30int graph_area_fill_interval = 3; //determines how dense the horizontal lines under the graph line are; lower = more dense
31int vert_interval = 3; //determines frequency of vertical lines under the graph line 31int vert_interval = 3; //determines frequency of vertical lines under the graph line
32bool vert_line = false; //determines whether to draw vertical lines 32bool vert_line = false; //determines whether to draw vertical lines
@@ -34,110 +34,456 @@ int graph_line_thickness = 2; //determines thickness of graph line in pixels
34//============= END USER PARAMS =============== 34//============= END USER PARAMS ===============
35 35
36#ifdef OLED_ENABLE 36#ifdef OLED_ENABLE
37oled_rotation_t oled_init_user(oled_rotation_t rotation) { 37 oled_rotation_t oled_init_user(oled_rotation_t rotation) {
38 return OLED_ROTATION_180; 38 return OLED_ROTATION_180;
39} 39}
40 40
41static void render_qmk_logo(void) { 41static void render_qmk_logo(void) {
42 static const char PROGMEM qmk_logo[] = { 42 static const char PROGMEM qmk_logo[] = {
43 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, 43 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xf0, 0x70, 0x70, 0x7e, 0xf0, 0xf0, 0xfe, 0xf0, 0x70, 0x7e,
44 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, 44 0x70, 0xf0, 0xfe, 0xf0, 0xf0, 0x7e, 0x70, 0x70, 0xf0, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
45 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0}; 45 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
46 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51 0x00, 0x92, 0x92, 0x92, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
52 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x92, 0x92, 0x92, 0x00, 0x00,
53 0xf8, 0xfc, 0x0e, 0x06, 0x06, 0x06, 0x0e, 0xfc, 0xf8, 0x00, 0xfe, 0xfe, 0x1c, 0x38, 0x70, 0xe0,
54 0x70, 0x38, 0x1c, 0xfe, 0xfe, 0x00, 0xfe, 0xfe, 0xe0, 0xf0, 0xb8, 0x1c, 0x0e, 0x06, 0x00, 0x00,
55 0x00, 0xfe, 0xfe, 0xc6, 0xc6, 0xc6, 0x06, 0x00, 0xe6, 0xe6, 0x00, 0xf0, 0xf0, 0x60, 0x30, 0x30,
56 0x60, 0x00, 0xf0, 0xf0, 0x30, 0x30, 0xe0, 0xc0, 0x30, 0x30, 0x30, 0xe0, 0xc0, 0x00, 0xf0, 0xf0,
57 0x00, 0xc0, 0xe0, 0x70, 0xe0, 0xc0, 0x00, 0xf0, 0xf0, 0x00, 0x20, 0xb0, 0x90, 0xb0, 0xf0, 0xe0,
58 0x00, 0xf0, 0xf0, 0x60, 0x30, 0x30, 0x60, 0x00, 0xc0, 0xe0, 0x30, 0x30, 0x30, 0xe0, 0xc0, 0x00,
59 0x00, 0x24, 0x24, 0x24, 0xff, 0xff, 0xff, 0xfe, 0xfc, 0xf8, 0xf0, 0xf1, 0xe3, 0xe3, 0x00, 0x00,
60 0x00, 0xe3, 0xe3, 0xf1, 0xf0, 0xf8, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0x24, 0x24, 0x24, 0x00, 0x00,
61 0x03, 0x07, 0x0e, 0x0c, 0x0c, 0x1c, 0x1e, 0x17, 0x13, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00,
62 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x0f, 0x0f, 0x00, 0x01, 0x03, 0x07, 0x0e, 0x0c, 0x00, 0x00,
63 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x00,
64 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x01, 0x0f,
65 0x0f, 0x07, 0x01, 0x00, 0x01, 0x07, 0x0f, 0x0f, 0x01, 0x00, 0x07, 0x0f, 0x0c, 0x04, 0x0f, 0x0f,
66 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0d, 0x09, 0x09, 0x0d, 0x04, 0x00,
67 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x07, 0x3f, 0x07, 0x07, 0x3f, 0x07, 0x07, 0x3f,
68 0x07, 0x07, 0x3f, 0x07, 0x07, 0x3f, 0x07, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
69 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
70 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
71 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
72 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
73 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
74 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
75 };
76 oled_write_raw_P(qmk_logo, sizeof(qmk_logo));
77}
78
79// Loop to create line by line rendering for Horizontal display
80// Input is oled_render_image(how many rows tall, how many pixels wide, what to render, X pos, Y pos, Frame offset)
81void oled_render_image(int lines, int px, const char render_line[][px], int X_pos, int Y_pos, int frame) {
82 for (uint8_t i = 0; i < lines; i++){
83 oled_set_cursor(X_pos, Y_pos + i);
84 oled_write_raw_P(render_line[i + frame], px);
85 }
86}
87
88static void render_layers(void) {
89 static const char PROGMEM layer_background_r1[1][38] = {
90 {0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x82, 0x82, 0x82, 0x42,
91 0x42, 0x42, 0x22, 0x22, 0x22, 0x42, 0x42, 0x42, 0x82, 0x82, 0x82, 0x02, 0x02, 0x02, 0x02, 0x02,
92 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe}
93 };
94 static const char PROGMEM layer_background_r2[1][38] = {
95 {0x00, 0xff, 0x00, 0x44, 0x44, 0x44, 0xaa, 0xaa, 0xaa, 0x11, 0x11, 0x11, 0x20, 0x20, 0x20, 0x40,
96 0x40, 0x40, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x11, 0x11, 0x11, 0xaa, 0xaa,
97 0xaa, 0x44, 0x44, 0x44, 0x00, 0xff}
98 };
99 static const char PROGMEM layer_background_r3[1][38] = {
100 {0x00, 0xff, 0x00, 0x44, 0x44, 0x44, 0xaa, 0xaa, 0xaa, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x44,
101 0x44, 0x44, 0x88, 0x88, 0x88, 0x44, 0x44, 0x44, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0xaa, 0xaa,
102 0xaa, 0x44, 0x44, 0x44, 0x00, 0xff}
103 };
104 static const char PROGMEM layer_background_r4[1][38] = {
105 {0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, 0x41, 0x41, 0x42, 0x42, 0x42, 0x44,
106 0x44, 0x44, 0x48, 0x48, 0x48, 0x44, 0x44, 0x44, 0x42, 0x42, 0x42, 0x41, 0x41, 0x41, 0x40, 0x40,
107 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f}
108 };
109 static const char PROGMEM base[1][38] = {
110 {0x00, 0xff, 0x00, 0x44, 0x44, 0x44, 0xae, 0xae, 0xae, 0x1f, 0x1f, 0x1f, 0x3e, 0x3e, 0x3e, 0x7c,
111 0x7c, 0x7c, 0xf8, 0xf8, 0xf8, 0x7c, 0x7c, 0x7c, 0x3e, 0x3e, 0x3e, 0x1f, 0x1f, 0x1f, 0xae, 0xae,
112 0xae, 0x44, 0x44, 0x44, 0x00, 0xff}
113 };
114 static const char PROGMEM lower[2][38] = {
115 {0x00, 0xff, 0x00, 0x44, 0x44, 0x44, 0xea, 0xea, 0xea, 0xf1, 0xf1, 0xf1, 0xe2, 0xe2, 0xe2, 0xc4,
116 0xc4, 0xc4, 0x88, 0x88, 0x88, 0xc4, 0xc4, 0xc4, 0xe2, 0xe2, 0xe2, 0xf1, 0xf1, 0xf1, 0xea, 0xea,
117 0xea, 0x44, 0x44, 0x44, 0x00, 0xff},
118 {0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, 0x41, 0x41, 0x43, 0x43, 0x43, 0x47,
119 0x47, 0x47, 0x4f, 0x4f, 0x4f, 0x47, 0x47, 0x47, 0x43, 0x43, 0x43, 0x41, 0x41, 0x41, 0x40, 0x40,
120 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f}
121 };
122 static const char PROGMEM raise[][38] = {
123 {0x00, 0xff, 0x00, 0x44, 0x44, 0x44, 0xea, 0xea, 0xea, 0xf1, 0xf1, 0xf1, 0xe0, 0xe0, 0xe0, 0xc0,
124 0xc0, 0xc0, 0x80, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xf1, 0xf1, 0xf1, 0xea, 0xea,
125 0xea, 0x44, 0x44, 0x44, 0x00, 0xff},
126 {0x00, 0xff, 0x00, 0x44, 0x44, 0x44, 0xaa, 0xaa, 0xaa, 0x11, 0x11, 0x11, 0x23, 0x23, 0x23, 0x47,
127 0x47, 0x47, 0x8f, 0x8f, 0x8f, 0x47, 0x47, 0x47, 0x23, 0x23, 0x23, 0x11, 0x11, 0x11, 0xaa, 0xaa,
128 0xaa, 0x44, 0x44, 0x44, 0x00, 0xff}
129 };
130 static const char PROGMEM adjust[][38] = {
131 {0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x82, 0x82, 0x82, 0xc2,
132 0xc2, 0xc2, 0xe2, 0xe2, 0xe2, 0xc2, 0xc2, 0xc2, 0x82, 0x82, 0x82, 0x02, 0x02, 0x02, 0x02, 0x02,
133 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe},
134 {0x00, 0xff, 0x00, 0x44, 0x44, 0x44, 0xae, 0xae, 0xae, 0x1f, 0x1f, 0x1f, 0x3f, 0x3f, 0x3f, 0x7f,
135 0x7f, 0x7f, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0x7f, 0x3f, 0x3f, 0x3f, 0x1f, 0x1f, 0x1f, 0xae, 0xae,
136 0xae, 0x44, 0x44, 0x44, 0x00, 0xff}
137 };
138 static const char PROGMEM custom[][38] = {
139 {0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x82, 0x82, 0x82, 0x42,
140 0xc2, 0x42, 0xa2, 0x62, 0xa2, 0x42, 0xc2, 0x42, 0x82, 0x82, 0x82, 0x02, 0x02, 0x02, 0x02, 0x02,
141 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe},
142 {0x00, 0xff, 0x00, 0x44, 0x44, 0x44, 0xaa, 0xee, 0xaa, 0x55, 0xbb, 0x55, 0xaa, 0x75, 0xaa, 0x55,
143 0xea, 0x55, 0xaa, 0xd5, 0xaa, 0x55, 0xea, 0x55, 0xaa, 0x75, 0xaa, 0x55, 0xbb, 0x55, 0xaa, 0xee,
144 0xaa, 0x44, 0x44, 0x44, 0x00, 0xff},
145 {0x00, 0xff, 0x00, 0x44, 0x44, 0x44, 0xaa, 0xee, 0xaa, 0x55, 0xbb, 0x55, 0xaa, 0x77, 0xaa, 0x55,
146 0xee, 0x55, 0xaa, 0xdd, 0xaa, 0x55, 0xee, 0x55, 0xaa, 0x77, 0xaa, 0x55, 0xbb, 0x55, 0xaa, 0xee,
147 0xaa, 0x44, 0x44, 0x44, 0x00, 0xff},
148 {0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, 0x41, 0x41, 0x42, 0x43, 0x42, 0x45,
149 0x46, 0x45, 0x4a, 0x4d, 0x4a, 0x45, 0x46, 0x45, 0x42, 0x43, 0x42, 0x41, 0x41, 0x41, 0x40, 0x40,
150 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f}
151 };
46 152
47 oled_write_P(qmk_logo, false); 153 switch (get_highest_layer(layer_state)) {
154 case 0:
155 oled_render_image(1, 38, layer_background_r1, 15, 4, 0);
156 oled_render_image(1, 38, layer_background_r2, 15, 5, 0);
157 oled_render_image(1, 38, base, 15, 6, 0);
158 oled_render_image(1, 38, layer_background_r4, 15, 7, 0);
159 break;
160 case 3:
161 oled_render_image(2, 38, lower, 15, 6, 0);
162 break;
163 case 4:
164 oled_render_image(1, 38, layer_background_r1, 15, 4, 0);
165 oled_render_image(2, 38, raise, 15, 5, 0);
166 oled_render_image(1, 38, layer_background_r4, 15, 7, 0);
167 break;
168 case 5:
169 oled_render_image(2, 38, adjust, 15, 4, 0);
170 oled_render_image(1, 38, layer_background_r3, 15, 6, 0);
171 oled_render_image(1, 38, layer_background_r4, 15, 7, 0);
172 break;
173 default:
174 oled_render_image(4, 38, custom, 15, 4, 0);
175 break;
176 }
177}
178
179void render_mod_state(uint8_t modifiers) {
180 static const char PROGMEM gui_off [][3]= {{0x80, 0x81, 0}, {0xa0, 0xa1, 0}};
181 static const char PROGMEM gui_on [][3]= {{0xc0, 0xc1, 0}, {0xe0, 0xe1, 0}};
182 static const char PROGMEM alt_off [][3]= {{0x82, 0x83, 0}, {0xa2, 0xa3, 0}};
183 static const char PROGMEM alt_on [][3]= {{0xc2, 0xc3, 0}, {0xe2, 0xe3, 0}};
184 static const char PROGMEM ctrl_off [][3]= {{0x84, 0x85, 0}, {0xa4, 0xa5, 0}};
185 static const char PROGMEM ctrl_on [][3]= {{0xc4, 0xc5, 0}, {0xe4, 0xe5, 0}};
186 static const char PROGMEM shift_off [][3]= {{0x86, 0x87, 0}, {0xa6, 0xa7, 0}};
187 static const char PROGMEM shift_on [][3]= {{0xc6, 0xc7, 0}, {0xe6, 0xe7, 0}};
188
189 // fillers between the modifier icons bleed into the icon frames
190
191 static const char PROGMEM off_off [][2]= {{0x9e, 0}, {0xbe, 0}};
192 static const char PROGMEM on_on [][2]= {{0xdf, 0}, {0xff, 0}};
193 static const char PROGMEM on_off [][2]= {{0xde, 0}, {0xfe, 0}};
194 static const char PROGMEM off_on [][2]= {{0x9f, 0}, {0xbf, 0}};
195
196 // render icons
197
198 if(modifiers & MOD_MASK_GUI) {
199 oled_set_cursor(0, 4);
200 oled_write_P(gui_on[0], false);
201 oled_set_cursor(0, 5);
202 oled_write_P(gui_on[1], false);
203 } else {
204 oled_set_cursor(0, 4);
205 oled_write_P(gui_off[0], false);
206 oled_set_cursor(0, 5);
207 oled_write_P(gui_off[1], false);
208 }
209 if(modifiers & MOD_MASK_ALT) {
210 oled_set_cursor(3, 4);
211 oled_write_P(alt_on[0], false);
212 oled_set_cursor(3, 5);
213 oled_write_P(alt_on[1], false);
214 } else {
215 oled_set_cursor(3, 4);
216 oled_write_P(alt_off[0], false);
217 oled_set_cursor(3, 5);
218 oled_write_P(alt_off[1], false);
219 }
220 if(modifiers & MOD_MASK_CTRL) {
221 oled_set_cursor(0, 6);
222 oled_write_P(ctrl_on[0], false);
223 oled_set_cursor(0, 7);
224 oled_write_P(ctrl_on[1], false);
225 } else {
226 oled_set_cursor(0, 6);
227 oled_write_P(ctrl_off[0], false);
228 oled_set_cursor(0, 7);
229 oled_write_P(ctrl_off[1], false);
230 }
231 if(modifiers & MOD_MASK_SHIFT) {
232 oled_set_cursor(3, 6);
233 oled_write_P(shift_on[0], false);
234 oled_set_cursor(3, 7);
235 oled_write_P(shift_on[1], false);
236 } else {
237 oled_set_cursor(3, 6);
238 oled_write_P(shift_off[0], false);
239 oled_set_cursor(3, 7);
240 oled_write_P(shift_off[1], false);
241 }
242
243 // render fillers
244
245 if ((modifiers & MOD_MASK_GUI) && (modifiers & MOD_MASK_ALT)) {
246 oled_set_cursor(2, 4);
247 oled_write_P(on_on[0], false);
248 oled_set_cursor(2, 5);
249 oled_write_P(on_on[1], false);
250 } else if(modifiers & MOD_MASK_GUI) {
251 oled_set_cursor(2, 4);
252 oled_write_P(on_off[0], false);
253 oled_set_cursor(2, 5);
254 oled_write_P(on_off[1], false);
255 } else if(modifiers & MOD_MASK_ALT) {
256 oled_set_cursor(2, 4);
257 oled_write_P(off_on[0], false);
258 oled_set_cursor(2, 5);
259 oled_write_P(off_on[1], false);
260 } else {
261 oled_set_cursor(2, 4);
262 oled_write_P(off_off[0], false);
263 oled_set_cursor(2, 5);
264 oled_write_P(off_off[1], false);
265 }
266
267 if ((modifiers & MOD_MASK_CTRL) && (modifiers & MOD_MASK_SHIFT)) {
268 oled_set_cursor(2, 6);
269 oled_write_P(on_on[0], false);
270 oled_set_cursor(2, 7);
271 oled_write_P(on_on[1], false);
272 } else if(modifiers & MOD_MASK_CTRL) {
273 oled_set_cursor(2, 6);
274 oled_write_P(on_off[0], false);
275 oled_set_cursor(2, 7);
276 oled_write_P(on_off[1], false);
277 } else if(modifiers & MOD_MASK_SHIFT) {
278 oled_set_cursor(2, 6);
279 oled_write_P(off_on[0], false);
280 oled_set_cursor(2, 7);
281 oled_write_P(off_on[1], false);
282 } else {
283 oled_set_cursor(2, 6);
284 oled_write_P(off_off[0], false);
285 oled_set_cursor(2, 7);
286 oled_write_P(off_off[1], false);
287 }
48} 288}
49 289
50void render_bootmagic_status(void) { 290void render_bootmagic_status(void) {
51 oled_write_P((keymap_config.swap_lctl_lgui) ? PSTR("OS: Windows\n\n") : PSTR("OS: MacOS\n\n"), false); 291 static const char PROGMEM nkro_off [][3]= {{0x88, 0x89, 0}, {0xa8, 0xa9, 0}};
52 oled_write_P((keymap_config.nkro) ? PSTR("NKRO ") : PSTR(" "), false); 292 static const char PROGMEM nkro_on [][3]= {{0xc8, 0xc9, 0}, {0xe8, 0xe9, 0}};
293 static const char PROGMEM mac_os_off [][6]= {{0x90, 0x91, 0x92, 0x93, 0x94, 0}, {0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0}};
294 static const char PROGMEM mac_os_on [][6]= {{0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0}, {0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0}};
295 static const char PROGMEM windows_off [][6]= {{0x95, 0x96, 0x97, 0x98, 0x99, 0}, {0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0}};
296 static const char PROGMEM windows_on [][6]= {{0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0}, {0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0}};
297
298 if (keymap_config.nkro) {
299 oled_set_cursor(5, 4);
300 oled_write_P(nkro_on[0], false);
301 oled_set_cursor(5, 5);
302 oled_write_P(nkro_on[1], false);
303 } else {
304 oled_set_cursor(5, 4);
305 oled_write_P(nkro_off[0], false);
306 oled_set_cursor(5, 5);
307 oled_write_P(nkro_off[1], false);
308 }
309 if (keymap_config.swap_lctl_lgui) {
310 oled_set_cursor(10, 6);
311 oled_write_P(windows_on[0], false);
312 oled_set_cursor(10, 7);
313 oled_write_P(windows_on[1], false);
314 oled_set_cursor(10, 4);
315 oled_write_P(mac_os_off[0], false);
316 oled_set_cursor(10, 5);
317 oled_write_P(mac_os_off[1], false);
318 } else {
319 oled_set_cursor(10, 4);
320 oled_write_P(mac_os_on[0], false);
321 oled_set_cursor(10, 5);
322 oled_write_P(mac_os_on[1], false);
323 oled_set_cursor(10, 6);
324 oled_write_P(windows_off[0], false);
325 oled_set_cursor(10, 7);
326 oled_write_P(windows_off[1], false);
327 }
328}
329
330void render_lock_status(void) {
331 static const char PROGMEM caps_off [][3]= {{0x8a, 0x8b, 0}, {0xaa, 0xab, 0}};
332 static const char PROGMEM caps_on [][3]= {{0xca, 0xcb, 0}, {0xea, 0xeb, 0}};
333 static const char PROGMEM num_off [][3]= {{0x8c, 0x8d, 0}, {0xac, 0xad, 0}};
334 static const char PROGMEM num_on [][3]= {{0xcc, 0xcd, 0}, {0xec, 0xed, 0}};
335 static const char PROGMEM scrl_off [][3]= {{0x8e, 0x8f, 0}, {0xae, 0xaf, 0}};
336 static const char PROGMEM scrl_on [][3]= {{0xce, 0xcf, 0}, {0xee, 0xef, 0}};
337
338 static const char PROGMEM off_off [][2]= {{0x9e, 0}, {0xbe, 0}};
339 static const char PROGMEM on_on [][2]= {{0xdf, 0}, {0xff, 0}};
340 static const char PROGMEM on_off [][2]= {{0xde, 0}, {0xfe, 0}};
341 static const char PROGMEM off_on [][2]= {{0x9f, 0}, {0xbf, 0}};
342
343 led_t led_usb_state = host_keyboard_led_state();
344 if (led_usb_state.caps_lock) {
345 oled_set_cursor(8, 4);
346 oled_write_P(caps_on[0], false);
347 oled_set_cursor(8, 5);
348 oled_write_P(caps_on[1], false);
349 } else {
350 oled_set_cursor(8, 4);
351 oled_write_P(caps_off[0], false);
352 oled_set_cursor(8, 5);
353 oled_write_P(caps_off[1], false);
354 }
355 if (led_usb_state.num_lock) {
356 oled_set_cursor(5, 6);
357 oled_write_P(num_on[0], false);
358 oled_set_cursor(5, 7);
359 oled_write_P(num_on[1], false);
360 } else {
361 oled_set_cursor(5, 6);
362 oled_write_P(num_off[0], false);
363 oled_set_cursor(5, 7);
364 oled_write_P(num_off[1], false);
365 }
366 if (led_usb_state.scroll_lock) {
367 oled_set_cursor(8, 6);
368 oled_write_P(scrl_on[0], false);
369 oled_set_cursor(8, 7);
370 oled_write_P(scrl_on[1], false);
371 } else {
372 oled_set_cursor(8, 6);
373 oled_write_P(scrl_off[0], false);
374 oled_set_cursor(8, 7);
375 oled_write_P(scrl_off[1], false);
376 }
377
378 // render fillers
379
380 if ((led_usb_state.caps_lock) && (keymap_config.nkro)) {
381 oled_set_cursor(7, 4);
382 oled_write_P(on_on[0], false);
383 oled_set_cursor(7, 5);
384 oled_write_P(on_on[1], false);
385 } else if(keymap_config.nkro) {
386 oled_set_cursor(7, 4);
387 oled_write_P(on_off[0], false);
388 oled_set_cursor(7, 5);
389 oled_write_P(on_off[1], false);
390 } else if(led_usb_state.caps_lock) {
391 oled_set_cursor(7, 4);
392 oled_write_P(off_on[0], false);
393 oled_set_cursor(7, 5);
394 oled_write_P(off_on[1], false);
395 } else {
396 oled_set_cursor(7, 4);
397 oled_write_P(off_off[0], false);
398 oled_set_cursor(7, 5);
399 oled_write_P(off_off[1], false);
400 }
401 if ((led_usb_state.num_lock) && (led_usb_state.scroll_lock)) {
402 oled_set_cursor(7, 6);
403 oled_write_P(on_on[0], false);
404 oled_set_cursor(7, 7);
405 oled_write_P(on_on[1], false);
406 } else if(led_usb_state.num_lock) {
407 oled_set_cursor(7, 6);
408 oled_write_P(on_off[0], false);
409 oled_set_cursor(7, 7);
410 oled_write_P(on_off[1], false);
411 } else if(led_usb_state.scroll_lock) {
412 oled_set_cursor(7, 6);
413 oled_write_P(off_on[0], false);
414 oled_set_cursor(7, 7);
415 oled_write_P(off_on[1], false);
416 } else {
417 oled_set_cursor(7, 6);
418 oled_write_P(off_off[0], false);
419 oled_set_cursor(7, 7);
420 oled_write_P(off_off[1], false);
421 }
53} 422}
54 423
55void render_wpm(void) { 424
56 //get current WPM value 425
57 currwpm = get_current_wpm(); 426void render_wpm_graph(void) {
58 //check if it's been long enough before refreshing graph 427 currwpm = get_current_wpm(); //get current WPM value
59 if(timer_elapsed(timer) > graph_refresh_interval){ 428 if(timer_elapsed(timer) > graph_refresh_interval){ //check if it's been long enough before refreshing graph
60 // main calculation to plot graph line 429 x = 63 - ((currwpm / max_wpm) * 63); // main calculation to plot graph line
61 x = 64 - ((currwpm / max_wpm) * 64); 430 for(int i = 0; i <= graph_line_thickness - 1; i++){ //first draw actual value line
62 //first draw actual value line 431 oled_write_pixel(1, x + i, true);
63 for(int i = 0; i <= graph_line_thickness - 1; i++){
64 oled_write_pixel(1, x + i, true);
65 } 432 }
66 //then fill in area below the value line 433 if(vert_line){ //then fill in area below the value line
67 if(vert_line){ 434 if(vert_count == vert_interval){
68 if(vert_count == vert_interval){ 435 vert_count = 0;
69 vert_count = 0; 436 while(x <= 63){
70 while(x <= 64){ 437 oled_write_pixel(1, x, true);
71 oled_write_pixel(1, x, true); 438 x++;
72 x++;
73 }
74 } else {
75 for(int i = 64; i > x; i--){
76 if(i % graph_area_fill_interval == 0){
77 oled_write_pixel(1, i, true);
78 }
79 } 439 }
80 vert_count++;
81 }
82 } else { 440 } else {
83 for(int i = 64; i > x; i--){ 441 for(int i = 63; i > x; i--){
84 if(i % graph_area_fill_interval == 0){ 442 if(i % graph_area_fill_interval == 0){
85 oled_write_pixel(1, i, true); 443 oled_write_pixel(1, i, true);
86 } 444 }
87 } 445 }
446 vert_count++;
447 }
448 } else {
449 for(int i = 63; i > x; i--){
450 if(i % graph_area_fill_interval == 0){
451 oled_write_pixel(1, i, true);
452 }
88 } 453 }
89 //then move the entire graph one pixel to the right
90 oled_pan(false);
91 //refresh the timer for the next iteration
92 timer = timer_read();
93 } 454 }
94 //format current WPM value into a printable string 455 oled_pan(false); //then move the entire graph one pixel to the right
95 char buf[4]; 456 timer = timer_read(); //refresh the timer for the next iteration
96 oled_set_cursor(14, 0); 457 }
97 oled_write("WPM:", false); 458 char buf[4]; //format current WPM value into a printable string
98 buf[0] = currwpm >= 100 ? ((currwpm/100) + '0') : ' '; 459 oled_set_cursor(14, 0);
99 buf[1] = currwpm >= 10 ? (((currwpm/10) % 10) + '0') : ' '; 460 oled_write("WPM:", false);
100 buf[2] = (currwpm % 10) + '0'; 461 buf[0] = currwpm >= 100 ? ((currwpm/100) + '0') : ' ';
101 buf[3] = 0; 462 buf[1] = currwpm >= 10 ? (((currwpm/10) % 10) + '0') : ' ';
102 oled_write(buf, false); 463 buf[2] = (currwpm % 10) + '0';
464 buf[3] = 0;
465 oled_write(buf, false);
103} 466}
104 467
105static void render_status(void) { 468void render_status_main(void) {
106 // QMK Logo and version information 469 render_qmk_logo();
107 render_qmk_logo(); 470 render_layers();
108 oled_write_P(PSTR("Kyria: Rev1.0\n"), false); 471 render_mod_state(get_mods());
109 472 render_bootmagic_status();
110 // Host Keyboard Layer Status 473 render_lock_status();
111 oled_write_P(PSTR("Layer: "), false); 474
112 switch (get_highest_layer(layer_state)) { 475}
113 case 0: 476
114 oled_write_P(PSTR("Default\n"), false); 477void render_status_secondary(void) {
115 break; 478 render_wpm_graph();
116 case 1:
117 oled_write_P(PSTR("Lower\n"), false);
118 break;
119 case 2:
120 oled_write_P(PSTR("Raise\n"), false);
121 break;
122 case 3:
123 oled_write_P(PSTR("Adjust\n"), false);
124 break;
125 default:
126 oled_write_P(PSTR("Undefined\n"), false);
127 }
128
129 render_bootmagic_status();
130
131// Host Keyboard LED Status
132 led_t led_state = host_keyboard_led_state();
133 oled_write_P(led_state.caps_lock ? PSTR("CAPLCK ") : PSTR(" "), false);
134} 479}
135 480
136void oled_task_user(void) { 481void oled_task_user(void) {
137 if (is_keyboard_master()) { 482 if (is_keyboard_master()) {
138 render_status(); 483 render_status_main(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
139 } else { 484 } else {
140 render_wpm(); 485 render_status_secondary();
141 } 486 }
142} 487}
488
143#endif 489#endif
diff --git a/keyboards/splitkb/kyria/keymaps/john-ezra/readme.md b/keyboards/splitkb/kyria/keymaps/john-ezra/readme.md
new file mode 100644
index 000000000..8a3280614
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/john-ezra/readme.md
@@ -0,0 +1,20 @@
1### This Keymap uses the nanoBoot bootloader to maximize available firmware space.
2
3As is, the firmware will be too large if using the standard bootloader. Removing `DEBOUNCE_TYPE = sym_eager_pk` from the `rules.mk` should get the size under the limit.
4
5If nanoBoot is not going to be used, delete or comment out the following from your `rules.mk`:
6```make
7BOOTLOADER = hid
8BOOTLOADER_SIZE = 512
9PROGRAM_CMD = $(HID_BOOTLOADER_CLI) -mmcu=$(MCU) -w -v $(BUILD_DIR)/$(TARGET).hex
10```
11
12nanoBoot can be found here: [nanoBoot](https://github.com/sigprof/nanoBoot) I used the string-descriptors branch as it was the latest update.
13
14To ISP Flash nanoBoot: `avrdude -p atmega32u4 -c avrisp -U flash:w:/Users/DempseyTech/nanoBoot/nanoBoot.hex:i -P /dev/cu.usbmodem123451 -U lfuse:w:0x7F:m -U hfuse:w:0xD6:m -U efuse:w:0xC7:m`
15
16You will need to change the path in the CLI command to match your file structure.
17
18QMK Toolbox will not recognize controllers using nanoBoot, instead use the CLI to flash.
19
20To Flash: `qmk flash -kb splitkb/kyria/rev1 -km john-ezra -bl hid_bootloader`
diff --git a/keyboards/splitkb/kyria/keymaps/john-ezra/rules.mk b/keyboards/splitkb/kyria/keymaps/john-ezra/rules.mk
index b86789c09..87026b875 100644
--- a/keyboards/splitkb/kyria/keymaps/john-ezra/rules.mk
+++ b/keyboards/splitkb/kyria/keymaps/john-ezra/rules.mk
@@ -8,5 +8,12 @@ GRAVE_ESC_ENABLE = no # Disable Grave Escape
8MOUSEKEY_ENABLE = no # Disable Mousekeys 8MOUSEKEY_ENABLE = no # Disable Mousekeys
9WPM_ENABLE = yes # Enable WPM Counter (Works with default wpm files, but works better with vectorstorm updated wpm.c and wpm.h -> https://github.com/vectorstorm/qmk_firmware/tree/wpm_exact) 9WPM_ENABLE = yes # Enable WPM Counter (Works with default wpm files, but works better with vectorstorm updated wpm.c and wpm.h -> https://github.com/vectorstorm/qmk_firmware/tree/wpm_exact)
10KEY_OVERRIDE_ENABLE = yes # Enable Key Overrides 10KEY_OVERRIDE_ENABLE = yes # Enable Key Overrides
11CONSOLE_ENABLE = no
12
13DEBOUNCE_TYPE = sym_eager_pk
14
15BOOTLOADER = hid # This Keymap Uses nanoBoot, more info in readme
16BOOTLOADER_SIZE = 512
17PROGRAM_CMD = $(HID_BOOTLOADER_CLI) -mmcu=$(MCU) -w -v $(BUILD_DIR)/$(TARGET).hex
11 18
12SRC += oled.c 19SRC += oled.c