aboutsummaryrefslogtreecommitdiff
path: root/keyboards
diff options
context:
space:
mode:
authorDrashna Jaelre <drashna@live.com>2019-11-20 12:37:24 -0800
committerGitHub <noreply@github.com>2019-11-20 12:37:24 -0800
commiteb91c962886b1bb52c2d457a574cba09e2a8b0f0 (patch)
tree20f3d49671b6d42ca1edf285431e3e4120551228 /keyboards
parent8e8986b2506ca4cdd2339a441314a0838e3a4329 (diff)
downloadqmk_firmware-eb91c962886b1bb52c2d457a574cba09e2a8b0f0.tar.gz
qmk_firmware-eb91c962886b1bb52c2d457a574cba09e2a8b0f0.zip
[Keymap] All about (ARM) RGB and OLEDs (drashna keymaps) (#7354)
* Add Kyria Keymap * Enable all RGBLIGHT Animations for ARM and high capacity AVR * Reduce GNUC version for __has_include * Cleanup Ortho 4x12 Community layout * Update Collide 39 keymap * Cleanup Keymaps * Enable full 30 LEDs for Ergodox * Change EEPROM Load timing * Use RGB Matrix on Planck Rev6 * Use correct keymap swap * Enable everything for ARM * Only enable rgb sleep on avr until crash is fixed * Add additional Kyria keymap config * Overhaul Kyria OLED display * Improve kyria keymap based on usage * Minor tweaks to rules * Update OLED code to truncate properly * Fix RGB Light layer indication * Switch all of biton32 to get_highest_layer function * Fix OLED Keylogger display * Run qmk cformat over all of my user files * Slight tweak to kyria based on usage * Move around LALT_T config * Add comments about base wrappers to keymaps * Another cformat pass * Temp fix for VUSB boards and NKRO * Convert tabs to spaces in rules.mk files * Only enable RGBLight if it's enabled * Add Encoder Flip setting * Update OLED font file
Diffstat (limited to 'keyboards')
-rw-r--r--keyboards/40percentclub/nano/keymaps/drashna/keymap.c10
-rw-r--r--[-rwxr-xr-x]keyboards/c39/keymaps/drashna/config.h9
-rwxr-xr-xkeyboards/c39/keymaps/drashna/keymap.c132
-rw-r--r--keyboards/c39/keymaps/drashna/rules.mk4
-rw-r--r--keyboards/crkbd/keymaps/drashna/glcdfont.c9
-rw-r--r--keyboards/crkbd/keymaps/drashna/keymap.c49
-rw-r--r--keyboards/gergo/keymaps/drashna/keymap.c18
-rw-r--r--keyboards/keebio/iris/keymaps/drashna/config.h3
-rw-r--r--keyboards/keebio/iris/keymaps/drashna/keymap.c14
-rw-r--r--keyboards/keebio/viterbi/keymaps/drashna/config.h31
-rw-r--r--keyboards/keebio/viterbi/keymaps/drashna/keymap.c50
-rw-r--r--keyboards/kyria/keymaps/drashna/config.h38
-rw-r--r--keyboards/kyria/keymaps/drashna/keymap.c372
-rw-r--r--keyboards/kyria/keymaps/drashna/rules.mk22
-rw-r--r--keyboards/orthodox/keymaps/drashna/config.h45
-rw-r--r--keyboards/orthodox/keymaps/drashna/keymap.c39
16 files changed, 654 insertions, 191 deletions
diff --git a/keyboards/40percentclub/nano/keymaps/drashna/keymap.c b/keyboards/40percentclub/nano/keymaps/drashna/keymap.c
index 6c5b97457..668178967 100644
--- a/keyboards/40percentclub/nano/keymaps/drashna/keymap.c
+++ b/keyboards/40percentclub/nano/keymaps/drashna/keymap.c
@@ -1,12 +1,11 @@
1#include QMK_KEYBOARD_H
2#include "drashna.h" 1#include "drashna.h"
3#include "analog.c" 2#include "analog.c"
4#include "pointing_device.h" 3#include "pointing_device.h"
5#include "pincontrol.h" 4#include "pincontrol.h"
6 5
7
8#define KC_X0 LT(_FN, KC_ESC) 6#define KC_X0 LT(_FN, KC_ESC)
9 7
8// clang-format off
10const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 9const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
11 [_QWERTY] = LAYOUT( 10 [_QWERTY] = LAYOUT(
12 KC_VOLU, KC_MPLY, KC_MPRV, RESET, 11 KC_VOLU, KC_MPLY, KC_MPRV, RESET,
@@ -14,6 +13,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
14 ), 13 ),
15 14
16}; 15};
16// clang-format on
17 17
18// Joystick 18// Joystick
19// Set Pins 19// Set Pins
@@ -39,7 +39,7 @@ int16_t xOrigin, yOrigin;
39uint16_t lastCursor = 0; 39uint16_t lastCursor = 0;
40 40
41int16_t axisCoordinate(uint8_t pin, uint16_t origin) { 41int16_t axisCoordinate(uint8_t pin, uint16_t origin) {
42 int8_t direction; 42 int8_t direction;
43 int16_t distanceFromOrigin; 43 int16_t distanceFromOrigin;
44 int16_t range; 44 int16_t range;
45 45
@@ -57,8 +57,8 @@ int16_t axisCoordinate(uint8_t pin, uint16_t origin) {
57 direction = 1; 57 direction = 1;
58 } 58 }
59 59
60 float percent = (float)distanceFromOrigin / range; 60 float percent = (float)distanceFromOrigin / range;
61 int16_t coordinate = (int16_t)(percent * 100); 61 int16_t coordinate = (int16_t)(percent * 100);
62 if (coordinate < 0) { 62 if (coordinate < 0) {
63 return 0; 63 return 0;
64 } else if (coordinate > 100) { 64 } else if (coordinate > 100) {
diff --git a/keyboards/c39/keymaps/drashna/config.h b/keyboards/c39/keymaps/drashna/config.h
index 361f68a78..5d53fe54b 100755..100644
--- a/keyboards/c39/keymaps/drashna/config.h
+++ b/keyboards/c39/keymaps/drashna/config.h
@@ -2,6 +2,11 @@
2 2
3// place overrides here 3// place overrides here
4#undef MATRIX_COL_PINS 4#undef MATRIX_COL_PINS
5#define MATRIX_COL_PINS { A3, A2, A1, A0, B13, B14, B15, B9, B3, B2, B4, A10, A9 } 5#define MATRIX_COL_PINS \
6 { A3, A2, A1, A0, B13, B14, B15, B9, B3, B2, B4, A10, A9 }
6#undef MATRIX_ROW_PINS 7#undef MATRIX_ROW_PINS
7#define MATRIX_ROW_PINS { B7, B1, B0 } 8#define MATRIX_ROW_PINS \
9 { B7, B1, B0 }
10
11#define RGB_DI_PIN B10
12#define RGBLED_NUM 15
diff --git a/keyboards/c39/keymaps/drashna/keymap.c b/keyboards/c39/keymaps/drashna/keymap.c
index 9de75190d..882938138 100755
--- a/keyboards/c39/keymaps/drashna/keymap.c
+++ b/keyboards/c39/keymaps/drashna/keymap.c
@@ -1,45 +1,97 @@
1#include QMK_KEYBOARD_H 1#include "drashna.h"
2 2
3// Each layer gets a name for readability, which is then used in the keymap matrix below. 3/*
4// The underscores don't mean anything - you can have a layer called STUFF or any other name. 4 * The `LAYOUT_base` macro is a template to allow the use of identical
5// Layer names don't all need to be of the same length, obviously, and you can also skip them 5 * modifiers for the default layouts (eg QWERTY, Colemak, Dvorak, etc), so
6// entirely and just use numbers. 6 * that there is no need to set them up for each layout, and modify all of
7#define _QWERTY 0 7 * them if I want to change them. This helps to keep consistency and ease
8#define _FN1 1 8 * of use. K## is a placeholder to pass through the individual keycodes
9 9 */
10// Defines for task manager and such 10// clang-format off
11#define CALTDEL LCTL(LALT(KC_DEL)) 11#define LAYOUT_base( \
12#define TSKMGR LCTL(LSFT(KC_ESC)) 12 K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
13 K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
14 K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
15 ) \
16 LAYOUT_wrapper( \
17 KC_ESC, K01, K02, K03, K04, K05, KC_NO, K06, K07, K08, K09, K0A, KC_DEL, \
18 ALT_T(KC_TAB), K11, K12, K13, K14, K15, KC_BSPC, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \
19 KC_MLSF, CTL_T(K21), K22, K23, K24, LT(_LOWER,K25), KC_SPC, LT(_RAISE,K26), K27, K28, K29, RCTL_T(K2A), KC_ENT \
20 )
21#define LAYOUT_base_wrapper(...) LAYOUT_base(__VA_ARGS__)
13 22
14const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 23const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
15 24
16/* Qwerty 25 [_QWERTY] = LAYOUT_base_wrapper(
17 * ,----------------------------------------------------------------------------. ,-------------. 26 _________________QWERTY_L1_________________, _________________QWERTY_R1_________________,
18 * | Q | W | E | R | T | Bksp | Y | U | I | O | P | | M1 | M2 | 27 _________________QWERTY_L2_________________, _________________QWERTY_R2_________________,
19 * |------+------+------+------+------+------+------+------+------+------+------+ |------+------| 28 _________________QWERTY_L3_________________, _________________QWERTY_R3_________________
20 * | A | S | D | F | G | Enter| H | J | K | L | ; | | M3 | M4 | 29 ),
21 * |------+------+------+------+------+------+------+------+------+------+------+ |------+------| 30
22 * | Z | X | C | V | B | FN1 | N | M | , | . | / | | M5 | M6 | 31 [_COLEMAK] = LAYOUT_base_wrapper(
23 * `----------------------------------------------------------------------------' `-------------' 32 _________________COLEMAK_L1________________, _________________COLEMAK_R1________________,
24 */ 33 _________________COLEMAK_L2________________, _________________COLEMAK_R2________________,
25[_QWERTY] = LAYOUT( 34 _________________COLEMAK_L3________________, _________________COLEMAK_R3________________
26 KC_Q, KC_W, KC_E, KC_R, KC_T, KC_BSPC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_1, KC_2, 35 ),
27 KC_A, KC_S, KC_D, KC_F, KC_G, MT(MOD_LSFT, KC_ENT), KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_3, KC_4, 36
28 KC_Z, KC_X, KC_C, KC_V, KC_B, LT(_FN1, KC_SPC), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_5, KC_6 37 [_DVORAK] = LAYOUT_base_wrapper(
29), 38 _________________DVORAK_L1_________________, _________________DVORAK_R1_________________,
30 39 _________________DVORAK_L2_________________, _________________DVORAK_R2_________________,
31/* FN1 40 _________________DVORAK_L3_________________, _________________DVORAK_R3_________________
32 * ,----------------------------------------------------------------------------. ,-------------. 41 ),
33 * | 1 | 2 | 3 | 4 | 5 | Bksp | 6 | 7 | 8 | 9 | 0 | | M1 | M2 | 42
34 * |------+------+------+------+------+------+------+------+------+------+------+ |------+------| 43 [_WORKMAN] = LAYOUT_base_wrapper(
35 * | 4 | 5 | 6 | + | | Enter| | | | | | | M3 | M4 | 44 _________________WORKMAN_L1________________, _________________WORKMAN_R1________________,
36 * |------+------+------+------+------+------+------+------+------+------+------+ |------+------| 45 _________________WORKMAN_L2________________, _________________WORKMAN_R2________________,
37 * | 7 | 8 | 9 | 0 | | FN1 | | | | | | | M5 | M6 | 46 _________________WORKMAN_L3________________, _________________WORKMAN_R3________________
38 * `----------------------------------------------------------------------------' `-------------' 47 ),
39 */ 48
40[_FN1] = LAYOUT( 49 [_NORMAN] = LAYOUT_base_wrapper(
41 KC_1, KC_2, KC_3, KC_4, KC_5, KC_BSPC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, 50 _________________NORMAN_L1_________________, _________________NORMAN_L1_________________,
42 KC_4, KC_5, KC_6, KC_PLUS, _______, KC_ENT, _______, _______, _______, _______, _______, KC_3, KC_4, 51 _________________NORMAN_L2_________________, _________________NORMAN_R2_________________,
43 KC_7, KC_8, KC_9, KC_0, _______, _______, _______, _______, _______, _______, _______, KC_5, KC_6 52 _________________NORMAN_L3_________________, _________________NORMAN_R3_________________
44), 53 ),
54
55 [_MALTRON] = LAYOUT_base_wrapper(
56 _________________MALTRON_L1________________, _________________MALTRON_R1________________,
57 _________________MALTRON_L2________________, _________________MALTRON_R2________________,
58 _________________MALTRON_L3________________, _________________MALTRON_R3________________
59 ),
60
61 [_EUCALYN] = LAYOUT_base_wrapper(
62 _________________EUCALYN_L1________________, _________________EUCALYN_R1________________,
63 _________________EUCALYN_L2________________, _________________EUCALYN_R2________________,
64 _________________EUCALYN_L3________________, _________________EUCALYN_R3________________
65 ),
66
67 [_CARPLAX] = LAYOUT_base_wrapper(
68 _____________CARPLAX_QFMLWY_L1_____________, _____________CARPLAX_QFMLWY_R1_____________,
69 _____________CARPLAX_QFMLWY_L2_____________, _____________CARPLAX_QFMLWY_R2_____________,
70 _____________CARPLAX_QFMLWY_L3_____________, _____________CARPLAX_QFMLWY_R3_____________
71 ),
72
73 [_MODS] = LAYOUT_wrapper(
74 _______, ___________________BLANK___________________, _______, ___________________BLANK___________________, _______,
75 _______, ___________________BLANK___________________, _______, ___________________BLANK___________________, _______,
76 KC_LSFT, ___________________BLANK___________________, _______, ___________________BLANK___________________, _______
77 ),
78
79 [_LOWER] = LAYOUT_wrapper(
80 KC_TILD, _________________LOWER_L1__________________, _______, _________________LOWER_R1__________________, KC_BSPC,
81 KC_DEL, _________________LOWER_L2__________________, _______, _________________LOWER_R2__________________, KC_PIPE,
82 _______, _________________LOWER_L3__________________, _______, _________________LOWER_R3__________________, _______
83 ),
84
85 [_RAISE] = LAYOUT_wrapper(
86 KC_GRV, _________________RAISE_L1__________________, _______, _________________RAISE_R1__________________, KC_BSPC,
87 KC_DEL, _________________RAISE_L2__________________, _______, _________________RAISE_R2__________________, KC_BSLS,
88 _______, _________________RAISE_L3__________________, _______, _________________RAISE_R3__________________, _______
89 ),
90
91 [_ADJUST] = LAYOUT_wrapper(
92 KC_MAKE, _________________ADJUST_L1_________________, KC_NUKE, _________________ADJUST_R1_________________, KC_RST,
93 VRSN, _________________ADJUST_L2_________________, MG_NKRO, _________________ADJUST_R2_________________, EEP_RST,
94 TG_MODS, _________________ADJUST_L3_________________, KC_RGB_T,_________________ADJUST_R3_________________, RGB_IDL
95 )
45}; 96};
97// clang-format on
diff --git a/keyboards/c39/keymaps/drashna/rules.mk b/keyboards/c39/keymaps/drashna/rules.mk
index ae0cc9efe..d216f6abe 100644
--- a/keyboards/c39/keymaps/drashna/rules.mk
+++ b/keyboards/c39/keymaps/drashna/rules.mk
@@ -15,4 +15,6 @@ MIDI_ENABLE = no # MIDI controls
15UNICODE_ENABLE = yes # Unicode 15UNICODE_ENABLE = yes # Unicode
16BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID 16BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
17AUDIO_ENABLE = yes # Audio output on port C6 17AUDIO_ENABLE = yes # Audio output on port C6
18RGBLIGHT_ENABLE = no # RGB Enable / Disable 18RGBLIGHT_ENABLE = yes # RGB Enable / Disable
19
20RGBLIGHT_STARTUP_ANIMATION = yes
diff --git a/keyboards/crkbd/keymaps/drashna/glcdfont.c b/keyboards/crkbd/keymaps/drashna/glcdfont.c
index 998b5c408..2bfc3fac6 100644
--- a/keyboards/crkbd/keymaps/drashna/glcdfont.c
+++ b/keyboards/crkbd/keymaps/drashna/glcdfont.c
@@ -1,17 +1,18 @@
1#pragma once 1#pragma once
2 2
3#ifdef __AVR__ 3#ifdef __AVR__
4 #include <avr/io.h> 4# include <avr/io.h>
5 #include <avr/pgmspace.h> 5# include <avr/pgmspace.h>
6#elif defined(ESP8266) 6#elif defined(ESP8266)
7 #include <pgmspace.h> 7# include <pgmspace.h>
8#else 8#else
9 #define PROGMEM 9# define PROGMEM
10#endif 10#endif
11 11
12// Corne 8x6 font with QMK Firmware Logo 12// Corne 8x6 font with QMK Firmware Logo
13// Online editor: https://helixfonteditor.netlify.com/ 13// Online editor: https://helixfonteditor.netlify.com/
14 14
15// clang-format off
15const unsigned char font[] PROGMEM = { 16const unsigned char font[] PROGMEM = {
160x00, 0x00, 0x00, 0x00, 0x00, 0x00, 170x00, 0x00, 0x00, 0x00, 0x00, 0x00,
170x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, 180x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
diff --git a/keyboards/crkbd/keymaps/drashna/keymap.c b/keyboards/crkbd/keymaps/drashna/keymap.c
index cd84f0d91..9a1beeb74 100644
--- a/keyboards/crkbd/keymaps/drashna/keymap.c
+++ b/keyboards/crkbd/keymaps/drashna/keymap.c
@@ -1,17 +1,17 @@
1#include QMK_KEYBOARD_H
2#include "drashna.h" 1#include "drashna.h"
3 2
4extern keymap_config_t keymap_config; 3extern uint8_t is_master;
5extern uint8_t is_master;
6 4
7#ifdef RGBLIGHT_ENABLE 5#ifdef RGBLIGHT_ENABLE
8// Following line allows macro to read current RGB settings 6// Following line allows macro to read current RGB settings
9extern rgblight_config_t rgblight_config; 7extern rgblight_config_t rgblight_config;
10#endif 8#endif
11#ifdef OLED_DRIVER_ENABLE 9#ifdef OLED_DRIVER_ENABLE
12static uint32_t oled_timer = 0; 10# define KEYLOGGER_LENGTH 5
13static char keylog_str[6] = {}; 11static uint32_t oled_timer = 0;
14static uint16_t log_timer = 0; 12static char keylog_str[KEYLOGGER_LENGTH + 1] = {"\n"};
13static uint16_t log_timer = 0;
14// clang-format off
15static const char PROGMEM code_to_name[0xFF] = { 15static const char PROGMEM code_to_name[0xFF] = {
16// 0 1 2 3 4 5 6 7 8 9 A B c D E F 16// 0 1 2 3 4 5 6 7 8 9 A B c D E F
17 ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', // 0x 17 ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', // 0x
@@ -37,7 +37,14 @@ void add_keylog(uint16_t keycode);
37 37
38enum crkbd_keycodes { RGBRST = NEW_SAFE_RANGE }; 38enum crkbd_keycodes { RGBRST = NEW_SAFE_RANGE };
39 39
40// clang-format off 40/*
41 * The `LAYOUT_crkbd_base` macro is a template to allow the use of identical
42 * modifiers for the default layouts (eg QWERTY, Colemak, Dvorak, etc), so
43 * that there is no need to set them up for each layout, and modify all of
44 * them if I want to change them. This helps to keep consistency and ease
45 * of use. K## is a placeholder to pass through the individual keycodes
46 */
47
41#define LAYOUT_crkbd_base( \ 48#define LAYOUT_crkbd_base( \
42 K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ 49 K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
43 K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \ 50 K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
@@ -155,7 +162,7 @@ void add_keylog(uint16_t keycode) {
155 keycode = 0; 162 keycode = 0;
156 } 163 }
157 164
158 for (uint8_t i = 4; i > 0; --i) { 165 for (uint8_t i = (KEYLOGGER_LENGTH - 1); i > 0; --i) {
159 keylog_str[i] = keylog_str[i - 1]; 166 keylog_str[i] = keylog_str[i - 1];
160 } 167 }
161 168
@@ -168,7 +175,7 @@ void add_keylog(uint16_t keycode) {
168 175
169void update_log(void) { 176void update_log(void) {
170 if (timer_elapsed(log_timer) > 750) { 177 if (timer_elapsed(log_timer) > 750) {
171 //add_keylog(0); 178 // add_keylog(0);
172 } 179 }
173} 180}
174 181
@@ -179,7 +186,7 @@ void render_keylogger_status(void) {
179 186
180void render_default_layer_state(void) { 187void render_default_layer_state(void) {
181 oled_write_P(PSTR("Lyout"), false); 188 oled_write_P(PSTR("Lyout"), false);
182 switch (biton32(default_layer_state)) { 189 switch (get_highest_layer(default_layer_state)) {
183 case _QWERTY: 190 case _QWERTY:
184 oled_write_P(PSTR(" QRTY"), false); 191 oled_write_P(PSTR(" QRTY"), false);
185 break; 192 break;
@@ -268,7 +275,7 @@ void render_status_secondary(void) {
268 /* Show Keyboard Layout */ 275 /* Show Keyboard Layout */
269 render_default_layer_state(); 276 render_default_layer_state();
270 render_layer_state(); 277 render_layer_state();
271 render_mod_status(get_mods()|get_oneshot_mods()); 278 render_mod_status(get_mods() | get_oneshot_mods());
272 279
273 render_keylogger_status(); 280 render_keylogger_status();
274} 281}
@@ -278,9 +285,11 @@ void oled_task_user(void) {
278 oled_off(); 285 oled_off();
279 return; 286 return;
280 } 287 }
281#ifndef SPLIT_KEYBOARD 288# ifndef SPLIT_KEYBOARD
282 else { oled_on(); } 289 else {
283#endif 290 oled_on();
291 }
292# endif
284 293
285 update_log(); 294 update_log();
286 if (is_master) { 295 if (is_master) {
@@ -303,16 +312,12 @@ uint16_t get_tapping_term(uint16_t keycode) {
303 312
304#ifdef RGB_MATRIX_ENABLE 313#ifdef RGB_MATRIX_ENABLE
305 314
306void suspend_power_down_keymap(void) { 315void suspend_power_down_keymap(void) { rgb_matrix_set_suspend_state(true); }
307 rgb_matrix_set_suspend_state(true);
308}
309 316
310void suspend_wakeup_init_keymap(void) { 317void suspend_wakeup_init_keymap(void) { rgb_matrix_set_suspend_state(false); }
311 rgb_matrix_set_suspend_state(false);
312}
313 318
314void check_default_layer(uint8_t mode, uint8_t type) { 319void check_default_layer(uint8_t mode, uint8_t type) {
315 switch (biton32(default_layer_state)) { 320 switch (get_highest_layer(default_layer_state)) {
316 case _QWERTY: 321 case _QWERTY:
317 rgb_matrix_layer_helper(HSV_CYAN, mode, rgb_matrix_config.speed, type); 322 rgb_matrix_layer_helper(HSV_CYAN, mode, rgb_matrix_config.speed, type);
318 break; 323 break;
@@ -351,7 +356,7 @@ void rgb_matrix_indicators_user(void) {
351 rgb_matrix_config.enable 356 rgb_matrix_config.enable
352# endif 357# endif
353 ) { 358 ) {
354 switch (biton32(layer_state)) { 359 switch (get_highest_layer(layer_state)) {
355 case _GAMEPAD: 360 case _GAMEPAD:
356 rgb_matrix_layer_helper(HSV_ORANGE, 0, rgb_matrix_config.speed, LED_FLAG_UNDERGLOW); 361 rgb_matrix_layer_helper(HSV_ORANGE, 0, rgb_matrix_config.speed, LED_FLAG_UNDERGLOW);
357 break; 362 break;
diff --git a/keyboards/gergo/keymaps/drashna/keymap.c b/keyboards/gergo/keymaps/drashna/keymap.c
index edc5a9e99..d1e622406 100644
--- a/keyboards/gergo/keymaps/drashna/keymap.c
+++ b/keyboards/gergo/keymaps/drashna/keymap.c
@@ -1,14 +1,12 @@
1/* Good on you for modifying your layout! if you don't have
2 * time to read the QMK docs, a list of keycodes can be found at
3 *
4 * https://github.com/qmk/qmk_firmware/blob/master/docs/keycodes.md
5 *
6 * There's also a template for adding new layers at the bottom of this file!
7 */
8
9#include QMK_KEYBOARD_H
10#include "drashna.h" 1#include "drashna.h"
11 2
3/*
4 * The `LAYOUT_gergo_base` macro is a template to allow the use of identical
5 * modifiers for the default layouts (eg QWERTY, Colemak, Dvorak, etc), so
6 * that there is no need to set them up for each layout, and modify all of
7 * them if I want to change them. This helps to keep consistency and ease
8 * of use. K## is a placeholder to pass through the individual keycodes
9 */
12// clang-format off 10// clang-format off
13#define LAYOUT_gergo_base( \ 11#define LAYOUT_gergo_base( \
14 K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ 12 K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
@@ -17,7 +15,7 @@
17 ) \ 15 ) \
18 LAYOUT_gergo_wrapper( \ 16 LAYOUT_gergo_wrapper( \
19 KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_PIPE, \ 17 KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_PIPE, \
20 KC_TAB, K11, K12, K13, K14, K15, _______, _______, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \ 18 LALT_T(KC_TAB), K11, K12, K13, K14, K15, _______, _______, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \
21 OS_LSFT, CTL_T(K21), K22, K23, K24, K25, _______, _______, _______, _______, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \ 19 OS_LSFT, CTL_T(K21), K22, K23, K24, K25, _______, _______, _______, _______, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \
22 KC_GRV, KC_SPC, BK_LWER, OS_LALT, OS_RGUI, DL_RAIS, KC_ENT, _______ \ 20 KC_GRV, KC_SPC, BK_LWER, OS_LALT, OS_RGUI, DL_RAIS, KC_ENT, _______ \
23 ) 21 )
diff --git a/keyboards/keebio/iris/keymaps/drashna/config.h b/keyboards/keebio/iris/keymaps/drashna/config.h
index 6fff5d72c..25678bd67 100644
--- a/keyboards/keebio/iris/keymaps/drashna/config.h
+++ b/keyboards/keebio/iris/keymaps/drashna/config.h
@@ -32,7 +32,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
32# undef RGBLED_NUM 32# undef RGBLED_NUM
33# define RGBLED_NUM 18 // Number of LEDs 33# define RGBLED_NUM 18 // Number of LEDs
34# undef RGBLED_SPLIT 34# undef RGBLED_SPLIT
35# define RGBLED_SPLIT { 9, 9 } 35# define RGBLED_SPLIT \
36 { 9, 9 }
36# define RGBLIGHT_HUE_STEP 8 37# define RGBLIGHT_HUE_STEP 8
37# define RGBLIGHT_SAT_STEP 8 38# define RGBLIGHT_SAT_STEP 8
38# define RGBLIGHT_VAL_STEP 8 39# define RGBLIGHT_VAL_STEP 8
diff --git a/keyboards/keebio/iris/keymaps/drashna/keymap.c b/keyboards/keebio/iris/keymaps/drashna/keymap.c
index de19f7ca0..edfcd23e7 100644
--- a/keyboards/keebio/iris/keymaps/drashna/keymap.c
+++ b/keyboards/keebio/iris/keymaps/drashna/keymap.c
@@ -1,7 +1,13 @@
1
2#include QMK_KEYBOARD_H
3#include "drashna.h" 1#include "drashna.h"
4 2
3/*
4 * The `LAYOUT_iris_base` macro is a template to allow the use of identical
5 * modifiers for the default layouts (eg QWERTY, Colemak, Dvorak, etc), so
6 * that there is no need to set them up for each layout, and modify all of
7 * them if I want to change them. This helps to keep consistency and ease
8 * of use. K## is a placeholder to pass through the individual keycodes
9 */
10
5// clang-format off 11// clang-format off
6#define LAYOUT_iris_base( \ 12#define LAYOUT_iris_base( \
7 K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ 13 K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
@@ -10,8 +16,8 @@
10 ) \ 16 ) \
11 LAYOUT_wrapper( \ 17 LAYOUT_wrapper( \
12 KC_ESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS, \ 18 KC_ESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS, \
13 KC_TAB , K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_BSLS, \ 19 LALT_T(KC_TAB), K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_BSLS, \
14 KC_C1R3, ALT_T(K11), K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \ 20 KC_C1R3, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \
15 OS_LSFT, CTL_T(K21), K22, K23, K24, K25, OS_LALT, OS_RGUI, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \ 21 OS_LSFT, CTL_T(K21), K22, K23, K24, K25, OS_LALT, OS_RGUI, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \
16 KC_GRV, KC_SPC, LT(_LOWER,KC_BSPC), LT(_RAISE,KC_DEL), KC_ENT, RAISE \ 22 KC_GRV, KC_SPC, LT(_LOWER,KC_BSPC), LT(_RAISE,KC_DEL), KC_ENT, RAISE \
17 ) 23 )
diff --git a/keyboards/keebio/viterbi/keymaps/drashna/config.h b/keyboards/keebio/viterbi/keymaps/drashna/config.h
index 201c02e41..40a5bbd0e 100644
--- a/keyboards/keebio/viterbi/keymaps/drashna/config.h
+++ b/keyboards/keebio/viterbi/keymaps/drashna/config.h
@@ -21,27 +21,25 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
21#define MATRIX_ROWS 5 21#define MATRIX_ROWS 5
22 22
23#ifdef RGBLIGHT_ENABLE 23#ifdef RGBLIGHT_ENABLE
24# undef RGBLED_NUM 24# undef RGBLED_NUM
25# define RGBLED_NUM 16 25# define RGBLED_NUM 16
26
27# define RGBLIGHT_HUE_STEP 8
28# define RGBLIGHT_SAT_STEP 8
29# define RGBLIGHT_VAL_STEP 8
30# define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
31# define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
32#endif // RGBLIGHT_ENABLE
33
34
35 26
27# define RGBLIGHT_HUE_STEP 8
28# define RGBLIGHT_SAT_STEP 8
29# define RGBLIGHT_VAL_STEP 8
30# define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
31# define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
32#endif // RGBLIGHT_ENABLE
36 33
37#undef PRODUCT 34#undef PRODUCT
38#define PRODUCT Drashnas Viterbi Macro Pad 35#define PRODUCT Drashnas Viterbi Macro Pad
39 36
40#ifdef AUDIO_ENABLE 37#ifdef AUDIO_ENABLE
41# define C6_AUDIO 38# define C6_AUDIO
42# define NO_MUSIC_MODE 39# define NO_MUSIC_MODE
43#endif 40#endif
44 41
42// clang-format off
45#define LAYOUT_ortho_5x7( \ 43#define LAYOUT_ortho_5x7( \
46 L00, L01, L02, L03, L04, L05, L06, \ 44 L00, L01, L02, L03, L04, L05, L06, \
47 L10, L11, L12, L13, L14, L15, L16, \ 45 L10, L11, L12, L13, L14, L15, L16, \
@@ -56,8 +54,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
56 { L30, L31, L32, L33, L34, L35, L36 }, \ 54 { L30, L31, L32, L33, L34, L35, L36 }, \
57 { L40, L41, L42, L43, L44, L45, L46 }, \ 55 { L40, L41, L42, L43, L44, L45, L46 }, \
58 } 56 }
57// clang-format on
59 58
60#define QMK_ESC_OUTPUT F5 // usually COL 59#define QMK_ESC_OUTPUT F5 // usually COL
61#define QMK_ESC_INPUT D4 // usually ROW 60#define QMK_ESC_INPUT D4 // usually ROW
62#define QMK_LED B0 61#define QMK_LED B0
63#define QMK_SPEAKER C6 62#define QMK_SPEAKER C6
diff --git a/keyboards/keebio/viterbi/keymaps/drashna/keymap.c b/keyboards/keebio/viterbi/keymaps/drashna/keymap.c
index 9c17c5a57..3b213418d 100644
--- a/keyboards/keebio/viterbi/keymaps/drashna/keymap.c
+++ b/keyboards/keebio/viterbi/keymaps/drashna/keymap.c
@@ -1,24 +1,15 @@
1#include QMK_KEYBOARD_H
2#include "drashna.h" 1#include "drashna.h"
3 2
4extern keymap_config_t keymap_config;
5
6// Each layer gets a name for readability, which is then used in the keymap matrix below.
7// The underscores don't mean anything - you can have a layer called STUFF or any other name.
8// Layer names don't all need to be of the same length, obviously, and you can also skip them
9// entirely and just use numbers.
10
11
12// Fillers to make layering more clear 3// Fillers to make layering more clear
13#define DIABLO TG(_DIABLO) 4#define DIABLO TG(_DIABLO)
14#define GAMEPAD TG(_GAMEPAD) 5#define GAMEPAD TG(_GAMEPAD)
15#define MEDIA TT(_MEDIA) 6#define MEDIA TT(_MEDIA)
16 7
17 8// enum more_custom_keycodes {
18//enum more_custom_keycodes {
19// KC_P00 = NEW_SAFE_RANGE 9// KC_P00 = NEW_SAFE_RANGE
20//}; 10//};
21 11
12// clang-format off
22const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 13const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
23 14
24 [_NUMLOCK] = LAYOUT_ortho_5x7( 15 [_NUMLOCK] = LAYOUT_ortho_5x7(
@@ -55,32 +46,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
55 46
56 47
57}; 48};
58 49// clang-format on
59
60 50
61bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { 51bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
62 52 // switch (keycode) {
63 //switch (keycode) { 53 // case KC_P00:
64 //case KC_P00: 54 // if (!record->event.pressed) {
65 // if (!record->event.pressed) { 55 // tap(KC_KP_0);
66 // tap(KC_KP_0); 56 // tap(KC_KP_0);
67 // tap(KC_KP_0); 57 // }
68 // } 58 // return false;
69 // return false; 59 // break;
70 // break; 60 //}
71 //} 61 return true;
72 return true;
73} 62}
74 63
75
76
77
78void matrix_init_keymap(void) { 64void matrix_init_keymap(void) {
79 #ifndef CONVERT_TO_PROTON_C 65#ifndef CONVERT_TO_PROTON_C
80 setPinOutput(D5); 66 setPinOutput(D5);
81 writePinHigh(D5); 67 writePinHigh(D5);
82 68
83 setPinOutput(B0); 69 setPinOutput(B0);
84 writePinHigh(B0); 70 writePinHigh(B0);
85 #endif 71#endif
86} 72}
diff --git a/keyboards/kyria/keymaps/drashna/config.h b/keyboards/kyria/keymaps/drashna/config.h
new file mode 100644
index 000000000..83d6283f5
--- /dev/null
+++ b/keyboards/kyria/keymaps/drashna/config.h
@@ -0,0 +1,38 @@
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
21#ifdef OLED_DRIVER_ENABLE
22# define OLED_DISPLAY_128X64
23# define OLED_FONT_H "font_gmk_bad.h"
24# define OLED_DISABLE_TIMEOUT
25# define OLED_SCROLL_TIMEOUT_RIGHT 60000
26#endif
27
28#ifdef RGBLIGHT_ENABLE
29# define RGBLIGHT_SLEEP
30# define RGBLIGHT_LIMIT_VAL 200
31# define RGBLIGHT_HUE_STEP 8
32# define RGBLIGHT_SAT_STEP 8
33# define RGBLIGHT_VAL_STEP 8
34#endif
35
36// If you are using an Elite C rev3 on the slave side, uncomment the lines below:
37#define SPLIT_USB_DETECT
38#define SPLIT_USB_TIMEOUT 1000
diff --git a/keyboards/kyria/keymaps/drashna/keymap.c b/keyboards/kyria/keymaps/drashna/keymap.c
new file mode 100644
index 000000000..bdb00e596
--- /dev/null
+++ b/keyboards/kyria/keymaps/drashna/keymap.c
@@ -0,0 +1,372 @@
1#include "drashna.h"
2
3uint8_t is_master;
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
35# define UC(x) KC_NO
36#endif
37
38/*
39 * The `LAYOUT_kyria_base` macro is a template to allow the use of identical
40 * modifiers for the default layouts (eg QWERTY, Colemak, Dvorak, etc), so
41 * that there is no need to set them up for each layout, and modify all of
42 * them if I want to change them. This helps to keep consistency and ease
43 * of use. K## is a placeholder to pass through the individual keycodes
44 */
45
46// clang-format off
47#define LAYOUT_kyria_base( \
48 K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
49 K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
50 K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
51 ) \
52 LAYOUT_wrapper( \
53 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), \
55 OS_LSFT, CTL_T(K21), K22, K23, K24, K25, KC_NO, KC_NO, KC_NO, 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) \
57 )
58/* Re-pass though to allow templates to be used */
59#define LAYOUT_kyria_base_wrapper(...) LAYOUT_kyria_base(__VA_ARGS__)
60
61const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
62
63 [_QWERTY] = LAYOUT_kyria_base_wrapper(
64 _________________QWERTY_L1_________________, _________________QWERTY_R1_________________,
65 _________________QWERTY_L2_________________, _________________QWERTY_R2_________________,
66 _________________QWERTY_L3_________________, _________________QWERTY_R3_________________
67 ),
68
69 [_COLEMAK] = LAYOUT_kyria_base_wrapper(
70 _________________COLEMAK_L1________________, _________________COLEMAK_R1________________,
71 _________________COLEMAK_L2________________, _________________COLEMAK_R2________________,
72 _________________COLEMAK_L3________________, _________________COLEMAK_R3________________
73 ),
74
75 [_DVORAK] = LAYOUT_kyria_base_wrapper(
76 _________________DVORAK_L1_________________, _________________DVORAK_R1_________________,
77 _________________DVORAK_L2_________________, _________________DVORAK_R2_________________,
78 _________________DVORAK_L3_________________, _________________DVORAK_R3_________________
79 ),
80
81 [_WORKMAN] = LAYOUT_kyria_base_wrapper(
82 _________________WORKMAN_L1________________, _________________WORKMAN_R1________________,
83 _________________WORKMAN_L2________________, _________________WORKMAN_R2________________,
84 _________________WORKMAN_L3________________, _________________WORKMAN_R3________________
85 ),
86
87 [_NORMAN] = LAYOUT_kyria_base_wrapper(
88 _________________NORMAN_L1_________________, _________________NORMAN_L1_________________,
89 _________________NORMAN_L2_________________, _________________NORMAN_R2_________________,
90 _________________NORMAN_L3_________________, _________________NORMAN_R3_________________
91 ),
92
93 [_MALTRON] = LAYOUT_kyria_base_wrapper(
94 _________________MALTRON_L1________________, _________________MALTRON_R1________________,
95 _________________MALTRON_L2________________, _________________MALTRON_R2________________,
96 _________________MALTRON_L3________________, _________________MALTRON_R3________________
97 ),
98
99 [_EUCALYN] = LAYOUT_kyria_base_wrapper(
100 _________________EUCALYN_L1________________, _________________EUCALYN_R1________________,
101 _________________EUCALYN_L2________________, _________________EUCALYN_R2________________,
102 _________________EUCALYN_L3________________, _________________EUCALYN_R3________________
103 ),
104
105 [_CARPLAX] = LAYOUT_kyria_base_wrapper(
106 _____________CARPLAX_QFMLWY_L1_____________, _____________CARPLAX_QFMLWY_R1_____________,
107 _____________CARPLAX_QFMLWY_L2_____________, _____________CARPLAX_QFMLWY_R2_____________,
108 _____________CARPLAX_QFMLWY_L3_____________, _____________CARPLAX_QFMLWY_R3_____________
109 ),
110 [_MODS] = LAYOUT_wrapper(
111 _______, ___________________BLANK___________________, ___________________BLANK___________________, _______,
112 _______, ___________________BLANK___________________, ___________________BLANK___________________, _______,
113 KC_LSFT, ___________________BLANK___________________, _______, _______, _______, _______, ___________________BLANK___________________, KC_RSFT,
114 _______, _______, KC_LALT, _______, _______, _______, _______, KC_RGUI, _______, _______
115 ),
116 [_LOWER] = LAYOUT_wrapper(
117 KC_F12, _________________LOWER_L1__________________, _________________LOWER_R1__________________, KC_F11,
118 _______, _________________LOWER_L2__________________, _________________LOWER_R2__________________, KC_PIPE,
119 _______, _________________LOWER_L3__________________, _______, _______, _______, _______, _________________LOWER_R3__________________, _______,
120 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
121 ),
122 [_RAISE] = LAYOUT_wrapper(
123 KC_F12, _________________RAISE_L1__________________, _________________RAISE_R1__________________, KC_F11,
124 _______, _________________RAISE_L2__________________, _________________RAISE_R2__________________, KC_BSLS,
125 _______, _________________RAISE_L3__________________, _______, _______, _______, _______, _________________RAISE_R3__________________, _______,
126 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
127 ),
128 [_ADJUST] = LAYOUT_wrapper(
129 KC_MAKE, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, KC_RESET,
130 VRSN, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, EEP_RST,
131 _______, _________________ADJUST_L3_________________, HPT_TOG, HPT_FBK, MG_NKRO, UC_MOD, _________________ADJUST_R3_________________, TG_MODS,
132 _______, _______, _______, KC_NUKE, _______, _______, _______, _______, _______, _______
133 ),
134// [_LAYERINDEX] = LAYOUT_wrapper(
135// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
136// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
137// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
138// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
139// ),
140};
141// clang-format on
142
143bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
144 if (record->event.pressed) {
145#ifdef OLED_DRIVER_ENABLE
146 oled_timer = timer_read32();
147 add_keylog(keycode);
148#endif
149#ifndef SPLIT_KEYBOARD
150 if (keycode == RESET && !is_master) {
151 return false;
152 }
153#endif
154 }
155 return true;
156}
157void matrix_init_keymap(void) { is_master = (uint8_t)is_keyboard_master(); }
158
159#ifdef OLED_DRIVER_ENABLE
160oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; }
161
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:
195 oled_write_ln_P(PSTR("Qwerty "), false);
196 break;
197 case _COLEMAK:
198 oled_write_ln_P(PSTR("Colemak"), false);
199 break;
200 case _DVORAK:
201 oled_write_ln_P(PSTR("Dvorak"), false);
202 break;
203 case _WORKMAN:
204 oled_write_ln_P(PSTR("Workman"), false);
205 break;
206 case _NORMAN:
207 oled_write_ln_P(PSTR("Norman"), false);
208 break;
209 case _MALTRON:
210 oled_write_ln_P(PSTR("Maltron"), false);
211 break;
212 case _EUCALYN:
213 oled_write_ln_P(PSTR("Eucalyn"), false);
214 break;
215 case _CARPLAX:
216 oled_write_ln_P(PSTR("Carplax"), false);
217 break;
218 }
219}
220
221void render_layer_state(void) {
222 oled_write_ln_P(PSTR("Layer:"), false);
223 oled_write_P(PSTR(" "), false);
224 oled_write_P(PSTR("Lower"), layer_state_is(_LOWER));
225 oled_write_P(PSTR(" "), false);
226 oled_write_P(PSTR("Raise"), layer_state_is(_RAISE));
227 oled_write_P(PSTR(" "), false);
228 oled_write_ln_P(PSTR("Mods"), layer_state_is(_MODS));
229}
230
231void render_keylock_status(uint8_t led_usb_state) {
232 oled_write_P(PSTR("Lock: "), false);
233 oled_write_P(PSTR("NUM"), led_usb_state & (1 << USB_LED_NUM_LOCK));
234 oled_write_P(PSTR(" "), false);
235 oled_write_P(PSTR("CAPS"), led_usb_state & (1 << USB_LED_CAPS_LOCK));
236 oled_write_P(PSTR(" "), false);
237 oled_write_ln_P(PSTR("SCL"), led_usb_state & (1 << USB_LED_SCROLL_LOCK));
238}
239
240void render_mod_status(uint8_t modifiers) {
241 oled_write_P(PSTR("Mods: "), false);
242 oled_write_P(PSTR("Sft"), (modifiers & MOD_MASK_SHIFT));
243 oled_write_P(PSTR(" "), false);
244 oled_write_P(PSTR("Ctl"), (modifiers & MOD_MASK_CTRL));
245 oled_write_P(PSTR(" "), false);
246 oled_write_P(PSTR("Alt"), (modifiers & MOD_MASK_ALT));
247 oled_write_P(PSTR(" "), false);
248 oled_write_P(PSTR("GUI"), (modifiers & MOD_MASK_GUI));
249}
250
251void render_bootmagic_status(void) {
252 /* Show Ctrl-Gui Swap options */
253 static const char PROGMEM logo[][2][3] = {
254 {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}},
255 {{0x95, 0x96, 0}, {0xb5, 0xb6, 0}},
256 };
257 oled_write_P(PSTR("Boot "), false);
258 oled_write_P(logo[0][0], !keymap_config.swap_lctl_lgui);
259 oled_write_P(logo[1][0], keymap_config.swap_lctl_lgui);
260 oled_write_P(PSTR(" "), false);
261 oled_write_P(PSTR("NKRO"), keymap_config.nkro);
262 oled_write_P(PSTR(" "), false);
263 oled_write_ln_P(PSTR("GUI"), !keymap_config.no_gui);
264 oled_write_P(PSTR("Magic "), false);
265 oled_write_P(logo[0][1], !keymap_config.swap_lctl_lgui);
266 oled_write_P(logo[1][1], keymap_config.swap_lctl_lgui);
267 oled_write_P(PSTR(" "), false);
268 oled_write_P(PSTR("GRV"), keymap_config.swap_grave_esc);
269 oled_write_P(PSTR(" "), false);
270 oled_write_ln_P(PSTR("CAPS"), keymap_config.swap_control_capslock);
271}
272
273void render_user_status(void) {
274 oled_write_P(PSTR("USER: "), false);
275 oled_write_P(PSTR("Anim"), userspace_config.rgb_matrix_idle_anim);
276 oled_write_P(PSTR(" "), false);
277 oled_write_P(PSTR("Layr"), userspace_config.rgb_layer_change);
278 oled_write_P(PSTR(" "), false);
279 oled_write_ln_P(PSTR("Nuke"), userspace_config.nuke_switch);
280}
281
282// clang-format off
283void render_logo(void) {
284 static const char PROGMEM qmk_logo[] = {
285 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
286 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
287 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0};
288
289 oled_write_P(qmk_logo, false);
290}
291
292# ifndef SPLIT_TRANSPORT_MIRROR
293void render_kyria_logo(void) {
294 static const char PROGMEM kyria_logo[] = {
295 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,
296 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,
297 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,
298 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,
299 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,
300 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,
301 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,
302 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
303 };
304 oled_write_raw_P(kyria_logo, sizeof(kyria_logo));
305}
306# endif
307// clang-format on
308
309void render_status_main(void) {
310 /* Show Keyboard Layout */
311 render_default_layer_state();
312 render_keylock_status(host_keyboard_leds());
313 render_bootmagic_status();
314 render_user_status();
315
316 render_keylogger_status();
317}
318
319void render_status_secondary(void) {
320 /* Show Keyboard Layout */
321 render_logo();
322 render_default_layer_state();
323 render_layer_state();
324 render_mod_status(get_mods() | get_oneshot_mods());
325
326 render_keylogger_status();
327}
328
329void oled_task_user(void) {
330 if (timer_elapsed32(oled_timer) > 30000) {
331 oled_off();
332 return;
333 }
334# ifndef SPLIT_KEYBOARD
335 else {
336 oled_on();
337 }
338# endif
339
340 update_log();
341 if (is_master) {
342 render_status_main(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
343 } else {
344# ifdef SPLIT_TRANSPORT_MIRROR
345 render_status_secondary();
346# else
347 render_kyria_logo();
348# endif
349 }
350}
351
352#endif
353
354#ifdef ENCODER_ENABLE
355void encoder_update_user(uint8_t index, bool clockwise) {
356 if (index == 0) {
357 // Volume control
358 if (clockwise) {
359 tap_code(KC_VOLU);
360 } else {
361 tap_code(KC_VOLD);
362 }
363 } else if (index == 1) {
364 // Page up/Page down
365 if (clockwise) {
366 tap_code(KC_PGDN);
367 } else {
368 tap_code(KC_PGUP);
369 }
370 }
371}
372#endif
diff --git a/keyboards/kyria/keymaps/drashna/rules.mk b/keyboards/kyria/keymaps/drashna/rules.mk
new file mode 100644
index 000000000..c1a37f5c5
--- /dev/null
+++ b/keyboards/kyria/keymaps/drashna/rules.mk
@@ -0,0 +1,22 @@
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 = yes
5
6BOOTMAGIC_ENABLE = no # 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 = no # USB Nkey Rollover
12BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
13MIDI_ENABLE = no # MIDI support
14UNICODE_ENABLE = yes # Unicode
15BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
16AUDIO_ENABLE = no # Audio output on port C6
17FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
18HD44780_ENABLE = no # Enable support for HD44780 based LCDs
19
20BOOTLOADER = atmel-dfu
21
22SPLIT_TRANSPORT = mirror
diff --git a/keyboards/orthodox/keymaps/drashna/config.h b/keyboards/orthodox/keymaps/drashna/config.h
index 4719c2269..585c91640 100644
--- a/keyboards/orthodox/keymaps/drashna/config.h
+++ b/keyboards/orthodox/keymaps/drashna/config.h
@@ -34,41 +34,40 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
34 34
35/* key combination for magic key command */ 35/* key combination for magic key command */
36#undef IS_COMMAND 36#undef IS_COMMAND
37#define IS_COMMAND() ( \ 37#define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_LALT)))
38 get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_LALT)) \
39)
40 38
41#ifdef RGBLIGHT_ENABLE 39#ifdef RGBLIGHT_ENABLE
42# define RGB_DI_PIN D3 40# define RGB_DI_PIN D3
43# define RGBLED_NUM 16 // Number of LEDs 41# define RGBLED_NUM 16 // Number of LEDs
44# define RGBLED_SPLIT { 8, 8 } 42# define RGBLED_SPLIT \
45 43 { 8, 8 }
46# define RGBLIGHT_HUE_STEP 12 44
47# define RGBLIGHT_SAT_STEP 12 45# define RGBLIGHT_HUE_STEP 12
48# define RGBLIGHT_VAL_STEP 12 46# define RGBLIGHT_SAT_STEP 12
49# define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2 47# define RGBLIGHT_VAL_STEP 12
50# define RGBLIGHT_EFFECT_SNAKE_LENGTH 2 48# define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
51#endif // RGBLIGHT_ENABLE 49# define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
50#endif // RGBLIGHT_ENABLE
52 51
53#ifdef AUDIO_ENABLE 52#ifdef AUDIO_ENABLE
54# define C6_AUDIO 53# define C6_AUDIO
55# ifdef RGBLIGHT_ENABLE 54# ifdef RGBLIGHT_ENABLE
56# define NO_MUSIC_MODE 55# define NO_MUSIC_MODE
57# endif 56# endif
58#endif //AUDIO_ENABLE 57#endif // AUDIO_ENABLE
59 58
60#undef PRODUCT 59#undef PRODUCT
61#ifdef KEYBOARD_orthodox_rev1 60#ifdef KEYBOARD_orthodox_rev1
62# define PRODUCT Drashna Hacked Orthodox Rev.1 61# define PRODUCT Drashna Hacked Orthodox Rev .1
63#elif KEYBOARD_orthodox_rev3 62#elif KEYBOARD_orthodox_rev3
64# define PRODUCT Drashna Hacked Orthodox Rev.3 63# define PRODUCT Drashna Hacked Orthodox Rev .3
65#endif 64#endif
66 65
67#define QMK_ESC_OUTPUT D7 // usually COL 66#define QMK_ESC_OUTPUT D7 // usually COL
68#ifdef KEYBOARD_orthodox_rev1 67#ifdef KEYBOARD_orthodox_rev1
69# define QMK_ESC_INPUT D4 // usually ROW 68# define QMK_ESC_INPUT D4 // usually ROW
70#else 69#else
71# define QMK_ESC_INPUT D2 // usually ROW 70# define QMK_ESC_INPUT D2 // usually ROW
72#endif 71#endif
73#define QMK_LED B0 72#define QMK_LED B0
74#define QMK_SPEAKER C6 73#define QMK_SPEAKER C6
diff --git a/keyboards/orthodox/keymaps/drashna/keymap.c b/keyboards/orthodox/keymaps/drashna/keymap.c
index bf6b62b41..2dbe18634 100644
--- a/keyboards/orthodox/keymaps/drashna/keymap.c
+++ b/keyboards/orthodox/keymaps/drashna/keymap.c
@@ -1,35 +1,12 @@
1/*
2This is the keymap for the keyboard
3
4Copyright 2012 Jun Wako <wakojun@gmail.com>
5Copyright 2015 Jack Humbert
6Copyright 2017 Art Ortenburger
7
8This program is free software: you can redistribute it and/or modify
9it under the terms of the GNU General Public License as published by
10the Free Software Foundation, either version 2 of the License, or
11(at your option) any later version.
12
13This program is distributed in the hope that it will be useful,
14but WITHOUT ANY WARRANTY; without even the implied warranty of
15MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16GNU General Public License for more details.
17
18You should have received a copy of the GNU General Public License
19along with this program. If not, see <http://www.gnu.org/licenses/>.
20*/
21
22#include QMK_KEYBOARD_H
23#include "drashna.h" 1#include "drashna.h"
24 2
25#ifdef INDICATOR_LIGHTS 3/*
26extern userspace_config_t userspace_config; 4 * The `LAYOUT_orthodox_base` macro is a template to allow the use of identical
27 5 * modifiers for the default layouts (eg QWERTY, Colemak, Dvorak, etc), so
28uint8_t last_mod; 6 * that there is no need to set them up for each layout, and modify all of
29uint8_t last_led; 7 * them if I want to change them. This helps to keep consistency and ease
30uint8_t last_osm; 8 * of use. K## is a placeholder to pass through the individual keycodes
31#endif 9 */
32
33// clang-format off 10// clang-format off
34#define LAYOUT_orthodox_base( \ 11#define LAYOUT_orthodox_base( \
35 K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ 12 K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
@@ -38,7 +15,7 @@ uint8_t last_osm;
38 ) \ 15 ) \
39 LAYOUT_wrapper( \ 16 LAYOUT_wrapper( \
40 KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_BSPC, \ 17 KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_BSPC, \
41 KC_TAB, ALT_T(K11), K12, K13, K14, K15, OS_LALT, OS_LGUI, OS_RALT, RAISE, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \ 18 LALT_T(KC_TAB), K11, K12, K13, K14, K15, OS_LALT, OS_LGUI, OS_RALT, RAISE, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \
42 KC_MLSF, CTL_T(K21), K22, K23, K24, K25, LOWER, KC_SPACE,KC_BSPC, KC_DEL, KC_ENT, RAISE, K26, K27, K28, K29, RCTL_T(K2A), KC_MRSF \ 19 KC_MLSF, CTL_T(K21), K22, K23, K24, K25, LOWER, KC_SPACE,KC_BSPC, KC_DEL, KC_ENT, RAISE, K26, K27, K28, K29, RCTL_T(K2A), KC_MRSF \
43 ) 20 )
44#define LAYOUT_orthodox_base_wrapper(...) LAYOUT_orthodox_base(__VA_ARGS__) 21#define LAYOUT_orthodox_base_wrapper(...) LAYOUT_orthodox_base(__VA_ARGS__)