diff options
Diffstat (limited to 'users')
27 files changed, 368 insertions, 220 deletions
diff --git a/users/arkag/arkag.c b/users/arkag/arkag.c index 564c234c39..ea716ecdab 100644 --- a/users/arkag/arkag.c +++ b/users/arkag/arkag.c @@ -363,7 +363,7 @@ void matrix_scan_user(void) { surround_type(4, KC_GRAVE, true); } SEQ_ONE_KEY(KC_C) { - send_unicode_hex_string("00E7"); + register_unicode(0x00E7); // ç } SEQ_TWO_KEYS(KC_A, KC_V) { surround_type(2, KC_QUOT, true); @@ -384,10 +384,10 @@ void matrix_scan_user(void) { surround_type(6, KC_GRAVE, false); } SEQ_ONE_KEY(KC_E) { - send_unicode_hex_string("00E8"); + register_unicode(0x00E8); // è } SEQ_TWO_KEYS(KC_E, KC_E) { - send_unicode_hex_string("00E9"); + register_unicode(0x00E9); // é } // end format functions @@ -407,8 +407,7 @@ void matrix_scan_user(void) { // start typing functions SEQ_TWO_KEYS(KC_T, KC_M) { - // ™ - send_unicode_hex_string("2122"); + register_unicode(0x2122); // ™ } SEQ_TWO_KEYS(KC_D, KC_D) { SEND_STRING(".\\Administrator"); @@ -420,27 +419,22 @@ void matrix_scan_user(void) { tap_code(KC_ENTER); } SEQ_THREE_KEYS(KC_L, KC_O, KC_D) { - // ಠ__ಠ - send_unicode_hex_string("0CA0 005F 005F 0CA0"); + send_unicode_string("ಠ__ಠ"); } SEQ_THREE_KEYS(KC_M, KC_A, KC_P) { SEND_STRING("https://github.com/qmk/qmk_firmware/tree/master/users/arkag"); } SEQ_TWO_KEYS(KC_F, KC_F) { - // (╯‵Д′)╯彡┻━┻ - send_unicode_hex_string("0028 256F 2035 0414 2032 0029 256F 5F61 253B 2501 253B"); + send_unicode_string("(╯‵Д′)╯彡┻━┻"); } SEQ_THREE_KEYS(KC_F, KC_F, KC_F) { - // ┬─┬ノ( º _ º ノ) - send_unicode_hex_string("252C 2500 252C 30CE 0028 0020 00BA 0020 005F 0020 00BA 0020 30CE 0029"); + send_unicode_string("┬─┬ノ( º _ º ノ)"); } SEQ_THREE_KEYS(KC_L, KC_O, KC_L) { - // ( ͡° ͜ʖ ͡°) - send_unicode_hex_string("0028 0020 0361 00B0 0020 035C 0296 0020 0361 00B0 0029"); + send_unicode_string("( ͡° ͜ʖ ͡°)"); } SEQ_THREE_KEYS(KC_S, KC_S, KC_S) { - // ¯\_(ツ)_/¯ - send_unicode_hex_string("00AF 005C 005F 0028 30C4 0029 005F 002F 00AF"); + send_unicode_string("¯\\_(ツ)_/¯"); } // end typing functions @@ -513,7 +507,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case M_DASH: if (record->event.pressed){ - send_unicode_hex_string("2014"); + register_unicode(0x2014); // — } return false; case M_LMHYP: diff --git a/users/curry/process_records.c b/users/curry/process_records.c index fd58ea181b..3b5c001926 100644 --- a/users/curry/process_records.c +++ b/users/curry/process_records.c @@ -46,24 +46,24 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } break; #if defined(UNICODE_ENABLE) - case UC_FLIP: // (ノಠ痊ಠ)ノ彡┻━┻ + case UC_FLIP: if (record->event.pressed) { - send_unicode_hex_string("0028 30CE 0CA0 75CA 0CA0 0029 30CE 5F61 253B 2501 253B"); + send_unicode_string("(ノಠ痊ಠ)ノ彡┻━┻"); } break; - case UC_TABL: // ┬─┬ノ( º _ ºノ) + case UC_TABL: if (record->event.pressed) { - send_unicode_hex_string("252C 2500 252C 30CE 0028 0020 00BA 0020 005F 0020 00BA 30CE 0029"); + send_unicode_string("┬─┬ノ( º _ ºノ)"); } break; - case UC_SHRG: // ¯\_(ツ)_/¯ + case UC_SHRG: if (record->event.pressed) { - send_unicode_hex_string("00AF 005C 005F 0028 30C4 0029 005F 002F 00AF"); + send_unicode_string("¯\\_(ツ)_/¯"); } break; - case UC_DISA: // ಠ_ಠ + case UC_DISA: if (record->event.pressed) { - send_unicode_hex_string("0CA0 005F 0CA0"); + send_unicode_string("ಠ_ಠ"); } break; #endif diff --git a/users/d4mation/macros.c b/users/d4mation/macros.c index 3c115d7ead..a8ca119b12 100644 --- a/users/d4mation/macros.c +++ b/users/d4mation/macros.c @@ -45,75 +45,75 @@ bool process_record_user( uint16_t keycode, keyrecord_t *record ) { #ifdef UNICODE_ENABLE - case AMENO: /* ༼ つ ◕_◕ ༽つ */ + case AMENO: if ( record->event.pressed ) { - send_unicode_hex_string( "0F3C 0020 3064 0020 25D5 005F 25D5 0020 0F3D 3064" ); + send_unicode_string( "༼ つ ◕_◕ ༽つ" ); } return false; break; - case MAGIC: /* (∩ ͡° ͜ʖ ͡°)⊃━☆゚. * */ + case MAGIC: if ( record->event.pressed ) { - send_unicode_hex_string( "0028 2229 0020 0361 00B0 0020 035C 0296 0020 0361 00B0 0029 2283 2501 2606 FF9F 002E 0020 002A" ); + send_unicode_string( "(∩ ͡° ͜ʖ ͡°)⊃━☆゚. *" ); } return false; break; - case LENNY: /* ( ͡° ͜ʖ ͡°) */ + case LENNY: if ( record->event.pressed ) { - send_unicode_hex_string( "0028 0020 0361 00B0 0020 035C 0296 0020 0361 00b0 0029" ); + send_unicode_string( "( ͡° ͜ʖ ͡°)" ); } return false; break; - case DISFACE: /* ಠ_ಠ */ + case DISFACE: if ( record->event.pressed ) { - send_unicode_hex_string( "0CA0 005F 0CA0" ); + send_unicode_string( "ಠ_ಠ" ); } return false; break; - case TFLIP: /* (╯°□°)╯ ︵ ┻━┻ */ + case TFLIP: if ( record->event.pressed ) { - send_unicode_hex_string( "0028 256F 00b0 25A1 00B0 0029 256F FE35 253B 2501 253B" ); + send_unicode_string( "(╯°□°)╯︵┻━┻" ); } return false; break; - case TPUT: /* ┬──┬ ノ( ゜-゜ノ) */ + case TPUT: if ( record->event.pressed ) { - send_unicode_hex_string( "252C 2500 2500 252C 0020 30CE 0028 0020 309C 002D 309C 30CE 0029" ); + send_unicode_string( "┬──┬ ノ( ゜-゜ノ)" ); } return false; break; - case SHRUG: /* ¯\_(ツ)_/¯ */ + case SHRUG: if ( record->event.pressed ) { - send_unicode_hex_string( "00AF 005C 005F 0028 30C4 0029 005F 002F 00AF" ); + send_unicode_string( "¯\\_(ツ)_/¯" ); } diff --git a/users/drashna/config.h b/users/drashna/config.h index 8081af9cc3..5f7c32ff35 100644 --- a/users/drashna/config.h +++ b/users/drashna/config.h @@ -24,7 +24,7 @@ #if defined(SPLIT_KEYBOARD) # define SPLIT_MODS_ENABLE -// # define SPLIT_TRANSPORT_MIRROR +# define SPLIT_TRANSPORT_MIRROR # define SERIAL_USE_MULTI_TRANSACTION // # define SPLIT_NUM_TRANSACTIONS_KB 2 #endif @@ -56,6 +56,8 @@ # else # define RGBLIGHT_ANIMATIONS # endif +# define RGBLIGHT_EFFECT_TWINKLE_LIFE 250 +# define RGBLIGHT_EFFECT_TWINKLE_PROBABILITY 1/24 #endif // RGBLIGHT_ENABLE #ifdef RGB_MATRIX_ENABLE @@ -115,6 +117,9 @@ # define OLED_UPDATE_INTERVAL 15 # endif # define OLED_DISABLE_TIMEOUT +# ifdef OLED_FONT_H +# undef OLED_FONT_H +# endif # define OLED_FONT_H "drashna_font.h" # define OLED_FONT_END 255 // # define OLED_FONT_5X5 @@ -149,7 +154,9 @@ #undef PERMISSIVE_HOLD //#define TAPPING_FORCE_HOLD //#define RETRO_TAPPING -#define TAPPING_TERM_PER_KEY +#ifndef KEYBOARD_kyria_rev1 +# define TAPPING_TERM_PER_KEY +#endif #define FORCE_NKRO diff --git a/users/drashna/drashna.c b/users/drashna/drashna.c index 6a13f0d9b2..a493737262 100644 --- a/users/drashna/drashna.c +++ b/users/drashna/drashna.c @@ -164,6 +164,7 @@ layer_state_t layer_state_set_user(layer_state_t state) { return state; } + state = layer_state_set_keymap(state); state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST); #if defined(RGBLIGHT_ENABLE) state = layer_state_set_rgb_light(state); @@ -179,7 +180,7 @@ layer_state_t layer_state_set_user(layer_state_t state) { } } #endif - return layer_state_set_keymap(state); + return state; } __attribute__((weak)) layer_state_t default_layer_state_set_keymap(layer_state_t state) { return state; } diff --git a/users/drashna/drashna.h b/users/drashna/drashna.h index 9a18a82965..e66f106574 100644 --- a/users/drashna/drashna.h +++ b/users/drashna/drashna.h @@ -47,7 +47,6 @@ enum userspace_layers { _MALTRON, _EUCALYN, _CARPLAX, - _MODS, /* layer 8 */ _GAMEPAD, _DIABLO, _MACROS, diff --git a/users/drashna/drashna_transport.c b/users/drashna/drashna_transport.c index f0908b4900..9df11c9bdf 100644 --- a/users/drashna/drashna_transport.c +++ b/users/drashna/drashna_transport.c @@ -21,6 +21,7 @@ #include QMK_KEYBOARD_H #define ROWS_PER_HAND (MATRIX_ROWS / 2) +#define SYNC_TIMER_OFFSET 2 #ifdef RGBLIGHT_ENABLE # include "rgblight.h" @@ -37,19 +38,33 @@ static pin_t encoders_pad[] = ENCODERS_PAD_A; #endif #ifdef POINTING_DEVICE_ENABLE -static int8_t split_mouse_x = 0, split_mouse_y = 0; +static uint16_t device_cpi = 0; +static int8_t split_mouse_x = 0, split_mouse_y = 0; #endif #ifdef OLED_DRIVER_ENABLE # include "oled_driver.h" #endif +#if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT) +# include "led_matrix.h" +#endif +#if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) +# include "rgb_matrix.h" +#endif + #if defined(USE_I2C) # include "i2c_master.h" # include "i2c_slave.h" typedef struct _I2C_slave_buffer_t { +# ifndef DISABLE_SYNC_TIMER + uint32_t sync_timer; +# endif +# ifdef SPLIT_TRANSPORT_MIRROR + matrix_row_t mmatrix[ROWS_PER_HAND]; +# endif matrix_row_t smatrix[ROWS_PER_HAND]; # ifdef SPLIT_MODS_ENABLE uint8_t real_mods; @@ -70,19 +85,29 @@ typedef struct _I2C_slave_buffer_t { # ifdef WPM_ENABLE uint8_t current_wpm; # endif +# if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT) + led_eeconfig_t led_matrix; + bool led_suspend_state; +# endif +# if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) + rgb_config_t rgb_matrix; + bool rgb_suspend_state; +# endif int8_t mouse_x; int8_t mouse_y; + uint16_t device_cpi; 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_KEYMAP_MASTER_START offsetof(I2C_slave_buffer_t, mmatrix) +# define I2C_KEYMAP_SLAVE_START offsetof(I2C_slave_buffer_t, smatrix) +# define I2C_SYNC_TIME_START offsetof(I2C_slave_buffer_t, sync_timer) # 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) @@ -90,10 +115,14 @@ static I2C_slave_buffer_t *const i2c_buffer = (I2C_slave_buffer_t *)i2c_slave_re # 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_MOUSE_DPI_START offsetof(I2C_slave_buffer_t, device_cpi) # 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 I2C_LED_MATRIX_START offsetof(I2C_slave_buffer_t, led_matrix) +# define I2C_LED_SUSPEND_START offsetof(I2C_slave_buffer_t, led_suspend_state) +# define I2C_RGB_MATRIX_START offsetof(I2C_slave_buffer_t, rgb_matrix) +# define I2C_RGB_SUSPEND_START offsetof(I2C_slave_buffer_t, rgb_suspend_state) # define TIMEOUT 100 @@ -102,9 +131,11 @@ static I2C_slave_buffer_t *const i2c_buffer = (I2C_slave_buffer_t *)i2c_slave_re # 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); - +bool transport_master(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { + i2c_readReg(SLAVE_I2C_ADDRESS, I2C_KEYMAP_SLAVE_START, (void *)slave_matrix, sizeof(i2c_buffer->smatrix), TIMEOUT); +# ifdef SPLIT_TRANSPORT_MIRROR + i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_KEYMAP_MASTER_START, (void *)master_matrix, sizeof(i2c_buffer->mmatrix), TIMEOUT); +# endif // write backlight info # ifdef BACKLIGHT_ENABLE uint8_t level = is_backlight_enabled() ? get_backlight_level() : 0; @@ -147,6 +178,12 @@ bool transport_master(matrix_row_t matrix[]) { 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); + + if (device_cpi != i2c_buffer->device_cpi) { + if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_MOUSE_DPI_START, (void *)&device_cpi, sizeof(device_cpi), TIMEOUT) >= 0) { + i2c_buffer->device_cpi = device_cpi + } + } } # endif @@ -188,29 +225,42 @@ bool transport_master(matrix_row_t matrix[]) { } # 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; + bool is_oled_on = is_oled_on(); + if (is_oled_on != i2c_buffer->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; - } - } +# if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT) + i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_LED_MATRIX_START, (void *)led_matrix_eeconfig, sizeof(i2c_buffer->led_matrix), TIMEOUT); + bool suspend_state = led_matrix_get_suspend_state(); + i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_LED_SUSPEND_START, (void *)suspend_state, sizeof(i2c_buffer->led_suspend_state), TIMEOUT); +# endif +# if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) + i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_RGB_MATRIX_START, (void *)rgb_matrix_config, sizeof(i2c_buffer->rgb_matrix), TIMEOUT); + bool suspend_state = rgb_matrix_get_suspend_state(); + i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_RGB_SUSPEND_START, (void *)suspend_state, sizeof(i2c_buffer->rgb_suspend_state), TIMEOUT); +# endif + +# ifndef DISABLE_SYNC_TIMER + i2c_buffer->sync_timer = sync_timer_read32() + SYNC_TIMER_OFFSET; + i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_SYNC_TIME_START, (void *)&i2c_buffer->sync_timer, sizeof(i2c_buffer->sync_timer), TIMEOUT); # endif return true; } -void transport_slave(matrix_row_t matrix[]) { +void transport_slave(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { +# ifndef DISABLE_SYNC_TIMER + sync_timer_update(i2c_buffer->sync_timer); +# endif // Copy matrix to I2C buffer - memcpy((void *)i2c_buffer->smatrix, (void *)matrix, sizeof(i2c_buffer->smatrix)); + memcpy((void *)i2c_buffer->smatrix, (void *)slave_matrix, sizeof(i2c_buffer->smatrix)); +# ifdef SPLIT_TRANSPORT_MIRROR + memcpy((void *)master_matrix, (void *)i2c_buffer->mmatrix, sizeof(i2c_buffer->mmatrix)); +# endif // Read Backlight Info # ifdef BACKLIGHT_ENABLE @@ -235,6 +285,11 @@ void transport_slave(matrix_row_t matrix[]) { # ifdef POINTING_DEVICE_ENABLE if (!is_keyboard_left()) { + static uint16_t cpi; + if (cpi != i2c_buffer->device_cpi) { + cpi = i2c_buffer->device_cpi; + pmw_set_cpi(cpi); + } 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; @@ -266,8 +321,13 @@ void transport_slave(matrix_row_t matrix[]) { } # endif -# ifdef RGB_MATRIX_ENABLE - rgb_matrix_set_suspend_state(i2c_buffer->is_rgb_matrix_suspended); +# if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT) + memcpy((void *)i2c_buffer->led_matrix, (void *)led_matrix_eeconfig, sizeof(i2c_buffer->led_matrix)); + led_matrix_set_suspend_state(i2c_buffer->led_suspend_state); +# endif +# if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) + memcpy((void *)i2c_buffer->rgb_matrix, (void *)rgb_matrix_config, sizeof(i2c_buffer->rgb_matrix)); + rgb_matrix_set_suspend_state(i2c_buffer->rgb_suspend_state); # endif } @@ -283,30 +343,44 @@ 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]; + uint8_t encoder_state[NUMBER_OF_ENCODERS]; # endif - int8_t mouse_x; - int8_t mouse_y; + 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; + uint8_t real_mods; + uint8_t weak_mods; # ifndef NO_ACTION_ONESHOT - uint8_t oneshot_mods; + uint8_t oneshot_mods; # endif # endif +# ifndef DISABLE_SYNC_TIMER + uint32_t sync_timer; +# endif +# ifdef SPLIT_TRANSPORT_MIRROR + matrix_row_t mmatrix[ROWS_PER_HAND]; +# endif # ifdef BACKLIGHT_ENABLE - uint8_t backlight_level; + uint8_t backlight_level; # endif # ifdef WPM_ENABLE - uint8_t current_wpm; + uint8_t current_wpm; # endif + uint16_t device_cpi; bool oled_on; layer_state_t t_layer_state; layer_state_t t_default_layer_state; - bool is_rgb_matrix_suspended; +# if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT) + led_eeconfig_t led_matrix; + bool led_suspend_state; +# endif +# if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) + rgb_config_t rgb_matrix; + bool rgb_suspend_state; +# endif } __attribute__((packed)) Serial_m2s_buffer_t; # if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) @@ -383,7 +457,7 @@ void transport_rgblight_slave(void) { # define transport_rgblight_slave() # endif -bool transport_master(matrix_row_t matrix[]) { +bool transport_master(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { # ifndef SERIAL_USE_MULTI_TRANSACTION if (soft_serial_transaction() != TRANSACTION_END) { return false; @@ -397,7 +471,10 @@ bool transport_master(matrix_row_t matrix[]) { // TODO: if MATRIX_COLS > 8 change to unpack() for (int i = 0; i < ROWS_PER_HAND; ++i) { - matrix[i] = serial_s2m_buffer.smatrix[i]; + slave_matrix[i] = serial_s2m_buffer.smatrix[i]; +# ifdef SPLIT_TRANSPORT_MIRROR + serial_m2s_buffer.mmatrix[i] = master_matrix[i]; +# endif } # ifdef BACKLIGHT_ENABLE @@ -411,12 +488,12 @@ bool transport_master(matrix_row_t matrix[]) { # ifdef WPM_ENABLE // Write wpm to slave - serial_m2s_buffer.current_wpm = get_current_wpm(); + 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(); + 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 @@ -428,28 +505,43 @@ bool transport_master(matrix_row_t matrix[]) { temp_report.x = serial_s2m_buffer.mouse_x; temp_report.y = serial_s2m_buffer.mouse_y; pointing_device_set_report(temp_report); + serial_m2s_buffer.device_cpi = device_cpi; } # endif - serial_m2s_buffer.t_layer_state = layer_state; - serial_m2s_buffer.t_default_layer_state = default_layer_state; + 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(); + 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(); +# if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT) + serial_m2s_buffer.led_matrix = led_matrix_eeconfig; + serial_m2s_buffer.led_suspend_state = led_matrix_get_suspend_state(); +# endif +# if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) + serial_m2s_buffer.rgb_matrix = rgb_matrix_config; + serial_m2s_buffer.rgb_suspend_state = rgb_matrix_get_suspend_state(); # endif +# ifndef DISABLE_SYNC_TIMER + serial_m2s_buffer.sync_timer = sync_timer_read32() + SYNC_TIMER_OFFSET; +# endif return true; } -void transport_slave(matrix_row_t matrix[]) { +void transport_slave(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) { transport_rgblight_slave(); +# ifndef DISABLE_SYNC_TIMER + sync_timer_update(serial_m2s_buffer.sync_timer); +# endif // TODO: if MATRIX_COLS > 8 change to pack() for (int i = 0; i < ROWS_PER_HAND; ++i) { - serial_s2m_buffer.smatrix[i] = matrix[i]; + serial_s2m_buffer.smatrix[i] = slave_matrix[i]; +# ifdef SPLIT_TRANSPORT_MIRROR + master_matrix[i] = serial_m2s_buffer.mmatrix[i]; +# endif } # ifdef BACKLIGHT_ENABLE @@ -474,6 +566,11 @@ void transport_slave(matrix_row_t matrix[]) { # ifdef POINTING_DEVICE_ENABLE if (!is_keyboard_left()) { + static uint16_t cpi; + if (cpi != serial_m2s_buffer.device_cpi) { + cpi = serial_m2s_buffer.device_cpi; + pmw_set_cpi(cpi); + } serial_s2m_buffer.mouse_x = split_mouse_x; serial_s2m_buffer.mouse_y = split_mouse_y; } @@ -493,16 +590,14 @@ void transport_slave(matrix_row_t matrix[]) { } # endif -# ifdef RGB_MATRIX_ENABLE - rgb_matrix_set_suspend_state(serial_m2s_buffer.is_rgb_matrix_suspended); +# if defined(LED_MATRIX_ENABLE) && defined(LED_MATRIX_SPLIT) + led_matrix_eeconfig = serial_m2s_buffer.led_matrix; + led_matrix_set_suspend_state(serial_m2s_buffer.led_suspend_state); +# endif +# if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_SPLIT) + rgb_matrix_config = serial_m2s_buffer.rgb_matrix; + rgb_matrix_set_suspend_state(serial_m2s_buffer.rgb_suspend_state); # 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 diff --git a/users/drashna/oled_stuff.c b/users/drashna/oled_stuff.c index 4abf5f05f5..98e467d930 100644 --- a/users/drashna/oled_stuff.c +++ b/users/drashna/oled_stuff.c @@ -15,7 +15,6 @@ */ #include "drashna.h" -#include <stdio.h> #ifndef KEYLOGGER_LENGTH // # ifdef OLED_DISPLAY_128X64 @@ -158,6 +157,19 @@ void render_keylock_status(uint8_t led_usb_state) { oled_advance_page(true); #endif } +void render_matrix_scan_rate(void) { +#ifdef DEBUG_MATRIX_SCAN_RATE + char matrix_rate[5]; + uint16_t n = get_matrix_scan_rate(); + matrix_rate[4] = '\0'; + matrix_rate[3] = '0' + n % 10; + matrix_rate[2] = ( n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' '; + matrix_rate[1] = n / 10 ? '0' + n / 10 : ' '; + matrix_rate[0] = ' '; + oled_write_P(PSTR("MS:"), false); + oled_write(matrix_rate, false); +#endif +} 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}}; @@ -169,11 +181,17 @@ void render_mod_status(uint8_t modifiers) { #endif oled_write_P(mod_status[2], (modifiers & MOD_MASK_ALT)); oled_write_P(mod_status[1], (modifiers & MOD_MASK_CTRL)); + + render_matrix_scan_rate(); #if defined(OLED_DISPLAY_128X64) oled_advance_page(true); #endif } +#ifdef SWAP_HANDS_ENABLE +extern bool swap_hands; +#endif + void render_bootmagic_status(void) { /* Show Ctrl-Gui Swap options */ static const char PROGMEM logo[][2][3] = { @@ -209,7 +227,7 @@ void render_bootmagic_status(void) { oled_write_P(PSTR(" "), false); oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NKRO), keymap_config.nkro); oled_write_P(PSTR(" "), false); - oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NOGUI), !keymap_config.no_gui); + oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NOGUI), keymap_config.no_gui); #ifdef OLED_DISPLAY_128X64 oled_advance_page(true); oled_write_P(PSTR("Magic"), false); @@ -221,10 +239,11 @@ void render_bootmagic_status(void) { } #endif oled_write_P(PSTR(" "), false); - oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_GRV), keymap_config.swap_grave_esc); + oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_ONESHOT), !is_oneshot_enabled()); +#ifdef SWAP_HANDS_ENABLE 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_SWAP), swap_hands); +#endif #ifdef OLED_DISPLAY_128X64 oled_advance_page(true); #endif @@ -282,12 +301,22 @@ __attribute__((weak)) void oled_driver_render_logo(void) { void render_wpm(void) { #ifdef WPM_ENABLE + uint8_t n = get_current_wpm(); # ifdef OLED_DISPLAY_128X64 char wpm_counter[4]; + wpm_counter[3] = '\0'; + wpm_counter[2] = '0' + n % 10; + wpm_counter[1] = ( n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' '; + wpm_counter[0] = n / 10 ? '0' + n / 10 : ' '; # else char wpm_counter[6]; -# endif - snprintf(wpm_counter, sizeof(wpm_counter), "%3u", get_current_wpm()); + wpm_counter[5] = '\0'; + wpm_counter[4] = '0' + n % 10; + wpm_counter[3] = ( n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' '; + wpm_counter[2] = n / 10 ? '0' + n / 10 : ' '; + wpm_counter[1] = ' '; + wpm_counter[0] = ' '; + # endif oled_write_P(PSTR(OLED_RENDER_WPM_COUNTER), false); oled_write(wpm_counter, false); #endif @@ -299,7 +328,13 @@ 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]); + uint16_t n = dpi_array[keyboard_config.dpi_config]; + dpi_status[5] = '\0'; + dpi_status[4] = '0' + n % 10; + dpi_status[3] = ( n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' '; + dpi_status[2] = ( n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' '; + dpi_status[1] = n / 10 ? '0' + n / 10 : ' '; + dpi_status[0] = ' '; oled_write_P(PSTR(" DPI: "), false); oled_write(dpi_status, false); } @@ -320,7 +355,11 @@ void render_status_secondary(void) { void render_status_main(void) { #if defined(OLED_DISPLAY_128X64) oled_driver_render_logo(); +# ifdef DEBUG_MATRIX_SCAN_RATE + render_matrix_scan_rate(); +# else render_wpm(); +# endif # ifdef KEYBOARD_handwired_dactyl_manuform_5x6_right_trackball render_pointing_dpi_status(); # endif diff --git a/users/drashna/oled_stuff.h b/users/drashna/oled_stuff.h index 2224cd90ea..1f4440bd42 100644 --- a/users/drashna/oled_stuff.h +++ b/users/drashna/oled_stuff.h @@ -57,6 +57,8 @@ extern uint32_t oled_timer; # define OLED_RENDER_BOOTMAGIC_NKRO "NKRO" # define OLED_RENDER_BOOTMAGIC_NOGUI "nGUI" # define OLED_RENDER_BOOTMAGIC_GRV "GRV" +# define OLED_RENDER_BOOTMAGIC_ONESHOT "1SHT" +# define OLED_RENDER_BOOTMAGIC_SWAP "SWAP" # define OLED_RENDER_BOOTMAGIC_CAPS "CAPS" # define OLED_RENDER_USER_NAME "USER:" @@ -99,6 +101,8 @@ extern uint32_t oled_timer; # define OLED_RENDER_BOOTMAGIC_NKRO "NKRO" # define OLED_RENDER_BOOTMAGIC_NOGUI "nGUI" # define OLED_RENDER_BOOTMAGIC_GRV "GRV" +# define OLED_RENDER_BOOTMAGIC_ONESHOT "1SHT" +# define OLED_RENDER_BOOTMAGIC_SWAP "SWAP" # define OLED_RENDER_BOOTMAGIC_CAPS "CAPS" # define OLED_RENDER_USER_NAME "USER:" diff --git a/users/drashna/pimoroni_trackball.c b/users/drashna/pimoroni_trackball.c index 9ae094c05a..a6ca6c9966 100644 --- a/users/drashna/pimoroni_trackball.c +++ b/users/drashna/pimoroni_trackball.c @@ -33,7 +33,7 @@ static float precisionSpeed = 1; void trackball_set_rgbw(uint8_t red, uint8_t green, uint8_t blue, uint8_t white) { uint8_t data[] = {0x00, red, green, blue, white}; - i2c_transmit(TRACKBALL_WRITE, data, sizeof(data), I2C_TIMEOUT); + i2c_transmit(TRACKBALL_ADDRESS << 1, data, sizeof(data), I2C_TIMEOUT); } int16_t mouse_offset(uint8_t positive, uint8_t negative, int16_t scale) { @@ -94,7 +94,7 @@ void pointing_device_task(void) { static bool debounce; static uint16_t debounce_timer; uint8_t state[5] = {}; - if (i2c_readReg(TRACKBALL_WRITE, 0x04, state, 5, I2C_TIMEOUT) == I2C_STATUS_SUCCESS) { + if (i2c_readReg(TRACKBALL_ADDRESS << 1, 0x04, state, 5, I2C_TIMEOUT) == I2C_STATUS_SUCCESS) { if (!state[4] && !debounce) { if (scrolling) { #ifdef PIMORONI_TRACKBALL_INVERT_X diff --git a/users/drashna/process_records.h b/users/drashna/process_records.h index 2e24670501..f60e6d7ebc 100644 --- a/users/drashna/process_records.h +++ b/users/drashna/process_records.h @@ -53,7 +53,7 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record); #define LOWER MO(_LOWER) #define RAISE MO(_RAISE) #define ADJUST MO(_ADJUST) -#define TG_MODS TG(_MODS) +#define TG_MODS OS_TOGG #define TG_GAME TG(_GAMEPAD) #define TG_DBLO TG(_DIABLO) #define OS_LWR OSL(_LOWER) diff --git a/users/drashna/rgb_matrix_stuff.c b/users/drashna/rgb_matrix_stuff.c index 573cc7bc9d..9e9e1e4279 100644 --- a/users/drashna/rgb_matrix_stuff.c +++ b/users/drashna/rgb_matrix_stuff.c @@ -62,7 +62,7 @@ __attribute__((weak)) void rgb_matrix_indicator_keymap(void) {} void matrix_scan_rgb_matrix(void) { #if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS) - if (userspace_config.rgb_matrix_idle_anim && rgb_matrix_get_mode() == RGB_MATRIX_TYPING_HEATMAP && timer_elapsed32(hypno_timer) > 15000) { + if (userspace_config.rgb_matrix_idle_anim && rgb_matrix_get_mode() == RGB_MATRIX_TYPING_HEATMAP && sync_timer_elapsed32(hypno_timer) > 15000) { rgb_matrix_mode_noeeprom(RGB_MATRIX_REST_MODE); } #endif @@ -79,7 +79,7 @@ void keyboard_post_init_rgb_matrix(void) { bool process_record_user_rgb_matrix(uint16_t keycode, keyrecord_t *record) { #if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS) - hypno_timer = timer_read32(); + hypno_timer = sync_timer_read32(); if (userspace_config.rgb_matrix_idle_anim && rgb_matrix_get_mode() == RGB_MATRIX_REST_MODE) { rgb_matrix_mode_noeeprom(RGB_MATRIX_TYPING_HEATMAP); } diff --git a/users/drashna/rgb_stuff.c b/users/drashna/rgb_stuff.c index c8b2f4c726..6723ad4bf5 100644 --- a/users/drashna/rgb_stuff.c +++ b/users/drashna/rgb_stuff.c @@ -32,7 +32,7 @@ void scan_rgblight_fadeout(void) { // Don't effing change this function .... rg bool litup = false; for (uint8_t light_index = 0; light_index < RGBLED_NUM; ++light_index) { - if (lights[light_index].enabled && timer_elapsed(lights[light_index].timer) > 10) { + if (lights[light_index].enabled && sync_timer_elapsed(lights[light_index].timer) > 10) { rgblight_fadeout *light = &lights[light_index]; litup = true; @@ -41,7 +41,7 @@ void scan_rgblight_fadeout(void) { // Don't effing change this function .... rg if (get_highest_layer(layer_state) == 0) { sethsv(light->hue + rand() % 0xF, 255, light->life, (LED_TYPE *)&led[light_index]); } - light->timer = timer_read(); + light->timer = sync_timer_read(); } else { if (light->enabled && get_highest_layer(layer_state) == 0) { rgblight_sethsv_default_helper(light_index); @@ -86,7 +86,7 @@ void start_rgb_light(void) { rgblight_fadeout *light = &lights[light_index]; light->enabled = true; - light->timer = timer_read(); + light->timer = sync_timer_read(); light->life = 0xC0 + rand() % 0x40; light->hue = rgblight_get_hue() + (rand() % 0xB4) - 0x54; @@ -149,11 +149,11 @@ void matrix_scan_rgb_light(void) { # if defined(RGBLIGHT_STARTUP_ANIMATION) if (is_rgblight_startup && is_keyboard_master()) { - if (timer_elapsed(rgblight_startup_loop_timer) > 10) { + if (sync_timer_elapsed(rgblight_startup_loop_timer) > 10) { static uint8_t counter; counter++; rgblight_sethsv_noeeprom((counter + old_hue) % 255, 255, 255); - rgblight_startup_loop_timer = timer_read(); + rgblight_startup_loop_timer = sync_timer_read(); if (counter == 255) { is_rgblight_startup = false; if (!is_enabled) { @@ -177,14 +177,11 @@ 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) { # ifdef RGBLIGHT_ENABLE if (userspace_config.rgb_layer_change) { - uint8_t mode = layer_state_cmp(state, _MODS) ? RGBLIGHT_MODE_BREATHING : RGBLIGHT_MODE_STATIC_LIGHT; switch (get_highest_layer(state | default_layer_state)) { - case _MACROS: -# ifdef RGBLIGHT_EFFECT_TWINKLE - rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_TWINKLE + 5); -# else - rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_BREATHING + 3); -# endif + case _MACROS: // mouse + if (!layer_state_cmp(state, _GAMEPAD) && !layer_state_cmp(state, _DIABLO)) { + rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_BREATHING + 3); + } break; case _MEDIA: rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_KNIGHT + 1); @@ -205,28 +202,28 @@ layer_state_t layer_state_set_rgb_light(layer_state_t state) { rgblight_set_hsv_and_mode(HSV_RED, RGBLIGHT_MODE_KNIGHT + 2); break; case _COLEMAK: - rgblight_set_hsv_and_mode(HSV_MAGENTA, mode); + rgblight_set_hsv_and_mode(HSV_MAGENTA, RGBLIGHT_MODE_STATIC_LIGHT); break; case _DVORAK: - rgblight_set_hsv_and_mode(HSV_SPRINGGREEN, mode); + rgblight_set_hsv_and_mode(HSV_SPRINGGREEN, RGBLIGHT_MODE_STATIC_LIGHT); break; case _WORKMAN: - rgblight_set_hsv_and_mode(HSV_GOLDENROD, mode); + rgblight_set_hsv_and_mode(HSV_GOLDENROD, RGBLIGHT_MODE_STATIC_LIGHT); break; case _NORMAN: - rgblight_set_hsv_and_mode(HSV_CORAL, mode); + rgblight_set_hsv_and_mode(HSV_CORAL, RGBLIGHT_MODE_STATIC_LIGHT); break; case _MALTRON: - rgblight_set_hsv_and_mode(HSV_YELLOW, mode); + rgblight_set_hsv_and_mode(HSV_YELLOW, RGBLIGHT_MODE_STATIC_LIGHT); break; case _EUCALYN: - rgblight_set_hsv_and_mode(HSV_PINK, mode); + rgblight_set_hsv_and_mode(HSV_PINK, RGBLIGHT_MODE_STATIC_LIGHT); break; case _CARPLAX: - rgblight_set_hsv_and_mode(HSV_BLUE, mode); + rgblight_set_hsv_and_mode(HSV_BLUE, RGBLIGHT_MODE_STATIC_LIGHT); break; default: - rgblight_set_hsv_and_mode(HSV_CYAN, mode); + rgblight_set_hsv_and_mode(HSV_CYAN, RGBLIGHT_MODE_STATIC_LIGHT); break; } } diff --git a/users/drashna/rules.mk b/users/drashna/rules.mk index 2ae01c62e5..b79051508b 100644 --- a/users/drashna/rules.mk +++ b/users/drashna/rules.mk @@ -16,29 +16,37 @@ ifneq ($(strip $(NO_SECRETS)), yes) endif endif +CUSTOM_TAP_DANCE ?= yes ifeq ($(strip $(TAP_DANCE_ENABLE)), yes) - SRC += tap_dances.c + ifeq ($(strip $(TAP_DANCE_ENABLE)), yes) + SRC += tap_dances.c + endif endif +CUSTOM_RGBLIGHT ?= yes ifeq ($(strip $(RGBLIGHT_ENABLE)), yes) - SRC += rgb_stuff.c - ifeq ($(strip $(RGBLIGHT_TWINKLE)), yes) - OPT_DEFS += -DRGBLIGHT_TWINKLE - endif - ifeq ($(strip $(RGBLIGHT_NOEEPROM)), yes) - OPT_DEFS += -DRGBLIGHT_NOEEPROM - endif - ifeq ($(strip $(RGBLIGHT_STARTUP_ANIMATION)), yes) - OPT_DEFS += -DRGBLIGHT_STARTUP_ANIMATION + ifeq ($(strip $(CUSTOM_RGBLIGHT)), yes) + SRC += rgb_stuff.c + ifeq ($(strip $(RGBLIGHT_TWINKLE)), yes) + OPT_DEFS += -DRGBLIGHT_TWINKLE + endif + ifeq ($(strip $(RGBLIGHT_NOEEPROM)), yes) + OPT_DEFS += -DRGBLIGHT_NOEEPROM + endif + ifeq ($(strip $(RGBLIGHT_STARTUP_ANIMATION)), yes) + OPT_DEFS += -DRGBLIGHT_STARTUP_ANIMATION + endif endif endif -RGB_MATRIX_ENABLE ?= no -ifneq ($(strip $(RGB_MATRIX_ENABLE)), no) - SRC += rgb_matrix_stuff.c +CUSTOM_RGB_MATRIX ?= yes +ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes) + ifeq ($(strip $(CUSTOM_RGB_MATRIX)), yes) + SRC += rgb_matrix_stuff.c + endif endif - +KEYLOGGER_ENABLE ?= no ifdef CONSOLE_ENABLE ifeq ($(strip $(KEYLOGGER_ENABLE)), yes) OPT_DEFS += -DKEYLOGGER_ENABLE @@ -56,8 +64,11 @@ ifeq ($(strip $(PROTOCOL)), VUSB) NKRO_ENABLE = no endif +CUSTOM_OLED_DRIVER ?= yes ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes) - SRC += oled_stuff.c + ifeq ($(strip $(CUSTOM_OLED_DRIVER)), yes) + SRC += oled_stuff.c + endif endif ifeq ($(strip $(PIMORONI_TRACKBALL_ENABLE)), yes) @@ -67,26 +78,30 @@ ifeq ($(strip $(PIMORONI_TRACKBALL_ENABLE)), yes) QUANTUM_LIB_SRC += i2c_master.c endif - +CUSTOM_SPLIT_TRANSPORT ?= yes 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 + ifeq ($(strip $(CUSTOM_SPLIT_TRANSPORT)), yes) + 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 - 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 + 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 endif + +# DEBUG_MATRIX_SCAN_RATE_ENABLE = api diff --git a/users/gordon/rules.mk b/users/gordon/rules.mk index 19e77b01b1..06e671a635 100644 --- a/users/gordon/rules.mk +++ b/users/gordon/rules.mk @@ -1,4 +1,4 @@ TAP_DANCE_ENABLE = yes SRC += gordon.c -# BOOTMAGIC_ENABLE = yes +# BOOTMAGIC_ENABLE = full diff --git a/users/greatwizard/greatwizard.c b/users/greatwizard/greatwizard.c index 46ee414361..3ec856d720 100644 --- a/users/greatwizard/greatwizard.c +++ b/users/greatwizard/greatwizard.c @@ -70,7 +70,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } #ifdef ENCODER_ENABLE -void encoder_update_user(uint8_t index, bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { switch (get_highest_layer(layer_state)) { case _QWERTY: #ifdef LAYERS_PROGRAMMER @@ -90,6 +90,7 @@ void encoder_update_user(uint8_t index, bool clockwise) { } break; } + return true; } #endif diff --git a/users/kuchosauronad0/encoder.c b/users/kuchosauronad0/encoder.c index 06b7b51233..9284a041c2 100644 --- a/users/kuchosauronad0/encoder.c +++ b/users/kuchosauronad0/encoder.c @@ -1,5 +1,5 @@ #include "encoder.h" -void encoder_update_user(uint8_t index, bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { static uint16_t kc; uint8_t temp_mod = get_mods(); if (index == 0) { /* first encoder */ @@ -55,6 +55,7 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code(KC_1); } } + return true; } const uint16_t PROGMEM encoder_actions[][9] = { \ // None CTRL ALT SHIFT GUI CTRL+ALT CTRL+SHFT ALT+SHFT HYPER diff --git a/users/kuchosauronad0/encoder.h b/users/kuchosauronad0/encoder.h index 2610c9677a..7b05aa4911 100644 --- a/users/kuchosauronad0/encoder.h +++ b/users/kuchosauronad0/encoder.h @@ -1,4 +1,4 @@ #pragma once #include "quantum.h" const uint16_t PROGMEM encoder_actions[][9]; -void encoder_update_user(uint8_t index, bool clockwise); +bool encoder_update_user(uint8_t index, bool clockwise); diff --git a/users/kuchosauronad0/process_records.c b/users/kuchosauronad0/process_records.c index bec6fa5ad0..5623c80f98 100644 --- a/users/kuchosauronad0/process_records.c +++ b/users/kuchosauronad0/process_records.c @@ -214,24 +214,24 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { // Unicode #ifdef UNICODE_ENABLE - case UC_FLIP: // (ノಠ痊ಠ)ノ彡┻━┻ + case UC_FLIP: if (record->event.pressed) { - send_unicode_hex_string("0028 30CE 0CA0 75CA 0CA0 0029 30CE 5F61 253B 2501 253B"); + send_unicode_string("(ノಠ痊ಠ)ノ彡┻━┻"); } break; - case UC_TABL: // ┬┬ノ( º _ ºノ) + case UC_TABL: if (record->event.pressed) { - send_unicode_hex_string("252C 2500 252C 30CE 0028 0020 00BA 0020 005F 0020 00BA 30CE 0029"); + send_unicode_string("┬─┬ノ( º _ ºノ)"); } break; - case UC_SHRG: // ¯\_(ツ)_/¯ + case UC_SHRG: if (record->event.pressed) { - send_unicode_hex_string("00AF 005C 005F 0028 30C4 0029 005F 002F 00AF"); + send_unicode_string("¯\\_(ツ)_/¯"); } break; - case UC_DISA: // ಠ_ಠ + case UC_DISA: if (record->event.pressed) { - send_unicode_hex_string("0CA0 005F 0CA0"); + send_unicode_string("ಠ_ಠ"); } break; #endif //!Unicode diff --git a/users/kuchosauronad0/unicode.h b/users/kuchosauronad0/unicode.h index cb550243ee..9ff523baad 100644 --- a/users/kuchosauronad0/unicode.h +++ b/users/kuchosauronad0/unicode.h @@ -2,8 +2,6 @@ #include "quantum.h" -void send_unicode_hex_string(const char* str); - /* use X(n) to call the */ #ifdef UNICODEMAP_ENABLE enum unicode_name { diff --git a/users/ninjonas/encoder.c b/users/ninjonas/encoder.c index 3d56ff89ee..f1b448b79b 100644 --- a/users/ninjonas/encoder.c +++ b/users/ninjonas/encoder.c @@ -15,7 +15,7 @@ */ #include "ninjonas.h" -#ifdef ENCODER_ENABLE +#ifdef ENCODER_ENABLE void left_encoder_cw(void) { switch (get_highest_layer(layer_state)) { case _LOWER: @@ -81,7 +81,7 @@ void right_encoder_acw(void) { } } -void encoder_update_user(uint8_t index, bool clockwise) { +bool encoder_update_user(uint8_t index, bool clockwise) { encoder_rotated_timer = timer_read(); if (index == 0) { left_encoder_rotated = true; @@ -99,6 +99,7 @@ void encoder_update_user(uint8_t index, bool clockwise) { right_encoder_acw(); } } + return true; } -#endif
\ No newline at end of file +#endif diff --git a/users/ridingqwerty/process_records.c b/users/ridingqwerty/process_records.c index b0b0b48a22..770af286e9 100644 --- a/users/ridingqwerty/process_records.c +++ b/users/ridingqwerty/process_records.c @@ -58,14 +58,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { #if defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) case KC_A: if (record->event.pressed) { - send_unicode_hex_string("039B"); - tap_code(KC_SPC); + send_unicode_string("Λ "); } return false; case KC_E: if (record->event.pressed) { - send_unicode_hex_string("039E"); - tap_code(KC_SPC); + send_unicode_string("Ξ "); } return false; #else @@ -175,154 +173,154 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { // TRANSLATE case KC_A: if (record->event.pressed) { - send_unicode_hex_string("0250"); + register_unicode(0x0250); // ɐ tap_code(KC_LEFT); return false; } break; case KC_C: if (record->event.pressed) { - send_unicode_hex_string("0254"); + register_unicode(0x0254); // ɔ tap_code(KC_LEFT); return false; } break; case KC_E: if (record->event.pressed) { - send_unicode_hex_string("01DD"); + register_unicode(0x01DD); // ǝ tap_code(KC_LEFT); return false; } break; case KC_F: if (record->event.pressed) { - send_unicode_hex_string("025F"); + register_unicode(0x025F); // ɟ tap_code(KC_LEFT); return false; } break; case KC_G: if (record->event.pressed) { - send_unicode_hex_string("0183"); + register_unicode(0x0183); // ƃ tap_code(KC_LEFT); return false; } break; case KC_H: if (record->event.pressed) { - send_unicode_hex_string("0265"); + register_unicode(0x0265); // ɥ tap_code(KC_LEFT); return false; } break; case KC_I: if (record->event.pressed) { - send_unicode_hex_string("1D09"); + register_unicode(0x1D09); // ᴉ tap_code(KC_LEFT); return false; } break; case KC_J: if (record->event.pressed) { - send_unicode_hex_string("027E"); + register_unicode(0x027E); // ɾ tap_code(KC_LEFT); return false; } break; case KC_K: if (record->event.pressed) { - send_unicode_hex_string("029E"); + register_unicode(0x029E); // ʞ tap_code(KC_LEFT); return false; } break; case KC_M: if (record->event.pressed) { - send_unicode_hex_string("026F"); + register_unicode(0x026F); // ɯ tap_code(KC_LEFT); return false; } break; case KC_R: if (record->event.pressed) { - send_unicode_hex_string("0279"); + register_unicode(0x0279); // ɹ tap_code(KC_LEFT); return false; } break; case KC_T: if (record->event.pressed) { - send_unicode_hex_string("0287"); + register_unicode(0x0287); // ʇ tap_code(KC_LEFT); return false; } break; case KC_V: if (record->event.pressed) { - send_unicode_hex_string("028C"); + register_unicode(0x028C); // ʌ tap_code(KC_LEFT); return false; } break; case KC_W: if (record->event.pressed) { - send_unicode_hex_string("028D"); + register_unicode(0x028D); // ʍ tap_code(KC_LEFT); return false; } break; case KC_X: if (record->event.pressed) { - send_unicode_hex_string("2717"); + register_unicode(0x2717); // ✗ tap_code(KC_LEFT); return false; } break; case KC_Y: if (record->event.pressed) { - send_unicode_hex_string("028E"); + register_unicode(0x028E); // ʎ tap_code(KC_LEFT); return false; } break; case KC_1: if (record->event.pressed) { - send_unicode_hex_string("0269"); + register_unicode(0x0269); // ɩ tap_code(KC_LEFT); return false; } break; case KC_2: if (record->event.pressed) { - send_unicode_hex_string("3139"); + register_unicode(0x3139); // ㄹ tap_code(KC_LEFT); return false; } break; case KC_3: if (record->event.pressed) { - send_unicode_hex_string("0190"); + register_unicode(0x0190); // Ɛ tap_code(KC_LEFT); return false; } break; case KC_4: if (record->event.pressed) { - send_unicode_hex_string("3123"); + register_unicode(0x3123); // ㄣ tap_code(KC_LEFT); return false; } break; case KC_5: if (record->event.pressed) { - send_unicode_hex_string("03DB"); + register_unicode(0x03DB); // ϛ tap_code(KC_LEFT); return false; } break; case KC_7: if (record->event.pressed) { - send_unicode_hex_string("3125"); + register_unicode(0x3125); // ㄥ tap_code(KC_LEFT); } return false; @@ -401,7 +399,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { user_mod_state = get_mods() & MOD_MASK_ALT; if (user_mod_state) { unregister_mods(MOD_BIT(KC_RALT)); - send_unicode_hex_string("00B0"); + register_unicode(0x00B0); // ° set_mods(user_mod_state); return false; } @@ -474,7 +472,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (record->event.pressed && record->event.key.col == 4 && record->event.key.row == 1) { if (get_mods() & MOD_BIT(KC_RALT)) { unregister_mods(MOD_BIT(KC_RALT)); - //send_unicode_hex_string("262D"); + //register_unicode(0x262D); // ☭ tap_code(KC_BSPC); set_mods(MOD_BIT(KC_RALT)); return false; diff --git a/users/rs/rs.h b/users/rs/rs.h index 722d6ed19e..fde8c33558 100644 --- a/users/rs/rs.h +++ b/users/rs/rs.h @@ -18,8 +18,6 @@ enum custom_keycodes { #endif }; -#define KC_ KC_TRNS - #define KC_ESCC MT(MOD_LCTL, KC_ESC) #define KC_ENTS MT(MOD_LSFT, KC_ENT) #define KC_LTGT LTGT // > or < with shift @@ -47,4 +45,4 @@ enum custom_keycodes { #define KC_LVAI RGB_VAI #define KC_LVAD RGB_VAD #define KC_LMOD RGB_MOD -#endif
\ No newline at end of file +#endif diff --git a/users/stanrc85/stanrc85.c b/users/stanrc85/stanrc85.c index d5e56571d1..f8555d87bd 100644 --- a/users/stanrc85/stanrc85.c +++ b/users/stanrc85/stanrc85.c @@ -45,7 +45,7 @@ void ctl_copy_reset (qk_tap_dance_state_t *state, void *user_data) { } #if defined(HAS_ROTARY) - void encoder_update_user(uint8_t index, bool clockwise) { + bool encoder_update_user(uint8_t index, bool clockwise) { if (index == 0) { /* First encoder */ if (clockwise) { tap_code(KC_VOLD); @@ -53,6 +53,7 @@ void ctl_copy_reset (qk_tap_dance_state_t *state, void *user_data) { tap_code(KC_VOLU); } } + return true; } #endif @@ -75,7 +76,7 @@ void lock_unlock (qk_tap_dance_state_t *state, void *user_data) { writePin(INDICATOR_PIN_1, !led_user); wait_ms(200); writePin(INDICATOR_PIN_2, !led_user); - #endif + #endif break; case SINGLE_HOLD: break; @@ -91,7 +92,7 @@ void lock_unlock (qk_tap_dance_state_t *state, void *user_data) { writePin(INDICATOR_PIN_1, !led_user); wait_ms(200); writePin(INDICATOR_PIN_0, !led_user); - #endif + #endif break; } } diff --git a/users/xulkal/custom_encoder.c b/users/xulkal/custom_encoder.c index cd029944ff..acd0275a8b 100644 --- a/users/xulkal/custom_encoder.c +++ b/users/xulkal/custom_encoder.c @@ -58,7 +58,7 @@ const uint16_t PROGMEM encoders[][2] = { { KC_VOLU, KC_VOLD } }; -void encoder_update_user(uint8_t index, bool clockwise) +bool encoder_update_user(uint8_t index, bool clockwise) { if (!is_keyboard_master()) return; @@ -69,4 +69,5 @@ void encoder_update_user(uint8_t index, bool clockwise) else #endif // RGB_OLED_MENU tap_code16(pgm_read_word(&encoders[index][clockwise])); + return true; } diff --git a/users/yet-another-developer/process_records.c b/users/yet-another-developer/process_records.c index c7dbd704a0..7dba702bf5 100644 --- a/users/yet-another-developer/process_records.c +++ b/users/yet-another-developer/process_records.c @@ -162,24 +162,24 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } break; #ifdef UNICODE_ENABLE - case UC_FLIP: // (ノಠ痊ಠ)ノ彡┻━┻ + case UC_FLIP: if (record->event.pressed) { - send_unicode_hex_string("0028 30CE 0CA0 75CA 0CA0 0029 30CE 5F61 253B 2501 253B"); + send_unicode_string("(ノಠ痊ಠ)ノ彡┻━┻"); } break; - case UC_TABL: // ┬─┬ノ( º _ ºノ) + case UC_TABL: if (record->event.pressed) { - send_unicode_hex_string("252C 2500 252C 30CE 0028 0020 00BA 0020 005F 0020 00BA 30CE 0029"); + send_unicode_string("┬─┬ノ( º _ ºノ)"); } break; - case UC_SHRG: // ¯\_(ツ)_/¯ + case UC_SHRG: if (record->event.pressed) { - send_unicode_hex_string("00AF 005C 005F 0028 30C4 0029 005F 002F 00AF"); + send_unicode_string("¯\\_(ツ)_/¯"); } break; - case UC_DISA: // ಠ_ಠ + case UC_DISA: if (record->event.pressed) { - send_unicode_hex_string("0CA0 005F 0CA0"); + send_unicode_string("ಠ_ಠ"); } break; #endif // UNICODE_ENABLE diff --git a/users/yet-another-developer/unicode.h b/users/yet-another-developer/unicode.h index cb550243ee..9ff523baad 100644 --- a/users/yet-another-developer/unicode.h +++ b/users/yet-another-developer/unicode.h @@ -2,8 +2,6 @@ #include "quantum.h" -void send_unicode_hex_string(const char* str); - /* use X(n) to call the */ #ifdef UNICODEMAP_ENABLE enum unicode_name { |