Halmak Keyboard Layout
This is an AI designed keyboard layout that was built within the keyboard-genetics project. More details and a documented process can be found on the blog Nikolay Rocks.
Features
- Build based on the real world hand movements analysis
- Nearly maximal possible typing efficiency
- Very low overall fingers movement distance
- Very low same finger / same hand usage overheads
- Very low overall horizontal hands movement
- Highly symmetrical design that accounts for individual fingers strength
- Designed with the modern, web based English in mind
Comparisons
During the research I've identified the following results: in terms of efficiency
QWERTY
-0%
(baseline)Dvorak
-+77%
Colemak
-+84%
Workman
-+101%
Halmak
-+134%
Please refer to the article Halmak Reborn for the more detailed breakdown of the results.
All scripts are opensourced and can be verified in the keyboard-genetics repository.
The Name
The name is a combination of HAL-9000
, as a reference to the layout being
designed by an AI. And, Dvorak
as a gratitude to Mr. Dvorak for his dedication
to the layouts optimizations process. The letter m
in between is just to make
it sound nicer. Or is it!?...
Installation
- Git clone all the stuff somewhere
- Copy
Halmak.bundle
into your/Library/Keyboard Layouts
folder (create if it is missing) - Sign out, Sign in
- Go to the keyboard preferences and add the
Halmak
layout - Ask here in issues if nothing works
Android installation for physical keyboards
- Install Extra Physical Keyboard Layouts from the Play Store
Source code is available on github - Connect a physical keyboard to your Android device e.g. via bluetooth or OTG
- Select the Halmak layout in your system menu e.g. System > Language and Input > Physical keyboard > Keyboard Name
Integrations
Karabiner Elements
To enable virtual key mapping for Halmak on your macOS machine via Karabiner Elements, you can use the following configuration inside your simple_modifications
section of your $HOME/.config/karabiner/karabiner.json
file:
{ "from": { "key_code": "q" }, "to": [{ "key_code": "w" }] },
{ "from": { "key_code": "w" }, "to": [{ "key_code": "l" }] },
{ "from": { "key_code": "e" }, "to": [{ "key_code": "r" }] },
{ "from": { "key_code": "r" }, "to": [{ "key_code": "b" }] },
{ "from": { "key_code": "t" }, "to": [{ "key_code": "z" }] },
{ "from": { "key_code": "y" }, "to": [{ "key_code": "semicolon" }] },
{ "from": { "key_code": "u" }, "to": [{ "key_code": "q" }] },
{ "from": { "key_code": "i" }, "to": [{ "key_code": "u" }] },
{ "from": { "key_code": "o" }, "to": [{ "key_code": "d" }] },
{ "from": { "key_code": "p" }, "to": [{ "key_code": "j" }] },
{ "from": { "key_code": "a" }, "to": [{ "key_code": "s" }] },
{ "from": { "key_code": "s" }, "to": [{ "key_code": "h" }] },
{ "from": { "key_code": "d" }, "to": [{ "key_code": "n" }] },
{ "from": { "key_code": "f" }, "to": [{ "key_code": "t" }] },
{ "from": { "key_code": "g" }, "to": [{ "key_code": "comma" }] },
{ "from": { "key_code": "h" }, "to": [{ "key_code": "period" }] },
{ "from": { "key_code": "j" }, "to": [{ "key_code": "a" }] },
{ "from": { "key_code": "k" }, "to": [{ "key_code": "e" }] },
{ "from": { "key_code": "l" }, "to": [{ "key_code": "o" }] },
{ "from": { "key_code": "semicolon" }, "to": [{ "key_code": "i" }] },
{ "from": { "key_code": "z" }, "to": [{ "key_code": "f" }] },
{ "from": { "key_code": "x" }, "to": [{ "key_code": "m" }] },
{ "from": { "key_code": "c" }, "to": [{ "key_code": "v" }] },
{ "from": { "key_code": "v" }, "to": [{ "key_code": "c" }] },
{ "from": { "key_code": "b" }, "to": [{ "key_code": "slash" }] },
{ "from": { "key_code": "n" }, "to": [{ "key_code": "g" }] },
{ "from": { "key_code": "m" }, "to": [{ "key_code": "p" }] },
{ "from": { "key_code": "comma" }, "to": [{ "key_code": "x" }] },
{ "from": { "key_code": "period" }, "to": [{ "key_code": "k" }] },
{ "from": { "key_code": "slash" }, "to": [{ "key_code": "y" }] }
Kinesis Advantage 2
To enable native key mapping for Halmak on your Kinesis Advantage 2
- Download our
1_qwerty.txt
file - Program+Shift+Escape to enable power user mode (should see 4 LED flashes)
- Program+F1 to mount to the keyboard as a drive (should see a few flashes)
- Drag the downloaded
1_qwerty.txt
file intoADVANTAGE2
/active
- Open Disk Utility, right-click on the drive, select Eject (must be "Eject", as unmount will not write the file)
- Program+F3 to enable QWERTY, then Program+1 to enable our Halmak modification of QWERTY
Refer to the Kinesis Advantage 2 support page for assistance.
Type Fu
To learn Halmak, we have an integration for Type Fu.
- Download our
Halmak.tfl
file - Open Type Fu
- Preferences
- Keyboard
- Hamburger menu
- Import from File
- Select the file you downloaded from the first step
Copyright & License
Again, I'm not sure if there is a point to this. But I guess it's MIT.
Copyright (C) 2016 Nikolay Nemshilov