summaryrefslogtreecommitdiff
path: root/users
diff options
context:
space:
mode:
Diffstat (limited to 'users')
-rw-r--r--users/arkag/arkag.c26
-rw-r--r--users/curry/process_records.c16
-rw-r--r--users/d4mation/macros.c28
-rw-r--r--users/drashna/config.h11
-rw-r--r--users/drashna/drashna.c3
-rw-r--r--users/drashna/drashna.h1
-rw-r--r--users/drashna/drashna_transport.c199
-rw-r--r--users/drashna/oled_stuff.c55
-rw-r--r--users/drashna/oled_stuff.h4
-rw-r--r--users/drashna/pimoroni_trackball.c4
-rw-r--r--users/drashna/process_records.h2
-rw-r--r--users/drashna/rgb_matrix_stuff.c4
-rw-r--r--users/drashna/rgb_stuff.c37
-rw-r--r--users/drashna/rules.mk77
-rw-r--r--users/gordon/rules.mk2
-rw-r--r--users/greatwizard/greatwizard.c3
-rw-r--r--users/kuchosauronad0/encoder.c3
-rw-r--r--users/kuchosauronad0/encoder.h2
-rw-r--r--users/kuchosauronad0/process_records.c16
-rw-r--r--users/kuchosauronad0/unicode.h2
-rw-r--r--users/ninjonas/encoder.c7
-rw-r--r--users/ridingqwerty/process_records.c54
-rw-r--r--users/rs/rs.h4
-rw-r--r--users/stanrc85/stanrc85.c7
-rw-r--r--users/xulkal/custom_encoder.c3
-rw-r--r--users/yet-another-developer/process_records.c16
-rw-r--r--users/yet-another-developer/unicode.h2
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 {