Added layer language switching
parent
25d07525ad
commit
863b517059
|
@ -36,6 +36,12 @@ enum layer_indices {
|
|||
LAYER_KEYBOARD_IDX,
|
||||
|
||||
};
|
||||
// Used by to set system keymap
|
||||
enum key_encodings {
|
||||
LANG_NULL, // For layers that don't care about input lang
|
||||
LANG_EN,
|
||||
LANG_RU
|
||||
};
|
||||
enum led_indices {
|
||||
// We have seperate indexes for LEDs because
|
||||
// some layers may not need an led map.
|
||||
|
@ -79,6 +85,7 @@ void keyboard_post_init_user(void) {
|
|||
rgb_matrix_enable();
|
||||
}
|
||||
|
||||
int current_lang = 0;
|
||||
|
||||
|
||||
void set_layer_color(int layer) {
|
||||
|
@ -148,7 +155,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|||
case ST_MACRO_1:
|
||||
if (record->event.pressed) {
|
||||
SEND_STRING(SS_LGUI(SS_TAP(X_P)) SS_DELAY(100) SS_TAP(X_Y) SS_DELAY(100) SS_TAP(X_ENTER));
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -206,6 +212,28 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|||
return true;
|
||||
}
|
||||
|
||||
|
||||
void set_lang(int lang) {
|
||||
if (current_lang != lang) {
|
||||
switch (lang) {
|
||||
case LANG_EN:
|
||||
SEND_STRING(SS_LGUI(SS_LSFT(SS_LCTL(SS_TAP(X_0)))));;
|
||||
current_lang = lang;
|
||||
break;
|
||||
|
||||
case LANG_RU:
|
||||
SEND_STRING(SS_LGUI(SS_LSFT(SS_LCTL(SS_TAP(X_9)))));
|
||||
current_lang = lang;
|
||||
break;
|
||||
|
||||
case LANG_NULL:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
uint32_t layer_state_set_user(uint32_t state) {
|
||||
|
||||
uint8_t layer = biton32(state);
|
||||
|
@ -214,43 +242,54 @@ uint32_t layer_state_set_user(uint32_t state) {
|
|||
ergodox_right_led_1_off();
|
||||
ergodox_right_led_2_off();
|
||||
ergodox_right_led_3_off();
|
||||
|
||||
switch (layer) {
|
||||
case 1:
|
||||
ergodox_right_led_1_on();
|
||||
case LAYER_MAIN_IDX:
|
||||
set_lang(LANG_EN);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
ergodox_right_led_2_on();
|
||||
case LAYER_RUSSIAN_IDX:
|
||||
set_lang(LANG_RU);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
ergodox_right_led_3_on();
|
||||
case LAYER_COLEMAK_IDX:
|
||||
set_lang(LANG_EN);
|
||||
break;
|
||||
|
||||
case 4:
|
||||
ergodox_right_led_1_on();
|
||||
ergodox_right_led_2_on();
|
||||
case LAYER_NUMPAD_IDX:
|
||||
set_lang(LANG_EN);
|
||||
break;
|
||||
|
||||
case 5:
|
||||
ergodox_right_led_1_on();
|
||||
ergodox_right_led_3_on();
|
||||
case LAYER_SYMBOLS_IDX:
|
||||
set_lang(LANG_EN);
|
||||
break;
|
||||
|
||||
case 6:
|
||||
ergodox_right_led_2_on();
|
||||
ergodox_right_led_3_on();
|
||||
case LAYER_ARROWS_IDX:
|
||||
set_lang(LANG_EN);
|
||||
break;
|
||||
|
||||
case 8:
|
||||
case LAYER_FKEYS_IDX:
|
||||
set_lang(LANG_EN);
|
||||
break;
|
||||
|
||||
case LAYER_NAVIGATE_IDX:
|
||||
set_lang(LANG_EN);
|
||||
break;
|
||||
|
||||
case LAYER_DESKTOP_IDX:
|
||||
set_lang(LANG_EN);
|
||||
break;
|
||||
|
||||
case LAYER_KEYBOARD_IDX:
|
||||
set_lang(LANG_NULL);
|
||||
ergodox_right_led_1_on();
|
||||
ergodox_right_led_2_on();
|
||||
ergodox_right_led_3_on();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return state;
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue