diff --git a/layouts/Linux (Separate layouts)/rules/evdev b/layouts/Linux (Separate layouts)/rules/evdev new file mode 100644 index 0000000..86c4af0 --- /dev/null +++ b/layouts/Linux (Separate layouts)/rules/evdev @@ -0,0 +1,5 @@ +! option = symbols +univEn:univEn = +univEn(univEn) +univRu:univRu = +univRu(univRu) + +! include %S/evdev diff --git a/layouts/Linux (Separate layouts)/rules/evdev.xml b/layouts/Linux (Separate layouts)/rules/evdev.xml new file mode 100644 index 0000000..b437b8e --- /dev/null +++ b/layouts/Linux (Separate layouts)/rules/evdev.xml @@ -0,0 +1,58 @@ + + + + + + + + univEn + + univ en + Universal EN + + RU + + + rus + + + + + + + + univRu + + univ ru + Universal RU + + RU + + + rus + + + + + + + + + Universal Layout + _My Universal Layout + + + + + + diff --git a/layouts/Linux (Separate layouts)/symbols/univEn b/layouts/Linux (Separate layouts)/symbols/univEn new file mode 100644 index 0000000..d46dc74 --- /dev/null +++ b/layouts/Linux (Separate layouts)/symbols/univEn @@ -0,0 +1,228 @@ +default partial alphanumeric_keys modifier_keys +xkb_symbols "univEn" { + include "ru(common)" + // allows RALT to trigger AltGr (third and four) layer + include "level3(ralt_switch)" + modifier_map Mod5 { }; + modifier_map Mod5 { }; + + name[Group1] = "Eng"; + + // key to cycle between language groups + // key { [ ISO_Next_Group ] }; + + // Numbers / Symbols row + // Note: Numbers and Symbols are swapped as it is better for programming stuff. + + key { + type = "FOUR_LEVEL", + symbols = [ exclam, 1, U00B9, U00A1 ] + }; + key { + type = "FOUR_LEVEL", + symbols = [ at, 2, U00B2, U00BD ] + }; + key { + type = "FOUR_LEVEL", + symbols = [ numbersign, 3, U00B3, U2153 ] + }; + key { + type = "FOUR_LEVEL", + symbols = [ dollar, 4, U2074, U00BC ] + }; + key { + type = "FOUR_LEVEL", + symbols = [ percent, 5, U2030 ] + }; + key { + type = "FOUR_LEVEL", + symbols = [ asciicircum, 6, U02C6 ] + }; + key { + type = "FOUR_LEVEL", + symbols = [ question, 7, U00BF, U2048 ] + }; + key { + type = "FOUR_LEVEL", + symbols = [ asterisk, 8, U221E ] + }; + key { + type = "FOUR_LEVEL", + symbols = [ parenleft, 9, U2018, U201C ] + }; + key { + type = "FOUR_LEVEL", + symbols = [ parenright, 0, U2019, U201D ] + }; + + + // Non-Breaking Space in third layer + key {[ space, space, U00A0, U00A0 ]}; + + // Combo-keys, similar symbols in one key + + key { + type = "FOUR_LEVEL", + symbols = [ slash, bar, backslash, U00A6 ] + }; + key { + type = "FOUR_LEVEL", + symbols = [ apostrophe, quotedbl, grave, U2022 ] + }; + key { + type = "FOUR_LEVEL", + symbols = [ minus, underscore, U2013, U2014 ] + }; + key { + type = "FOUR_LEVEL", + symbols = [ equal, plus, U2260, U00B1 ] + }; + + // Main type cluster keys + + // Q W E R T + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ q, Q, U03C8, U03A8 ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ w, W, U03C9, U03A9 ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ e, E, U20AC, U20AC ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ r, R, U00AE, U00AE ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ t, T, U0451, U0401 ] + }; + + // Y U I O P [ ] + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ y, Y, U00A5, U00A5 ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ u, U, U03BB, U039B ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ i, I ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ o, O ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ p, P, U03C0, U03A0 ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ bracketleft, braceleft, bracketleft, braceleft ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ bracketright, braceright, bracketright, braceright ] + }; + + // A S D F G + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ a, A, U03B1, U0391 ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ s, S, U00A7, U03A3 ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ d, D, U00B0, U0394 ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ f, F, U00A3, U00A3 ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ g, G, U03B3, U03B3 ] + }; + + // H J K L ; ' + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ h, H, U20BD, U20BD ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ j, J, U00F8, U00D8 ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + // XKB doesn't support ligatures input + // so 3 and 4 positions are used for macro keys. + symbols = [ k, K, XF86Macro1, XF86Macro2 ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ l, L, U00AB, U2190 ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ XF86Macro1, XF86Macro2, U00BB, U2192 ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ asciitilde, U2248, asciitilde, U2248 ] + }; + + // Z X C V B + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ z, Z, U03BC, U039C ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ x, X, U00D7, U00D7] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ c, C, U00A9 , U00A2] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ v, V, U221A, U221A ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ b, B, U03B2, U0392 ] + }; + + // N M , . & + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ n, N, U03B7, U0397 ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ m, M, U044A, U042A ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ comma, semicolon, less, U2264 ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ period, colon, greater, U2265 ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ ampersand, ampersand, ampersand, U2026 ] + }; +}; diff --git a/layouts/Linux (Separate layouts)/symbols/univRu b/layouts/Linux (Separate layouts)/symbols/univRu new file mode 100644 index 0000000..382822e --- /dev/null +++ b/layouts/Linux (Separate layouts)/symbols/univRu @@ -0,0 +1,228 @@ +default partial alphanumeric_keys modifier_keys +xkb_symbols "univRu" { + include "ru(common)" + // allows RALT to trigger AltGr (third and four) layer + include "level3(ralt_switch)" + modifier_map Mod5 { }; + modifier_map Mod5 { }; + + name[Group1] = "Rus"; + + // key to cycle between language groups + // key { [ ISO_Next_Group ] }; + + // Numbers / Symbols row + // Note: Numbers and Symbols are swapped as it is better for programming stuff. + + key { + type = "FOUR_LEVEL", + symbols = [ exclam, 1, U00B9, U00A1 ] + }; + key { + type = "FOUR_LEVEL", + symbols = [ at, 2, U00B2, U00BD ] + }; + key { + type = "FOUR_LEVEL", + symbols = [ numbersign, 3, U00B3, U2153 ] + }; + key { + type = "FOUR_LEVEL", + symbols = [ dollar, 4, U2074, U00BC ] + }; + key { + type = "FOUR_LEVEL", + symbols = [ percent, 5, U2030 ] + }; + key { + type = "FOUR_LEVEL", + symbols = [ asciicircum, 6, U02C6 ] + }; + key { + type = "FOUR_LEVEL", + symbols = [ question, 7, U00BF, U2048 ] + }; + key { + type = "FOUR_LEVEL", + symbols = [ asterisk, 8, U221E ] + }; + key { + type = "FOUR_LEVEL", + symbols = [ parenleft, 9, U2018, U201C ] + }; + key { + type = "FOUR_LEVEL", + symbols = [ parenright, 0, U2019, U201D ] + }; + + + // Non-Breaking Space in third layer + key {[ space, space, U00A0, U00A0 ]}; + + // Combo-keys, similar symbols in one key + + key { + type = "FOUR_LEVEL", + symbols = [ slash, bar, backslash, U00A6 ] + }; + key { + type = "FOUR_LEVEL", + symbols = [ apostrophe, quotedbl, grave, U2022 ] + }; + key { + type = "FOUR_LEVEL", + symbols = [ minus, underscore, U2013, U2014 ] + }; + key { + type = "FOUR_LEVEL", + symbols = [ equal, plus, U2260, U00B1 ] + }; + + // Main type cluster keys + + // Q W E R T + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ U0439, U0419, U03C8, U03A8 ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ U0446, U0426, U03C9, U03A9 ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ U0443, U0423, U20AC, U20AC ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ U043A, U041A, U00AE, U00AE ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ U0435, U0415, U0451, U0401 ] + }; + + // Y U I O P [ ] + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ U043D, U041D, U00A5, U00A5 ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ U0433, U0413, U03BB, U039B ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ U0448, U0428 ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ U0449, U0429 ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ U0437, U0417, U03C0, U03A0 ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ U0445, U0425, bracketleft, braceleft ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ U0431, U0411, bracketright, braceright ] + }; + + // A S D F G + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ U0444, U0424, U03B1, U0391 ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ U044B, U042B, U00A7, U03A3 ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ U0432, U0412, U00B0, U0394 ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ U0430, U0410, U00A3, U00A3 ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ U043F, U041F, U03B3, U03B3 ] + }; + + // H J K L ; ' + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ U0440, U0420, U20BD, U20BD ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ U043E, U041E, U00F8, U00D8 ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + // XKB doesn't support ligatures input + // so 3 and 4 positions are used for macro keys. + symbols = [ U043B, U041B, XF86Macro1, XF86Macro2 ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ U0434, U0414, U00AB, U2190 ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ U0436, U0416, U00BB, U2192 ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ U044D, U042D, asciitilde, U2248 ] + }; + + // Z X C V B + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ U044F, U042F, U03BC, U039C ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ U0447, U0427, U00D7, U00D7] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ U0441, U0421, U00A9 , U00A2] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ U043C, U041C, U221A, U221A ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ U0438, U0418, U03B2, U0392 ] + }; + + // N M , . & + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ U0442, U0422, U03B7, U0397 ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ U044C, U042C, U044A, U042A ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ comma, semicolon, less, U2264 ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ period, colon, greater, U2265 ] + }; + key { + type = "FOUR_LEVEL_ALPHABETIC", + symbols = [ U044E, U042E, ampersand, U2026 ] + }; +}; diff --git a/readme.md b/readme.md index 3230d65..5ef6f16 100644 --- a/readme.md +++ b/readme.md @@ -130,6 +130,21 @@ ``` - Для sway, hyprland и других WM на Wayland: ищите инструкцию в документации своего оконного менеджера. +#### Вариант с раздельными раскладками (Проверено на Wayland - Ubuntu 24.10) + +Для этого варианта поместите содержимое папки `layouts/Linux (Separate layouts)/xkb` в `~/.config/xkb`. +Далее откройте приложение Settings, зайдите в настройки клавиатуры и добавьте две раскладки `Universal RU` и `Universal EN`. +Они обе находятся в разделе Russian (Russian Federation). + +Попробуйте что-нибудь напечатать в текстовом редакторе. Если раскладки не подтянулись - зайдите в Gnome Tweaks +и включите-выключите опции `Enable Ru Layout` и/или `Enable En Layout` и попроюуйте снова. + +Чтобы переключать раскладки через CapsLock в Gnome Tweaks выключите поведение капс лока (должно быть выбрано именно ***disabled***, а не ***default***) +Там же в Tweaks настройте переключение раскладки через клавишу CapsLock. + +Обратите внимание, что на экране логина раскладки еще не подтянуты и там дейстует стандартная. Если у вас в пароле +есть цифры - их следует набирать без шифта. + ### macOS 1. Файл `layouts/macOS/Universal.bundle` скопировать в `~/Library/Keyboard Layouts`.