LINUX.ORG.RU

Настроить переключение раскладки в QMK.

 ,


0

1

Настраиваю себе клавиатуру с помощью конфигуратора Oryx и на текущий момент с en на ru переключаюсь двумя кнопками.
Одна меняет раскладку, другая меняет слой (раскладка нестандартная).
Так вот, можно ли как-то это упростить и переключаться на русский слой вместе с переключением раскладки и можно ли это сделать через конфигуратор.
И соответственно при переключении с русского, на слой с символами, можно ли сразу переключаться на английский?
А то для ввода некоторых символов приходится раскладку менять 2 раза.
Сперва на английский, а после ввода символа обратно на русский.
Или всё это надо писать самому и стандартных средств для этого нет?
https://beta.docs.qmk.fm/using-qmk/simple-keycodes/keycodes_basic#international - и для чего здесь нужны KC_LANG?
Я так и не нашёл инфы о том, что это такое, зачем оно и как их использовать.
Спасибо.



Последнее исправление: Sorcus (всего исправлений: 2)

В общем набросал тут чутка кода для автоматического переключения раскладки.

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
() автор топика
Последнее исправление: Sorcus (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.