Add unicode mode change callbacks (#18235)
This commit is contained in:
		
							parent
							
								
									b9effc94db
								
							
						
					
					
						commit
						e4bf832368
					
				
					 6 changed files with 63 additions and 28 deletions
				
			
		| 
						 | 
				
			
			@ -112,8 +112,7 @@ void do_rgb_layers(layer_state_t state, uint8_t start, uint8_t end) {
 | 
			
		|||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void do_rgb_unicode(void) {
 | 
			
		||||
    uint8_t uc_mode = get_unicode_input_mode();
 | 
			
		||||
void do_rgb_unicode(uint8_t uc_mode) {
 | 
			
		||||
    for (uint8_t i = 0; i < UC__COUNT; i++) {
 | 
			
		||||
        bool is_on = i == uc_mode;
 | 
			
		||||
        rgblight_set_layer_state(UNICODE_OFFSET + i, is_on);
 | 
			
		||||
| 
						 | 
				
			
			@ -123,7 +122,7 @@ void do_rgb_unicode(void) {
 | 
			
		|||
void do_rgb_all(void) {
 | 
			
		||||
    do_rgb_layers(default_layer_state, LAYER_BASE_DEFAULT, LAYER_BASE_REGULAR);
 | 
			
		||||
    do_rgb_layers(layer_state, LAYER_BASE_REGULAR, LAYER_BASE_END);
 | 
			
		||||
    do_rgb_unicode();
 | 
			
		||||
    do_rgb_unicode(get_unicode_input_mode());
 | 
			
		||||
    rgblight_set_layer_state(MISC_OFFSET + 0, spi_gflock);
 | 
			
		||||
    rgblight_set_layer_state(MISC_OFFSET + 1, spi_replace_mode != SPI_NORMAL);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -148,7 +147,7 @@ extern rgblight_status_t rgblight_status;
 | 
			
		|||
#    define STARTUP_ANIMATION_CYCLE_STEP 2
 | 
			
		||||
#    define STARTUP_ANIMATION_RAMP_TO_STEPS 70
 | 
			
		||||
#    define STARTUP_ANIMATION_STEP_TIME 10
 | 
			
		||||
#    define STARTUP_ANIMATION_INITIAL_DELAY 0  // milliseconds, must be < 255 * STEP_TIME
 | 
			
		||||
#    define STARTUP_ANIMATION_INITIAL_DELAY 0 // milliseconds, must be < 255 * STEP_TIME
 | 
			
		||||
 | 
			
		||||
// clang-format off
 | 
			
		||||
typedef enum {
 | 
			
		||||
| 
						 | 
				
			
			@ -382,6 +381,13 @@ bool led_update_user_rgb(led_t led_state) {
 | 
			
		|||
    return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#if defined(UNICODE_COMMON_ENABLE)
 | 
			
		||||
void unicode_input_mode_set_user_rgb(uint8_t input_mode) {
 | 
			
		||||
    rgb_layer_ack(ACK_MEH);
 | 
			
		||||
    do_rgb_unicode(input_mode);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
void rgb_layer_ack_yn(bool yn) { rgb_layer_ack(yn ? ACK_YES : ACK_NO); }
 | 
			
		||||
 | 
			
		||||
void rgb_layer_ack(layer_ack_t n) {
 | 
			
		||||
| 
						 | 
				
			
			@ -458,7 +464,7 @@ void post_process_record_user_rgb(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
            break;
 | 
			
		||||
 | 
			
		||||
        case RGB_TOG:
 | 
			
		||||
            // Hack - we only get called on the press for RGB_TOG, 
 | 
			
		||||
            // Hack - we only get called on the press for RGB_TOG,
 | 
			
		||||
            // but the flag is only flipped on the release...
 | 
			
		||||
            rgb_layer_ack_yn(!rgblight_config.enable);
 | 
			
		||||
            break;
 | 
			
		||||
| 
						 | 
				
			
			@ -476,20 +482,5 @@ void post_process_record_user_rgb(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
            rgb_layer_ack_yn(keymap_config.nkro);
 | 
			
		||||
            break;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(UNICODE_COMMON_ENABLE)
 | 
			
		||||
        case UC_M_MA:
 | 
			
		||||
        case UC_M_LN:
 | 
			
		||||
        case UC_M_WI:
 | 
			
		||||
        case UC_M_BS:
 | 
			
		||||
        case UC_M_WC:
 | 
			
		||||
        case UC_M_EM:
 | 
			
		||||
 | 
			
		||||
        case UC_MOD:
 | 
			
		||||
        case UC_RMOD:
 | 
			
		||||
            rgb_layer_ack(ACK_MEH);
 | 
			
		||||
            do_rgb_unicode();
 | 
			
		||||
            break;
 | 
			
		||||
#endif
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -98,14 +98,14 @@ bool process_record_glyph_replacement(uint16_t keycode, keyrecord_t *record, uin
 | 
			
		|||
                    clear_oneshot_mods();
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
                    bool caps = host_keyboard_led_state().caps_lock;
 | 
			
		||||
                    bool     caps = host_keyboard_led_state().caps_lock;
 | 
			
		||||
                    uint32_t base = ((shifted == caps) ? baseAlphaLower : baseAlphaUpper);
 | 
			
		||||
                    _register(base + (keycode - KC_A));
 | 
			
		||||
                    set_mods(temp_mod);
 | 
			
		||||
                }
 | 
			
		||||
                return false;
 | 
			
		||||
            case KC_0:
 | 
			
		||||
                if (shifted) {  // skip shifted numbers, so that we can still use symbols etc.
 | 
			
		||||
                if (shifted) { // skip shifted numbers, so that we can still use symbols etc.
 | 
			
		||||
                    return true;
 | 
			
		||||
                }
 | 
			
		||||
                if (record->event.pressed) {
 | 
			
		||||
| 
						 | 
				
			
			@ -113,7 +113,7 @@ bool process_record_glyph_replacement(uint16_t keycode, keyrecord_t *record, uin
 | 
			
		|||
                }
 | 
			
		||||
                return false;
 | 
			
		||||
            case KC_1 ... KC_9:
 | 
			
		||||
                if (shifted) {  // skip shifted numbers, so that we can still use symbols etc.
 | 
			
		||||
                if (shifted) { // skip shifted numbers, so that we can still use symbols etc.
 | 
			
		||||
                    return true;
 | 
			
		||||
                }
 | 
			
		||||
                if (record->event.pressed) {
 | 
			
		||||
| 
						 | 
				
			
			@ -122,7 +122,7 @@ bool process_record_glyph_replacement(uint16_t keycode, keyrecord_t *record, uin
 | 
			
		|||
                return false;
 | 
			
		||||
            case KC_SPACE:
 | 
			
		||||
                if (record->event.pressed) {
 | 
			
		||||
                    _register(spaceGlyph);  // em space
 | 
			
		||||
                    _register(spaceGlyph); // em space
 | 
			
		||||
                }
 | 
			
		||||
                return false;
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -338,7 +338,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		|||
                    set_mods(mods);
 | 
			
		||||
                    return false;
 | 
			
		||||
                }
 | 
			
		||||
            } else {  // on release of KC_BSPC
 | 
			
		||||
            } else { // on release of KC_BSPC
 | 
			
		||||
                // In case KC_DEL is still being sent even after the release of KC_BSPC
 | 
			
		||||
                if (delkey_registered) {
 | 
			
		||||
                    unregister_code(KC_DEL);
 | 
			
		||||
| 
						 | 
				
			
			@ -387,3 +387,11 @@ bool led_update_user(led_t led_state) {
 | 
			
		|||
    return true;
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#if defined(UNICODE_COMMON_ENABLE)
 | 
			
		||||
void unicode_input_mode_set_user(uint8_t input_mode) {
 | 
			
		||||
#    ifdef RGBLIGHT_ENABLE
 | 
			
		||||
    unicode_input_mode_set_user_rgb(input_mode);
 | 
			
		||||
#    endif
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,9 +17,9 @@ enum userspace_layers {
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
enum custom_keycodes {
 | 
			
		||||
    CH_CPNL = SAFE_RANGE,  // AL Control Panel
 | 
			
		||||
    CH_ASST,               // AL Context-aware Desktop Assistant
 | 
			
		||||
    CH_SUSP,               // Suspend
 | 
			
		||||
    CH_CPNL = SAFE_RANGE, // AL Control Panel
 | 
			
		||||
    CH_ASST,              // AL Context-aware Desktop Assistant
 | 
			
		||||
    CH_SUSP,              // Suspend
 | 
			
		||||
 | 
			
		||||
    SPI_NORMAL,
 | 
			
		||||
    SPI_WIDE,
 | 
			
		||||
| 
						 | 
				
			
			@ -65,6 +65,11 @@ void          rgb_layer_ack(layer_ack_t n);
 | 
			
		|||
void          rgb_layer_ack_yn(bool yn);
 | 
			
		||||
void          clear_rgb_layers(void);
 | 
			
		||||
void          shutdown_user_rgb(void);
 | 
			
		||||
 | 
			
		||||
#    if defined(UNICODE_COMMON_ENABLE)
 | 
			
		||||
void unicode_input_mode_set_user_rgb(uint8_t input_mode);
 | 
			
		||||
#    endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef UNICODEMAP_ENABLE
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue