История изменений
Исправление Sorcus, (текущая версия) :
В общем набросал тут чутка кода для автоматического переключения раскладки.
bool ru_layout = false;
void switch_language(void) {
register_code(KC_LGUI);
register_code(KC_SPACE);
unregister_code(KC_SPACE);
unregister_code(KC_LGUI);
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case RGB_SLD:
if (record->event.pressed) {
rgblight_mode(1);
}
return false;
default:
if (record->event.pressed) {
if (get_highest_layer(layer_state) == 1) {
if (!ru_layout) {
switch_language(); ru_layout = true;
}
} else {
if (ru_layout) {
switch_language(); ru_layout = false;
}
}
}
return true;
}
return true;
}
В моём случае у слоя с русскими буквами цифра 1.
Если происходит переключение на этот слой и ru_layout == false
, вызывается функция switch_language
.
Для всех остальных слоёв дефолтным является английский.
Переключение на него происходит только в том случае, если ru_layout == true
.
Как-то так в общем. Может кому-нибудь ещё пригодится данное решение.
P.S. Если из слоя с русским переключиться на слой с символами (в режиме OSL), то при быстом нажатии двух символов оба будут в русской раскладке.
Т.е. к примеру вместо ]е
будет ъе
. Не знаю почему так. Может у кого есть мысли по этому поводу?
Исходная версия Sorcus, :
В общем набросал тут чутка кода для автоматического переключения раскладки.
bool ru_layout = false;
void switch_language(void) {
register_code(KC_LGUI);
register_code(KC_SPACE);
unregister_code(KC_SPACE);
unregister_code(KC_LGUI);
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case RGB_SLD:
if (record->event.pressed) {
rgblight_mode(1);
}
return false;
default:
if (record->event.pressed) {
if (get_highest_layer(layer_state) == 1) {
if (!ru_layout) {
switch_language(); ru_layout = true;
}
} else {
if (ru_layout) {
switch_language(); ru_layout = false;
}
}
}
return true;
}
return true;
}
В моём случае у слоя с русскими буквами цифра 1.
Если происходит переключение на этот слой и ru_layout == false
, вызывается функция switch_language
.
Для всех остальных слоёв дефолтным является английский.
Переключение на него происходит только в том случае, если ru_layout == true
.
Как-то так в общем. Может кому-нибудь ещё пригодится данное решение.
P.S. Если из слоя с русским переключиться на слой с символами (в режиме OSL), то при быстом нажатии двух символов оба будут в русской раскладке.
Т.е. к примеру вместо ]е
будет ъе
. Не знаю почему так. Может у кого есть мысли по этому поводу?