Module ruen
lets you send keycodes regardless of the active system language or keyboard layout. All examples and explanations use Russian and English layouts, but you can apply the same approach to any other language pair, for example French and English or Spanish and English.
Warning
This module is currently in early alpha. Use at your own risk.
-
&ruen_switch <0/1> <hotkey>
— switch both the system layout and the internal keyboard layout according to your configuration:0
: internal layout → Russian1
: internal layout → Englishhotkey
: the system‐level shortcut to change the layout
-
&ruen_key <en_key> <ru_key>
— senden_key
if the active language is English, orru_key
if it’s Russian:en_key
: keycode to send in English layoutru_key
: keycode to send in Russian layout
-
&ruen_one_key <0/1> <key>
— if the current language matches your configuration, sendkey
; otherwise, perform: switch → sendkey
→ switch back:0
: priority → Russian1
: priority → Englishkey
: the keycode to send
Note
Examples assume macOS with English and Russian layouts.
&ruen_switch 0 LG(N9)
— internal keyboard switches to Russian; sendsLGui+9
to switch the system to Russian.&ruen_switch 1 LG(N8)
— internal keyboard switches to English; sendsLGui+8
to switch the system to English.&ruen_key LS(N5) LS(N4)
— in English layout sendsLShift+5
(prints%
), in Russian layout sendsLShift+4
(also prints%
). Always yields%
.&ruen_key Q W
— in English layout sendsQ
, in Russian layout sendsW
(Ц). Lets you combine Colemak and the “Dictor” (Russian alternative layout) layouts in one layer without changing system settings.&ruen_one_key 1 LS(N3)
— in English layout sendsLShift+3
(#
); in Russian: switch to English →LShift+3
→ switch back. Always yields#
.&ruen_one_key 0 LS(N3)
— in Russian layout sendsLShift+3
(№
); in English: switch to Russian →LShift+3
→ switch back. Always yields№
.
- Install MLSwitcher2 from Mac AppStore and configure separate hotkeys for Russian and English layouts.
- In your
config/west.yml
, add these entries underremotes
andprojects
:manifest: remotes: - name: zmkfirmware url-base: https://github.com/zmkfirmware - name: jewtvet url-base: https://github.com/jewtvet projects: - name: zmk remote: zmkfirmware revision: main import: app/west.yml - name: zmk-ruen remote: jewtvet revision: main self: path: config
- In your
config/<your-keyboard>.conf
add these configs:CONFIG_SETTINGS=y CONFIG_NVS=y CONFIG_SETTINGS_NVS=y
- In your
config/<your-keyboard>.keymap
, add#include <behaviors/ruen.dtsi>
to other includes. - In the same file, under
behaviors
, add these entries, updateto_en
andto_ru
to your own layout-switch hotkeys:ruen_one_key: ruen_one_key { compatible = "zmk,behavior-ruen-one-key"; #binding-cells = <2>; to_en = <0x8070025>; # uint32_t code for your hotkey to switch to English (in this example: LG(N8)) to_ru = <0x8070026>; # uint32_t code for your hotkey to switch to Russian (in this example: LG(N9)) };
- Add your new keys into the same keymap file.
- Add
&ruen_macos 1
to a distant key position in a rarely used layer. - Build and flash the firmware to your keyboard.
- Once press
&ruen_macos 1
to switchruen
to macOS compatibility mode, the state will be saved in persistent storage.
Warning
This module was only tested on macOS; Windows & Linux support is unverified.
- Configure separate hotkeys for Russian and English layouts.
- In your
config/west.yml
, add these entries underremotes
andprojects
:manifest: remotes: - name: zmkfirmware url-base: https://github.com/zmkfirmware - name: jewtvet url-base: https://github.com/jewtvet projects: - name: zmk remote: zmkfirmware revision: main import: app/west.yml - name: zmk-ruen remote: jewtvet revision: main self: path: config
- In your
config/<your-keyboard>.conf
add these configs:CONFIG_SETTINGS=y CONFIG_NVS=y CONFIG_SETTINGS_NVS=y
- In your
config/<your-keyboard>.keymap
, add#include <behaviors/ruen.dtsi>
to other includes. - In the same file, under
behaviors
, add these entries, updateto_en
andto_ru
to your own layout-switch hotkeys:ruen_one_key: ruen_one_key { compatible = "zmk,behavior-ruen-one-key"; #binding-cells = <2>; to_en = <0x8070025>; # uint32_t code for your hotkey to switch to English (in this example: LG(N8)) to_ru = <0x8070026>; # uint32_t code for your hotkey to switch to Russian (in this example: LG(N9)) };
- Add your new keys into the same keymap file.
- Build and flash the firmware to your keyboard.
Модуль ruen
позволяет отправлять кейкоды независимо от выбранного языка и раскладки.
Warning
В настоящий момент модуль находится на ранней альфа‑версии, поэтому используйте его на свой страх и риск.
-
&ruen_switch <0/1> <hotkey>
— переключает язык в системе и в клавиатуре согласно настройке:0
: внутренняя раскладка клавиатуры — русский1
: внутренняя раскладка клавиатуры — английскийhotkey
: хоткей для смены раскладки в системе
-
&ruen_key <en_key> <ru_key>
— отправляетen_key
, если текущий язык — английский, иru_key
, если текущий язык — русский:en_key
: клавиша для английской раскладкиru_key
: клавиша для русской раскладки
-
&ruen_one_key <0/1> <key>
— если текущий язык совпадает с выбранным при конфигурации, отправляетkey
; иначе выполняет: смена языка → отправкаkey
→ возвращение языка:0
: приоритет — русский язык1
: приоритет — английский языкkey
: отправляемая клавиша
Note
Примеры приведены для macOS с раскладками English и Russian.
&ruen_switch 0 LG(N9)
— внутренняя раскладка клавиатуры меняется на русский, отправляетLGui+9
для переключения на русский в системе.&ruen_switch 1 LG(N8)
— внутренняя раскладка клавиатуры меняется на английский, отправляетLGui+8
для переключения на английский в системе.&ruen_key LS(N5) LS(N4)
— при английской раскладке отправляетLShift+5
(% в английской), при русской —LShift+4
(% в русской). Всегда отправляет%
.&ruen_key Q W
— при английской раскладке отправляетQ
, при русской —W
(Ц). Позволяет объединить Colemak и "Диктор" раскладки в одном слое без изменения системных раскладок.&ruen_one_key 1 LS(N3)
— при английской раскладке отправляетLShift+3
(#); при русской — переключает на английский → отправляетLShift+3
→ возвращает русский. Всегда отправляет#
.&ruen_one_key 0 LS(N3)
— при русской раскладке отправляетLShift+3
(№); при английской — переключает на русский → отправляетLShift+3
→ возвращает английский. Всегда отправляет№
.
Больше примеров в моей кеймапе
- Установите MLSwitcher2 из Mac App Store и настройте отдельные хоткеи для русской и английской раскладок.
- Добавьте следующие записи в
remotes
иprojects
в файлеconfig/west.yml
:manifest: remotes: - name: zmkfirmware url-base: https://github.com/zmkfirmware - name: jewtvet url-base: https://github.com/jewtvet projects: - name: zmk remote: zmkfirmware revision: main import: app/west.yml - name: zmk-ruen remote: jewtvet revision: main self: path: config
- В файле
config/<your-keyboard>.conf
добавьте следующие конфигурации:CONFIG_SETTINGS=y CONFIG_NVS=y CONFIG_SETTINGS_NVS=y
- В файле
config/<your-keyboard>.keymap
, добавьте#include <behaviors/ruen.dtsi>
к остальным include. - В том же файле, в разделе
behaviors
добавьтеruen_one_key
:ruen_one_key: ruen_one_key { compatible = "zmk,behavior-ruen-one-key"; #binding-cells = <2>; to_en = <0x8070025>; # uint32_t код вашего хоткея для переключения на английский (в этом примере LG(N8)) to_ru = <0x8070026>; # uint32_t ко 651B вашего хоткея для переключения на русский (в этом примере LG(N9)) };
- Добавьте новые клавиши в раскладку в том же файле.
- Добавьте
&ruen_macos 1
на удаленное место в редко используемом слое. - Соберите и загрузите прошивку на клавиатуру.
- Один раз нажмите
&ruen_macos 1
, чтобы перевестиruen
в режим совместимости с macOS, это значение будет сохранено в постоянной памяти.
Warning
Модуль проверялся только на macOS; работоспособность на Windows & Linux не гарантируется.
- Настройте отдельные хоткеи для русской и английской раскладок.
- Добавьте следующие записи в
remotes
иprojects
в файлеconfig/west.yml
:manifest: remotes: - name: zmkfirmware url-base: https://github.com/zmkfirmware - name: jewtvet url-base: https://github.com/jewtvet projects: - name: zmk remote: zmkfirmware revision: main import: app/west.yml - name: zmk-ruen remote: jewtvet revision: main self: path: config
- В файле
config/<your-keyboard>.conf
добавьте следующие конфигурации:CONFIG_SETTINGS=y CONFIG_NVS=y CONFIG_SETTINGS_NVS=y
- В файле
config/<your-keyboard>.keymap
, добавьте#include <behaviors/ruen.dtsi>
к остальным include. - В том же файле, в разделе
behaviors
добавьтеruen_one_key
:ruen_one_key: ruen_one_key { compatible = "zmk,behavior-ruen-one-key"; #binding-cells = <2>; to_en = <0x8070025>; # uint32_t код вашего хоткея для переключения на английский (в этом примере LG(N8)) to_ru = <0x8070026>; # uint32_t код вашего хоткея для переключения на русский (в этом примере LG(N9)) };
- Добавьте новые клавиши в раскладку в том же файле.
- Соберите и загрузите прошивку на клавиатуру.