aboutsummaryrefslogtreecommitdiff
path: root/keyboards/kyria
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/kyria')
-rw-r--r--keyboards/kyria/keymaps/drashna/config.h2
-rw-r--r--keyboards/kyria/keymaps/drashna/keymap.c208
-rw-r--r--keyboards/kyria/keymaps/drashna/rules.mk2
3 files changed, 14 insertions, 198 deletions
diff --git a/keyboards/kyria/keymaps/drashna/config.h b/keyboards/kyria/keymaps/drashna/config.h
index e566b16d5..f93069ac0 100644
--- a/keyboards/kyria/keymaps/drashna/config.h
+++ b/keyboards/kyria/keymaps/drashna/config.h
@@ -37,3 +37,5 @@
37// If you are using an Elite C rev3 on the slave side, uncomment the lines below: 37// If you are using an Elite C rev3 on the slave side, uncomment the lines below:
38#define SPLIT_USB_DETECT 38#define SPLIT_USB_DETECT
39#define SPLIT_USB_TIMEOUT 1000 39#define SPLIT_USB_TIMEOUT 1000
40
41#define KEYLOGGER_LENGTH 10
diff --git a/keyboards/kyria/keymaps/drashna/keymap.c b/keyboards/kyria/keymaps/drashna/keymap.c
index 5604f1a69..5e97ca55a 100644
--- a/keyboards/kyria/keymaps/drashna/keymap.c
+++ b/keyboards/kyria/keymaps/drashna/keymap.c
@@ -2,35 +2,6 @@
2 2
3uint8_t is_master; 3uint8_t is_master;
4 4
5#ifdef OLED_DRIVER_ENABLE
6# define KEYLOGGER_LENGTH 10
7static uint32_t oled_timer = 0;
8static char keylog_str[KEYLOGGER_LENGTH + 1] = {"\n"};
9static uint16_t log_timer = 0;
10// clang-format off
11static const char PROGMEM code_to_name[0xFF] = {
12// 0 1 2 3 4 5 6 7 8 9 A B c D E F
13 ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', // 0x
14 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', // 1x
15 '3', '4', '5', '6', '7', '8', '9', '0', 20, 19, 27, 26, 22, '-', '=', '[', // 2x
16 ']','\\', '#', ';','\'', '`', ',', '.', '/', 128, ' ', ' ', ' ', ' ', ' ', ' ', // 3x
17 ' ', ' ', ' ', ' ', ' ', ' ', 'P', 'S', ' ', ' ', ' ', ' ', 16, ' ', ' ', ' ', // 4x
18 ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 5x
19 ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 6x
20 ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 7x
21 ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 8x
22 ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 9x
23 ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Ax
24 ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Bx
25 ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Cx
26 ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Dx
27 'C', 'S', 'A', 'C', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Ex
28 ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' // Fx
29};
30
31void add_keylog(uint16_t keycode);
32#endif
33
34#ifndef UNICODE_ENABLE 5#ifndef UNICODE_ENABLE
35# define UC(x) KC_NO 6# define UC(x) KC_NO
36#endif 7#endif
@@ -52,7 +23,7 @@ void add_keylog(uint16_t keycode);
52 LAYOUT_wrapper( \ 23 LAYOUT_wrapper( \
53 KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_MINS, \ 24 KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_MINS, \
54 LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \ 25 LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \
55 OS_LSFT, CTL_T(K21), K22, K23, K24, K25, KC_NO, KC_NO, MEH(KC_MINS), KC_NO, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \ 26 OS_LSFT, CTL_T(K21), K22, K23, K24, K25, KC_NO, MEH(KC_MINS), TG(_DIABLO), KC_NO, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \
56 KC_MUTE, OS_LALT, KC_GRV, KC_SPC, BK_LWER, DL_RAIS, KC_ENT, OS_RGUI, UC(0x03A8), UC(0x2E2E) \ 27 KC_MUTE, OS_LALT, KC_GRV, KC_SPC, BK_LWER, DL_RAIS, KC_ENT, OS_RGUI, UC(0x03A8), UC(0x2E2E) \
57 ) 28 )
58/* Re-pass though to allow templates to be used */ 29/* Re-pass though to allow templates to be used */
@@ -107,12 +78,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
107 _____________CARPLAX_QFMLWY_L2_____________, _____________CARPLAX_QFMLWY_R2_____________, 78 _____________CARPLAX_QFMLWY_L2_____________, _____________CARPLAX_QFMLWY_R2_____________,
108 _____________CARPLAX_QFMLWY_L3_____________, _____________CARPLAX_QFMLWY_R3_____________ 79 _____________CARPLAX_QFMLWY_L3_____________, _____________CARPLAX_QFMLWY_R3_____________
109 ), 80 ),
81
110 [_MODS] = LAYOUT_wrapper( 82 [_MODS] = LAYOUT_wrapper(
111 _______, ___________________BLANK___________________, ___________________BLANK___________________, _______, 83 _______, ___________________BLANK___________________, ___________________BLANK___________________, _______,
112 _______, ___________________BLANK___________________, ___________________BLANK___________________, _______, 84 _______, ___________________BLANK___________________, ___________________BLANK___________________, _______,
113 KC_LSFT, ___________________BLANK___________________, _______, _______, _______, _______, ___________________BLANK___________________, KC_RSFT, 85 KC_LSFT, ___________________BLANK___________________, _______, _______, _______, _______, ___________________BLANK___________________, KC_RSFT,
114 _______, _______, KC_LALT, _______, _______, _______, _______, KC_RGUI, _______, _______ 86 _______, _______, KC_LALT, _______, _______, _______, _______, KC_RGUI, _______, _______
115 ), 87 ),
88 [_DIABLO] = LAYOUT_wrapper(
89 KC_ESC, KC_S, KC_I, KC_F, KC_M, KC_T, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO,
90 KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_G, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
91 KC_LCTL, KC_D3_1, KC_D3_2, KC_D3_3, KC_D3_4, KC_Z, KC_J, KC_L, TG(_DIABLO), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
92 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
93 ),
116 [_LOWER] = LAYOUT_wrapper( 94 [_LOWER] = LAYOUT_wrapper(
117 KC_F12, _________________LOWER_L1__________________, _________________LOWER_R1__________________, KC_F11, 95 KC_F12, _________________LOWER_L1__________________, _________________LOWER_R1__________________, KC_F11,
118 _______, _________________LOWER_L2__________________, _________________LOWER_R2__________________, KC_PIPE, 96 _______, _________________LOWER_L2__________________, _________________LOWER_R2__________________, KC_PIPE,
@@ -142,10 +120,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
142 120
143bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { 121bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
144 if (record->event.pressed) { 122 if (record->event.pressed) {
145#ifdef OLED_DRIVER_ENABLE
146 oled_timer = timer_read32();
147 add_keylog(keycode);
148#endif
149#ifndef SPLIT_KEYBOARD 123#ifndef SPLIT_KEYBOARD
150 if (keycode == RESET && !is_master) { 124 if (keycode == RESET && !is_master) {
151 return false; 125 return false;
@@ -154,133 +128,16 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
154 } 128 }
155 return true; 129 return true;
156} 130}
131
157void matrix_init_keymap(void) { is_master = (uint8_t)is_keyboard_master(); } 132void matrix_init_keymap(void) { is_master = (uint8_t)is_keyboard_master(); }
158 133
159#ifdef OLED_DRIVER_ENABLE 134#ifdef OLED_DRIVER_ENABLE
160oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; } 135oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; }
161 136
162void add_keylog(uint16_t keycode) {
163 if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX) || (keycode >= QK_MODS && keycode <= QK_MODS_MAX)) {
164 keycode = keycode & 0xFF;
165 } else if (keycode > 0xFF) {
166 keycode = 0;
167 }
168
169 for (uint8_t i = (KEYLOGGER_LENGTH - 1); i > 0; --i) {
170 keylog_str[i] = keylog_str[i - 1];
171 }
172
173 if (keycode < (sizeof(code_to_name) / sizeof(char))) {
174 keylog_str[0] = pgm_read_byte(&code_to_name[keycode]);
175 }
176
177 log_timer = timer_read();
178}
179
180void update_log(void) {
181 if (timer_elapsed(log_timer) > 750) {
182 // add_keylog(0);
183 }
184}
185
186void render_keylogger_status(void) {
187 oled_write_P(PSTR("Keylogger: "), false);
188 oled_write(keylog_str, false);
189}
190
191void render_default_layer_state(void) {
192 oled_write_P(PSTR("Layout: "), false);
193 switch (get_highest_layer(default_layer_state)) {
194 case _QWERTY: oled_write_ln_P(PSTR("Qwerty"), false); break;
195 case _COLEMAK: oled_write_ln_P(PSTR("Colemak"), false); break;
196 case _DVORAK: oled_write_ln_P(PSTR("Dvorak"), false); break;
197 case _WORKMAN: oled_write_ln_P(PSTR("Workman"), false); break;
198 case _NORMAN: oled_write_ln_P(PSTR("Norman"), false); break;
199 case _MALTRON: oled_write_ln_P(PSTR("Maltron"), false); break;
200 case _EUCALYN: oled_write_ln_P(PSTR("Eucalyn"), false); break;
201 case _CARPLAX: oled_write_ln_P(PSTR("Carplax"), false); break;
202 }
203}
204
205void render_layer_state(void) {
206 oled_write_ln_P(PSTR("Layer:"), false);
207 oled_write_P(PSTR(" "), false);
208 oled_write_P(PSTR("Lower"), layer_state_is(_LOWER));
209 oled_write_P(PSTR(" "), false);
210 oled_write_P(PSTR("Raise"), layer_state_is(_RAISE));
211 oled_write_P(PSTR(" "), false);
212 oled_write_ln_P(PSTR("Mods"), layer_state_is(_MODS));
213}
214
215void render_keylock_status(uint8_t led_usb_state) {
216 oled_write_P(PSTR("Lock: "), false);
217 oled_write_P(PSTR("NUML"), led_usb_state & (1 << USB_LED_NUM_LOCK));
218 oled_write_P(PSTR(" "), false);
219 oled_write_P(PSTR("CAPS"), led_usb_state & (1 << USB_LED_CAPS_LOCK));
220 oled_write_P(PSTR(" "), false);
221 oled_write_ln_P(PSTR("SCLK"), led_usb_state & (1 << USB_LED_SCROLL_LOCK));
222}
223
224void render_mod_status(uint8_t modifiers) {
225 oled_write_P(PSTR("Mods: "), false);
226 oled_write_P(PSTR("Sft"), (modifiers & MOD_MASK_SHIFT));
227 oled_write_P(PSTR(" "), false);
228 oled_write_P(PSTR("Ctl"), (modifiers & MOD_MASK_CTRL));
229 oled_write_P(PSTR(" "), false);
230 oled_write_P(PSTR("Alt"), (modifiers & MOD_MASK_ALT));
231 oled_write_P(PSTR(" "), false);
232 oled_write_P(PSTR("GUI"), (modifiers & MOD_MASK_GUI));
233}
234
235void render_bootmagic_status(void) {
236 /* Show Ctrl-Gui Swap options */
237 static const char PROGMEM logo[][2][3] = {
238 {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}},
239 {{0x95, 0x96, 0}, {0xb5, 0xb6, 0}},
240 };
241 oled_write_P(PSTR("Boot "), false);
242 if (keymap_config.swap_lctl_lgui) {
243 oled_write_P(logo[1][0], false);
244 } else {
245 oled_write_P(logo[0][0], false);
246 }
247 oled_write_P(PSTR(" "), false);
248 oled_write_P(PSTR("NKRO"), keymap_config.nkro);
249 oled_write_P(PSTR(" "), false);
250 oled_write_ln_P(PSTR("GUI"), !keymap_config.no_gui);
251 oled_write_P(PSTR("Magic "), false);
252 if (keymap_config.swap_lctl_lgui) {
253 oled_write_P(logo[1][1], false);
254 } else {
255 oled_write_P(logo[0][1], false);
256 }
257 oled_write_P(PSTR(" "), false);
258 oled_write_P(PSTR("GRV"), keymap_config.swap_grave_esc);
259 oled_write_P(PSTR(" "), false);
260 oled_write_ln_P(PSTR("CAPS"), keymap_config.swap_control_capslock);
261}
262
263void render_user_status(void) {
264 oled_write_P(PSTR("USER: "), false);
265 oled_write_P(PSTR("Anim"), userspace_config.rgb_matrix_idle_anim);
266 oled_write_P(PSTR(" "), false);
267 oled_write_P(PSTR("Layr"), userspace_config.rgb_layer_change);
268 oled_write_P(PSTR(" "), false);
269 oled_write_ln_P(PSTR("Nuke"), userspace_config.nuke_switch);
270}
271
272// clang-format off 137// clang-format off
273void render_logo(void) {
274 static const char PROGMEM qmk_logo[] = {
275 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
276 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
277 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0};
278
279 oled_write_P(qmk_logo, false);
280}
281 138
282# ifndef SPLIT_TRANSPORT_MIRROR 139# ifndef SPLIT_TRANSPORT_MIRROR
283void render_kyria_logo(void) { 140void oled_driver_render_logo(void) {
284 static const char PROGMEM kyria_logo[] = { 141 static const char PROGMEM kyria_logo[] = {
285 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, 142 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,
286 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, 143 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,
@@ -294,51 +151,6 @@ void render_kyria_logo(void) {
294 oled_write_raw_P(kyria_logo, sizeof(kyria_logo)); 151 oled_write_raw_P(kyria_logo, sizeof(kyria_logo));
295} 152}
296# endif 153# endif
297// clang-format on
298
299void render_status_main(void) {
300 /* Show Keyboard Layout */
301 render_default_layer_state();
302 render_keylock_status(host_keyboard_leds());
303 render_bootmagic_status();
304 render_user_status();
305
306 render_keylogger_status();
307}
308
309void render_status_secondary(void) {
310 /* Show Keyboard Layout */
311 render_logo();
312 render_default_layer_state();
313 render_layer_state();
314 render_mod_status(get_mods() | get_oneshot_mods());
315
316 render_keylogger_status();
317}
318
319void oled_task_user(void) {
320 if (timer_elapsed32(oled_timer) > 30000) {
321 oled_off();
322 return;
323 }
324# ifndef SPLIT_KEYBOARD
325 else {
326 oled_on();
327 }
328# endif
329
330 update_log();
331 if (is_master) {
332 render_status_main(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
333 } else {
334# ifdef SPLIT_TRANSPORT_MIRROR
335 render_status_secondary();
336# else
337 render_kyria_logo();
338# endif
339 }
340}
341
342#endif 154#endif
343 155
344#ifdef ENCODER_ENABLE 156#ifdef ENCODER_ENABLE
diff --git a/keyboards/kyria/keymaps/drashna/rules.mk b/keyboards/kyria/keymaps/drashna/rules.mk
index e835340bb..2486ecd5d 100644
--- a/keyboards/kyria/keymaps/drashna/rules.mk
+++ b/keyboards/kyria/keymaps/drashna/rules.mk
@@ -20,3 +20,5 @@ HD44780_ENABLE = no # Enable support for HD44780 based LCDs
20BOOTLOADER = atmel-dfu 20BOOTLOADER = atmel-dfu
21 21
22SPLIT_TRANSPORT = mirror 22SPLIT_TRANSPORT = mirror
23
24TAP_DANCE_ENABLE = yes