Custom keyboard layout. Powered by kanata keyboard remapper.
This project contains:
- custom keyboard layout SOWA for English;
- custom keyboard layout SOWARU for Russian;
- (still WIP) set of additional layers for using keyboard more efficiently.
All modern alt layouts assume placing your fingers on "home" row, i.e. on ASDF
and KJL;
keys. I personally find this position uncomfortable. For me it's much more convenient to place index fingers on the bottom row, i.e. on SDFV
and NJKL
keys. And because of that reason all those layouts loose a lot of their eFfiCieNcY. That's why I decided to create a new layout for my "special needs". It's not super efficient in many metrics but who cares. After 3 attempts of redesigning and 1.5 years of practice I ended up with (mostly) adapting graphite layout. Result SOWA layout has some flaws (see below) but I'm pretty happy with it. It places hands slightly wider. The right hand shifted 1 column to the right (so maybe swap j
and k
keys on your keyboard).
The same story goes for Cyrillic layout. Because why not? +1% efficiency? I will take that! ЙЦУКЕН layout for Russian is not as bad as QWERTY for English but anyways. There are few alt layouts for Russian and kharlamak has the best metrics. I've tried to adapt it.
SOWA
qbldw ' kouj[]
xnrtc / haei;
zvmsg fpy,.
SOWARU
.эыйщ х цргчшъ
зиоак ф пнсвж
юуьея дтлмб
The easiest way to try/use alternative keyboard layout is using some remapping software. I picked kanata.
For Linux setup see kanata Linux docs.
kanata --cfg sowa-60.kbd
For Windows setup see section below.
Note: sowa-60.kbd
config file is for 60% keyboards.
Use tab
:
tab + r
live reload kanata configtab + q
switch to QWERTY layouttab + w
switch to SOWA layout
Any custom layout reshuffles keys for other languages. To be able to use (almost!) default Russian ЙЦУКЕН layout you have to do the following (for Linux):
- Add new symbols (
r1
orr2
) to system:
r1
refers to ЙЦУКЕН layout;r2
refers to custom cyrillic SOWARU layout.
sudo ln -sr r1 /usr/share/X11/xkb/symbols/
- Add new rules to system:
sudo micro /usr/share/X11/xkb/rules/evdev.xml
Paste these lines (with proper name r1
or r2
) somewhere near Russian layouts (tip! search for <description>Russian</description>
to locate those rules):
<!-- SOWA -->
<layout>
<configItem>
<name>r1</name>
<shortDescription>Russian (SOWA)</shortDescription>
<description>Russian (SOWA)</description>
<languageList>
<iso639Id>rus</iso639Id>
</languageList>
</configItem>
</layout>
- Add new
Russian (SOWA)
layout in settings (orsetxkbmap
) as usual (setxkbmap -layout us,r1
).
To install SOWA
, SOWARU
layouts on Windows look into /windows folder:
-
/windows/kanata folder contains kanata files; just copy this folder (to
C:\bin\kanata\
for example), copy the latestsowa-60.kbd
config file inside, launch withkanata-launcher.bat
. All those files here in for quick setup only. You can do this manually, no need to download suspicious*.exe
files from Internet. -
/windows/sowaru folder contains files for installing Cyrillic
SOWARU
layout; those files were generated fromsowaru.klc
keyboard file in Microsoft Keyboard Layout Creator (MSKLC). I believe you only need amd64 files here but I saved them all just in case. Runsetup.exe
to installSOWARU
layout. Go to System settings -> Language settings -> Prefered languages -> Russian -> Options -> Add a keyboard -> SOWARU. Reboot. Please reboot. You may also want to setup hotkeys to switch betweenЙЦУКЕН
andSOWARU
layouts (in case of using 2 cyrillic layouts).
NOTE! It seems like kanata doesn't work with programms with admin rights, so be aware.
SOWA layout is not ideal and it has worse metrics because some fingers have access to few keys while others fingers "overloaded".
- it's quite hard to press
k
key (kick, king, like, backwards); - I'm not fan of
br
,rb
,mb
,bm
,wn
bigrams (brown, down, downtown, umbrella);
- /jsons folder contains json files for Keyboard Layout Analyzer KLAnext v0.06.
- Linux: How to make your own keyboard layout by Florin Lipan;
- add fancy images with layout and heatmaps;
- add
ЙЦУКЕН
files for Windows probably; - make README more beginner friendly;
- create sane layer for punctuation, numbers, etc.