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>— switch both the system layout and the internal keyboard layout according to your configuration:0: layout → Russian1: layout → English
-
&ruen_key <en_key> <ru_key>— senden_keyif the active language is English, orru_keyif 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: send in Russian1: send in Englishkey: the keycode to send
Note
Examples assume macOS with English and Russian layouts.
&ruen_switch 0— internal keyboard layout switches to Russian; sends the special hotkey to switch the system to Russian.&ruen_switch 1— internal keyboard layout switches to English; sends the special hotkey 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 layouts.&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 App Store and configure separate hotkeys for Russian and English layouts.
- In your
config/west.yml, add these entries underremotesandprojects: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>.confadd 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
macros, add these entries, update bindings to your own layout-switch hotkeys:Tip: You can include multipleruen_to_en: ruen_to_en { compatible = "zmk,behavior-macro"; #binding-cells = <0>; bindings = <&kp LG(N8)>; // Your hotkey to switch to English }; ruen_to_ru: ruen_to_ru { compatible = "zmk,behavior-macro"; #binding-cells = <0>; bindings = <&kp LG(N9)>; // Your hotkey to switch to Russian };
&kpentries in thebindingssection if you need to send several different hotkeys - for example, one for your primary macOS machine and another for a Windows machine accessed via RDP:In this case, LG(N5) will be sent first, and after a 5 ms delay, LG(N6) will be sent.bindings = <&kp LG(N5)>, <&kp LG(N6)>;
Warning
Do NOT include anything other than &kp in bindings; any other devices will be ignored.
- Add your new keys into the same keymap file.
- Add
&ruen_macos 1to a distant key position in a rarely used layer. - Build and flash the firmware to your keyboard.
- Once press
&ruen_macos 1to switchruento 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 underremotesandprojects: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>.confadd 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
macros, add these entries, update bindings to your own layout-switch hotkeys:Tip: You can include multipleruen_to_en: ruen_to_en { compatible = "zmk,behavior-macro"; #binding-cells = <0>; bindings = <&kp LG(N8)>; // Your hotkey to switch to English }; ruen_to_ru: ruen_to_ru { compatible = "zmk,behavior-macro"; #binding-cells = <0>; bindings = <&kp LG(N9)>; // Your hotkey to switch to Russian };
&kpentries in thebindingssection if you need to send several different hotkeys - for example, one for your primary macOS machine and another for a Windows machine accessed via RDP:In this case, LG(N5) will be sent first, and after a 5 ms delay, LG(N6) will be sent.bindings = <&kp LG(N5)>, <&kp LG(N6)>;
Warning
Do NOT include anything other than &kp in bindings; any other devices will be ignored.
- Add your new keys into the same keymap file.
- Build and flash the firmware to your keyboard.
Модуль ruen позволяет отправлять кейкоды независимо от выбранного языка и раскладки.
Warning
В настоящий момент модуль находится на ранней альфа‑версии, поэтому используйте его на свой страх и риск.
-
&ruen_switch <0/1>— переключает язык в системе и в клавиатуре согласно настройке:0: раскладка — русский1: раскладка — английский
-
&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— внутренняя раскладка клавиатуры меняется на русский, отправляет особый хоткей для переключения на русский в системе.&ruen_switch 1— внутренняя раскладка клавиатуры меняется на английский, отправляет особый хоткей для переключения на английский в системе.&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. - В том же файле, в разделе
macrosдобавьтеruen_to_enиruen_to_ru:Совет: Вы можете включать несколькоruen_to_en: ruen_to_en { compatible = "zmk,behavior-macro"; #binding-cells = <0>; bindings = <&kp LG(N8)>; // Ваш хоткей для переключения на английский }; ruen_to_ru: ruen_to_ru { compatible = "zmk,behavior-macro"; #binding-cells = <0>; bindings = <&kp LG(N9)>; // Ваш хоткей для переключения на русский };
&kpв списокbindings, если нужно отправить несколько хоткеев — например, один для основной машины под macOS и другой для Windows-машины, к которой вы подключаетесь через RDP:В этом случае сначала будет отправленbindings = <&kp LG(N5)>, <&kp LG(N6)>;LG(N5), и через 5 мс —LG(N6).
Warning
Не включайте ничего, кроме &kp в bindings; любые другие девайсы будут игнорироваться.
- Добавьте новые клавиши в раскладку в том же файле.
- Добавьте
&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. - В том же файле, в разделе
macrosдобавьтеruen_to_enиruen_to_ru:Совет: Вы можете включать несколькоruen_to_en: ruen_to_en { compatible = "zmk,behavior-macro"; #binding-cells = <0>; bindings = <&kp LG(N8)>; // Ваш хоткей для переключения на английский }; ruen_to_ru: ruen_to_ru { compatible = "zmk,behavior-macro"; #binding-cells = <0>; bindings = <&kp LG(N9)>; // Ваш хоткей для переключения на русский };
&kpв списокbindings, если нужно отправить несколько хоткеев — например, один для основной машины под macOS и другой для Windows-машины, к которой вы подключаетесь через RDP:В этом случае сначала будет отправленbindings = <&kp LG(N5)>, <&kp LG(N6)>;LG(N5), а через 5 мс —LG(N6).
Warning
Не включайте ничего, кроме &kp в bindings; любые другие девайсы будут игнорироваться.
- Добавьте новые клавиши в раскладку в том же файле.
- Соберите и загрузите прошивку на клавиатуру.