[Keymap] Drashna Updates - Split+OLED edition (#11968)
This commit is contained in:
parent
11146ecd08
commit
0b69e4df81
44 changed files with 2519 additions and 759 deletions
|
@ -24,14 +24,15 @@
|
||||||
* of use. K## is a placeholder to pass through the individual keycodes
|
* of use. K## is a placeholder to pass through the individual keycodes
|
||||||
*/
|
*/
|
||||||
// clang-format off
|
// clang-format off
|
||||||
|
#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
|
||||||
#define LAYOUT_base( \
|
#define LAYOUT_base( \
|
||||||
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
|
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
|
||||||
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
|
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
|
||||||
K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
|
K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
|
||||||
) \
|
) \
|
||||||
LAYOUT_wrapper( \
|
LAYOUT_wrapper( \
|
||||||
KC_ESC, K01, K02, K03, K04, K05, KC_NO, K06, K07, K08, K09, K0A, KC_DEL, \
|
KC_ESC, K01, K02, K03, K04, K05, KC_NO, K06, K07, K08, K09, K0A, KC_DEL, \
|
||||||
ALT_T(KC_TAB), K11, K12, K13, K14, K15, KC_BSPC, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \
|
ALT_T(KC_TAB), K11, K12, K13, K14, K15, KC_BSPC, K16, K17, K18, K19, K1A, RALT_T(K1B), \
|
||||||
KC_MLSF, CTL_T(K21), K22, K23, K24, LT(_LOWER,K25), KC_SPC, LT(_RAISE,K26), K27, K28, K29, RCTL_T(K2A), KC_ENT \
|
KC_MLSF, CTL_T(K21), K22, K23, K24, LT(_LOWER,K25), KC_SPC, LT(_RAISE,K26), K27, K28, K29, RCTL_T(K2A), KC_ENT \
|
||||||
)
|
)
|
||||||
#define LAYOUT_base_wrapper(...) LAYOUT_base(__VA_ARGS__)
|
#define LAYOUT_base_wrapper(...) LAYOUT_base(__VA_ARGS__)
|
||||||
|
|
|
@ -24,14 +24,15 @@
|
||||||
* of use. K## is a placeholder to pass through the individual keycodes
|
* of use. K## is a placeholder to pass through the individual keycodes
|
||||||
*/
|
*/
|
||||||
// clang-format off
|
// clang-format off
|
||||||
|
#define LAYOUT_gergo_wrapper(...) LAYOUT_gergo(__VA_ARGS__)
|
||||||
#define LAYOUT_gergo_base( \
|
#define LAYOUT_gergo_base( \
|
||||||
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
|
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
|
||||||
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
|
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
|
||||||
K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
|
K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
|
||||||
) \
|
) \
|
||||||
LAYOUT_gergo_wrapper( \
|
LAYOUT_gergo_wrapper( \
|
||||||
KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_PIPE, \
|
KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_PIPE, \
|
||||||
LALT_T(KC_TAB), K11, K12, K13, K14, K15, _______, _______, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \
|
LALT_T(KC_TAB), K11, K12, K13, K14, K15, _______, _______, K16, K17, K18, K19, K1A, RALT_T(K1B), \
|
||||||
OS_LSFT, CTL_T(K21), K22, K23, K24, K25, _______, _______, _______, _______, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \
|
OS_LSFT, CTL_T(K21), K22, K23, K24, K25, _______, _______, _______, _______, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \
|
||||||
KC_GRV, KC_SPC, BK_LWER, OS_LALT, OS_RGUI, DL_RAIS, KC_ENT, _______ \
|
KC_GRV, KC_SPC, BK_LWER, OS_LALT, OS_RGUI, DL_RAIS, KC_ENT, _______ \
|
||||||
)
|
)
|
||||||
|
|
|
@ -85,7 +85,11 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) {
|
||||||
|
|
||||||
#ifdef POINTING_DEVICE_ENABLE
|
#ifdef POINTING_DEVICE_ENABLE
|
||||||
if (keycode == DPI_CONFIG && record->event.pressed) {
|
if (keycode == DPI_CONFIG && record->event.pressed) {
|
||||||
|
if ((get_mods()|get_oneshot_mods()) & MOD_MASK_SHIFT) {
|
||||||
|
keyboard_config.dpi_config = (keyboard_config.dpi_config - 1) % DPI_OPTION_SIZE;
|
||||||
|
} else {
|
||||||
keyboard_config.dpi_config = (keyboard_config.dpi_config + 1) % DPI_OPTION_SIZE;
|
keyboard_config.dpi_config = (keyboard_config.dpi_config + 1) % DPI_OPTION_SIZE;
|
||||||
|
}
|
||||||
eeconfig_update_kb(keyboard_config.raw);
|
eeconfig_update_kb(keyboard_config.raw);
|
||||||
trackball_set_cpi(dpi_array[keyboard_config.dpi_config]);
|
trackball_set_cpi(dpi_array[keyboard_config.dpi_config]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,6 +62,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#define BOOTMAGIC_LITE_COLUMN_RIGHT 5
|
#define BOOTMAGIC_LITE_COLUMN_RIGHT 5
|
||||||
|
|
||||||
#define C6_AUDIO
|
#define C6_AUDIO
|
||||||
|
#define B7_AUDIO
|
||||||
|
|
||||||
#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 4095
|
#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 4095
|
||||||
#define DYNAMIC_KEYMAP_LAYER_COUNT 16
|
#define DYNAMIC_KEYMAP_LAYER_COUNT 16
|
||||||
|
|
|
@ -18,9 +18,10 @@
|
||||||
|
|
||||||
// #define USE_I2C
|
// #define USE_I2C
|
||||||
#define SELECT_SOFT_SERIAL_SPEED 0
|
#define SELECT_SOFT_SERIAL_SPEED 0
|
||||||
#define SERIAL_USE_MULTI_TRANSACTION
|
// #define SERIAL_USE_MULTI_TRANSACTION
|
||||||
|
#define SPLIT_MODS_ENABLE
|
||||||
#define EE_HANDS
|
#define EE_HANDS
|
||||||
|
|
||||||
#define TRACKBALL_DPI_OPTIONS \
|
#define TRACKBALL_DPI_OPTIONS \
|
||||||
{ 1200, 1800, 2600, 3400 }
|
{ 1200, 1800, 2600, 3400 }
|
||||||
|
|
||||||
|
@ -35,8 +36,6 @@
|
||||||
#define SOLENOID_DEFAULT_DWELL 8
|
#define SOLENOID_DEFAULT_DWELL 8
|
||||||
|
|
||||||
#define OLED_DISPLAY_128X64
|
#define OLED_DISPLAY_128X64
|
||||||
#define OLED_TIMEOUT 0
|
|
||||||
#define OLED_BRIGHTNESS 100
|
#define OLED_BRIGHTNESS 100
|
||||||
#define SPLIT_MODS_ENABLE
|
|
||||||
|
|
||||||
#define MK_KINETIC_SPEED
|
#define MK_KINETIC_SPEED
|
||||||
|
|
|
@ -16,24 +16,21 @@
|
||||||
|
|
||||||
#include "drashna.h"
|
#include "drashna.h"
|
||||||
|
|
||||||
#define TG_DBLO TG(_DIABLO)
|
|
||||||
|
|
||||||
|
|
||||||
// clang-format off
|
// clang-format off
|
||||||
#define LAYOUT_5x6_right_trackball_wrapper(...) LAYOUT_5x6_right_trackball(__VA_ARGS__)
|
#define LAYOUT_5x6_right_trackball_wrapper(...) LAYOUT_5x6_right_trackball(__VA_ARGS__)
|
||||||
#define LAYOUT_5x6_right_trackball_base( \
|
#define LAYOUT_5x6_right_trackball_base( \
|
||||||
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
|
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
|
||||||
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
|
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
|
||||||
K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
|
K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
|
||||||
) \
|
) \
|
||||||
LAYOUT_5x6_right_trackball_wrapper( \
|
LAYOUT_5x6_right_trackball_wrapper( \
|
||||||
KC_GRV, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS, \
|
KC_ESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS, \
|
||||||
KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_BSLS, \
|
SH_TT, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, SH_TT, \
|
||||||
LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \
|
LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(K1B), \
|
||||||
OS_LSFT, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \
|
OS_LSFT, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \
|
||||||
OS_LALT, OS_LGUI, TG_GAME, TG_DBLO, \
|
OS_LALT, OS_LGUI, TG_GAME, TG_DBLO, \
|
||||||
OS_LGUI, KC_GRV, OS_RGUI, \
|
OS_LGUI, KC_GRV, OS_RGUI, \
|
||||||
KC_SPC, _______, KC_ENT, \
|
KC_SPC, TT(_MOUSE), KC_ENT, \
|
||||||
BK_LWER, MO(_MOUSE), MO(_MOUSE), DL_RAIS \
|
BK_LWER, MO(_MOUSE), MO(_MOUSE), DL_RAIS \
|
||||||
)
|
)
|
||||||
#define LAYOUT_5x6_right_trackball_base_wrapper(...) LAYOUT_5x6_right_trackball_base(__VA_ARGS__)
|
#define LAYOUT_5x6_right_trackball_base_wrapper(...) LAYOUT_5x6_right_trackball_base(__VA_ARGS__)
|
||||||
|
@ -149,13 +146,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
_______, _______, KC_NUKE, _______
|
_______, _______, KC_NUKE, _______
|
||||||
),
|
),
|
||||||
};
|
};
|
||||||
// clang-format off
|
// clang-format on
|
||||||
|
|
||||||
|
|
||||||
#ifdef POINTING_DEVICE_ENABLE
|
#ifdef POINTING_DEVICE_ENABLE
|
||||||
static uint16_t mouse_timer = 0;
|
static uint16_t mouse_timer = 0;
|
||||||
static uint16_t mouse_debounce_timer = 0;
|
static uint16_t mouse_debounce_timer = 0;
|
||||||
static uint8_t mouse_keycode_tracker = 0;
|
static uint8_t mouse_keycode_tracker = 0;
|
||||||
|
bool tap_toggling = false;
|
||||||
|
|
||||||
void process_mouse_user(report_mouse_t* mouse_report, int16_t x, int16_t y) {
|
void process_mouse_user(report_mouse_t* mouse_report, int16_t x, int16_t y) {
|
||||||
if ((x || y) && timer_elapsed(mouse_timer) > 125) {
|
if ((x || y) && timer_elapsed(mouse_timer) > 125) {
|
||||||
|
@ -164,29 +161,64 @@ void process_mouse_user(report_mouse_t* mouse_report, int16_t x, int16_t y) {
|
||||||
layer_on(_MOUSE);
|
layer_on(_MOUSE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (timer_elapsed(mouse_debounce_timer) > 125 || layer_state_is(_GAMEPAD) ) {
|
|
||||||
|
# ifdef TAPPING_TERM_PER_KEY
|
||||||
|
if (timer_elapsed(mouse_debounce_timer) > get_tapping_term(KC_BTN1, NULL)
|
||||||
|
# else
|
||||||
|
if (timer_elapsed(mouse_debounce_timer) > TAPPING_TERM
|
||||||
|
# endif
|
||||||
|
|| layer_state_is(_GAMEPAD)) {
|
||||||
mouse_report->x = x;
|
mouse_report->x = x;
|
||||||
mouse_report->y = y;
|
mouse_report->y = y;
|
||||||
}
|
}
|
||||||
|
# ifdef OLED_DRIVER_ENABLE
|
||||||
|
if (x || y) oled_timer = timer_read32();
|
||||||
|
# endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void matrix_scan_keymap(void) {
|
void matrix_scan_keymap(void) {
|
||||||
if (timer_elapsed(mouse_timer) > 650 && layer_state_is(_MOUSE) && !mouse_keycode_tracker) {
|
if (timer_elapsed(mouse_timer) > 650 && layer_state_is(_MOUSE) && !mouse_keycode_tracker && !tap_toggling) {
|
||||||
layer_off(_MOUSE);
|
layer_off(_MOUSE);
|
||||||
}
|
}
|
||||||
|
if (tap_toggling) {
|
||||||
|
if (!layer_state_is(_MOUSE)) {
|
||||||
|
layer_on(_MOUSE);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
|
bool process_record_keymap(uint16_t keycode, keyrecord_t* record) {
|
||||||
switch(keycode){
|
switch (keycode) {
|
||||||
|
case TT(_MOUSE): {
|
||||||
|
if (record->event.pressed) {
|
||||||
|
mouse_keycode_tracker++;
|
||||||
|
} else {
|
||||||
|
# if TAPPING_TOGGLE != 0
|
||||||
|
if (record->tap.count == TAPPING_TOGGLE) {
|
||||||
|
tap_toggling ^= 1;
|
||||||
|
# if TAPPING_TOGGLE == 1
|
||||||
|
if (!tap_toggling) mouse_keycode_tracker -= record->tap.count + 1;
|
||||||
|
# else
|
||||||
|
if (!tap_toggling) mouse_keycode_tracker -= record->tap.count;
|
||||||
|
# endif
|
||||||
|
} else {
|
||||||
|
mouse_keycode_tracker--;
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
}
|
||||||
|
mouse_timer = timer_read();
|
||||||
|
break;
|
||||||
|
}
|
||||||
case MO(_MOUSE):
|
case MO(_MOUSE):
|
||||||
case DPI_CONFIG:
|
case DPI_CONFIG:
|
||||||
case KC_MS_UP...KC_MS_WH_RIGHT:
|
case KC_MS_UP ... KC_MS_WH_RIGHT:
|
||||||
record->event.pressed ? mouse_keycode_tracker++ : mouse_keycode_tracker--;
|
record->event.pressed ? mouse_keycode_tracker++ : mouse_keycode_tracker--;
|
||||||
mouse_timer = timer_read();
|
mouse_timer = timer_read();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if (layer_state_is(_MOUSE) && !mouse_keycode_tracker) {
|
if (layer_state_is(_MOUSE) && !mouse_keycode_tracker) {
|
||||||
layer_off(_MOUSE);
|
layer_off(_MOUSE);
|
||||||
|
mouse_keycode_tracker = 0;
|
||||||
}
|
}
|
||||||
mouse_debounce_timer = timer_read();
|
mouse_debounce_timer = timer_read();
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -5,5 +5,5 @@ AUDIO_ENABLE = yes
|
||||||
TAP_DANCE_ENABLE = yes
|
TAP_DANCE_ENABLE = yes
|
||||||
UNICODE_ENABLE = yes
|
UNICODE_ENABLE = yes
|
||||||
OLED_DRIVER_ENABLE = yes
|
OLED_DRIVER_ENABLE = yes
|
||||||
|
WPM_ENABLE = yes
|
||||||
# DEBOUNCE_TYPE = sym_eager_pk
|
# DEBOUNCE_TYPE = sym_eager_pk
|
||||||
|
|
|
@ -77,7 +77,8 @@ typedef struct _I2C_slave_buffer_t {
|
||||||
bool oled_on;
|
bool oled_on;
|
||||||
layer_state_t t_layer_state;
|
layer_state_t t_layer_state;
|
||||||
layer_state_t t_default_layer_state;
|
layer_state_t t_default_layer_state;
|
||||||
} I2C_slave_buffer_t;
|
bool is_rgb_matrix_suspended;
|
||||||
|
} __attribute__((packed)) I2C_slave_buffer_t;
|
||||||
|
|
||||||
static I2C_slave_buffer_t *const i2c_buffer = (I2C_slave_buffer_t *)i2c_slave_reg;
|
static I2C_slave_buffer_t *const i2c_buffer = (I2C_slave_buffer_t *)i2c_slave_reg;
|
||||||
|
|
||||||
|
@ -93,9 +94,10 @@ static I2C_slave_buffer_t *const i2c_buffer = (I2C_slave_buffer_t *)i2c_slave_re
|
||||||
# define I2C_MOUSE_X_START offsetof(I2C_slave_buffer_t, mouse_x)
|
# define I2C_MOUSE_X_START offsetof(I2C_slave_buffer_t, mouse_x)
|
||||||
# define I2C_MOUSE_Y_START offsetof(I2C_slave_buffer_t, mouse_y)
|
# define I2C_MOUSE_Y_START offsetof(I2C_slave_buffer_t, mouse_y)
|
||||||
# define I2C_MOUSE_DPI_START offsetof(I2C_slave_buffer_t, device_cpi)
|
# define I2C_MOUSE_DPI_START offsetof(I2C_slave_buffer_t, device_cpi)
|
||||||
# define I2C_OLED_ON_START offsetof(I2C_slave_buffent, oled_on)
|
# define I2C_OLED_ON_START offsetof(I2C_slave_buffer_t, oled_on)
|
||||||
# define I2C_LAYER_STATE_START offsetof(I2C_slave_buffent, t_layer_state)
|
# define I2C_LAYER_STATE_START offsetof(I2C_slave_buffer_t, t_layer_state)
|
||||||
# define I2C_DEFAULT_LAYER_STATE_START offsetof(I2C_slave_buffent, t_default_layer_state)
|
# define I2C_DEFAULT_LAYER_STATE_START offsetof(I2C_slave_buffer_t, t_default_layer_state)
|
||||||
|
# define I2C_RGB_MATRIX_SUSPEND_START offsetof(I2C_slave_buffer_t, is_rgb_matrix_suspended)
|
||||||
|
|
||||||
# define TIMEOUT 100
|
# define TIMEOUT 100
|
||||||
|
|
||||||
|
@ -196,9 +198,19 @@ bool transport_master(matrix_row_t matrix[]) {
|
||||||
}
|
}
|
||||||
|
|
||||||
# ifdef OLED_DRIVER_ENABLE
|
# ifdef OLED_DRIVER_ENABLE
|
||||||
if (is_oled_on() != i2c_buffer->oled_on) {
|
bool is_oled_on = is_oled_on();
|
||||||
if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_LAYER_STATE_START, (void *)&is_oled_on(), sizeof(bool), TIMEOUT) >= 0) {
|
if (is_oled_on != i2c_buffer->oled_on) {
|
||||||
i2c_buffer->oled_on = is_oled_on();
|
if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_LAYER_STATE_START, (void *)&is_oled_on, sizeof(is_oled_on), TIMEOUT) >= 0) {
|
||||||
|
i2c_buffer->oled_on = is_oled_on;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifdef RGB_MATRIX_ENABLE
|
||||||
|
bool sus_state = rgb_matrix_get_suspend_state();
|
||||||
|
if (sus_state != i2c_buffer->is_rgb_matrix_suspended) {
|
||||||
|
if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_RGB_MATRIX_SUSPEND_START, (void *)&sus_state, sizeof(sus_state), TIMEOUT) >= 0) {
|
||||||
|
i2c_buffer->is_rgb_matrix_suspended = sus_state;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
# endif
|
# endif
|
||||||
|
@ -255,10 +267,10 @@ void transport_slave(matrix_row_t matrix[]) {
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
if (layer_state != i2c_buffer->t_layer_state) {
|
if (layer_state != i2c_buffer->t_layer_state) {
|
||||||
layer_state_set(i2c_buffer->t_layer_state);
|
layer_state = i2c_buffer->t_layer_state;
|
||||||
}
|
}
|
||||||
if (default_layer_state != i2c_buffer->t_default_layer_state) {
|
if (default_layer_state != i2c_buffer->t_default_layer_state) {
|
||||||
default_layer_state_set(i2c_buffer->t_default_layer_state);
|
default_layer_state = i2c_buffer->t_default_layer_state;
|
||||||
}
|
}
|
||||||
|
|
||||||
# ifdef OLED_DRIVER_ENABLE
|
# ifdef OLED_DRIVER_ENABLE
|
||||||
|
@ -268,6 +280,10 @@ void transport_slave(matrix_row_t matrix[]) {
|
||||||
oled_off();
|
oled_off();
|
||||||
}
|
}
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
|
# ifdef RGB_MATRIX_ENABLE
|
||||||
|
rgb_matrix_set_suspend_state(i2c_buffer->is_rgb_matrix_suspended);
|
||||||
|
# endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void transport_master_init(void) { i2c_init(); }
|
void transport_master_init(void) { i2c_init(); }
|
||||||
|
@ -286,7 +302,7 @@ typedef struct _Serial_s2m_buffer_t {
|
||||||
# endif
|
# endif
|
||||||
int8_t mouse_x;
|
int8_t mouse_x;
|
||||||
int8_t mouse_y;
|
int8_t mouse_y;
|
||||||
} Serial_s2m_buffer_t;
|
} __attribute__((packed)) Serial_s2m_buffer_t;
|
||||||
|
|
||||||
typedef struct _Serial_m2s_buffer_t {
|
typedef struct _Serial_m2s_buffer_t {
|
||||||
# ifdef SPLIT_MODS_ENABLE
|
# ifdef SPLIT_MODS_ENABLE
|
||||||
|
@ -309,7 +325,8 @@ typedef struct _Serial_m2s_buffer_t {
|
||||||
bool oled_on;
|
bool oled_on;
|
||||||
layer_state_t t_layer_state;
|
layer_state_t t_layer_state;
|
||||||
layer_state_t t_default_layer_state;
|
layer_state_t t_default_layer_state;
|
||||||
} Serial_m2s_buffer_t;
|
bool is_rgb_matrix_suspended;
|
||||||
|
} __attribute__((packed)) Serial_m2s_buffer_t;
|
||||||
|
|
||||||
# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT)
|
# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT)
|
||||||
// When MCUs on both sides drive their respective RGB LED chains,
|
// When MCUs on both sides drive their respective RGB LED chains,
|
||||||
|
@ -440,6 +457,10 @@ bool transport_master(matrix_row_t matrix[]) {
|
||||||
serial_m2s_buffer.oled_on = is_oled_on();
|
serial_m2s_buffer.oled_on = is_oled_on();
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
|
# ifdef RGB_MATRIX_ENABLE
|
||||||
|
serial_m2s_buffer.is_rgb_matrix_suspended = rgb_matrix_get_suspend_state();
|
||||||
|
# endif
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -484,10 +505,10 @@ void transport_slave(matrix_row_t matrix[]) {
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
if (layer_state != serial_m2s_buffer.t_layer_state) {
|
if (layer_state != serial_m2s_buffer.t_layer_state) {
|
||||||
layer_state_set(serial_m2s_buffer.t_layer_state);
|
layer_state = serial_m2s_buffer.t_layer_state;
|
||||||
}
|
}
|
||||||
if (default_layer_state != serial_m2s_buffer.t_default_layer_state) {
|
if (default_layer_state != serial_m2s_buffer.t_default_layer_state) {
|
||||||
default_layer_set(serial_m2s_buffer.t_default_layer_state);
|
default_layer_state = serial_m2s_buffer.t_default_layer_state;
|
||||||
}
|
}
|
||||||
# ifdef OLED_DRIVER_ENABLE
|
# ifdef OLED_DRIVER_ENABLE
|
||||||
if (serial_m2s_buffer.oled_on) {
|
if (serial_m2s_buffer.oled_on) {
|
||||||
|
@ -496,6 +517,10 @@ void transport_slave(matrix_row_t matrix[]) {
|
||||||
oled_off();
|
oled_off();
|
||||||
}
|
}
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
|
# ifdef RGB_MATRIX_ENABLE
|
||||||
|
rgb_matrix_set_suspend_state(serial_m2s_buffer.is_rgb_matrix_suspended);
|
||||||
|
# endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -26,5 +26,5 @@ POINTING_DEVICE_ENABLE = yes
|
||||||
SPLIT_KEYBOARD = yes
|
SPLIT_KEYBOARD = yes
|
||||||
SPLIT_TRANSPORT = custom
|
SPLIT_TRANSPORT = custom
|
||||||
|
|
||||||
SRC += pointer_transport.c pmw3360.c
|
SRC += pmw3360.c
|
||||||
QUANTUM_LIB_SRC += serial.c i2c_master.c i2c_slave.c spi_master.c
|
QUANTUM_LIB_SRC += pointer_transport.c serial.c i2c_master.c i2c_slave.c spi_master.c
|
||||||
|
|
|
@ -25,15 +25,16 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// clang-format off
|
// clang-format off
|
||||||
|
#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
|
||||||
#define LAYOUT_iris_base( \
|
#define LAYOUT_iris_base( \
|
||||||
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
|
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
|
||||||
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
|
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
|
||||||
K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
|
K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
|
||||||
) \
|
) \
|
||||||
LAYOUT_wrapper( \
|
LAYOUT_wrapper( \
|
||||||
KC_ESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS, \
|
KC_ESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS, \
|
||||||
LALT_T(KC_TAB), K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_BSLS, \
|
LALT_T(KC_TAB), K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_BSLS, \
|
||||||
KC_C1R3, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \
|
KC_C1R3, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(K1B), \
|
||||||
OS_LSFT, CTL_T(K21), K22, K23, K24, K25, OS_LALT, OS_RGUI, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \
|
OS_LSFT, CTL_T(K21), K22, K23, K24, K25, OS_LALT, OS_RGUI, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \
|
||||||
KC_GRV, KC_SPC, LT(_LOWER,KC_BSPC), LT(_RAISE,KC_DEL), KC_ENT, RAISE \
|
KC_GRV, KC_SPC, LT(_LOWER,KC_BSPC), LT(_RAISE,KC_DEL), KC_ENT, RAISE \
|
||||||
)
|
)
|
||||||
|
|
|
@ -17,9 +17,7 @@
|
||||||
#include "drashna.h"
|
#include "drashna.h"
|
||||||
|
|
||||||
// Fillers to make layering more clear
|
// Fillers to make layering more clear
|
||||||
#define DIABLO TG(_DIABLO)
|
#define TT_MDIA TT(_MEDIA)
|
||||||
#define GAMEPAD TG(_GAMEPAD)
|
|
||||||
#define MEDIA TT(_MEDIA)
|
|
||||||
|
|
||||||
// enum more_custom_keycodes {
|
// enum more_custom_keycodes {
|
||||||
// KC_P00 = NEW_SAFE_RANGE
|
// KC_P00 = NEW_SAFE_RANGE
|
||||||
|
@ -29,15 +27,15 @@
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
[_NUMLOCK] = LAYOUT_ortho_5x7(
|
[_NUMLOCK] = LAYOUT_ortho_5x7(
|
||||||
KC_NO, DIABLO, GAMEPAD, KC_NLCK, KC_SLCK, KC_COLN, KC_PSLS,
|
KC_NO, TG_DBLO, TG_GAME, KC_NLCK, KC_SLCK, KC_COLN, KC_PSLS,
|
||||||
MEDIA, KC_CALC, XXXXXXX, KC_P7, KC_P8, KC_P9, KC_PAST,
|
TT_MDIA, KC_CALC, XXXXXXX, KC_P7, KC_P8, KC_P9, KC_PAST,
|
||||||
KC_HOME, KC_DEL, KC_PGUP, KC_P4, KC_P5, KC_P6, KC_PMNS,
|
KC_HOME, KC_DEL, KC_PGUP, KC_P4, KC_P5, KC_P6, KC_PMNS,
|
||||||
KC_END, KC_UP, KC_PGDN, KC_P1, KC_P2, KC_P3, KC_PPLS,
|
KC_END, KC_UP, KC_PGDN, KC_P1, KC_P2, KC_P3, KC_PPLS,
|
||||||
KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_COLN, KC_PENT
|
KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_COLN, KC_PENT
|
||||||
),
|
),
|
||||||
|
|
||||||
[_DIABLO] = LAYOUT_ortho_5x7(
|
[_DIABLO] = LAYOUT_ortho_5x7(
|
||||||
KC_ESC, DIABLO, KC_V, KC_D, XXXXXXX, XXXXXXX, KC_L,
|
KC_ESC, _______, KC_V, KC_D, XXXXXXX, XXXXXXX, KC_L,
|
||||||
KC_TAB, KC_S, KC_F, KC_I, KC_M, KC_T, KC_J,
|
KC_TAB, KC_S, KC_F, KC_I, KC_M, KC_T, KC_J,
|
||||||
KC_Q, KC_1, KC_2, KC_3, KC_4, KC_G, KC_F,
|
KC_Q, KC_1, KC_2, KC_3, KC_4, KC_G, KC_F,
|
||||||
KC_LCTL, KC_D3_3, KC_D3_3, KC_D3_3, KC_D3_3, KC_Z, KC_DIABLO_CLEAR,
|
KC_LCTL, KC_D3_3, KC_D3_3, KC_D3_3, KC_D3_3, KC_Z, KC_DIABLO_CLEAR,
|
||||||
|
@ -45,16 +43,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
),
|
),
|
||||||
|
|
||||||
[_GAMEPAD] = LAYOUT_ortho_5x7( // Game pad layout designed primarily for Overwatch
|
[_GAMEPAD] = LAYOUT_ortho_5x7( // Game pad layout designed primarily for Overwatch
|
||||||
KC_NO, KC_ESC, GAMEPAD, KC_1, KC_2, KC_3, KC_4,
|
KC_NO, KC_ESC, _______, KC_1, KC_2, KC_3, KC_4,
|
||||||
MEDIA, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T,
|
TT_MDIA, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T,
|
||||||
KC_Z, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G,
|
KC_Z, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G,
|
||||||
KC_Y, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B,
|
KC_Y, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B,
|
||||||
KC_F1, KC_U, KC_I, KC_Y, KC_V, KC_SPC, KC_V
|
KC_F1, KC_U, KC_I, KC_Y, KC_V, KC_SPC, KC_V
|
||||||
),
|
),
|
||||||
|
|
||||||
[_MEDIA] = LAYOUT_ortho_5x7(
|
[_MEDIA] = LAYOUT_ortho_5x7(
|
||||||
KC_MAKE, KC_RESET,MU_TOG, AU_ON, AU_OFF, CK_TOGG, RGB_SAD,
|
KC_MAKE, RESET, MU_TOG, AU_ON, AU_OFF, CK_TOGG, RGB_SAD,
|
||||||
MEDIA, EEP_RST, KC_RGB_T,RGB_M_P, RGB_M_B, RGB_M_R, RGB_SAI,
|
_______, EEP_RST, KC_RGB_T,RGB_M_P, RGB_M_B, RGB_M_R, RGB_SAI,
|
||||||
RGB_TOG, RGB_MOD, RGB_RMOD,RGB_M_SW,RGB_M_SN,RGB_M_K, RGB_HUD,
|
RGB_TOG, RGB_MOD, RGB_RMOD,RGB_M_SW,RGB_M_SN,RGB_M_K, RGB_HUD,
|
||||||
KC_MPLY, KC_MPRV, KC_MNXT, RGB_M_X, RGB_M_G, RGB_M_P, RGB_HUI,
|
KC_MPLY, KC_MPRV, KC_MNXT, RGB_M_X, RGB_M_G, RGB_M_P, RGB_HUI,
|
||||||
KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI
|
KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI
|
||||||
|
|
|
@ -20,8 +20,6 @@
|
||||||
|
|
||||||
#ifdef OLED_DRIVER_ENABLE
|
#ifdef OLED_DRIVER_ENABLE
|
||||||
# define OLED_DISPLAY_128X64
|
# define OLED_DISPLAY_128X64
|
||||||
# define OLED_FONT_H "font_gmk_bad.h"
|
|
||||||
# define OLED_DISABLE_TIMEOUT
|
|
||||||
# define OLED_SCROLL_TIMEOUT_RIGHT 60000
|
# define OLED_SCROLL_TIMEOUT_RIGHT 60000
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -31,15 +31,16 @@ uint8_t is_master;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// clang-format off
|
// clang-format off
|
||||||
|
#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
|
||||||
#define LAYOUT_kyria_base( \
|
#define LAYOUT_kyria_base( \
|
||||||
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
|
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
|
||||||
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
|
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
|
||||||
K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
|
K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
|
||||||
) \
|
) \
|
||||||
LAYOUT_wrapper( \
|
LAYOUT_wrapper( \
|
||||||
KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_MINS, \
|
KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_MINS, \
|
||||||
LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \
|
LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(K1B), \
|
||||||
OS_LSFT, CTL_T(K21), K22, K23, K24, K25, TG(_GAMEPAD), MEH(KC_MINS), TG(_DIABLO), KC_CAPS, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \
|
OS_LSFT, CTL_T(K21), K22, K23, K24, K25, TG_GAME, MEH(KC_MINS), TG_DBLO, KC_CAPS, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \
|
||||||
KC_MUTE, OS_LALT, KC_GRV, KC_SPC, BK_LWER, DL_RAIS, KC_ENT, OS_RGUI, UC(0x03A8), UC(0x2E2E) \
|
KC_MUTE, OS_LALT, KC_GRV, KC_SPC, BK_LWER, DL_RAIS, KC_ENT, OS_RGUI, UC(0x03A8), UC(0x2E2E) \
|
||||||
)
|
)
|
||||||
/* Re-pass though to allow templates to be used */
|
/* Re-pass though to allow templates to be used */
|
||||||
|
@ -112,7 +113,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
[_DIABLO] = LAYOUT_wrapper(
|
[_DIABLO] = LAYOUT_wrapper(
|
||||||
KC_ESC, KC_S, KC_I, KC_F, KC_M, KC_T, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO,
|
KC_ESC, KC_S, KC_I, KC_F, KC_M, KC_T, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO,
|
||||||
KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_G, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_G, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||||
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,
|
KC_LCTL, KC_D3_1, KC_D3_2, KC_D3_3, KC_D3_4, KC_Z, KC_J, KC_L, TG_DBLO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||||
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
|
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
|
||||||
),
|
),
|
||||||
[_LOWER] = LAYOUT_wrapper(
|
[_LOWER] = LAYOUT_wrapper(
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays
|
OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays
|
||||||
ENCODER_ENABLE = yes # ENables the use of one or more encoders
|
ENCODER_ENABLE = yes # ENables the use of one or more encoders
|
||||||
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||||
RGBLIGHT_STARTUP_ANIMATION = yes
|
RGBLIGHT_STARTUP_ANIMATION = no
|
||||||
|
|
||||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
||||||
MOUSEKEY_ENABLE = no # Mouse keys
|
MOUSEKEY_ENABLE = no # Mouse keys
|
||||||
|
|
|
@ -27,13 +27,13 @@ enum more_custom_keycodes { KC_SWAP_NUM = NEW_SAFE_RANGE };
|
||||||
|
|
||||||
#define LAYOUT_moonlander_base( \
|
#define LAYOUT_moonlander_base( \
|
||||||
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
|
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
|
||||||
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
|
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
|
||||||
K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
|
K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
|
||||||
) \
|
) \
|
||||||
LAYOUT_moonlander_wrapper( \
|
LAYOUT_moonlander_wrapper( \
|
||||||
KC_ESC, ________________NUMBER_LEFT________________, UC_FLIP, UC_TABL, ________________NUMBER_RIGHT_______________, KC_MINS, \
|
KC_ESC, ________________NUMBER_LEFT________________, UC_FLIP, UC_TABL, ________________NUMBER_RIGHT_______________, KC_MINS, \
|
||||||
KC_TAB, K01, K02, K03, K04, K05, TG(_DIABLO),TG(_DIABLO), K06, K07, K08, K09, K0A, KC_BSLS, \
|
KC_TAB, K01, K02, K03, K04, K05, TG_DBLO,TG_DBLO, K06, K07, K08, K09, K0A, KC_BSLS, \
|
||||||
KC_C1R3, K11, K12, K13, K14, K15, TG(_GAMEPAD),TG(_GAMEPAD), K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \
|
KC_C1R3, K11, K12, K13, K14, K15, TG_GAME,TG_GAME, K16, K17, K18, K19, K1A, RALT_T(K1B), \
|
||||||
KC_MLSF, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A),KC_MRSF, \
|
KC_MLSF, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A),KC_MRSF, \
|
||||||
KC_GRV, OS_MEH, OS_HYPR, KC_LBRC, KC_RBRC, KC_NO, KC_DEL, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, UC(0x2E2E), \
|
KC_GRV, OS_MEH, OS_HYPR, KC_LBRC, KC_RBRC, KC_NO, KC_DEL, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, UC(0x2E2E), \
|
||||||
KC_SPC, BK_LWER, OS_LALT, OS_RGUI, DL_RAIS, KC_ENT \
|
KC_SPC, BK_LWER, OS_LALT, OS_RGUI, DL_RAIS, KC_ENT \
|
||||||
|
@ -105,7 +105,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
[_GAMEPAD] = LAYOUT_moonlander_wrapper(
|
[_GAMEPAD] = LAYOUT_moonlander_wrapper(
|
||||||
KC_ESC, KC_NO, KC_1, KC_2, KC_3, KC_4, HYPR(KC_Q), KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO,
|
KC_ESC, KC_NO, KC_1, KC_2, KC_3, KC_4, HYPR(KC_Q), KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO,
|
||||||
KC_F1, KC_K, KC_Q, KC_W, KC_E, KC_R, KC_T, UC_SHRG, UC_DISA, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
KC_F1, KC_K, KC_Q, KC_W, KC_E, KC_R, KC_T, UC_SHRG, UC_DISA, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||||
KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F, KC_TRNS, TG(_GAMEPAD), KC_I, KC_O, KC_NO, KC_NO, KC_NO, KC_NO,
|
KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F, KC_TRNS, TG_GAME, KC_I, KC_O, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||||
KC_LCTL, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_N, KC_M, KC_NO, KC_NO, KC_NO, KC_NO,
|
KC_LCTL, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_N, KC_M, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||||
KC_GRV, KC_U, KC_I, KC_Y, KC_T, KC_PSCR, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO,
|
KC_GRV, KC_U, KC_I, KC_Y, KC_T, KC_PSCR, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO,
|
||||||
KC_V, KC_SPC, KC_H, KC_NO, KC_NO, KC_SWAP_NUM
|
KC_V, KC_SPC, KC_H, KC_NO, KC_NO, KC_SWAP_NUM
|
||||||
|
|
|
@ -8,14 +8,15 @@
|
||||||
* of use. K## is a placeholder to pass through the individual keycodes
|
* of use. K## is a placeholder to pass through the individual keycodes
|
||||||
*/
|
*/
|
||||||
// clang-format off
|
// clang-format off
|
||||||
|
#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
|
||||||
#define LAYOUT_orthodox_base( \
|
#define LAYOUT_orthodox_base( \
|
||||||
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
|
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
|
||||||
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
|
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
|
||||||
K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
|
K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
|
||||||
) \
|
) \
|
||||||
LAYOUT_wrapper( \
|
LAYOUT_wrapper( \
|
||||||
KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_BSPC, \
|
KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_BSPC, \
|
||||||
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), \
|
LALT_T(KC_TAB), K11, K12, K13, K14, K15, OS_LALT, OS_LGUI, OS_RALT, RAISE, K16, K17, K18, K19, K1A, RALT_T(K1B), \
|
||||||
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 \
|
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 \
|
||||||
)
|
)
|
||||||
#define LAYOUT_orthodox_base_wrapper(...) LAYOUT_orthodox_base(__VA_ARGS__)
|
#define LAYOUT_orthodox_base_wrapper(...) LAYOUT_orthodox_base(__VA_ARGS__)
|
||||||
|
|
32
keyboards/splitkb/zima/keymaps/drashna/config.h
Normal file
32
keyboards/splitkb/zima/keymaps/drashna/config.h
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
/* Copyright 2019 Thomas Baart
|
||||||
|
* Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#define OLED_FONT_H "users/drashna/drashna_font.h"
|
||||||
|
#define OLED_UPDATE_INTERVAL 15
|
||||||
|
#define OLED_DISABLE_TIMEOUT
|
||||||
|
#define OLED_FONT_END 255
|
||||||
|
// # define OLED_FONT_5X5
|
||||||
|
// # define OLED_FONT_AZTECH
|
||||||
|
// # define OLED_FONT_BMPLAIN
|
||||||
|
# define OLED_FONT_SUPER_DIGG
|
||||||
|
// # define OLED_LOGO_GMK_BAD
|
||||||
|
// # define OLED_LOGO_HUE_MANITEE
|
||||||
|
// # define OLED_LOGO_CORNE
|
||||||
|
// # define OLED_LOGO_GOTHAM
|
||||||
|
#define OLED_LOGO_SCIFI
|
140
keyboards/splitkb/zima/keymaps/drashna/keymap.c
Normal file
140
keyboards/splitkb/zima/keymaps/drashna/keymap.c
Normal file
|
@ -0,0 +1,140 @@
|
||||||
|
/* Copyright 2019 Thomas Baart
|
||||||
|
* Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#ifdef HAPTIC_ENABLE
|
||||||
|
# include "haptic.h"
|
||||||
|
extern haptic_config_t haptic_config;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[0] = LAYOUT_ortho_4x3( /* Base */
|
||||||
|
KC_MUTE, TG(1), TG(2),
|
||||||
|
KC_P7, KC_P8, KC_P9,
|
||||||
|
KC_P4, KC_P5, KC_P6,
|
||||||
|
KC_P1, KC_P2, KC_P3
|
||||||
|
),
|
||||||
|
[1] = LAYOUT_ortho_4x3( /* Layer 1 */
|
||||||
|
RESET, _______, XXXXXXX,
|
||||||
|
AU_ON, AU_OFF, XXXXXXX,
|
||||||
|
CK_TOGG, XXXXXXX, CK_UP,
|
||||||
|
CK_RST, XXXXXXX, CK_DOWN
|
||||||
|
),
|
||||||
|
[2] = LAYOUT_ortho_4x3( /* Layer 2*/
|
||||||
|
RGB_TOG, RGB_MOD, _______,
|
||||||
|
RGB_HUI, RGB_SAI, RGB_VAI,
|
||||||
|
RGB_HUD, RGB_SAD, RGB_VAD,
|
||||||
|
HPT_TOG, HPT_FBK, HPT_CONT
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static bool is_asleep = false;
|
||||||
|
static uint32_t oled_timer;
|
||||||
|
|
||||||
|
void render_oled_logo(void) {
|
||||||
|
// clang-format off
|
||||||
|
static const char PROGMEM qmk_logo[] = {
|
||||||
|
0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
|
||||||
|
0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
|
||||||
|
0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0};
|
||||||
|
// clang-format on
|
||||||
|
oled_write_ln_P(qmk_logo, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
void render_user_status(void) {
|
||||||
|
static const char PROGMEM audio_status[2][3] = {{0xE0, 0xE1, 0}, {0xE2, 0xE3, 0}};
|
||||||
|
oled_write_P(audio_status[is_audio_on()], false);
|
||||||
|
static const char PROGMEM audio_clicky_status[2][3] = {{0xF4, 0xF5, 0}, {0xF6, 0xF7, 0}};
|
||||||
|
oled_write_P(audio_clicky_status[is_clicky_on() && is_audio_on()], false);
|
||||||
|
static const char PROGMEM rgb_layer_status[2][3] = {{0xEE, 0xEF, 0}, {0xF0, 0xF1, 0}};
|
||||||
|
oled_write_P(rgb_layer_status[rgblight_is_enabled()], false);
|
||||||
|
static const char PROGMEM nukem_good[2][3] = {{0xF8, 0xF9, 0}, {0xF6, 0xF7, 0}};
|
||||||
|
oled_write_P(nukem_good[0], haptic_config.enable);
|
||||||
|
}
|
||||||
|
|
||||||
|
void keyboard_post_init_user(void) {
|
||||||
|
oled_scroll_set_speed(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void oled_task_user(void) {
|
||||||
|
if (is_asleep) {
|
||||||
|
oled_off();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (timer_elapsed32(oled_timer) < 30000) {
|
||||||
|
oled_on();
|
||||||
|
oled_scroll_off();
|
||||||
|
oled_write_P(PSTR("SplitKB's Zima"), false);
|
||||||
|
char layer[2] = {0};
|
||||||
|
snprintf(layer, sizeof(layer), "%d", get_highest_layer(layer_state));
|
||||||
|
oled_write_P(PSTR(" L:"), false);
|
||||||
|
oled_write_ln(layer, false);
|
||||||
|
oled_write_ln_P(PSTR("--------------"), false);
|
||||||
|
if (rgblight_is_enabled()) {
|
||||||
|
oled_write_P(PSTR("HSV: "), false);
|
||||||
|
char rgbs[14];
|
||||||
|
snprintf(rgbs, sizeof(rgbs), "%3d, %3d, %3d", rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val());
|
||||||
|
oled_write_ln(rgbs, false);
|
||||||
|
} else {
|
||||||
|
oled_write_ln_P(PSTR("RGB LIGHT DISABLED"), false);
|
||||||
|
}
|
||||||
|
render_user_status();
|
||||||
|
} else {
|
||||||
|
if (timer_elapsed32(oled_timer) < 120000) {
|
||||||
|
oled_on();
|
||||||
|
render_oled_logo();
|
||||||
|
oled_scroll_right();
|
||||||
|
} else {
|
||||||
|
oled_off();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void suspend_power_down_user(void) {
|
||||||
|
is_asleep = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void suspend_wakeup_init_user(void) {
|
||||||
|
is_asleep = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t* record) {
|
||||||
|
oled_timer = timer_read32();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void encoder_update_user(uint8_t index, bool clockwise) {
|
||||||
|
if (clockwise) {
|
||||||
|
tap_code16(KC_VOLU);
|
||||||
|
} else {
|
||||||
|
tap_code16(KC_VOLD);
|
||||||
|
}
|
||||||
|
# ifdef OLED_DRIVER_ENABLE
|
||||||
|
oled_timer = timer_read32();
|
||||||
|
# endif
|
||||||
|
# if defined(AUDIO_ENABLE) && defined(AUDIO_CLICKY)
|
||||||
|
if (is_audio_on() && is_clicky_on()) clicky_play();
|
||||||
|
# endif
|
||||||
|
# ifdef HAPTIC_ENABLE
|
||||||
|
if (haptic_config.enable) haptic_play();
|
||||||
|
# endif
|
||||||
|
}
|
7
keyboards/splitkb/zima/keymaps/drashna/readme.md
Normal file
7
keyboards/splitkb/zima/keymaps/drashna/readme.md
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
# The default keymap for zima
|
||||||
|
|
||||||
|
This includes support for the OLED and Encoder. However, the actual code is found in the `zima.c` file. This can be replaced by adding your own `oled_task_user(void)` and `encoder_update_user` functinons. These will replace what is in the keyboard, and allow you to customize these features.
|
||||||
|
|
||||||
|
The reason that this is done this way, is so that this functionality will work on the [QMK Configurator](https://config.qmk.fm/#/splitkb/zima/LAYOUT_ortho_4x3)
|
||||||
|
|
||||||
|
For reference, the code used for the oled and encoder defaults is in [zima.c](https://github.com/qmk/qmk_firmware/tree/master/keyboards/splitkb/zima/zima.c).
|
2
keyboards/splitkb/zima/keymaps/drashna/rules.mk
Normal file
2
keyboards/splitkb/zima/keymaps/drashna/rules.mk
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
# is intentional. won't compile under size, otherwise.
|
||||||
|
USER_NAME := not_drashna
|
|
@ -40,16 +40,19 @@ bool skip_leds = false;
|
||||||
* ease of use. K## is a placeholder to pass through the individual keycodes
|
* ease of use. K## is a placeholder to pass through the individual keycodes
|
||||||
*/
|
*/
|
||||||
// clang-format off
|
// clang-format off
|
||||||
|
#define LAYOUT_ergodox_wrapper(...) LAYOUT_ergodox(__VA_ARGS__)
|
||||||
|
#define LAYOUT_ergodox_pretty_wrapper(...) LAYOUT_ergodox_pretty(__VA_ARGS__)
|
||||||
|
|
||||||
#define LAYOUT_ergodox_pretty_base( \
|
#define LAYOUT_ergodox_pretty_base( \
|
||||||
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
|
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
|
||||||
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
|
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
|
||||||
K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
|
K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
|
||||||
) \
|
) \
|
||||||
LAYOUT_ergodox_pretty_wrapper( \
|
LAYOUT_ergodox_pretty_wrapper( \
|
||||||
KC_ESC, ________________NUMBER_LEFT________________, UC_FLIP, UC_TABL, ________________NUMBER_RIGHT_______________, KC_MINS, \
|
KC_ESC, ________________NUMBER_LEFT________________, UC_FLIP, UC_TABL, ________________NUMBER_RIGHT_______________, KC_MINS, \
|
||||||
LALT_T(KC_TAB), K01, K02, K03, K04, K05, TG(_DIABLO), TG(_DIABLO), K06, K07, K08, K09, K0A, KC_BSLS, \
|
LALT_T(KC_TAB), K01, K02, K03, K04, K05, TG_DBLO, TG_DBLO, K06, K07, K08, K09, K0A, KC_BSLS, \
|
||||||
KC_C1R3, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \
|
KC_C1R3, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(K1B), \
|
||||||
KC_MLSF, CTL_T(K21), K22, K23, K24, K25, TG(_GAMEPAD), TG(_GAMEPAD), K26, K27, K28, K29, RCTL_T(K2A), KC_MRSF, \
|
KC_MLSF, CTL_T(K21), K22, K23, K24, K25, TG_GAME, TG_GAME, K26, K27, K28, K29, RCTL_T(K2A), KC_MRSF, \
|
||||||
KC_GRV, OS_MEH, OS_HYPR, KC_LBRC, KC_RBRC, KC_BTN1, KC_BTN3, KC_BTN2, PM_SCROLL, PM_PRECISION, \
|
KC_GRV, OS_MEH, OS_HYPR, KC_LBRC, KC_RBRC, KC_BTN1, KC_BTN3, KC_BTN2, PM_SCROLL, PM_PRECISION, \
|
||||||
OS_LALT, OS_LGUI, OS_RGUI, CTL_T(KC_ESCAPE), \
|
OS_LALT, OS_LGUI, OS_RGUI, CTL_T(KC_ESCAPE), \
|
||||||
KC_APP, KC_MENU, \
|
KC_APP, KC_MENU, \
|
||||||
|
@ -235,7 +238,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
KC_ESC, KC_NO, KC_1, KC_2, KC_3, HYPR(KC_Q), HYPR(KC_GRV), KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO,
|
KC_ESC, KC_NO, KC_1, KC_2, KC_3, HYPR(KC_Q), HYPR(KC_GRV), KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO,
|
||||||
KC_F1, KC_K, KC_Q, KC_W, KC_E, KC_R, KC_T, UC_SHRG, UC_DISA, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
KC_F1, KC_K, KC_Q, KC_W, KC_E, KC_R, KC_T, UC_SHRG, UC_DISA, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||||
KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F, KC_I, KC_O, KC_NO, KC_NO, KC_NO, KC_NO,
|
KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F, KC_I, KC_O, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||||
KC_LCTL, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_TRNS, TG(_GAMEPAD), KC_N, KC_M, KC_NO, KC_NO, KC_NO, KC_NO,
|
KC_LCTL, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_TRNS, TG_GAME, KC_N, KC_M, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||||
KC_GRV, KC_U, KC_I, KC_Y, KC_T, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO,
|
KC_GRV, KC_U, KC_I, KC_Y, KC_T, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO,
|
||||||
KC_O, KC_P, MAGIC_TOGGLE_NKRO, LALT(KC_PSCR),
|
KC_O, KC_P, MAGIC_TOGGLE_NKRO, LALT(KC_PSCR),
|
||||||
KC_LGUI, KC_HYPR,
|
KC_LGUI, KC_HYPR,
|
||||||
|
|
|
@ -50,14 +50,15 @@ enum planck_keycodes {
|
||||||
* of use. K## is a placeholder to pass through the individual keycodes
|
* of use. K## is a placeholder to pass through the individual keycodes
|
||||||
*/
|
*/
|
||||||
// clang-format off
|
// clang-format off
|
||||||
|
#define LAYOUT_ortho_4x12_wrapper(...) LAYOUT_ortho_4x12(__VA_ARGS__)
|
||||||
#define LAYOUT_ortho_4x12_base( \
|
#define LAYOUT_ortho_4x12_base( \
|
||||||
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
|
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
|
||||||
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
|
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
|
||||||
K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
|
K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
|
||||||
) \
|
) \
|
||||||
LAYOUT_ortho_4x12_wrapper( \
|
LAYOUT_ortho_4x12_wrapper( \
|
||||||
KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_DEL, \
|
KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_DEL, \
|
||||||
LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \
|
LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(K1B), \
|
||||||
KC_MLSF, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), KC_ENT, \
|
KC_MLSF, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), KC_ENT, \
|
||||||
BACKLIT, OS_LCTL, OS_LALT, OS_LGUI, PLNK_1, PLNK_2, PLNK_3, PLNK_4, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
|
BACKLIT, OS_LCTL, OS_LALT, OS_LGUI, PLNK_1, PLNK_2, PLNK_3, PLNK_4, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
|
||||||
)
|
)
|
||||||
|
|
|
@ -24,17 +24,17 @@
|
||||||
* of use. K## is a placeholder to pass through the individual keycodes
|
* of use. K## is a placeholder to pass through the individual keycodes
|
||||||
*/
|
*/
|
||||||
// clang-format off
|
// clang-format off
|
||||||
|
#define LAYOUT_ortho_5x12_wrapper(...) LAYOUT_ortho_5x12(__VA_ARGS__)
|
||||||
#define LAYOUT_ortho_5x12_base( \
|
#define LAYOUT_ortho_5x12_base( \
|
||||||
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
|
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
|
||||||
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
|
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
|
||||||
K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, \
|
K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
|
||||||
K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A \
|
|
||||||
) \
|
) \
|
||||||
LAYOUT_ortho_5x12_wrapper( \
|
LAYOUT_ortho_5x12_wrapper( \
|
||||||
KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_BSPC, \
|
KC_ESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_BSPC, \
|
||||||
LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, KC_BSPC, \
|
LALT_T(KC_TAB), K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_BSPC, \
|
||||||
KC_C1R3, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, RALT_T(KC_QUOT), \
|
KC_C1R3, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(K1B), \
|
||||||
KC_MLSF, CTL_T(K31), K32, K33, K34, K35, K36, K37, K38, K39, RCTL_T(K3A), KC_ENT, \
|
KC_MLSF, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), KC_ENT, \
|
||||||
KC_NO, OS_LCTL, OS_LALT, OS_LGUI, SP_LWER, BK_LWER, DL_RAIS, ET_RAIS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
|
KC_NO, OS_LCTL, OS_LALT, OS_LGUI, SP_LWER, BK_LWER, DL_RAIS, ET_RAIS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -44,28 +44,24 @@
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
[_QWERTY] = LAYOUT_ortho_5x12_base_wrapper(
|
[_QWERTY] = LAYOUT_ortho_5x12_base_wrapper(
|
||||||
________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________,
|
|
||||||
_________________QWERTY_L1_________________, _________________QWERTY_R1_________________,
|
_________________QWERTY_L1_________________, _________________QWERTY_R1_________________,
|
||||||
_________________QWERTY_L2_________________, _________________QWERTY_R2_________________,
|
_________________QWERTY_L2_________________, _________________QWERTY_R2_________________,
|
||||||
_________________QWERTY_L3_________________, _________________QWERTY_R3_________________
|
_________________QWERTY_L3_________________, _________________QWERTY_R3_________________
|
||||||
),
|
),
|
||||||
|
|
||||||
[_COLEMAK] = LAYOUT_ortho_5x12_base_wrapper(
|
[_COLEMAK] = LAYOUT_ortho_5x12_base_wrapper(
|
||||||
________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________,
|
|
||||||
_________________COLEMAK_L1________________, _________________COLEMAK_R1________________,
|
_________________COLEMAK_L1________________, _________________COLEMAK_R1________________,
|
||||||
_________________COLEMAK_L2________________, _________________COLEMAK_R2________________,
|
_________________COLEMAK_L2________________, _________________COLEMAK_R2________________,
|
||||||
_________________COLEMAK_L3________________, _________________COLEMAK_R3________________
|
_________________COLEMAK_L3________________, _________________COLEMAK_R3________________
|
||||||
),
|
),
|
||||||
|
|
||||||
[_DVORAK] = LAYOUT_ortho_5x12_base_wrapper(
|
[_DVORAK] = LAYOUT_ortho_5x12_base_wrapper(
|
||||||
________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________,
|
|
||||||
_________________DVORAK_L1_________________, _________________DVORAK_R1_________________,
|
_________________DVORAK_L1_________________, _________________DVORAK_R1_________________,
|
||||||
_________________DVORAK_L2_________________, _________________DVORAK_R2_________________,
|
_________________DVORAK_L2_________________, _________________DVORAK_R2_________________,
|
||||||
_________________DVORAK_L3_________________, _________________DVORAK_R3_________________
|
_________________DVORAK_L3_________________, _________________DVORAK_R3_________________
|
||||||
),
|
),
|
||||||
|
|
||||||
[_WORKMAN] = LAYOUT_ortho_5x12_base_wrapper(
|
[_WORKMAN] = LAYOUT_ortho_5x12_base_wrapper(
|
||||||
________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________,
|
|
||||||
_________________WORKMAN_L1________________, _________________WORKMAN_R1________________,
|
_________________WORKMAN_L1________________, _________________WORKMAN_R1________________,
|
||||||
_________________WORKMAN_L2________________, _________________WORKMAN_R2________________,
|
_________________WORKMAN_L2________________, _________________WORKMAN_R2________________,
|
||||||
_________________WORKMAN_L3________________, _________________WORKMAN_R3________________
|
_________________WORKMAN_L3________________, _________________WORKMAN_R3________________
|
||||||
|
|
|
@ -9,6 +9,8 @@ NKRO_ENABLE = yes
|
||||||
ifeq ($(strip $(KEYBOARD)), fractal)
|
ifeq ($(strip $(KEYBOARD)), fractal)
|
||||||
RGB_MATRIX_ENABLE = no
|
RGB_MATRIX_ENABLE = no
|
||||||
AUDIO_ENABLE = yes
|
AUDIO_ENABLE = yes
|
||||||
|
AUDIO_SUPPORTED = yes
|
||||||
|
RGBLIGHT_SUPPORTED = yes
|
||||||
RGBLIGHT_ENABLE = yes
|
RGBLIGHT_ENABLE = yes
|
||||||
RGBLIGHT_TWINKLE = yes
|
RGBLIGHT_TWINKLE = yes
|
||||||
RGBLIGHT_STARTUP_ANIMATION = yes
|
RGBLIGHT_STARTUP_ANIMATION = yes
|
||||||
|
|
9
layouts/community/split_3x6_3/drashna/chconf.h
Normal file
9
layouts/community/split_3x6_3/drashna/chconf.h
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
|
||||||
|
#define CH_CFG_ST_RESOLUTION 16
|
||||||
|
#define CH_CFG_ST_FREQUENCY 10000
|
||||||
|
|
||||||
|
#if __has_include("platforms/chibios/common/configs/chconf.h")
|
||||||
|
# include_next "platforms/chibios/common/configs/chconf.h"
|
||||||
|
#else
|
||||||
|
# include_next "chconf.h"
|
||||||
|
#endif
|
|
@ -19,8 +19,10 @@
|
||||||
/* Select hand configuration */
|
/* Select hand configuration */
|
||||||
|
|
||||||
// #define MASTER_LEFT
|
// #define MASTER_LEFT
|
||||||
#define MASTER_RIGHT
|
// #define MASTER_RIGHT
|
||||||
// #define EE_HAND
|
#define EE_HANDS
|
||||||
|
#define SPLIT_MODS_ENABLE
|
||||||
|
|
||||||
#undef USE_I2C
|
#undef USE_I2C
|
||||||
#undef SSD1306OLED
|
#undef SSD1306OLED
|
||||||
|
|
||||||
|
@ -40,7 +42,7 @@
|
||||||
#ifdef RGB_MATRIX_ENABLE
|
#ifdef RGB_MATRIX_ENABLE
|
||||||
# ifdef CONVERT_TO_PROTON_C
|
# ifdef CONVERT_TO_PROTON_C
|
||||||
# undef RGB_DI_PIN
|
# undef RGB_DI_PIN
|
||||||
# define RGB_DI_PIN PAL_LINE(GPIOA, 3)
|
# define RGB_DI_PIN A3
|
||||||
# endif
|
# endif
|
||||||
# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
|
# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
|
||||||
// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
|
// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
|
||||||
|
@ -56,24 +58,23 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONVERT_TO_PROTON_C
|
#ifdef CONVERT_TO_PROTON_C
|
||||||
# define WS2812_PWM_DRIVER PWMD15 // default: PWMD2
|
# define WS2812_PWM_DRIVER PWMD2 // default: PWMD2
|
||||||
# define WS2812_PWM_CHANNEL 2 // default: 2
|
# define WS2812_PWM_CHANNEL 4 // default: 2
|
||||||
# define WS2812_PWM_PAL_MODE 9 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 2
|
# define WS2812_PWM_PAL_MODE 1 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 2
|
||||||
# define WS2812_DMA_STREAM STM32_DMA1_STREAM5 // DMA Stream for TIMx_UP, see the respective reference manual for the appropriate values for your MCU.
|
# define WS2812_DMA_STREAM STM32_DMA1_STREAM2 // DMA Stream for TIMx_UP, see the respective reference manual for the appropriate values for your MCU.
|
||||||
# define WS2812_DMA_CHANNEL 5 // DMA Channel for TIMx_UP, see the respective reference manual for the appropriate values for your MCU.
|
# define WS2812_DMA_CHANNEL 2 // DMA Channel for TIMx_UP, see the respective reference manual for the appropriate values for your MCU.
|
||||||
# define WS2812_DMAMUX_ID STM32_DMAMUX1_TIM15_UP // DMAMUX configuration for TIMx_UP -- only required if your MCU has a DMAMUX peripheral, see the respective reference manual for the appropriate values for your MCU.
|
# define WS2812_DMAMUX_ID STM32_DMAMUX1_TIM2_UP // DMAMUX configuration for TIMx_UP -- only required if your MCU has a DMAMUX peripheral, see the respective reference manual for the appropriate values for your MCU.
|
||||||
|
|
||||||
# undef SOFT_SERIAL_PIN
|
# undef SOFT_SERIAL_PIN
|
||||||
# define SOFT_SERIAL_PIN D3
|
# define SOFT_SERIAL_PIN D3
|
||||||
# define SERIAL_USART_DRIVER SD1 // USART driver of TX pin. default: SD1
|
# define SERIAL_USART_DRIVER SD1 // USART driver of TX pin. default: SD1
|
||||||
# define SERIAL_USART_TX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7
|
# define SERIAL_USART_TX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7
|
||||||
|
|
||||||
|
|
||||||
// #define INIT_EE_HANDS_LEFT
|
// #define INIT_EE_HANDS_LEFT
|
||||||
// #define INIT_EE_HANDS_RIGHT
|
// #define INIT_EE_HANDS_RIGHT
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef AUDIO_ENABLE
|
#if defined(AUDIO_ENABLE) && !defined(CONVERT_TO_PROTON_C)
|
||||||
# define B6_AUDIO
|
# define B6_AUDIO
|
||||||
# define NO_MUSIC_MODE
|
# define NO_MUSIC_MODE
|
||||||
#endif
|
#endif
|
||||||
|
@ -88,9 +89,5 @@
|
||||||
#else
|
#else
|
||||||
# define PRODUCT Drashna Hacked Corne Keyboard
|
# define PRODUCT Drashna Hacked Corne Keyboard
|
||||||
#endif
|
#endif
|
||||||
#define OLED_FONT_H "layouts/community/split_3x6_3/drashna/glcdfont.c"
|
|
||||||
// #define OLED_FONT_WIDTH 5
|
|
||||||
// #define OLED_FONT_HEIGHT 7
|
|
||||||
|
|
||||||
#define OLED_DISABLE_TIMEOUT
|
|
||||||
#define TAPPING_TERM_PER_KEY
|
#define TAPPING_TERM_PER_KEY
|
||||||
|
|
|
@ -27,14 +27,15 @@ enum crkbd_keycodes { RGBRST = NEW_SAFE_RANGE };
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// clang-format off
|
// clang-format off
|
||||||
|
#define LAYOUT_split_3x6_3_wrapper(...) LAYOUT_split_3x6_3(__VA_ARGS__)
|
||||||
#define LAYOUT_split_3x6_3_base( \
|
#define LAYOUT_split_3x6_3_base( \
|
||||||
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
|
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
|
||||||
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
|
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
|
||||||
K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
|
K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
|
||||||
) \
|
) \
|
||||||
LAYOUT_split_3x6_3_wrapper( \
|
LAYOUT_split_3x6_3_wrapper( \
|
||||||
KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_MINS, \
|
KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_MINS, \
|
||||||
ALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \
|
ALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(K1B), \
|
||||||
OS_LSFT, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \
|
OS_LSFT, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \
|
||||||
RGB_MOD, KC_SPC, BK_LWER, DL_RAIS, KC_ENT, OS_RGUI \
|
RGB_MOD, KC_SPC, BK_LWER, DL_RAIS, KC_ENT, OS_RGUI \
|
||||||
)
|
)
|
||||||
|
@ -121,11 +122,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
#ifdef OLED_DRIVER_ENABLE
|
#ifdef OLED_DRIVER_ENABLE
|
||||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
||||||
if (is_keyboard_master()) {
|
|
||||||
return OLED_ROTATION_270;
|
return OLED_ROTATION_270;
|
||||||
} else {
|
|
||||||
return rotation;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -19,14 +19,18 @@
|
||||||
|
|
||||||
// #undef STM32_HSE_ENABLED
|
// #undef STM32_HSE_ENABLED
|
||||||
// #define STM32_HSE_ENABLED FALSE
|
// #define STM32_HSE_ENABLED FALSE
|
||||||
#undef STM32_GPT_USE_TIM15
|
// #undef STM32_GPT_USE_TIM15
|
||||||
#define STM32_GPT_USE_TIM15 FALSE
|
// #define STM32_GPT_USE_TIM15 FALSE
|
||||||
|
|
||||||
#undef STM32_PWM_USE_TIM15
|
#undef STM32_PWM_USE_TIM2
|
||||||
#define STM32_PWM_USE_TIM15 TRUE
|
#define STM32_PWM_USE_TIM2 TRUE
|
||||||
|
#undef STM32_PWM_USE_TIM3
|
||||||
|
#define STM32_PWM_USE_TIM3 FALSE
|
||||||
|
|
||||||
#undef STM32_SERIAL_USE_USART1
|
#undef STM32_SERIAL_USE_USART1
|
||||||
#define STM32_SERIAL_USE_USART1 TRUE
|
#define STM32_SERIAL_USE_USART1 TRUE
|
||||||
|
|
||||||
#undef STM32_PWM_TIM15_IRQ_PRIORITY
|
// #undef STM32_PWM_TIM15_IRQ_PRIORITY
|
||||||
#define STM32_PWM_TIM15_IRQ_PRIORITY 16
|
// #define STM32_PWM_TIM15_IRQ_PRIORITY 16
|
||||||
|
#undef STM32_ST_USE_TIMER
|
||||||
|
#define STM32_ST_USE_TIMER 3
|
||||||
|
|
|
@ -29,6 +29,6 @@ endif
|
||||||
|
|
||||||
ifeq ($(strip $(CTPC)), yes)
|
ifeq ($(strip $(CTPC)), yes)
|
||||||
HAPTIC_ENABLE = no
|
HAPTIC_ENABLE = no
|
||||||
WS2812_DRIVER = pwm
|
WS2812_DRIVER = pwm # won't work without a patch to the ctpc mk file
|
||||||
SERIAL_DRIVER = usart
|
SERIAL_DRIVER = usart
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -22,8 +22,11 @@
|
||||||
/* Set Polling rate to 1000Hz */
|
/* Set Polling rate to 1000Hz */
|
||||||
#define USB_POLLING_INTERVAL_MS 1
|
#define USB_POLLING_INTERVAL_MS 1
|
||||||
|
|
||||||
#if defined(SPLIT_KEYBOAD)
|
#if defined(SPLIT_KEYBOARD)
|
||||||
# define SPLIT_MODS_ENABLE
|
# define SPLIT_MODS_ENABLE
|
||||||
|
// # define SPLIT_TRANSPORT_MIRROR
|
||||||
|
# define SERIAL_USE_MULTI_TRANSACTION
|
||||||
|
// # define SPLIT_NUM_TRANSACTIONS_KB 2
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef AUDIO_ENABLE
|
#ifdef AUDIO_ENABLE
|
||||||
|
@ -111,6 +114,18 @@
|
||||||
# else
|
# else
|
||||||
# define OLED_UPDATE_INTERVAL 15
|
# define OLED_UPDATE_INTERVAL 15
|
||||||
# endif
|
# endif
|
||||||
|
# define OLED_DISABLE_TIMEOUT
|
||||||
|
# define OLED_FONT_H "drashna_font.h"
|
||||||
|
# define OLED_FONT_END 255
|
||||||
|
// # define OLED_FONT_5X5
|
||||||
|
// # define OLED_FONT_AZTECH
|
||||||
|
// # define OLED_FONT_BMPLAIN
|
||||||
|
// # define OLED_FONT_SUPER_DIGG
|
||||||
|
// # define OLED_LOGO_GMK_BAD
|
||||||
|
// # define OLED_LOGO_HUE_MANITEE
|
||||||
|
// # define OLED_LOGO_CORNE
|
||||||
|
// # define OLED_LOGO_GOTHAM
|
||||||
|
# define OLED_LOGO_SCIFI
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef ONESHOT_TAP_TOGGLE
|
#ifndef ONESHOT_TAP_TOGGLE
|
||||||
|
@ -162,3 +177,22 @@
|
||||||
#ifdef LOCKING_RESYNC_ENABLE
|
#ifdef LOCKING_RESYNC_ENABLE
|
||||||
# undef LOCKING_RESYNC_ENABLE
|
# undef LOCKING_RESYNC_ENABLE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONVERT_TO_PROTON_C
|
||||||
|
// pins that are available but not present on Pro Micro
|
||||||
|
# define A3 PAL_LINE(GPIOA, 3)
|
||||||
|
# define A4 PAL_LINE(GPIOA, 4)
|
||||||
|
# define A5 PAL_LINE(GPIOA, 5)
|
||||||
|
# define A6 PAL_LINE(GPIOA, 6)
|
||||||
|
# define A7 PAL_LINE(GPIOA, 7)
|
||||||
|
# define A8 PAL_LINE(GPIOA, 8)
|
||||||
|
# define A13 PAL_LINE(GPIOA, 13)
|
||||||
|
# define A14 PAL_LINE(GPIOA, 14)
|
||||||
|
# define A15 PAL_LINE(GPIOA, 15)
|
||||||
|
# define B10 PAL_LINE(GPIOB, 10)
|
||||||
|
# define B11 PAL_LINE(GPIOB, 11)
|
||||||
|
# define B12 PAL_LINE(GPIOB, 12)
|
||||||
|
# define C13 PAL_LINE(GPIOC, 13)
|
||||||
|
# define C14 PAL_LINE(GPIOC, 14)
|
||||||
|
# define C15 PAL_LINE(GPIOC, 15)
|
||||||
|
#endif
|
||||||
|
|
|
@ -111,7 +111,12 @@ void shutdown_user(void) {
|
||||||
|
|
||||||
__attribute__((weak)) void suspend_power_down_keymap(void) {}
|
__attribute__((weak)) void suspend_power_down_keymap(void) {}
|
||||||
|
|
||||||
void suspend_power_down_user(void) { suspend_power_down_keymap(); }
|
void suspend_power_down_user(void) {
|
||||||
|
#ifdef OLED_DRIVER_ENABLE
|
||||||
|
oled_off();
|
||||||
|
#endif
|
||||||
|
suspend_power_down_keymap();
|
||||||
|
}
|
||||||
|
|
||||||
__attribute__((weak)) void suspend_wakeup_init_keymap(void) {}
|
__attribute__((weak)) void suspend_wakeup_init_keymap(void) {}
|
||||||
|
|
||||||
|
@ -146,17 +151,34 @@ void matrix_scan_user(void) {
|
||||||
matrix_scan_keymap();
|
matrix_scan_keymap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
float doom_song[][2] = SONG(E1M1_DOOM);
|
||||||
|
#endif
|
||||||
|
|
||||||
__attribute__((weak)) layer_state_t layer_state_set_keymap(layer_state_t state) { return state; }
|
__attribute__((weak)) layer_state_t layer_state_set_keymap(layer_state_t state) { return state; }
|
||||||
|
|
||||||
// on layer change, no matter where the change was initiated
|
// on layer change, no matter where the change was initiated
|
||||||
// Then runs keymap's layer change check
|
// Then runs keymap's layer change check
|
||||||
layer_state_t layer_state_set_user(layer_state_t state) {
|
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||||
if (!is_keyboard_master()) { return state; }
|
if (!is_keyboard_master()) {
|
||||||
|
return state;
|
||||||
|
}
|
||||||
|
|
||||||
state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
|
state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
|
||||||
#if defined(RGBLIGHT_ENABLE)
|
#if defined(RGBLIGHT_ENABLE)
|
||||||
state = layer_state_set_rgb_light(state);
|
state = layer_state_set_rgb_light(state);
|
||||||
#endif // RGBLIGHT_ENABLE
|
#endif // RGBLIGHT_ENABLE
|
||||||
|
#if defined(AUDIO_ENABLE) && !defined(__arm__)
|
||||||
|
static bool is_gamepad_on = false;
|
||||||
|
if (layer_state_cmp(state, _GAMEPAD) != is_gamepad_on) {
|
||||||
|
is_gamepad_on = layer_state_cmp(state, _GAMEPAD);
|
||||||
|
if (is_gamepad_on) {
|
||||||
|
PLAY_LOOP(doom_song);
|
||||||
|
} else {
|
||||||
|
stop_all_notes();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
return layer_state_set_keymap(state);
|
return layer_state_set_keymap(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -164,7 +186,9 @@ __attribute__((weak)) layer_state_t default_layer_state_set_keymap(layer_state_t
|
||||||
|
|
||||||
// Runs state check and changes underglow color and animation
|
// Runs state check and changes underglow color and animation
|
||||||
layer_state_t default_layer_state_set_user(layer_state_t state) {
|
layer_state_t default_layer_state_set_user(layer_state_t state) {
|
||||||
if (!is_keyboard_master()) { return state; }
|
if (!is_keyboard_master()) {
|
||||||
|
return state;
|
||||||
|
}
|
||||||
|
|
||||||
state = default_layer_state_set_keymap(state);
|
state = default_layer_state_set_keymap(state);
|
||||||
#if 0
|
#if 0
|
||||||
|
@ -189,6 +213,9 @@ void eeconfig_init_user(void) {
|
||||||
userspace_config.rgb_layer_change = true;
|
userspace_config.rgb_layer_change = true;
|
||||||
eeconfig_update_user(userspace_config.raw);
|
eeconfig_update_user(userspace_config.raw);
|
||||||
eeconfig_init_keymap();
|
eeconfig_init_keymap();
|
||||||
|
#ifdef VIA_ENABLE
|
||||||
|
via_eeprom_reset();
|
||||||
|
#endif
|
||||||
keyboard_init();
|
keyboard_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -105,3 +105,7 @@ We use custom codes here, so we can substitute the right stuff
|
||||||
# define KC_D3_3 KC_3
|
# define KC_D3_3 KC_3
|
||||||
# define KC_D3_4 KC_4
|
# define KC_D3_4 KC_4
|
||||||
#endif // TAP_DANCE_ENABLE
|
#endif // TAP_DANCE_ENABLE
|
||||||
|
|
||||||
|
#if defined(DRASHNA_CUSTOM_TRANSPORT) && defined(POINTING_DEVICE_ENABLE)
|
||||||
|
void master_mouse_send(int8_t x, int8_t y);
|
||||||
|
#endif
|
||||||
|
|
1306
users/drashna/drashna_font.h
Normal file
1306
users/drashna/drashna_font.h
Normal file
File diff suppressed because it is too large
Load diff
508
users/drashna/drashna_transport.c
Normal file
508
users/drashna/drashna_transport.c
Normal file
|
@ -0,0 +1,508 @@
|
||||||
|
/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
|
#include "matrix.h"
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
#define ROWS_PER_HAND (MATRIX_ROWS / 2)
|
||||||
|
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
# include "rgblight.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef BACKLIGHT_ENABLE
|
||||||
|
# include "backlight.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef ENCODER_ENABLE
|
||||||
|
# include "encoder.h"
|
||||||
|
static pin_t encoders_pad[] = ENCODERS_PAD_A;
|
||||||
|
# define NUMBER_OF_ENCODERS (sizeof(encoders_pad) / sizeof(pin_t))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef POINTING_DEVICE_ENABLE
|
||||||
|
static int8_t split_mouse_x = 0, split_mouse_y = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef OLED_DRIVER_ENABLE
|
||||||
|
# include "oled_driver.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(USE_I2C)
|
||||||
|
|
||||||
|
# include "i2c_master.h"
|
||||||
|
# include "i2c_slave.h"
|
||||||
|
|
||||||
|
typedef struct _I2C_slave_buffer_t {
|
||||||
|
matrix_row_t smatrix[ROWS_PER_HAND];
|
||||||
|
# ifdef SPLIT_MODS_ENABLE
|
||||||
|
uint8_t real_mods;
|
||||||
|
uint8_t weak_mods;
|
||||||
|
# ifndef NO_ACTION_ONESHOT
|
||||||
|
uint8_t oneshot_mods;
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
# ifdef BACKLIGHT_ENABLE
|
||||||
|
uint8_t backlight_level;
|
||||||
|
# endif
|
||||||
|
# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT)
|
||||||
|
rgblight_syncinfo_t rgblight_sync;
|
||||||
|
# endif
|
||||||
|
# ifdef ENCODER_ENABLE
|
||||||
|
uint8_t encoder_state[NUMBER_OF_ENCODERS];
|
||||||
|
# endif
|
||||||
|
# ifdef WPM_ENABLE
|
||||||
|
uint8_t current_wpm;
|
||||||
|
# endif
|
||||||
|
int8_t mouse_x;
|
||||||
|
int8_t mouse_y;
|
||||||
|
bool oled_on;
|
||||||
|
layer_state_t t_layer_state;
|
||||||
|
layer_state_t t_default_layer_state;
|
||||||
|
bool is_rgb_matrix_suspended;
|
||||||
|
} __attribute__((packed)) I2C_slave_buffer_t;
|
||||||
|
|
||||||
|
static I2C_slave_buffer_t *const i2c_buffer = (I2C_slave_buffer_t *)i2c_slave_reg;
|
||||||
|
|
||||||
|
# define I2C_BACKLIGHT_START offsetof(I2C_slave_buffer_t, backlight_level)
|
||||||
|
# define I2C_RGB_START offsetof(I2C_slave_buffer_t, rgblight_sync)
|
||||||
|
# define I2C_KEYMAP_START offsetof(I2C_slave_buffer_t, smatrix)
|
||||||
|
# define I2C_REAL_MODS_START offsetof(I2C_slave_buffer_t, real_mods)
|
||||||
|
# define I2C_WEAK_MODS_START offsetof(I2C_slave_buffer_t, weak_mods)
|
||||||
|
# define I2C_ONESHOT_MODS_START offsetof(I2C_slave_buffer_t, oneshot_mods)
|
||||||
|
# define I2C_ENCODER_START offsetof(I2C_slave_buffer_t, encoder_state)
|
||||||
|
# define I2C_WPM_START offsetof(I2C_slave_buffer_t, current_wpm)
|
||||||
|
# define I2C_MOUSE_X_START offsetof(I2C_slave_buffer_t, mouse_x)
|
||||||
|
# define I2C_MOUSE_Y_START offsetof(I2C_slave_buffer_t, mouse_y)
|
||||||
|
# define I2C_OLED_ON_START offsetof(I2C_slave_buffer_t, oled_on)
|
||||||
|
# define I2C_LAYER_STATE_START offsetof(I2C_slave_buffer_t, t_layer_state)
|
||||||
|
# define I2C_DEFAULT_LAYER_STATE_START offsetof(I2C_slave_buffer_t, t_default_layer_state)
|
||||||
|
# define I2C_RGB_MATRIX_SUSPEND_START offsetof(I2C_slave_buffer_t, is_rgb_matrix_suspended)
|
||||||
|
|
||||||
|
# define TIMEOUT 100
|
||||||
|
|
||||||
|
# ifndef SLAVE_I2C_ADDRESS
|
||||||
|
# define SLAVE_I2C_ADDRESS 0x32
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// Get rows from other half over i2c
|
||||||
|
bool transport_master(matrix_row_t matrix[]) {
|
||||||
|
i2c_readReg(SLAVE_I2C_ADDRESS, I2C_KEYMAP_START, (void *)matrix, sizeof(i2c_buffer->smatrix), TIMEOUT);
|
||||||
|
|
||||||
|
// write backlight info
|
||||||
|
# ifdef BACKLIGHT_ENABLE
|
||||||
|
uint8_t level = is_backlight_enabled() ? get_backlight_level() : 0;
|
||||||
|
if (level != i2c_buffer->backlight_level) {
|
||||||
|
if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_BACKLIGHT_START, (void *)&level, sizeof(level), TIMEOUT) >= 0) {
|
||||||
|
i2c_buffer->backlight_level = level;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT)
|
||||||
|
if (rgblight_get_change_flags()) {
|
||||||
|
rgblight_syncinfo_t rgblight_sync;
|
||||||
|
rgblight_get_syncinfo(&rgblight_sync);
|
||||||
|
if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_RGB_START, (void *)&rgblight_sync, sizeof(rgblight_sync), TIMEOUT) >= 0) {
|
||||||
|
rgblight_clear_change_flags();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifdef ENCODER_ENABLE
|
||||||
|
i2c_readReg(SLAVE_I2C_ADDRESS, I2C_ENCODER_START, (void *)i2c_buffer->encoder_state, sizeof(i2c_buffer->encoder_state), TIMEOUT);
|
||||||
|
encoder_update_raw(i2c_buffer->encoder_state);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifdef WPM_ENABLE
|
||||||
|
uint8_t current_wpm = get_current_wpm();
|
||||||
|
if (current_wpm != i2c_buffer->current_wpm) {
|
||||||
|
if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_WPM_START, (void *)¤t_wpm, sizeof(current_wpm), TIMEOUT) >= 0) {
|
||||||
|
i2c_buffer->current_wpm = current_wpm;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifdef POINTING_DEVICE_ENABLE
|
||||||
|
if (is_keyboard_left()) {
|
||||||
|
report_mouse_t temp_report = pointing_device_get_report();
|
||||||
|
i2c_readReg(SLAVE_I2C_ADDRESS, I2C_MOUSE_X_START, (void *)&i2c_buffer->mouse_x, sizeof(i2c_buffer->mouse_x), TIMEOUT);
|
||||||
|
temp_report.x = i2c_buffer->mouse_x;
|
||||||
|
i2c_readReg(SLAVE_I2C_ADDRESS, I2C_MOUSE_Y_START, (void *)&i2c_buffer->mouse_y, sizeof(i2c_buffer->mouse_y), TIMEOUT);
|
||||||
|
temp_report.y = i2c_buffer->mouse_y;
|
||||||
|
pointing_device_set_report(temp_report);
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifdef SPLIT_MODS_ENABLE
|
||||||
|
uint8_t real_mods = get_mods();
|
||||||
|
if (real_mods != i2c_buffer->real_mods) {
|
||||||
|
if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_REAL_MODS_START, (void *)&real_mods, sizeof(real_mods), TIMEOUT) >= 0) {
|
||||||
|
i2c_buffer->real_mods = real_mods;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t weak_mods = get_weak_mods();
|
||||||
|
if (weak_mods != i2c_buffer->weak_mods) {
|
||||||
|
if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_WEAK_MODS_START, (void *)&weak_mods, sizeof(weak_mods), TIMEOUT) >= 0) {
|
||||||
|
i2c_buffer->weak_mods = weak_mods;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# ifndef NO_ACTION_ONESHOT
|
||||||
|
uint8_t oneshot_mods = get_oneshot_mods();
|
||||||
|
if (oneshot_mods != i2c_buffer->oneshot_mods) {
|
||||||
|
if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_ONESHOT_MODS_START, (void *)&oneshot_mods, sizeof(oneshot_mods), TIMEOUT) >= 0) {
|
||||||
|
i2c_buffer->oneshot_mods = oneshot_mods;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
if (layer_state != i2c_buffer->t_layer_state) {
|
||||||
|
if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_LAYER_STATE_START, (void *)&layer_state, sizeof(layer_state), TIMEOUT) >= 0) {
|
||||||
|
i2c_buffer->t_layer_state = layer_state;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (default_layer_state != i2c_buffer->t_default_layer_state) {
|
||||||
|
if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_DEFAULT_LAYER_STATE_START, (void *)&default_layer_state, sizeof(default_layer_state), TIMEOUT) >= 0) {
|
||||||
|
i2c_buffer->t_default_layer_state = default_layer_state;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# ifdef OLED_DRIVER_ENABLE
|
||||||
|
bool is_oled = is_oled_on();
|
||||||
|
if (is_oled != i2c_buffer->oled_on) {
|
||||||
|
if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_LAYER_STATE_START, (void *)&is_oled, sizeof(is_oled), TIMEOUT) >= 0) {
|
||||||
|
i2c_buffer->oled_on = is_oled;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifdef RGB_MATRIX_ENABLE
|
||||||
|
bool sus_state = rgb_matrix_get_suspend_state();
|
||||||
|
if (sus_state != i2c_buffer->is_rgb_matrix_suspended) {
|
||||||
|
if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_RGB_MATRIX_SUSPEND_START, (void *)&sus_state, sizeof(sus_state), TIMEOUT) >= 0) {
|
||||||
|
i2c_buffer->is_rgb_matrix_suspended = sus_state;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void transport_slave(matrix_row_t matrix[]) {
|
||||||
|
// Copy matrix to I2C buffer
|
||||||
|
memcpy((void *)i2c_buffer->smatrix, (void *)matrix, sizeof(i2c_buffer->smatrix));
|
||||||
|
|
||||||
|
// Read Backlight Info
|
||||||
|
# ifdef BACKLIGHT_ENABLE
|
||||||
|
backlight_set(i2c_buffer->backlight_level);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT)
|
||||||
|
// Update the RGB with the new data
|
||||||
|
if (i2c_buffer->rgblight_sync.status.change_flags != 0) {
|
||||||
|
rgblight_update_sync(&i2c_buffer->rgblight_sync, false);
|
||||||
|
i2c_buffer->rgblight_sync.status.change_flags = 0;
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifdef ENCODER_ENABLE
|
||||||
|
encoder_state_raw(i2c_buffer->encoder_state);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifdef WPM_ENABLE
|
||||||
|
set_current_wpm(i2c_buffer->current_wpm);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifdef POINTING_DEVICE_ENABLE
|
||||||
|
if (!is_keyboard_left()) {
|
||||||
|
i2c_buffer->mouse_x = split_mouse_x;
|
||||||
|
i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_MOUSE_X_START, (void *)&i2c_buffer->mouse_x, sizeof(i2c_buffer->mouse_x), TIMEOUT);
|
||||||
|
i2c_buffer->mouse_y = split_mouse_y;
|
||||||
|
i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_MOUSE_Y_START, (void *)&i2c_buffer->mouse_y, sizeof(i2c_buffer->mouse_y), TIMEOUT);
|
||||||
|
}
|
||||||
|
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifdef SPLIT_MODS_ENABLE
|
||||||
|
set_mods(i2c_buffer->real_mods);
|
||||||
|
set_weak_mods(i2c_buffer->weak_mods);
|
||||||
|
# ifndef NO_ACTION_ONESHOT
|
||||||
|
set_oneshot_mods(i2c_buffer->oneshot_mods);
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
if (layer_state != i2c_buffer->t_layer_state) {
|
||||||
|
layer_state = i2c_buffer->t_layer_state;
|
||||||
|
}
|
||||||
|
if (default_layer_state != i2c_buffer->t_default_layer_state) {
|
||||||
|
default_layer_state = i2c_buffer->t_default_layer_state;
|
||||||
|
}
|
||||||
|
|
||||||
|
# ifdef OLED_DRIVER_ENABLE
|
||||||
|
if (i2c_buffer->oled_on) {
|
||||||
|
oled_on();
|
||||||
|
} else {
|
||||||
|
oled_off();
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifdef RGB_MATRIX_ENABLE
|
||||||
|
rgb_matrix_set_suspend_state(i2c_buffer->is_rgb_matrix_suspended);
|
||||||
|
# endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void transport_master_init(void) { i2c_init(); }
|
||||||
|
|
||||||
|
void transport_slave_init(void) { i2c_slave_init(SLAVE_I2C_ADDRESS); }
|
||||||
|
|
||||||
|
#else // USE_SERIAL
|
||||||
|
|
||||||
|
# include "serial.h"
|
||||||
|
|
||||||
|
typedef struct _Serial_s2m_buffer_t {
|
||||||
|
// TODO: if MATRIX_COLS > 8 change to uint8_t packed_matrix[] for pack/unpack
|
||||||
|
matrix_row_t smatrix[ROWS_PER_HAND];
|
||||||
|
# ifdef ENCODER_ENABLE
|
||||||
|
uint8_t encoder_state[NUMBER_OF_ENCODERS];
|
||||||
|
# endif
|
||||||
|
int8_t mouse_x;
|
||||||
|
int8_t mouse_y;
|
||||||
|
} __attribute__((packed)) Serial_s2m_buffer_t;
|
||||||
|
|
||||||
|
typedef struct _Serial_m2s_buffer_t {
|
||||||
|
# ifdef SPLIT_MODS_ENABLE
|
||||||
|
uint8_t real_mods;
|
||||||
|
uint8_t weak_mods;
|
||||||
|
# ifndef NO_ACTION_ONESHOT
|
||||||
|
uint8_t oneshot_mods;
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
# ifdef BACKLIGHT_ENABLE
|
||||||
|
uint8_t backlight_level;
|
||||||
|
# endif
|
||||||
|
# ifdef WPM_ENABLE
|
||||||
|
uint8_t current_wpm;
|
||||||
|
# endif
|
||||||
|
bool oled_on;
|
||||||
|
layer_state_t t_layer_state;
|
||||||
|
layer_state_t t_default_layer_state;
|
||||||
|
bool is_rgb_matrix_suspended;
|
||||||
|
} __attribute__((packed)) Serial_m2s_buffer_t;
|
||||||
|
|
||||||
|
# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT)
|
||||||
|
// When MCUs on both sides drive their respective RGB LED chains,
|
||||||
|
// it is necessary to synchronize, so it is necessary to communicate RGB
|
||||||
|
// information. In that case, define RGBLIGHT_SPLIT with info on the number
|
||||||
|
// of LEDs on each half.
|
||||||
|
//
|
||||||
|
// Otherwise, if the master side MCU drives both sides RGB LED chains,
|
||||||
|
// there is no need to communicate.
|
||||||
|
|
||||||
|
typedef struct _Serial_rgblight_t {
|
||||||
|
rgblight_syncinfo_t rgblight_sync;
|
||||||
|
} Serial_rgblight_t;
|
||||||
|
|
||||||
|
volatile Serial_rgblight_t serial_rgblight = {};
|
||||||
|
uint8_t volatile status_rgblight = 0;
|
||||||
|
# endif
|
||||||
|
|
||||||
|
volatile Serial_s2m_buffer_t serial_s2m_buffer = {};
|
||||||
|
volatile Serial_m2s_buffer_t serial_m2s_buffer = {};
|
||||||
|
uint8_t volatile status0 = 0;
|
||||||
|
|
||||||
|
enum serial_transaction_id {
|
||||||
|
GET_SLAVE_MATRIX = 0,
|
||||||
|
# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT)
|
||||||
|
PUT_RGBLIGHT,
|
||||||
|
# endif
|
||||||
|
};
|
||||||
|
|
||||||
|
SSTD_t transactions[] = {
|
||||||
|
[GET_SLAVE_MATRIX] =
|
||||||
|
{
|
||||||
|
(uint8_t *)&status0,
|
||||||
|
sizeof(serial_m2s_buffer),
|
||||||
|
(uint8_t *)&serial_m2s_buffer,
|
||||||
|
sizeof(serial_s2m_buffer),
|
||||||
|
(uint8_t *)&serial_s2m_buffer,
|
||||||
|
},
|
||||||
|
# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT)
|
||||||
|
[PUT_RGBLIGHT] =
|
||||||
|
{
|
||||||
|
(uint8_t *)&status_rgblight, sizeof(serial_rgblight), (uint8_t *)&serial_rgblight, 0, NULL // no slave to master transfer
|
||||||
|
},
|
||||||
|
# endif
|
||||||
|
};
|
||||||
|
|
||||||
|
void transport_master_init(void) { soft_serial_initiator_init(transactions, TID_LIMIT(transactions)); }
|
||||||
|
|
||||||
|
void transport_slave_init(void) { soft_serial_target_init(transactions, TID_LIMIT(transactions)); }
|
||||||
|
|
||||||
|
# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT)
|
||||||
|
|
||||||
|
// rgblight synchronization information communication.
|
||||||
|
|
||||||
|
void transport_rgblight_master(void) {
|
||||||
|
if (rgblight_get_change_flags()) {
|
||||||
|
rgblight_get_syncinfo((rgblight_syncinfo_t *)&serial_rgblight.rgblight_sync);
|
||||||
|
if (soft_serial_transaction(PUT_RGBLIGHT) == TRANSACTION_END) {
|
||||||
|
rgblight_clear_change_flags();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void transport_rgblight_slave(void) {
|
||||||
|
if (status_rgblight == TRANSACTION_ACCEPTED) {
|
||||||
|
rgblight_update_sync((rgblight_syncinfo_t *)&serial_rgblight.rgblight_sync, false);
|
||||||
|
status_rgblight = TRANSACTION_END;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# else
|
||||||
|
# define transport_rgblight_master()
|
||||||
|
# define transport_rgblight_slave()
|
||||||
|
# endif
|
||||||
|
|
||||||
|
bool transport_master(matrix_row_t matrix[]) {
|
||||||
|
# ifndef SERIAL_USE_MULTI_TRANSACTION
|
||||||
|
if (soft_serial_transaction() != TRANSACTION_END) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
# else
|
||||||
|
transport_rgblight_master();
|
||||||
|
if (soft_serial_transaction(GET_SLAVE_MATRIX) != TRANSACTION_END) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// TODO: if MATRIX_COLS > 8 change to unpack()
|
||||||
|
for (int i = 0; i < ROWS_PER_HAND; ++i) {
|
||||||
|
matrix[i] = serial_s2m_buffer.smatrix[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
# ifdef BACKLIGHT_ENABLE
|
||||||
|
// Write backlight level for slave to read
|
||||||
|
serial_m2s_buffer.backlight_level = is_backlight_enabled() ? get_backlight_level() : 0;
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifdef ENCODER_ENABLE
|
||||||
|
encoder_update_raw((uint8_t *)serial_s2m_buffer.encoder_state);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifdef WPM_ENABLE
|
||||||
|
// Write wpm to slave
|
||||||
|
serial_m2s_buffer.current_wpm = get_current_wpm();
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifdef SPLIT_MODS_ENABLE
|
||||||
|
serial_m2s_buffer.real_mods = get_mods();
|
||||||
|
serial_m2s_buffer.weak_mods = get_weak_mods();
|
||||||
|
# ifndef NO_ACTION_ONESHOT
|
||||||
|
serial_m2s_buffer.oneshot_mods = get_oneshot_mods();
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifdef POINTING_DEVICE_ENABLE
|
||||||
|
if (is_keyboard_left()) {
|
||||||
|
report_mouse_t temp_report = pointing_device_get_report();
|
||||||
|
temp_report.x = serial_s2m_buffer.mouse_x;
|
||||||
|
temp_report.y = serial_s2m_buffer.mouse_y;
|
||||||
|
pointing_device_set_report(temp_report);
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
|
||||||
|
serial_m2s_buffer.t_layer_state = layer_state;
|
||||||
|
serial_m2s_buffer.t_default_layer_state = default_layer_state;
|
||||||
|
# ifdef OLED_DRIVER_ENABLE
|
||||||
|
serial_m2s_buffer.oled_on = is_oled_on();
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifdef RGB_MATRIX_ENABLE
|
||||||
|
serial_m2s_buffer.is_rgb_matrix_suspended = rgb_matrix_get_suspend_state();
|
||||||
|
# endif
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void transport_slave(matrix_row_t matrix[]) {
|
||||||
|
transport_rgblight_slave();
|
||||||
|
|
||||||
|
// TODO: if MATRIX_COLS > 8 change to pack()
|
||||||
|
for (int i = 0; i < ROWS_PER_HAND; ++i) {
|
||||||
|
serial_s2m_buffer.smatrix[i] = matrix[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
# ifdef BACKLIGHT_ENABLE
|
||||||
|
backlight_set(serial_m2s_buffer.backlight_level);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifdef ENCODER_ENABLE
|
||||||
|
encoder_state_raw((uint8_t *)serial_s2m_buffer.encoder_state);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifdef WPM_ENABLE
|
||||||
|
set_current_wpm(serial_m2s_buffer.current_wpm);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifdef SPLIT_MODS_ENABLE
|
||||||
|
set_mods(serial_m2s_buffer.real_mods);
|
||||||
|
set_weak_mods(serial_m2s_buffer.weak_mods);
|
||||||
|
# ifndef NO_ACTION_ONESHOT
|
||||||
|
set_oneshot_mods(serial_m2s_buffer.oneshot_mods);
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifdef POINTING_DEVICE_ENABLE
|
||||||
|
if (!is_keyboard_left()) {
|
||||||
|
serial_s2m_buffer.mouse_x = split_mouse_x;
|
||||||
|
serial_s2m_buffer.mouse_y = split_mouse_y;
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
|
||||||
|
if (layer_state != serial_m2s_buffer.t_layer_state) {
|
||||||
|
layer_state = serial_m2s_buffer.t_layer_state;
|
||||||
|
}
|
||||||
|
if (default_layer_state != serial_m2s_buffer.t_default_layer_state) {
|
||||||
|
default_layer_state = serial_m2s_buffer.t_default_layer_state;
|
||||||
|
}
|
||||||
|
# ifdef OLED_DRIVER_ENABLE
|
||||||
|
if (serial_m2s_buffer.oled_on) {
|
||||||
|
oled_on();
|
||||||
|
} else {
|
||||||
|
oled_off();
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifdef RGB_MATRIX_ENABLE
|
||||||
|
rgb_matrix_set_suspend_state(serial_m2s_buffer.is_rgb_matrix_suspended);
|
||||||
|
# endif
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef POINTING_DEVICE_ENABLE
|
||||||
|
void master_mouse_send(int8_t x, int8_t y) {
|
||||||
|
split_mouse_x = x;
|
||||||
|
split_mouse_y = y;
|
||||||
|
}
|
||||||
|
#endif
|
|
@ -1,234 +0,0 @@
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "progmem.h"
|
|
||||||
|
|
||||||
// Corne 8x6 font with QMK Firmware Logo
|
|
||||||
// Online editor: https://helixfonteditor.netlify.com/
|
|
||||||
|
|
||||||
// clang-format off
|
|
||||||
const unsigned char font[] PROGMEM = {
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
|
|
||||||
0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
|
|
||||||
0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
|
|
||||||
0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,
|
|
||||||
0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,
|
|
||||||
0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,
|
|
||||||
0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,
|
|
||||||
0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,
|
|
||||||
0x00, 0x18, 0x24, 0x18, 0x00, 0x00,
|
|
||||||
0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,
|
|
||||||
0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,
|
|
||||||
0x26, 0x29, 0x79, 0x29, 0x26, 0x00,
|
|
||||||
0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,
|
|
||||||
0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,
|
|
||||||
0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,
|
|
||||||
0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,
|
|
||||||
0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,
|
|
||||||
0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
|
|
||||||
0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
|
|
||||||
0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
|
|
||||||
0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
|
|
||||||
0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
|
|
||||||
0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,
|
|
||||||
0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,
|
|
||||||
0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,
|
|
||||||
0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,
|
|
||||||
0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,
|
|
||||||
0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,
|
|
||||||
0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,
|
|
||||||
0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,
|
|
||||||
0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
|
|
||||||
0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
|
|
||||||
0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
|
|
||||||
0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
|
|
||||||
0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
|
|
||||||
0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
|
|
||||||
0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
|
|
||||||
0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
|
|
||||||
0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
|
|
||||||
0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
|
|
||||||
0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
|
|
||||||
0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
|
|
||||||
0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
|
|
||||||
0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
|
|
||||||
0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
|
|
||||||
0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
|
|
||||||
0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
|
|
||||||
0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
|
|
||||||
0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
|
|
||||||
0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
|
|
||||||
0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
|
|
||||||
0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
|
|
||||||
0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
|
|
||||||
0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
|
|
||||||
0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
|
|
||||||
0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
|
|
||||||
0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
|
|
||||||
0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
|
|
||||||
0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,
|
|
||||||
0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
|
|
||||||
0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
|
|
||||||
0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
|
|
||||||
0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
|
|
||||||
0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
|
|
||||||
0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
|
|
||||||
0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
|
|
||||||
0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
|
|
||||||
0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,
|
|
||||||
0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
|
|
||||||
0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
|
|
||||||
0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
|
|
||||||
0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
|
|
||||||
0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
|
|
||||||
0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
|
|
||||||
0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
|
|
||||||
0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
|
|
||||||
0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
|
|
||||||
0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
|
|
||||||
0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,
|
|
||||||
0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
|
|
||||||
0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
|
|
||||||
0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
|
|
||||||
0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
|
|
||||||
0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
|
|
||||||
0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
|
|
||||||
0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
|
|
||||||
0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
|
|
||||||
0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
|
|
||||||
0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
|
|
||||||
0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
|
|
||||||
0x00, 0x03, 0x07, 0x08, 0x00, 0x00,
|
|
||||||
0x20, 0x54, 0x54, 0x78, 0x40, 0x00,
|
|
||||||
0x7F, 0x28, 0x44, 0x44, 0x38, 0x00,
|
|
||||||
0x38, 0x44, 0x44, 0x44, 0x28, 0x00,
|
|
||||||
0x38, 0x44, 0x44, 0x28, 0x7F, 0x00,
|
|
||||||
0x38, 0x54, 0x54, 0x54, 0x18, 0x00,
|
|
||||||
0x00, 0x08, 0x7E, 0x09, 0x02, 0x00,
|
|
||||||
0x18, 0x24, 0x24, 0x1C, 0x78, 0x00,
|
|
||||||
0x7F, 0x08, 0x04, 0x04, 0x78, 0x00,
|
|
||||||
0x00, 0x44, 0x7D, 0x40, 0x00, 0x00,
|
|
||||||
0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
|
|
||||||
0x7F, 0x10, 0x28, 0x44, 0x00, 0x00,
|
|
||||||
0x00, 0x41, 0x7F, 0x40, 0x00, 0x00,
|
|
||||||
0x7C, 0x04, 0x78, 0x04, 0x78, 0x00,
|
|
||||||
0x7C, 0x08, 0x04, 0x04, 0x78, 0x00,
|
|
||||||
0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
|
|
||||||
0x7C, 0x18, 0x24, 0x24, 0x18, 0x00,
|
|
||||||
0x18, 0x24, 0x24, 0x18, 0x7C, 0x00,
|
|
||||||
0x7C, 0x08, 0x04, 0x04, 0x08, 0x00,
|
|
||||||
0x48, 0x54, 0x54, 0x54, 0x24, 0x00,
|
|
||||||
0x04, 0x04, 0x3F, 0x44, 0x24, 0x00,
|
|
||||||
0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00,
|
|
||||||
0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,
|
|
||||||
0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
|
|
||||||
0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
|
|
||||||
0x4C, 0x90, 0x10, 0x90, 0x7C, 0x00,
|
|
||||||
0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
|
|
||||||
0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
|
|
||||||
0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
|
|
||||||
0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x80, 0xC0, 0xE0, 0xF0, 0xF0, 0x70,
|
|
||||||
0x38, 0x38, 0x38, 0x78, 0x70, 0xF0,
|
|
||||||
0xE0, 0xE0, 0x80, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x80, 0xF0, 0xF8,
|
|
||||||
0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00,
|
|
||||||
0x80, 0xE0, 0xF8, 0xF8, 0xF8, 0xF8,
|
|
||||||
0xF0, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x80, 0xF8, 0xF8, 0xF8, 0x38, 0x00,
|
|
||||||
0x80, 0xE0, 0xF0, 0xF8, 0x78, 0x38,
|
|
||||||
0x08, 0x08, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x80, 0xF8, 0xF8, 0xF8, 0x38, 0x38,
|
|
||||||
0x38, 0xF8, 0xF0, 0xF0, 0xE0, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x80, 0xFC, 0xFC,
|
|
||||||
0xFC, 0x1C, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC,
|
|
||||||
0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00,
|
|
||||||
0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E,
|
|
||||||
0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x3C,
|
|
||||||
0xFF, 0xFF, 0xFF, 0xC1, 0x80, 0x00,
|
|
||||||
0x00, 0x38, 0x38, 0xB8, 0xB8, 0xF9,
|
|
||||||
0xF9, 0xF8, 0x38, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0xC0, 0xF8, 0xFF, 0xFF, 0x1F,
|
|
||||||
0x01, 0x3F, 0xFF, 0xFF, 0xF0, 0xFE,
|
|
||||||
0x7F, 0x0F, 0x03, 0xFF, 0xFF, 0xFF,
|
|
||||||
0xFF, 0x00, 0x00, 0x00, 0x00, 0x80,
|
|
||||||
0xFF, 0xFF, 0xFF, 0x3F, 0x1E, 0x7F,
|
|
||||||
0xFF, 0xFF, 0xF3, 0xC1, 0x80, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
|
|
||||||
0xFF, 0xFF, 0xFF, 0x3F, 0x1C, 0x1C,
|
|
||||||
0x9C, 0xFF, 0xFF, 0xF3, 0xE1, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0xF0, 0xFC, 0xFE,
|
|
||||||
0xFF, 0x0F, 0x07, 0x07, 0x8E, 0xFF,
|
|
||||||
0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0xF0, 0xFC, 0xFE, 0xFF, 0x8F,
|
|
||||||
0x07, 0x07, 0x8E, 0xFF, 0xFF, 0xFF,
|
|
||||||
0x3F, 0x00, 0x00, 0x00, 0x00, 0x80,
|
|
||||||
0xC0, 0x80, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F,
|
|
||||||
0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00,
|
|
||||||
0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F,
|
|
||||||
0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x01, 0x03, 0x03, 0x03, 0x07,
|
|
||||||
0x07, 0x07, 0x07, 0x03, 0x03, 0x03,
|
|
||||||
0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x06, 0x07, 0x07, 0x07, 0x01, 0x00,
|
|
||||||
0x00, 0x00, 0x07, 0x07, 0x07, 0x01,
|
|
||||||
0x00, 0x00, 0x00, 0x07, 0x07, 0x07,
|
|
||||||
0x07, 0x00, 0x00, 0x00, 0x00, 0x07,
|
|
||||||
0x07, 0x07, 0x07, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x03, 0x07, 0x07, 0x07, 0x06,
|
|
||||||
0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
|
|
||||||
0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
|
|
||||||
0x07, 0x07, 0x03, 0x01, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x03, 0x07,
|
|
||||||
0x07, 0x07, 0x07, 0x03, 0x07, 0x07,
|
|
||||||
0x07, 0x07, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x03, 0x07, 0x07, 0x07,
|
|
||||||
0x07, 0x03, 0x07, 0x07, 0x07, 0x07,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x01, 0x07,
|
|
||||||
0x07, 0x07, 0x01, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
};
|
|
|
@ -1,234 +0,0 @@
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "progmem.h"
|
|
||||||
|
|
||||||
// Corne 8x6 font with QMK Firmware Logo
|
|
||||||
// Online editor: https://helixfonteditor.netlify.com/
|
|
||||||
|
|
||||||
// clang-format off
|
|
||||||
const unsigned char font[] PROGMEM = {
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
|
|
||||||
0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
|
|
||||||
0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
|
|
||||||
0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,
|
|
||||||
0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,
|
|
||||||
0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,
|
|
||||||
0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,
|
|
||||||
0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,
|
|
||||||
0x00, 0x18, 0x24, 0x18, 0x00, 0x00,
|
|
||||||
0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,
|
|
||||||
0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,
|
|
||||||
0x26, 0x29, 0x79, 0x29, 0x26, 0x00,
|
|
||||||
0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,
|
|
||||||
0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,
|
|
||||||
0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,
|
|
||||||
0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,
|
|
||||||
0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,
|
|
||||||
0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
|
|
||||||
0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
|
|
||||||
0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
|
|
||||||
0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
|
|
||||||
0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
|
|
||||||
0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,
|
|
||||||
0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,
|
|
||||||
0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,
|
|
||||||
0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,
|
|
||||||
0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,
|
|
||||||
0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,
|
|
||||||
0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,
|
|
||||||
0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,
|
|
||||||
0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
|
|
||||||
0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
|
|
||||||
0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
|
|
||||||
0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
|
|
||||||
0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
|
|
||||||
0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
|
|
||||||
0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
|
|
||||||
0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
|
|
||||||
0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
|
|
||||||
0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
|
|
||||||
0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
|
|
||||||
0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
|
|
||||||
0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
|
|
||||||
0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
|
|
||||||
0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
|
|
||||||
0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
|
|
||||||
0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
|
|
||||||
0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
|
|
||||||
0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
|
|
||||||
0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
|
|
||||||
0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
|
|
||||||
0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
|
|
||||||
0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
|
|
||||||
0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
|
|
||||||
0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
|
|
||||||
0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
|
|
||||||
0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
|
|
||||||
0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
|
|
||||||
0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,
|
|
||||||
0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
|
|
||||||
0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
|
|
||||||
0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
|
|
||||||
0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
|
|
||||||
0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
|
|
||||||
0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
|
|
||||||
0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
|
|
||||||
0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
|
|
||||||
0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,
|
|
||||||
0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
|
|
||||||
0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
|
|
||||||
0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
|
|
||||||
0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
|
|
||||||
0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
|
|
||||||
0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
|
|
||||||
0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
|
|
||||||
0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
|
|
||||||
0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
|
|
||||||
0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
|
|
||||||
0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,
|
|
||||||
0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
|
|
||||||
0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
|
|
||||||
0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
|
|
||||||
0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
|
|
||||||
0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
|
|
||||||
0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
|
|
||||||
0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
|
|
||||||
0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
|
|
||||||
0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
|
|
||||||
0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
|
|
||||||
0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
|
|
||||||
0x00, 0x03, 0x07, 0x08, 0x00, 0x00,
|
|
||||||
0x20, 0x54, 0x54, 0x78, 0x40, 0x00,
|
|
||||||
0x7F, 0x28, 0x44, 0x44, 0x38, 0x00,
|
|
||||||
0x38, 0x44, 0x44, 0x44, 0x28, 0x00,
|
|
||||||
0x38, 0x44, 0x44, 0x28, 0x7F, 0x00,
|
|
||||||
0x38, 0x54, 0x54, 0x54, 0x18, 0x00,
|
|
||||||
0x00, 0x08, 0x7E, 0x09, 0x02, 0x00,
|
|
||||||
0x18, 0x24, 0x24, 0x1C, 0x78, 0x00,
|
|
||||||
0x7F, 0x08, 0x04, 0x04, 0x78, 0x00,
|
|
||||||
0x00, 0x44, 0x7D, 0x40, 0x00, 0x00,
|
|
||||||
0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
|
|
||||||
0x7F, 0x10, 0x28, 0x44, 0x00, 0x00,
|
|
||||||
0x00, 0x41, 0x7F, 0x40, 0x00, 0x00,
|
|
||||||
0x7C, 0x04, 0x78, 0x04, 0x78, 0x00,
|
|
||||||
0x7C, 0x08, 0x04, 0x04, 0x78, 0x00,
|
|
||||||
0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
|
|
||||||
0x7C, 0x18, 0x24, 0x24, 0x18, 0x00,
|
|
||||||
0x18, 0x24, 0x24, 0x18, 0x7C, 0x00,
|
|
||||||
0x7C, 0x08, 0x04, 0x04, 0x08, 0x00,
|
|
||||||
0x48, 0x54, 0x54, 0x54, 0x24, 0x00,
|
|
||||||
0x04, 0x04, 0x3F, 0x44, 0x24, 0x00,
|
|
||||||
0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00,
|
|
||||||
0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,
|
|
||||||
0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
|
|
||||||
0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
|
|
||||||
0x4C, 0x90, 0x10, 0x90, 0x7C, 0x00,
|
|
||||||
0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
|
|
||||||
0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
|
|
||||||
0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
|
|
||||||
0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0,
|
|
||||||
0x90, 0x70, 0xE8, 0xA8, 0xE4, 0xC4,
|
|
||||||
0xC4, 0xA0, 0xE4, 0xB0, 0xDC, 0xE4,
|
|
||||||
0xFC, 0xFC, 0xFC, 0xFC, 0x3C, 0x3C,
|
|
||||||
0xFC, 0xF8, 0xF0, 0xF0, 0xE0, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC,
|
|
||||||
0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00,
|
|
||||||
0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E,
|
|
||||||
0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xF0,
|
|
||||||
0xFC, 0xF6, 0xF7, 0xEF, 0xFF, 0x87,
|
|
||||||
0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F,
|
|
||||||
0x1F, 0x1F, 0x1F, 0xFF, 0xFF, 0xFF,
|
|
||||||
0xFF, 0x07, 0x1F, 0x1F, 0x19, 0x15,
|
|
||||||
0xF7, 0x16, 0x1A, 0x1B, 0x16, 0x07,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x0C, 0x0C, 0x33, 0x33,
|
|
||||||
0x33, 0x33, 0x33, 0x33, 0xC0, 0xC0,
|
|
||||||
0x00, 0x00, 0x03, 0x03, 0xFF, 0xFF,
|
|
||||||
0x03, 0x03, 0x00, 0x00, 0xC0, 0xC0,
|
|
||||||
0x00, 0x00, 0x00, 0xFC, 0xFC, 0x03,
|
|
||||||
0x03, 0x03, 0x03, 0x03, 0x03, 0xFC,
|
|
||||||
0xFC, 0x00, 0x00, 0x00, 0xFC, 0xFC,
|
|
||||||
0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
|
|
||||||
0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0xFF, 0xFF, 0x30, 0x30, 0xCC, 0xCC,
|
|
||||||
0x03, 0x03, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F,
|
|
||||||
0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00,
|
|
||||||
0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F,
|
|
||||||
0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
|
|
||||||
0x03, 0x07, 0x07, 0x07, 0x07, 0x01,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x03, 0x07, 0x07,
|
|
||||||
0x03, 0x00, 0x00, 0x02, 0x04, 0x00,
|
|
||||||
0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x03, 0x03, 0x03, 0x03,
|
|
||||||
0x03, 0x03, 0x03, 0x03, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x03, 0x03, 0x03, 0x03, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
|
|
||||||
0x03, 0x03, 0x03, 0x03, 0x03, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x03, 0x03, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x03, 0x03, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
};
|
|
|
@ -15,6 +15,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "drashna.h"
|
#include "drashna.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
#ifndef KEYLOGGER_LENGTH
|
#ifndef KEYLOGGER_LENGTH
|
||||||
// # ifdef OLED_DISPLAY_128X64
|
// # ifdef OLED_DISPLAY_128X64
|
||||||
|
@ -24,7 +25,7 @@
|
||||||
// # endif
|
// # endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static uint32_t oled_timer = 0;
|
uint32_t oled_timer = 0;
|
||||||
static char keylog_str[KEYLOGGER_LENGTH + 1] = {"\n"};
|
static char keylog_str[KEYLOGGER_LENGTH + 1] = {"\n"};
|
||||||
static uint16_t log_timer = 0;
|
static uint16_t log_timer = 0;
|
||||||
|
|
||||||
|
@ -132,28 +133,26 @@ void render_layer_state(void) {
|
||||||
oled_write_P(PSTR(" "), false);
|
oled_write_P(PSTR(" "), false);
|
||||||
#endif
|
#endif
|
||||||
oled_write_P(PSTR(OLED_RENDER_LAYER_RAISE), layer_state_is(_RAISE));
|
oled_write_P(PSTR(OLED_RENDER_LAYER_RAISE), layer_state_is(_RAISE));
|
||||||
#if _MODS
|
|
||||||
# ifdef OLED_DISPLAY_128X64
|
|
||||||
oled_write_P(PSTR(" "), false);
|
|
||||||
# endif
|
|
||||||
oled_write_P(PSTR(OLED_RENDER_LAYER_MODS), layer_state_is(_MODS));
|
|
||||||
#endif
|
|
||||||
#ifdef OLED_DISPLAY_128X64
|
#ifdef OLED_DISPLAY_128X64
|
||||||
oled_advance_page(true);
|
oled_advance_page(true);
|
||||||
|
oled_write_P(PSTR(" "), false);
|
||||||
|
oled_write_P(PSTR("GamePad"), layer_state_is(_GAMEPAD));
|
||||||
|
oled_write_P(PSTR(" "), false);
|
||||||
|
oled_write_P(PSTR("Diablo"), layer_state_is(_DIABLO));
|
||||||
|
oled_write_P(PSTR(" "), false);
|
||||||
|
oled_write_P(PSTR("Mouse"), layer_state_is(_MOUSE));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void render_keylock_status(uint8_t led_usb_state) {
|
void render_keylock_status(uint8_t led_usb_state) {
|
||||||
oled_write_P(PSTR(OLED_RENDER_LOCK_NAME), false);
|
oled_write_P(PSTR(OLED_RENDER_LOCK_NAME), false);
|
||||||
|
#if !defined(OLED_DISPLAY_128X64)
|
||||||
oled_write_P(PSTR(" "), false);
|
oled_write_P(PSTR(" "), false);
|
||||||
|
#endif
|
||||||
oled_write_P(PSTR(OLED_RENDER_LOCK_NUML), led_usb_state & (1 << USB_LED_NUM_LOCK));
|
oled_write_P(PSTR(OLED_RENDER_LOCK_NUML), led_usb_state & (1 << USB_LED_NUM_LOCK));
|
||||||
#ifdef OLED_DISPLAY_128X64
|
|
||||||
oled_write_P(PSTR(" "), false);
|
oled_write_P(PSTR(" "), false);
|
||||||
#endif
|
|
||||||
oled_write_P(PSTR(OLED_RENDER_LOCK_CAPS), led_usb_state & (1 << USB_LED_CAPS_LOCK));
|
oled_write_P(PSTR(OLED_RENDER_LOCK_CAPS), led_usb_state & (1 << USB_LED_CAPS_LOCK));
|
||||||
#ifdef OLED_DISPLAY_128X64
|
|
||||||
oled_write_P(PSTR(" "), false);
|
oled_write_P(PSTR(" "), false);
|
||||||
#endif
|
|
||||||
oled_write_P(PSTR(OLED_RENDER_LOCK_SCLK), led_usb_state & (1 << USB_LED_SCROLL_LOCK));
|
oled_write_P(PSTR(OLED_RENDER_LOCK_SCLK), led_usb_state & (1 << USB_LED_SCROLL_LOCK));
|
||||||
#ifndef OLED_DISPLAY_128X64
|
#ifndef OLED_DISPLAY_128X64
|
||||||
oled_advance_page(true);
|
oled_advance_page(true);
|
||||||
|
@ -161,20 +160,18 @@ void render_keylock_status(uint8_t led_usb_state) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void render_mod_status(uint8_t modifiers) {
|
void render_mod_status(uint8_t modifiers) {
|
||||||
|
static const char PROGMEM mod_status[5][3] = {{0xE8, 0xE9, 0}, {0xE4, 0xE5, 0}, {0xE6, 0xE7, 0}, {0xEA, 0xEB, 0}, {0xEC, 0xED, 0}};
|
||||||
oled_write_P(PSTR(OLED_RENDER_MODS_NAME), false);
|
oled_write_P(PSTR(OLED_RENDER_MODS_NAME), false);
|
||||||
oled_write_P(PSTR(OLED_RENDER_MODS_SFT), (modifiers & MOD_MASK_SHIFT));
|
oled_write_P(mod_status[0], (modifiers & MOD_MASK_SHIFT));
|
||||||
#ifdef OLED_DISPLAY_128X64
|
oled_write_P(mod_status[!keymap_config.swap_lctl_lgui ? 3 : 4], (modifiers & MOD_MASK_GUI));
|
||||||
|
#if !defined(OLED_DISPLAY_128X64)
|
||||||
oled_write_P(PSTR(" "), false);
|
oled_write_P(PSTR(" "), false);
|
||||||
#endif
|
#endif
|
||||||
oled_write_P(PSTR(OLED_RENDER_MODS_CTL), (modifiers & MOD_MASK_CTRL));
|
oled_write_P(mod_status[2], (modifiers & MOD_MASK_ALT));
|
||||||
#ifdef OLED_DISPLAY_128X64
|
oled_write_P(mod_status[1], (modifiers & MOD_MASK_CTRL));
|
||||||
oled_write_P(PSTR(" "), false);
|
#if defined(OLED_DISPLAY_128X64)
|
||||||
|
oled_advance_page(true);
|
||||||
#endif
|
#endif
|
||||||
oled_write_P(PSTR(OLED_RENDER_MODS_ALT), (modifiers & MOD_MASK_ALT));
|
|
||||||
#ifdef OLED_DISPLAY_128X64
|
|
||||||
oled_write_P(PSTR(" "), false);
|
|
||||||
#endif
|
|
||||||
oled_write_P(PSTR(OLED_RENDER_MODS_GUI), (modifiers & MOD_MASK_GUI));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void render_bootmagic_status(void) {
|
void render_bootmagic_status(void) {
|
||||||
|
@ -204,41 +201,71 @@ void render_bootmagic_status(void) {
|
||||||
#endif
|
#endif
|
||||||
oled_write_P(logo[0][0], !is_bootmagic_on);
|
oled_write_P(logo[0][0], !is_bootmagic_on);
|
||||||
}
|
}
|
||||||
|
#ifndef OLED_DISPLAY_128X64
|
||||||
|
oled_write_P(PSTR(" "), false);
|
||||||
|
oled_write_P(logo[1][1], is_bootmagic_on);
|
||||||
|
oled_write_P(logo[0][1], !is_bootmagic_on);
|
||||||
|
#endif
|
||||||
oled_write_P(PSTR(" "), false);
|
oled_write_P(PSTR(" "), false);
|
||||||
#ifdef OLED_DISPLAY_128X64
|
|
||||||
oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NKRO), keymap_config.nkro);
|
oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NKRO), keymap_config.nkro);
|
||||||
oled_write_P(PSTR(" "), false);
|
oled_write_P(PSTR(" "), false);
|
||||||
oled_write_ln_P(PSTR(OLED_RENDER_BOOTMAGIC_NOGUI), !keymap_config.no_gui);
|
oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NOGUI), !keymap_config.no_gui);
|
||||||
oled_write_P(PSTR("Magic "), false);
|
|
||||||
if (keymap_config.swap_lctl_lgui)
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
oled_write_P(logo[1][1], is_bootmagic_on);
|
|
||||||
#ifdef OLED_DISPLAY_128X64
|
#ifdef OLED_DISPLAY_128X64
|
||||||
|
oled_advance_page(true);
|
||||||
|
oled_write_P(PSTR("Magic"), false);
|
||||||
|
oled_write_P(PSTR(" "), false);
|
||||||
|
if (keymap_config.swap_lctl_lgui) {
|
||||||
|
oled_write_P(logo[1][1], is_bootmagic_on);
|
||||||
} else {
|
} else {
|
||||||
#endif
|
|
||||||
oled_write_P(logo[0][1], !is_bootmagic_on);
|
oled_write_P(logo[0][1], !is_bootmagic_on);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
oled_write_P(PSTR(" "), false);
|
oled_write_P(PSTR(" "), false);
|
||||||
#ifdef OLED_DISPLAY_128X64
|
|
||||||
oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_GRV), keymap_config.swap_grave_esc);
|
oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_GRV), keymap_config.swap_grave_esc);
|
||||||
oled_write_P(PSTR(" "), false);
|
oled_write_P(PSTR(" "), false);
|
||||||
|
oled_write_P(PSTR(" "), false);
|
||||||
oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_CAPS), keymap_config.swap_control_capslock);
|
oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_CAPS), keymap_config.swap_control_capslock);
|
||||||
|
#ifdef OLED_DISPLAY_128X64
|
||||||
oled_advance_page(true);
|
oled_advance_page(true);
|
||||||
#else
|
|
||||||
oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NKRO), keymap_config.nkro);
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(POINTING_DEVICE_ENABLE)
|
||||||
|
extern bool tap_toggling;
|
||||||
|
#endif
|
||||||
|
|
||||||
void render_user_status(void) {
|
void render_user_status(void) {
|
||||||
oled_write_P(PSTR(OLED_RENDER_USER_NAME), false);
|
oled_write_P(PSTR(OLED_RENDER_USER_NAME), false);
|
||||||
|
#if !defined(OLED_DISPLAY_128X64)
|
||||||
oled_write_P(PSTR(" "), false);
|
oled_write_P(PSTR(" "), false);
|
||||||
|
#endif
|
||||||
|
#if defined(RGB_MATRIX_ENABLE)
|
||||||
oled_write_P(PSTR(OLED_RENDER_USER_ANIM), userspace_config.rgb_matrix_idle_anim);
|
oled_write_P(PSTR(OLED_RENDER_USER_ANIM), userspace_config.rgb_matrix_idle_anim);
|
||||||
|
# if !defined(OLED_DISPLAY_128X64)
|
||||||
oled_write_P(PSTR(" "), false);
|
oled_write_P(PSTR(" "), false);
|
||||||
oled_write_P(PSTR(OLED_RENDER_USER_LAYR), userspace_config.rgb_layer_change);
|
# endif
|
||||||
|
#elif defined(POINTING_DEVICE_ENABLE)
|
||||||
|
static const char PROGMEM mouse_lock[3] = {0xF2, 0xF3, 0};
|
||||||
|
oled_write_P(mouse_lock, tap_toggling);
|
||||||
|
#endif
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
static const char PROGMEM audio_status[2][3] = {{0xE0, 0xE1, 0}, {0xE2, 0xE3, 0}};
|
||||||
|
oled_write_P(audio_status[is_audio_on()], false);
|
||||||
|
|
||||||
|
# ifdef AUDIO_CLICKY
|
||||||
|
static const char PROGMEM audio_clicky_status[2][3] = {{0xF4, 0xF5, 0}, {0xF6, 0xF7, 0}};
|
||||||
|
oled_write_P(audio_clicky_status[is_clicky_on() && is_audio_on()], false);
|
||||||
|
# if !defined(OLED_DISPLAY_128X64)
|
||||||
oled_write_P(PSTR(" "), false);
|
oled_write_P(PSTR(" "), false);
|
||||||
oled_write_P(PSTR(OLED_RENDER_USER_NUKE), userspace_config.nuke_switch);
|
# endif
|
||||||
#ifdef OLED_DISPLAY_128X64
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static const char PROGMEM rgb_layer_status[2][3] = {{0xEE, 0xEF, 0}, {0xF0, 0xF1, 0}};
|
||||||
|
oled_write_P(rgb_layer_status[userspace_config.rgb_layer_change], false);
|
||||||
|
static const char PROGMEM nukem_good[2][3] = {{0xF8, 0xF9, 0}, {0xF6, 0xF7, 0}};
|
||||||
|
oled_write_P(nukem_good[0], userspace_config.nuke_switch);
|
||||||
|
#if defined(OLED_DISPLAY_128X64)
|
||||||
oled_advance_page(true);
|
oled_advance_page(true);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -253,23 +280,55 @@ __attribute__((weak)) void oled_driver_render_logo(void) {
|
||||||
oled_write_P(qmk_logo, false);
|
oled_write_P(qmk_logo, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void render_wpm(void) {
|
||||||
|
#ifdef WPM_ENABLE
|
||||||
|
# ifdef OLED_DISPLAY_128X64
|
||||||
|
char wpm_counter[4];
|
||||||
|
# else
|
||||||
|
char wpm_counter[6];
|
||||||
|
# endif
|
||||||
|
snprintf(wpm_counter, sizeof(wpm_counter), "%3u", get_current_wpm());
|
||||||
|
oled_write_P(PSTR(OLED_RENDER_WPM_COUNTER), false);
|
||||||
|
oled_write(wpm_counter, false);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef KEYBOARD_handwired_dactyl_manuform_5x6_right_trackball
|
||||||
|
extern keyboard_config_t keyboard_config;
|
||||||
|
extern uint16_t dpi_array[];
|
||||||
|
|
||||||
|
void render_pointing_dpi_status(void) {
|
||||||
|
char dpi_status[6];
|
||||||
|
snprintf(dpi_status, sizeof(dpi_status), "%5u", dpi_array[keyboard_config.dpi_config]);
|
||||||
|
oled_write_P(PSTR(" DPI: "), false);
|
||||||
|
oled_write(dpi_status, false);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void render_status_secondary(void) {
|
void render_status_secondary(void) {
|
||||||
#if !defined(SPLIT_TRANSPORT_MIRROR) || defined(OLED_DISPLAY_128X64)
|
#if defined(OLED_DISPLAY_128X64)
|
||||||
oled_driver_render_logo();
|
oled_driver_render_logo();
|
||||||
#endif
|
#endif
|
||||||
/* Show Keyboard Layout */
|
/* Show Keyboard Layout */
|
||||||
render_default_layer_state();
|
render_default_layer_state();
|
||||||
render_layer_state();
|
render_layer_state();
|
||||||
render_mod_status(get_mods() | get_oneshot_mods());
|
render_mod_status(get_mods() | get_oneshot_mods());
|
||||||
render_keylogger_status();
|
// render_keylogger_status();
|
||||||
|
render_keylock_status(host_keyboard_leds());
|
||||||
}
|
}
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
void render_status_main(void) {
|
void render_status_main(void) {
|
||||||
|
#if defined(OLED_DISPLAY_128X64)
|
||||||
oled_driver_render_logo();
|
oled_driver_render_logo();
|
||||||
/* Show Keyboard Layout */
|
render_wpm();
|
||||||
|
# ifdef KEYBOARD_handwired_dactyl_manuform_5x6_right_trackball
|
||||||
|
render_pointing_dpi_status();
|
||||||
|
# endif
|
||||||
|
oled_write_P(PSTR("\n"), false);
|
||||||
|
#else
|
||||||
render_default_layer_state();
|
render_default_layer_state();
|
||||||
|
#endif
|
||||||
|
/* Show Keyboard Layout */
|
||||||
// render_keylock_status(host_keyboard_leds());
|
// render_keylock_status(host_keyboard_leds());
|
||||||
render_bootmagic_status();
|
render_bootmagic_status();
|
||||||
render_user_status();
|
render_user_status();
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
|
|
||||||
void oled_driver_render_logo(void);
|
void oled_driver_render_logo(void);
|
||||||
bool process_record_user_oled(uint16_t keycode, keyrecord_t *record);
|
bool process_record_user_oled(uint16_t keycode, keyrecord_t *record);
|
||||||
|
extern uint32_t oled_timer;
|
||||||
|
|
||||||
#ifdef OLED_DISPLAY_128X64
|
#ifdef OLED_DISPLAY_128X64
|
||||||
# define OLED_RENDER_KEYLOGGER "Keylogger: "
|
# define OLED_RENDER_KEYLOGGER "Keylogger: "
|
||||||
|
@ -35,7 +36,7 @@ bool process_record_user_oled(uint16_t keycode, keyrecord_t *record);
|
||||||
# define OLED_RENDER_LAYOUT_EUCALYN "Eucalyn"
|
# define OLED_RENDER_LAYOUT_EUCALYN "Eucalyn"
|
||||||
# define OLED_RENDER_LAYOUT_CARPLAX "Carplax"
|
# define OLED_RENDER_LAYOUT_CARPLAX "Carplax"
|
||||||
|
|
||||||
# define OLED_RENDER_LAYER_NAME "Layer:\n"
|
# define OLED_RENDER_LAYER_NAME "Layer:"
|
||||||
# define OLED_RENDER_LAYER_LOWER "Lower"
|
# define OLED_RENDER_LAYER_LOWER "Lower"
|
||||||
# define OLED_RENDER_LAYER_RAISE "Raise"
|
# define OLED_RENDER_LAYER_RAISE "Raise"
|
||||||
# define OLED_RENDER_LAYER_ADJUST "Adjust"
|
# define OLED_RENDER_LAYER_ADJUST "Adjust"
|
||||||
|
@ -46,7 +47,7 @@ bool process_record_user_oled(uint16_t keycode, keyrecord_t *record);
|
||||||
# define OLED_RENDER_LOCK_CAPS "CAPS"
|
# define OLED_RENDER_LOCK_CAPS "CAPS"
|
||||||
# define OLED_RENDER_LOCK_SCLK "SCLK"
|
# define OLED_RENDER_LOCK_SCLK "SCLK"
|
||||||
|
|
||||||
# define OLED_RENDER_MODS_NAME "Mods: "
|
# define OLED_RENDER_MODS_NAME "Mods:"
|
||||||
# define OLED_RENDER_MODS_SFT "Sft"
|
# define OLED_RENDER_MODS_SFT "Sft"
|
||||||
# define OLED_RENDER_MODS_CTL "Ctl"
|
# define OLED_RENDER_MODS_CTL "Ctl"
|
||||||
# define OLED_RENDER_MODS_ALT "Alt"
|
# define OLED_RENDER_MODS_ALT "Alt"
|
||||||
|
@ -63,6 +64,7 @@ bool process_record_user_oled(uint16_t keycode, keyrecord_t *record);
|
||||||
# define OLED_RENDER_USER_LAYR "Layr"
|
# define OLED_RENDER_USER_LAYR "Layr"
|
||||||
# define OLED_RENDER_USER_NUKE "Nuke"
|
# define OLED_RENDER_USER_NUKE "Nuke"
|
||||||
|
|
||||||
|
# define OLED_RENDER_WPM_COUNTER "WPM: "
|
||||||
#else
|
#else
|
||||||
# define OLED_RENDER_KEYLOGGER "KLogr"
|
# define OLED_RENDER_KEYLOGGER "KLogr"
|
||||||
|
|
||||||
|
@ -83,15 +85,15 @@ bool process_record_user_oled(uint16_t keycode, keyrecord_t *record);
|
||||||
# define OLED_RENDER_LAYER_MODS " Mods"
|
# define OLED_RENDER_LAYER_MODS " Mods"
|
||||||
|
|
||||||
# define OLED_RENDER_LOCK_NAME "Lock:"
|
# define OLED_RENDER_LOCK_NAME "Lock:"
|
||||||
# define OLED_RENDER_LOCK_NUML "N"
|
# define OLED_RENDER_LOCK_NUML "NumL"
|
||||||
# define OLED_RENDER_LOCK_CAPS "C"
|
# define OLED_RENDER_LOCK_CAPS "CapL"
|
||||||
# define OLED_RENDER_LOCK_SCLK "S"
|
# define OLED_RENDER_LOCK_SCLK "ScrL"
|
||||||
|
|
||||||
# define OLED_RENDER_MODS_NAME "Mods: "
|
# define OLED_RENDER_MODS_NAME "Mods: "
|
||||||
# define OLED_RENDER_MODS_SFT "S"
|
# define OLED_RENDER_MODS_SFT "Shft"
|
||||||
# define OLED_RENDER_MODS_CTL "C"
|
# define OLED_RENDER_MODS_CTL "Ctrl"
|
||||||
# define OLED_RENDER_MODS_ALT "A"
|
# define OLED_RENDER_MODS_ALT "Alt\n"
|
||||||
# define OLED_RENDER_MODS_GUI "G"
|
# define OLED_RENDER_MODS_GUI "GUI\n"
|
||||||
|
|
||||||
# define OLED_RENDER_BOOTMAGIC_NAME "BTMGK"
|
# define OLED_RENDER_BOOTMAGIC_NAME "BTMGK"
|
||||||
# define OLED_RENDER_BOOTMAGIC_NKRO "NKRO"
|
# define OLED_RENDER_BOOTMAGIC_NKRO "NKRO"
|
||||||
|
@ -104,4 +106,6 @@ bool process_record_user_oled(uint16_t keycode, keyrecord_t *record);
|
||||||
# define OLED_RENDER_USER_LAYR "Layr"
|
# define OLED_RENDER_USER_LAYR "Layr"
|
||||||
# define OLED_RENDER_USER_NUKE "Nuke"
|
# define OLED_RENDER_USER_NUKE "Nuke"
|
||||||
|
|
||||||
|
# define OLED_RENDER_WPM_COUNTER "WPM: "
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -55,6 +55,7 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
|
||||||
#define ADJUST MO(_ADJUST)
|
#define ADJUST MO(_ADJUST)
|
||||||
#define TG_MODS TG(_MODS)
|
#define TG_MODS TG(_MODS)
|
||||||
#define TG_GAME TG(_GAMEPAD)
|
#define TG_GAME TG(_GAMEPAD)
|
||||||
|
#define TG_DBLO TG(_DIABLO)
|
||||||
#define OS_LWR OSL(_LOWER)
|
#define OS_LWR OSL(_LOWER)
|
||||||
#define OS_RSE OSL(_RAISE)
|
#define OS_RSE OSL(_RAISE)
|
||||||
|
|
||||||
|
|
|
@ -14,15 +14,17 @@
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "drashna.h"
|
#ifdef RGBLIGHT_ENABLE
|
||||||
#include "rgb_stuff.h"
|
|
||||||
#include "eeprom.h"
|
# include "drashna.h"
|
||||||
|
# include "rgb_stuff.h"
|
||||||
|
# include "eeprom.h"
|
||||||
|
|
||||||
bool has_initialized;
|
bool has_initialized;
|
||||||
|
|
||||||
void rgblight_sethsv_default_helper(uint8_t index) { rgblight_sethsv_at(rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val(), index); }
|
void rgblight_sethsv_default_helper(uint8_t index) { rgblight_sethsv_at(rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val(), index); }
|
||||||
|
|
||||||
#ifdef RGBLIGHT_TWINKLE
|
# ifdef RGBLIGHT_TWINKLE
|
||||||
static rgblight_fadeout lights[RGBLED_NUM];
|
static rgblight_fadeout lights[RGBLED_NUM];
|
||||||
|
|
||||||
/* Handler for fading/twinkling effect */
|
/* Handler for fading/twinkling effect */
|
||||||
|
@ -91,7 +93,7 @@ void start_rgb_light(void) {
|
||||||
|
|
||||||
rgblight_sethsv_at(light->hue, 255, light->life, light_index);
|
rgblight_sethsv_at(light->hue, 255, light->life, light_index);
|
||||||
}
|
}
|
||||||
#endif
|
# endif
|
||||||
|
|
||||||
bool process_record_user_rgb_light(uint16_t keycode, keyrecord_t *record) {
|
bool process_record_user_rgb_light(uint16_t keycode, keyrecord_t *record) {
|
||||||
uint16_t temp_keycode = keycode;
|
uint16_t temp_keycode = keycode;
|
||||||
|
@ -101,7 +103,7 @@ bool process_record_user_rgb_light(uint16_t keycode, keyrecord_t *record) {
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (temp_keycode) {
|
switch (temp_keycode) {
|
||||||
#ifdef RGBLIGHT_TWINKLE
|
# ifdef RGBLIGHT_TWINKLE
|
||||||
case KC_A ... KC_SLASH:
|
case KC_A ... KC_SLASH:
|
||||||
case KC_F1 ... KC_F12:
|
case KC_F1 ... KC_F12:
|
||||||
case KC_INSERT ... KC_UP:
|
case KC_INSERT ... KC_UP:
|
||||||
|
@ -112,20 +114,20 @@ bool process_record_user_rgb_light(uint16_t keycode, keyrecord_t *record) {
|
||||||
start_rgb_light();
|
start_rgb_light();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#endif // RGBLIGHT_TWINKLE
|
# endif // RGBLIGHT_TWINKLE
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(RGBLIGHT_STARTUP_ANIMATION)
|
# if defined(RGBLIGHT_STARTUP_ANIMATION)
|
||||||
static bool is_enabled;
|
static bool is_enabled;
|
||||||
static bool is_rgblight_startup;
|
static bool is_rgblight_startup;
|
||||||
static uint8_t old_hue;
|
static uint8_t old_hue;
|
||||||
static uint16_t rgblight_startup_loop_timer;
|
static uint16_t rgblight_startup_loop_timer;
|
||||||
#endif
|
# endif
|
||||||
|
|
||||||
void keyboard_post_init_rgb_light(void) {
|
void keyboard_post_init_rgb_light(void) {
|
||||||
#if defined(RGBLIGHT_STARTUP_ANIMATION)
|
# if defined(RGBLIGHT_STARTUP_ANIMATION)
|
||||||
is_enabled = rgblight_is_enabled();
|
is_enabled = rgblight_is_enabled();
|
||||||
if (userspace_config.rgb_layer_change) {
|
if (userspace_config.rgb_layer_change) {
|
||||||
rgblight_enable_noeeprom();
|
rgblight_enable_noeeprom();
|
||||||
|
@ -136,7 +138,7 @@ void keyboard_post_init_rgb_light(void) {
|
||||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
|
rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
|
||||||
is_rgblight_startup = true;
|
is_rgblight_startup = true;
|
||||||
}
|
}
|
||||||
#endif
|
# endif
|
||||||
layer_state_set_rgb_light(layer_state);
|
layer_state_set_rgb_light(layer_state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -145,7 +147,7 @@ void matrix_scan_rgb_light(void) {
|
||||||
scan_rgblight_fadeout();
|
scan_rgblight_fadeout();
|
||||||
# endif // RGBLIGHT_ENABLE
|
# endif // RGBLIGHT_ENABLE
|
||||||
|
|
||||||
#if defined(RGBLIGHT_STARTUP_ANIMATION)
|
# if defined(RGBLIGHT_STARTUP_ANIMATION)
|
||||||
if (is_rgblight_startup && is_keyboard_master()) {
|
if (is_rgblight_startup && is_keyboard_master()) {
|
||||||
if (timer_elapsed(rgblight_startup_loop_timer) > 10) {
|
if (timer_elapsed(rgblight_startup_loop_timer) > 10) {
|
||||||
static uint8_t counter;
|
static uint8_t counter;
|
||||||
|
@ -163,7 +165,7 @@ void matrix_scan_rgb_light(void) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
# endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void rgblight_set_hsv_and_mode(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode) {
|
void rgblight_set_hsv_and_mode(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode) {
|
||||||
|
@ -173,10 +175,10 @@ void rgblight_set_hsv_and_mode(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mo
|
||||||
}
|
}
|
||||||
|
|
||||||
layer_state_t layer_state_set_rgb_light(layer_state_t state) {
|
layer_state_t layer_state_set_rgb_light(layer_state_t state) {
|
||||||
#ifdef RGBLIGHT_ENABLE
|
# ifdef RGBLIGHT_ENABLE
|
||||||
if (userspace_config.rgb_layer_change) {
|
if (userspace_config.rgb_layer_change) {
|
||||||
uint8_t mode = layer_state_cmp(state,_MODS) ? RGBLIGHT_MODE_BREATHING : RGBLIGHT_MODE_STATIC_LIGHT;
|
uint8_t mode = layer_state_cmp(state, _MODS) ? RGBLIGHT_MODE_BREATHING : RGBLIGHT_MODE_STATIC_LIGHT;
|
||||||
switch (get_highest_layer(state|default_layer_state)) {
|
switch (get_highest_layer(state | default_layer_state)) {
|
||||||
case _MACROS:
|
case _MACROS:
|
||||||
# ifdef RGBLIGHT_EFFECT_TWINKLE
|
# ifdef RGBLIGHT_EFFECT_TWINKLE
|
||||||
rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_TWINKLE + 5);
|
rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_TWINKLE + 5);
|
||||||
|
@ -228,7 +230,9 @@ layer_state_t layer_state_set_rgb_light(layer_state_t state) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif // RGBLIGHT_ENABLE
|
# endif // RGBLIGHT_ENABLE
|
||||||
|
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
|
@ -66,3 +66,27 @@ ifeq ($(strip $(PIMORONI_TRACKBALL_ENABLE)), yes)
|
||||||
SRC += pimoroni_trackball.c
|
SRC += pimoroni_trackball.c
|
||||||
QUANTUM_LIB_SRC += i2c_master.c
|
QUANTUM_LIB_SRC += i2c_master.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
|
||||||
|
ifneq ($(strip $(SPLIT_TRANSPORT)), custom)
|
||||||
|
SPLIT_TRANSPORT = custom
|
||||||
|
QUANTUM_LIB_SRC += drashna_transport.c
|
||||||
|
OPT_DEFS += -DDRASHNA_CUSTOM_TRANSPORT
|
||||||
|
# Unused functions are pruned away, which is why we can add multiple drivers here without bloat.
|
||||||
|
ifeq ($(PLATFORM),AVR)
|
||||||
|
ifneq ($(NO_I2C),yes)
|
||||||
|
QUANTUM_LIB_SRC += i2c_master.c \
|
||||||
|
i2c_slave.c
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
SERIAL_DRIVER ?= bitbang
|
||||||
|
OPT_DEFS += -DSERIAL_DRIVER_$(strip $(shell echo $(SERIAL_DRIVER) | tr '[:lower:]' '[:upper:]'))
|
||||||
|
ifeq ($(strip $(SERIAL_DRIVER)), bitbang)
|
||||||
|
QUANTUM_LIB_SRC += serial.c
|
||||||
|
else
|
||||||
|
QUANTUM_LIB_SRC += serial_$(strip $(SERIAL_DRIVER)).c
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
|
@ -21,19 +21,6 @@ Since our quirky block definitions are basically a list of comma separated
|
||||||
arguments, we need a wrapper in order for these definitions to be
|
arguments, we need a wrapper in order for these definitions to be
|
||||||
expanded before being used as arguments to the LAYOUT_xxx macro.
|
expanded before being used as arguments to the LAYOUT_xxx macro.
|
||||||
*/
|
*/
|
||||||
#if (!defined(LAYOUT) && defined(KEYMAP))
|
|
||||||
# define LAYOUT KEYMAP
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// clang-format off
|
|
||||||
#define LAYOUT_ergodox_wrapper(...) LAYOUT_ergodox(__VA_ARGS__)
|
|
||||||
#define LAYOUT_ergodox_pretty_wrapper(...) LAYOUT_ergodox_pretty(__VA_ARGS__)
|
|
||||||
#define KEYMAP_wrapper(...) LAYOUT(__VA_ARGS__)
|
|
||||||
#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
|
|
||||||
#define LAYOUT_ortho_4x12_wrapper(...) LAYOUT_ortho_4x12(__VA_ARGS__)
|
|
||||||
#define LAYOUT_ortho_5x12_wrapper(...) LAYOUT_ortho_5x12(__VA_ARGS__)
|
|
||||||
#define LAYOUT_gergo_wrapper(...) LAYOUT_gergo(__VA_ARGS__)
|
|
||||||
#define LAYOUT_split_3x6_3_wrapper(...) LAYOUT_split_3x6_3(__VA_ARGS__)
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Blocks for each of the four major keyboard layouts
|
Blocks for each of the four major keyboard layouts
|
||||||
|
@ -46,14 +33,14 @@ NOTE: These are all the same length. If you do a search/replace
|
||||||
then you need to add/remove underscores to keep the
|
then you need to add/remove underscores to keep the
|
||||||
lengths consistent.
|
lengths consistent.
|
||||||
*/
|
*/
|
||||||
|
// clang-format off
|
||||||
#define _________________QWERTY_L1_________________ KC_Q, KC_W, KC_E, KC_R, KC_T
|
#define _________________QWERTY_L1_________________ KC_Q, KC_W, KC_E, KC_R, KC_T
|
||||||
#define _________________QWERTY_L2_________________ KC_A, KC_S, KC_D, KC_F, KC_G
|
#define _________________QWERTY_L2_________________ KC_A, KC_S, KC_D, KC_F, KC_G
|
||||||
#define _________________QWERTY_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B
|
#define _________________QWERTY_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B
|
||||||
|
|
||||||
#define _________________QWERTY_R1_________________ KC_Y, KC_U, KC_I, KC_O, KC_P
|
#define _________________QWERTY_R1_________________ KC_Y, KC_U, KC_I, KC_O, KC_P
|
||||||
#define _________________QWERTY_R2_________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN
|
#define _________________QWERTY_R2_________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT
|
||||||
#define _________________QWERTY_R3_________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLASH
|
#define _________________QWERTY_R3_________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH
|
||||||
|
|
||||||
|
|
||||||
#define _________________COLEMAK_L1________________ KC_Q, KC_W, KC_F, KC_P, KC_G
|
#define _________________COLEMAK_L1________________ KC_Q, KC_W, KC_F, KC_P, KC_G
|
||||||
|
@ -61,15 +48,15 @@ NOTE: These are all the same length. If you do a search/replace
|
||||||
#define _________________COLEMAK_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_B
|
#define _________________COLEMAK_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_B
|
||||||
|
|
||||||
#define _________________COLEMAK_R1________________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN
|
#define _________________COLEMAK_R1________________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN
|
||||||
#define _________________COLEMAK_R2________________ KC_H, KC_N, KC_E, KC_I, KC_O
|
#define _________________COLEMAK_R2________________ KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT
|
||||||
#define _________________COLEMAK_R3________________ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLASH
|
#define _________________COLEMAK_R3________________ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH
|
||||||
|
|
||||||
#define ______________COLEMAK_MOD_DH_L1____________ KC_Q, KC_W, KC_F, KC_P, KC_B
|
#define ______________COLEMAK_MOD_DH_L1____________ KC_Q, KC_W, KC_F, KC_P, KC_B
|
||||||
#define ______________COLEMAK_MOD_DH_L2____________ KC_A, KC_R, KC_S, KC_T, KC_G
|
#define ______________COLEMAK_MOD_DH_L2____________ KC_A, KC_R, KC_S, KC_T, KC_G
|
||||||
#define ______________COLEMAK_MOD_DH_L3____________ KC_Z, KC_X, KC_C, KC_D, KC_V
|
#define ______________COLEMAK_MOD_DH_L3____________ KC_Z, KC_X, KC_C, KC_D, KC_V
|
||||||
|
|
||||||
#define ______________COLEMAK_MOD_DH_R1____________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN
|
#define ______________COLEMAK_MOD_DH_R1____________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN
|
||||||
#define ______________COLEMAK_MOD_DH_R2____________ KC_M, KC_N, KC_E, KC_I, KC_O
|
#define ______________COLEMAK_MOD_DH_R2____________ KC_M, KC_N, KC_E, KC_I, KC_O, KC_QUOT
|
||||||
#define ______________COLEMAK_MOD_DH_R3____________ KC_K, KC_H, KC_COMM, KC_DOT, KC_SLASH
|
#define ______________COLEMAK_MOD_DH_R3____________ KC_K, KC_H, KC_COMM, KC_DOT, KC_SLASH
|
||||||
|
|
||||||
|
|
||||||
|
@ -78,7 +65,7 @@ NOTE: These are all the same length. If you do a search/replace
|
||||||
#define _________________DVORAK_L3_________________ KC_SCLN, KC_Q, KC_J, KC_K, KC_X
|
#define _________________DVORAK_L3_________________ KC_SCLN, KC_Q, KC_J, KC_K, KC_X
|
||||||
|
|
||||||
#define _________________DVORAK_R1_________________ KC_F, KC_G, KC_C, KC_R, KC_L
|
#define _________________DVORAK_R1_________________ KC_F, KC_G, KC_C, KC_R, KC_L
|
||||||
#define _________________DVORAK_R2_________________ KC_D, KC_H, KC_T, KC_N, KC_S
|
#define _________________DVORAK_R2_________________ KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH
|
||||||
#define _________________DVORAK_R3_________________ KC_B, KC_M, KC_W, KC_V, KC_Z
|
#define _________________DVORAK_R3_________________ KC_B, KC_M, KC_W, KC_V, KC_Z
|
||||||
|
|
||||||
|
|
||||||
|
@ -87,7 +74,7 @@ NOTE: These are all the same length. If you do a search/replace
|
||||||
#define ________________DVORAK_AU_L3_______________ KC_SCLN, KC_Q, KC_J, KC_K, KC_X
|
#define ________________DVORAK_AU_L3_______________ KC_SCLN, KC_Q, KC_J, KC_K, KC_X
|
||||||
|
|
||||||
#define ________________DVORAK_AU_R1_______________ KC_F, KC_G, KC_C, KC_R, KC_L
|
#define ________________DVORAK_AU_R1_______________ KC_F, KC_G, KC_C, KC_R, KC_L
|
||||||
#define ________________DVORAK_AU_R2_______________ KC_D, KC_H, KC_T, KC_N, KC_S
|
#define ________________DVORAK_AU_R2_______________ KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH
|
||||||
#define ________________DVORAK_AU_R3_______________ KC_B, KC_M, KC_W, KC_V, KC_Z
|
#define ________________DVORAK_AU_R3_______________ KC_B, KC_M, KC_W, KC_V, KC_Z
|
||||||
|
|
||||||
#define _________________WORKMAN_L1________________ KC_Q, KC_D, KC_R, KC_W, KC_B
|
#define _________________WORKMAN_L1________________ KC_Q, KC_D, KC_R, KC_W, KC_B
|
||||||
|
@ -95,8 +82,8 @@ NOTE: These are all the same length. If you do a search/replace
|
||||||
#define _________________WORKMAN_L3________________ KC_Z, KC_X, KC_M, KC_C, KC_V
|
#define _________________WORKMAN_L3________________ KC_Z, KC_X, KC_M, KC_C, KC_V
|
||||||
|
|
||||||
#define _________________WORKMAN_R1________________ KC_J, KC_F, KC_U, KC_P, KC_SCLN
|
#define _________________WORKMAN_R1________________ KC_J, KC_F, KC_U, KC_P, KC_SCLN
|
||||||
#define _________________WORKMAN_R2________________ KC_Y, KC_N, KC_E, KC_O, KC_I
|
#define _________________WORKMAN_R2________________ KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOT
|
||||||
#define _________________WORKMAN_R3________________ KC_K, KC_L, KC_COMM, KC_DOT, KC_SLASH
|
#define _________________WORKMAN_R3________________ KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH
|
||||||
|
|
||||||
|
|
||||||
#define _________________NORMAN_L1_________________ KC_Q, KC_W, KC_D, KC_F, KC_K
|
#define _________________NORMAN_L1_________________ KC_Q, KC_W, KC_D, KC_F, KC_K
|
||||||
|
@ -104,8 +91,8 @@ NOTE: These are all the same length. If you do a search/replace
|
||||||
#define _________________NORMAN_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B
|
#define _________________NORMAN_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B
|
||||||
|
|
||||||
#define _________________NORMAN_R1_________________ KC_J, KC_U, KC_R, KC_L, KC_SCLN
|
#define _________________NORMAN_R1_________________ KC_J, KC_U, KC_R, KC_L, KC_SCLN
|
||||||
#define _________________NORMAN_R2_________________ KC_Y, KC_N, KC_I, KC_O, KC_U
|
#define _________________NORMAN_R2_________________ KC_Y, KC_N, KC_I, KC_O, KC_U, KC_QUOT
|
||||||
#define _________________NORMAN_R3_________________ KC_P, KC_M, KC_COMM, KC_DOT, KC_SLASH
|
#define _________________NORMAN_R3_________________ KC_P, KC_M, KC_COMM, KC_DOT, KC_SLSH
|
||||||
|
|
||||||
|
|
||||||
#define _________________MALTRON_L1________________ KC_Q, KC_P, KC_Y, KC_C, KC_B
|
#define _________________MALTRON_L1________________ KC_Q, KC_P, KC_Y, KC_C, KC_B
|
||||||
|
@ -113,52 +100,61 @@ NOTE: These are all the same length. If you do a search/replace
|
||||||
#define _________________MALTRON_L3________________ KC_SCLN, KC_SLSH, KC_J, KC_G, KC_COMM
|
#define _________________MALTRON_L3________________ KC_SCLN, KC_SLSH, KC_J, KC_G, KC_COMM
|
||||||
|
|
||||||
#define _________________MALTRON_R1________________ KC_V, KC_M, KC_U, KC_Z, KC_L
|
#define _________________MALTRON_R1________________ KC_V, KC_M, KC_U, KC_Z, KC_L
|
||||||
#define _________________MALTRON_R2________________ KC_D, KC_T, KC_D, KC_O, KC_R
|
#define _________________MALTRON_R2________________ KC_D, KC_T, KC_D, KC_O, KC_R, KC_QUOT
|
||||||
#define _________________MALTRON_R3________________ KC_DOT, KC_W, KC_K, KC_MINS, KC_X
|
#define _________________MALTRON_R3________________ KC_DOT, KC_W, KC_K, KC_MINS, KC_X
|
||||||
|
|
||||||
|
|
||||||
#define _________________EUCALYN_L1________________ KC_SLSH, KC_COMM, KC_DOT, KC_F, KC_Q
|
#define _________________EUCALYN_L1________________ KC_Q, KC_W, KC_COMM, KC_DOT, KC_SCLN
|
||||||
#define _________________EUCALYN_L2________________ KC_A, KC_O, KC_E, KC_I, KC_U
|
#define _________________EUCALYN_L2________________ KC_A, KC_O, KC_E, KC_I, KC_U
|
||||||
#define _________________EUCALYN_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_W
|
#define _________________EUCALYN_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_F
|
||||||
|
|
||||||
#define _________________EUCALYN_R1________________ KC_M, KC_R, KC_D, KC_Y, KC_P
|
#define _________________EUCALYN_R1________________ KC_M, KC_R, KC_D, KC_Y, KC_P
|
||||||
#define _________________EUCALYN_R2________________ KC_G, KC_T, KC_K, KC_S, KC_N
|
#define _________________EUCALYN_R2________________ KC_G, KC_T, KC_K, KC_S, KC_N, KC_QUOT
|
||||||
#define _________________EUCALYN_R3________________ KC_B, KC_H, KC_J, KC_L, KC_SCLN
|
#define _________________EUCALYN_R3________________ KC_B, KC_H, KC_J, KC_L, KC_SLSH
|
||||||
|
|
||||||
|
|
||||||
|
// Qwerty-like
|
||||||
#define _____________CARPLAX_QFMLWY_L1_____________ KC_Q, KC_F, KC_M, KC_L, KC_W
|
#define _____________CARPLAX_QFMLWY_L1_____________ KC_Q, KC_F, KC_M, KC_L, KC_W
|
||||||
#define _____________CARPLAX_QFMLWY_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R
|
#define _____________CARPLAX_QFMLWY_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R
|
||||||
#define _____________CARPLAX_QFMLWY_L3_____________ KC_Z, KC_V, KC_G, KC_C, KC_X
|
#define _____________CARPLAX_QFMLWY_L3_____________ KC_Z, KC_V, KC_G, KC_C, KC_X
|
||||||
|
|
||||||
#define _____________CARPLAX_QFMLWY_R1_____________ KC_Y, KC_U, KC_O, KC_B, KC_J
|
#define _____________CARPLAX_QFMLWY_R1_____________ KC_Y, KC_U, KC_O, KC_B, KC_J
|
||||||
#define _____________CARPLAX_QFMLWY_R2_____________ KC_I, KC_A, KC_E, KC_H, KC_SCLN
|
#define _____________CARPLAX_QFMLWY_R2_____________ KC_I, KC_A, KC_E, KC_H, KC_SCLN, KC_QUOT
|
||||||
#define _____________CARPLAX_QFMLWY_R3_____________ KC_P, KC_K, KC_COMM, KC_DOT, KC_SLSH
|
#define _____________CARPLAX_QFMLWY_R3_____________ KC_P, KC_K, KC_COMM, KC_DOT, KC_SLSH
|
||||||
|
|
||||||
|
// Colemak like
|
||||||
#define _____________CARPLAX_QGMLWB_L1_____________ KC_Q, KC_G, KC_M, KC_L, KC_W
|
#define _____________CARPLAX_QGMLWB_L1_____________ KC_Q, KC_G, KC_M, KC_L, KC_W
|
||||||
#define _____________CARPLAX_QGMLWB_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R
|
#define _____________CARPLAX_QGMLWB_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R
|
||||||
#define _____________CARPLAX_QGMLWB_L3_____________ KC_Z, KC_X, KC_C, KC_F, KC_J
|
#define _____________CARPLAX_QGMLWB_L3_____________ KC_Z, KC_X, KC_C, KC_F, KC_J
|
||||||
|
|
||||||
#define _____________CARPLAX_QGMLWB_R1_____________ KC_B, KC_Y, KC_U, KC_V, KC_SCLN
|
#define _____________CARPLAX_QGMLWB_R1_____________ KC_B, KC_Y, KC_U, KC_V, KC_SCLN
|
||||||
#define _____________CARPLAX_QGMLWB_R2_____________ KC_I, KC_A, KC_E, KC_O, KC_H
|
#define _____________CARPLAX_QGMLWB_R2_____________ KC_I, KC_A, KC_E, KC_O, KC_H, KC_QUOT
|
||||||
#define _____________CARPLAX_QGMLWB_R3_____________ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH
|
#define _____________CARPLAX_QGMLWB_R3_____________ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH
|
||||||
|
|
||||||
|
// colemak like, zxcv fixed
|
||||||
#define _____________CARPLAX_QGMLWY_L1_____________ KC_Q, KC_G, KC_M, KC_L, KC_W
|
#define _____________CARPLAX_QGMLWY_L1_____________ KC_Q, KC_G, KC_M, KC_L, KC_W
|
||||||
#define _____________CARPLAX_QGMLWY_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R
|
#define _____________CARPLAX_QGMLWY_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R
|
||||||
#define _____________CARPLAX_QGMLWY_L3_____________ KC_Z, KC_X, KC_C, KC_V, KC_J
|
#define _____________CARPLAX_QGMLWY_L3_____________ KC_Z, KC_X, KC_C, KC_V, KC_J
|
||||||
|
|
||||||
#define _____________CARPLAX_QGMLWY_R1_____________ KC_Y, KC_F, KC_U, KC_B, KC_SCLN
|
#define _____________CARPLAX_QGMLWY_R1_____________ KC_Y, KC_F, KC_U, KC_B, KC_SCLN
|
||||||
#define _____________CARPLAX_QGMLWY_R2_____________ KC_I, KC_A, KC_E, KC_O, KC_H
|
#define _____________CARPLAX_QGMLWY_R2_____________ KC_I, KC_A, KC_E, KC_O, KC_H, KC_QUOT
|
||||||
#define _____________CARPLAX_QGMLWY_R3_____________ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH
|
#define _____________CARPLAX_QGMLWY_R3_____________ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH
|
||||||
|
|
||||||
|
// teeheehee
|
||||||
|
#define _____________CARPLAX_TNWCLR_L1_____________ KC_T, KC_N, KC_W, KC_C, KC_L
|
||||||
|
#define _____________CARPLAX_TNWCLR_L2_____________ KC_S, KC_K, KC_J, KC_X, KC_G
|
||||||
|
#define _____________CARPLAX_TNWCLR_L3_____________ KC_E, KC_O, KC_D, KC_I, KC_A
|
||||||
|
|
||||||
|
#define _____________CARPLAX_TNWCLR_R1_____________ KC_R, KC_B, KC_F, KC_M, KC_H
|
||||||
|
#define _____________CARPLAX_TNWCLR_R2_____________ KC_P, KC_Q, KC_Z, KC_V, KC_SCLN, KC_QUOT
|
||||||
|
#define _____________CARPLAX_TNWCLR_R3_____________ KC_U, KC_Y, KC_COMM, KC_DOT, KC_SLSH
|
||||||
|
|
||||||
|
|
||||||
#define _________________WHITE_R1__________________ KC_V, KC_Y, KC_D, KC_COMM, KC_QUOT
|
#define _________________WHITE_R1__________________ KC_V, KC_Y, KC_D, KC_COMM, KC_QUOT
|
||||||
#define _________________WHITE_R2__________________ KC_A, KC_T, KC_H, KC_E, KC_B
|
#define _________________WHITE_R2__________________ KC_A, KC_T, KC_H, KC_E, KC_B
|
||||||
#define _________________WHITE_R3__________________ KC_P, KC_K, KC_G, KC_W, KC_Q
|
#define _________________WHITE_R3__________________ KC_P, KC_K, KC_G, KC_W, KC_Q
|
||||||
|
|
||||||
#define _________________WHITE_L1__________________ KC_INT1, KC_J, KC_M, KC_L, KC_U
|
#define _________________WHITE_L1__________________ KC_INT1, KC_J, KC_M, KC_L, KC_U
|
||||||
#define _________________WHITE_L2__________________ KC_MINS, KC_C, KC_S, KC_N, KC_O // KC_I
|
#define _________________WHITE_L2__________________ KC_MINS, KC_C, KC_S, KC_N, KC_O, KC_I
|
||||||
#define _________________WHITE_L3__________________ KC_X, KC_R, KC_F, KC_DOT, KC_Z
|
#define _________________WHITE_L3__________________ KC_X, KC_R, KC_F, KC_DOT, KC_Z
|
||||||
|
|
||||||
|
|
||||||
|
@ -167,7 +163,16 @@ NOTE: These are all the same length. If you do a search/replace
|
||||||
#define _________________HALMAK_L3_________________ KC_F, KC_M, KC_V, KC_V, KC_SLASH
|
#define _________________HALMAK_L3_________________ KC_F, KC_M, KC_V, KC_V, KC_SLASH
|
||||||
|
|
||||||
#define _________________HALMAK_R1_________________ KC_SCLN, KC_Q, KC_U, KC_D, KC_J
|
#define _________________HALMAK_R1_________________ KC_SCLN, KC_Q, KC_U, KC_D, KC_J
|
||||||
#define _________________HALMAK_R2_________________ KC_DOT, KC_A, KC_E, KC_O, KC_I
|
#define _________________HALMAK_R2_________________ KC_DOT, KC_A, KC_E, KC_O, KC_I, KC_QUOTE
|
||||||
|
#define _________________HALMAK_R3_________________ KC_G, KC_P, KC_X, KC_K, KC_Y
|
||||||
|
|
||||||
|
|
||||||
|
#define _________________HALMAK_L1_________________ KC_W, KC_L, KC_R, KC_B, KC_Z
|
||||||
|
#define _________________HALMAK_L2_________________ KC_S, KC_H, KC_N, KC_T, KC_COMM
|
||||||
|
#define _________________HALMAK_L3_________________ KC_F, KC_M, KC_V, KC_V, KC_SLASH
|
||||||
|
|
||||||
|
#define _________________HALMAK_R1_________________ KC_SCLN, KC_Q, KC_U, KC_D, KC_J
|
||||||
|
#define _________________HALMAK_R2_________________ KC_DOT, KC_A, KC_E, KC_O, KC_I, KC_QUOTE
|
||||||
#define _________________HALMAK_R3_________________ KC_G, KC_P, KC_X, KC_K, KC_Y
|
#define _________________HALMAK_R3_________________ KC_G, KC_P, KC_X, KC_K, KC_Y
|
||||||
|
|
||||||
|
|
||||||
|
@ -185,7 +190,7 @@ NOTE: These are all the same length. If you do a search/replace
|
||||||
|
|
||||||
#define _________________LOWER_R1__________________ KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN
|
#define _________________LOWER_R1__________________ KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN
|
||||||
#define _________________LOWER_R2__________________ _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR
|
#define _________________LOWER_R2__________________ _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR
|
||||||
#define _________________LOWER_R3__________________ _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
#define _________________LOWER_R3__________________ _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -195,7 +200,7 @@ NOTE: These are all the same length. If you do a search/replace
|
||||||
|
|
||||||
#define _________________RAISE_R1__________________ ________________NUMBER_RIGHT_______________
|
#define _________________RAISE_R1__________________ ________________NUMBER_RIGHT_______________
|
||||||
#define _________________RAISE_R2__________________ _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC
|
#define _________________RAISE_R2__________________ _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC
|
||||||
#define _________________RAISE_R3__________________ _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
|
#define _________________RAISE_R3__________________ _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue