Эта статья также доступна на 🇷🇺 Русском языке.
The firmware/layout is intended for use with Universal Layout - a system-wide layout for Windows, Linux, and macOS. On the project page, you can find all the necessary instructions for installing and modifying this layout.
The firmware/layout is based on callum and works on QMK, which is designed for wired keyboards. A version for wireless keyboards that work on ZMK is currently under development.
Don't worry! Letters Ё, Ъ and Щ are placed on ALT layer.
On the left half, there are the Game Layer, Print Screen, and various macros:
Key | Macro |
---|---|
SW TAB | Swapper (for windows in Windows/Linux) |
SW WIN | Tabber (for tabs in browser and terminal) |
PREV TAB | Ctrl + Shift + Tab |
NEXT TAB | Ctrl + Tab |
SPACE LEFT | Ctrl + Gui + Left |
SPACE RIGHT | Ctrl + Gui + Right |
On the right half, there are Vim-like arrow keys, Home/End (on top), and Page Up/Down (on the bottom).
The Escape, Enter and Tab keys are duplicated on both halves, which is convenient for use in various software and editors where only the left hand is on the keyboard while the right hand holds the mouse.
The Russian letters that did not fit into the 2x15 grid and various symbols, many of which are arranged mnemonically, are placed in a layer:
Symbol | Input method |
---|---|
Ё | Alt + Е |
Ъ | Alt + Ь |
Щ | Alt + Ш |
₽ | Alt + Р |
In place of the space is located the non-breaking space character, which prevents text from being divided between lines only at that point, and instead forces the entire group of adjacent words to move to the next line together.
The ALT layer also includes <
>
«
»
[
]
(available for both languages) and the =>
ligature, which is convenient for developers.
WASD is shifted one column to the right to accommodate Tab, Shift, and Ctrl in almost familiar positions. This is also relevant for ergonomic keyboards due to the vertical offset of the keys, where the key under the middle finger is higher than the others.
Additionally, the layer with numbers contains two rows of digits and frequently used gaming keys:
Key | Description |
---|---|
G | Grenade |
J | Journal |
I | Inventory |
M | Map |
T | Chat |
When you hold layer key, modifiers will be added to a queue and remain pressed until some non-modifier key or layer key is pressed.
For example, to press the Windows Gui key without any combinations, you need to:
And if you need, for example, to press the Ctrl+Shift+T combination, you have several options:
As soon as the T key is pressed, the queue of modifiers will be activated, cleared, and the Ctrl+Shift+T combination will be entered.
Moreover, if you hold down the modifier keys but release the layer key, the modifiers will remain held down, allowing you to use them in combinations with keys from the other half of the keyboard.
The Swapper key NAV+W and the Tabber key NAV+Q are macros for Alt+Tab and Ctrl+Tab, respectively. When pressed, they leave the Alt or Ctrl modifiers held down.
Thus, by pressing W and Q again, you can switch between windows in Windows, tabs in a Web Browser, or Terminal.
These keys are compatible with the Shift modifier, which allows you to reverse the direction of window/tab switching.
To build the firmware, you will need the latest version of QMK.
firmware
folder to the <your_keyboard>/keymaps/wellum
folder.LAYOUT_split_3x5_3
is not defined for your keyboard in info.json
, you need to create it yourself. Follow the instructions below.For the firmware build, keymap.c
relies on LAYOUT_split_3x5_3
, but it may not be defined for most keyboards.
To fix this, you need to duplicate your current LAYOUT_split_***_*
and name it LAYOUT_split_3x5_3
.
After that, you need to remove the keys that do not fit into the new grid.
For example, for LAYOUT_split_3x6_3
, you need to remove the rows corresponding to the far left and far right columns.
In total, the layout
array should have exactly 36 elements.
"LAYOUT_split_3x6_3": {
"layout": [
{ "matrix": [0, 0], "x": 0, "y": 0.25 }, // far left, delete
{ "matrix": [0, 1], "x": 1, "y": 0.25 },
{ "matrix": [0, 2], "x": 2, "y": 0.125 },
{ "matrix": [0, 3], "x": 3, "y": 0 },
{ "matrix": [0, 4], "x": 4, "y": 0.125 },
{ "matrix": [0, 5], "x": 5, "y": 0.25 },
{ "matrix": [4, 0], "x": 8, "y": 0.25 },
{ "matrix": [4, 1], "x": 9, "y": 0.125 },
{ "matrix": [4, 2], "x": 10, "y": 0 },
{ "matrix": [4, 3], "x": 11, "y": 0.125 },
{ "matrix": [4, 4], "x": 12, "y": 0.25 },
{ "matrix": [4, 5], "x": 13, "y": 0.25 }, // far right, delete
{ "matrix": [1, 0], "x": 0, "y": 1.25 }, // far left, delete
{ "matrix": [1, 1], "x": 1, "y": 1.25 },
{ "matrix": [1, 2], "x": 2, "y": 1.125 },
{ "matrix": [1, 3], "x": 3, "y": 1 },
{ "matrix": [1, 4], "x": 4, "y": 1.125 },
{ "matrix": [1, 5], "x": 5, "y": 1.25 },
{ "matrix": [5, 0], "x": 8, "y": 1.25 },
{ "matrix": [5, 1], "x": 9, "y": 1.125 },
{ "matrix": [5, 2], "x": 10, "y": 1 },
{ "matrix": [5, 3], "x": 11, "y": 1.125 },
{ "matrix": [5, 4], "x": 12, "y": 1.25 },
{ "matrix": [5, 5], "x": 13, "y": 1.25 }, // far right, delete
{ "matrix": [2, 0], "x": 0, "y": 2.25 }, // far left, delete
{ "matrix": [2, 1], "x": 1, "y": 2.25 },
{ "matrix": [2, 2], "x": 2, "y": 2.125 },
{ "matrix": [2, 3], "x": 3, "y": 2 },
{ "matrix": [2, 4], "x": 4, "y": 2.125 },
{ "matrix": [2, 5], "x": 5, "y": 2.25 },
{ "matrix": [6, 0], "x": 8, "y": 2.25 },
{ "matrix": [6, 1], "x": 9, "y": 2.125 },
{ "matrix": [6, 2], "x": 10, "y": 2 },
{ "matrix": [6, 3], "x": 11, "y": 2.125 },
{ "matrix": [6, 4], "x": 12, "y": 2.25 },
{ "matrix": [6, 5], "x": 13, "y": 2.25 }, // far right, delete
{ "matrix": [3, 0], "x": 3.5, "y": 3.25 },
{ "matrix": [3, 1], "x": 4.5, "y": 3.5 },
{ "matrix": [3, 2], "x": 5.5, "y": 3.75 },
{ "matrix": [7, 0], "x": 7.5, "y": 3.75 },
{ "matrix": [7, 1], "x": 8.5, "y": 3.5 },
{ "matrix": [7, 2], "x": 9.5, "y": 3.25 }
]
}