May 23, 2022

Модификация раскладки Moonlander

Сделано в @Cum_Insider

Перед прочтением настоятельно рекомендую полностью прочитать статью про Moonlander и клавиатуры в целом за авторством @optozorax.

Создание раскладки в Oryx

В первую очередь нужно попробовать создать раскладку в визуальном редакторе Oryx. Переходим в редактор раскладок для Moonlander и создаем раскладку под свои нужды.

Мою раскладку можно найти в моем GitHub.

Чтобы клавиатуру было удобно использовать с мышью, самые часто используемые с ней клавиши располагаем на левой половине клавиатуры.

В раскладке присутствуют пустые клавиши. Это потому, что я не придумал, как их задействовать.

LAYER 0 [MAIN]

  • Используются стандартные раскладки QWERTY и ЙЦУКЕН с небольшими изменениями.
  • Esc и Tab, Win и Alt на привычных местах.
  • На месте цифрового ряда часто используемые символы.
  • Цифровой ряд спрятан в слой Layer 2 [Nums].
  • Расположение клавиши Del на левой половине позволяет удобно редактировать текст с мышкой, а также быстро удалять файлы и другие вещи.
  • Точка и запятая вынесены отдельными клавишами под левый мизинец.
  • Также на этом слою расположились скобки ([, )] и <{, >} и символы '" и \/, где вторые модификации активируются с шифтом.
  • Клавиша SysRq — это клавиша PrtScr. Для создания скриншота экрана используется программа ShareX . Нажатием клавиши PrtScr создается скриншот экрана, а для скриншота области используется сочетание Ctrl + PrtScr. Для записи же гифки области экрана — Shift + Ctrl + PrtScr.
  • На левом тамб-блоке (кластер клавиш под большой палец) расположились Space, Enter, Shift и Ctrl. Близкое расположение клавиш Shift и Ctrl позволяет нажимать их одновременно одним большим пальцем, что, в свою очередь, позволяет с легкостью реализовывать использующие их шорткаты. Во избежание случайного изменения языка нужно изменить сочетание, меняющее язык, на Win + Space.
  • На правом тамб-блоке расположились клавиша изменения языка (Win + Space) и Backspace.
  • Под левую руку в слой Layer 1 [Arrows] спрятаны стрелки и кнопки управления медиа.
  • Кнопка активации игрового слоя Layer 3 [Game] и слоя с клавишами Fn Layer 4 [Fn] расположены в правой части клавиатуры.

Layer 1 [Arrows]

  • Слой Layer 1 [Arrows] содержит лишь стрелки, клавиши End, PgDown, PgUp, Home, а также кнопки управления медиа.
  • Клавишу активации слоя удобно нажимать как большим пальцем, так и безымянным.
  • Сочетание стрелок и Ctrl позволяет выделять символы. А если использовать Shift + Ctrl, то выделятся будут целые слова.
  • Перейдя в слой со стрелками и зажав Win + Ctrl, можно переключаться между рабочими столами без мыши лишь лишь левой рукой. Альтернативный способ переключения Win + Tab использует мышь и работает не так быстро.

Layer 2 [Nums]

  • Вместо стандартного цифрового ряда используется NumPad-овская раскладка, спрятанная в слой под левой рукой для удобной работы с мышью.
  • Точка, запятая и иные знаки не меняют расположения во избежание путаницы.
  • Также в правой части клавиатуры становится доступен набор редко используемых символов, что расширяет возможности одного лишь слоефикатора.

Layer 3 [Game]

Игровой слой привносит минимум изменений:

  • На месте символов сверху образуется привычный цифровой ряд.
  • Shift и Ctrl на стандартных местах.

Layer 4 [Fn]

Ничего особенного: лишь Fn клавиши.

Прошивка через Wally

Скачиваем .bin файл прошивки и программу для прошивки Wally:

Устанавливаем Wally, запускаем и выбираем .bin файл прошивки. Переводим клавиатуру в режим загрузчика нажатием скрепкой на спрятанную кнопку RESET:

Устройство должно успешно прошиться.

Wally позволяет прошивать раскладки, созданные только в визуальном редакторе Oryx, который в свою очередь сильно ограничен. Мы должны исправить проблему с русским языком, при переключении на который большинство символов замещаются на иные.

Доработка раскладки помощью MSKLC

Скачиваем и устанавливаем MSKLC. Открываем два редактора для русской и английской раскладок. Загрузим в редактор уже существующие раскладки:

Загружаем раскладки "Русская" и "США" и редактируем под свои нужды.

В процессе экспериментов вполне ожидаемо в системе расплодится куча недоработанных раскладок, которые нужно будет удалить. Для того, чтобы это сделать, нужно зайти в Панель управления -> Программы -> Программы и компоненты (Удаления программ) и удалить лишние раскладки.

Базовый слой

  • Независимо от языка знаки остаются на своих местах.
  • Хоть мы и поменяли раскладку у себя на компьютере, Oryx все равно думает, что мы используем стандартную раскладку. Поэтому, когда мы хотим использовать, например, открытую круглую скобку (, нам нужно передать в Oryx, что мы хотим нажать минус -:
  • Oryx нажмет клавишу, где, как он считает, находится минус -, на на самом деле у нас там находится скобка (. Победа!

Слой с зажатым Shift

  • Цифра с зажатым шифтом — именно так реализованы часто используемые символы:

Слой зажатыми Alt + Ctrl

  • Здесь реализованы треугольные и фигурные скобки:

Слой зажатыми Alt + Ctrl + Shift

  • Этот слой позволяет реализовать слой с редко используемыми символами путем сочетания цифр и Alt + Ctrl + Shift:

Таблица символов

  • S = Shift
  • C = Ctrl
  • A = Alt
|Ожидание           |Ожидание     |
|Oryx               |Пользователя |
|:-----------------:|:-----------:|
|       S + 1       |      *      |
|       S + 2       |      :      |
|       S + 3       |      -      |
|       S + 4       |      +      |
|       S + 5       |      =      |
|       S + 6       |      _      |
|       S + 7       |      !      |
|       S + 8       |      ?      |
|       S + 9       |      #      |
|       S + 0       |      ;      |
|   S + C + A + 1   |      %      |
|   S + C + A + 2   |      ₽      |
|   S + C + A + 3   |      $      |
|   S + C + A + 4   |      `      |
|   S + C + A + 5   |      ~      |
|   S + C + A + 6   |      —      |
|   S + C + A + 7   |      ^      |
|   S + C + A + 8   |      &      |
|   S + C + A + 9   |      @      |
|   S + C + S + 0   |      |      |
|               -   |      (      |
|           S + -   |      [      |
|       A + C + -   |      <      |
|   S + A + C + -   |      {      |
|               =   |      )      |
|           S + =   |      ]      |
|       A + C + =   |      >      |
|   S + A + C + =   |      }      |
|           \       |      \      |
|       S + \       |      /      |
|           `       |      '      |
|       S + `       |      "      |
|           /       |      .      |
|       S + /       |      ,      |

Доработка раскладки с библиотекой lang_shift

Для исправления недоразумения с русской раскладкой уважаемый @optozorax написал библиотеку lang_shift. Ее возможности описаны в README репозитория.

Дальше путь открыт только C кодерам.

Примеры готовых раскладок:

Прошивка через командную строку

Сначала нужно попробовать прошить ту же раскладку, созданную на Oryx, через командную строку. Это можно делать как на Windows, так и на Linux.

Я решил поставить Fedora Linux второй системой.

Обновим пакеты дистрибутива до актуальной версии:

sudo yum update -y

Исходный код раскладки, сделанной на Oryx, будет работать только с форком QMK от ZSA. Конечно, можно использовать обычный QMK, но там вроде чего-то не хватает. Поэтому первым делом надо скачать и перейти в этот форк:

git clone https://github.com/zsa/qmk_firmware zsa_qmk
cd zsa_qmk

Подключаем зависимости:

./util/qmk_install.sh
git submodule init
git submodule update

Скачиваем прошивку, созданную с помощью Oryx:

Копируем папку *_source из .zip файла прошивки в папку zsa_qmk/keyboards/moonlander/keymaps/:

Переводим клавиатуру в режим загрузчика и прошиваем ее:

sudo make moonlander:my_layout_source:flash

Боюсь, что для того, чтобы сделать следующий шаг, нужно постичь магию кодинга на C. Могу лишь пожелать удачи <3