Three Layout, more commonly called 3l
, is an alternative
keyboard layout designed for efficiently typing both English text
and computer programs. 3l
is modifier based, so many of the keys
which would normally be accessed on the top row (with numbers on
QWERTY) can be accessed on the main part of the keyboard.
To give you an idea on how much this layout can improve your typing efficiency, compare typing distance of George Orwell's Nineteen Eighty-Four to other common layouts:
QWERTY | 10.4 miles |
Neo 2.0 | 6.3 miles |
Antibracket (which this keyboard layout was based on) | 6.3 miles |
Dvorak | 6.2 miles |
Colemak | 5.9 miles |
Workman | 5.8 miles |
WULY (my old layout) | 5.6 miles |
ARENSITO | 5.3 miles |
3l |
4.9 miles |
Typing distance is not the only factor that 3l
optimizes for. 3l
helps
increase hand alternation, reduce bottom-to-top row jumps, decrease
lateral motion, and also strives to be easy to learn.
See the docs
directory for more images of the layout.
On Linux using X, you can run linux/xmodmap/test_layout.sh
from the base of
this repository to temporarily set your keyboard layout. To undo this, you can
either figure out how to type setxkbmap us
(or whatever layout you were
using before), or it will return back to normal next time you log out and back
in.
On Windows, compile and run the provided AHK script. Your keyboard layout will return to normal when the script exits (in system tray). You may also be interested in toggling the layout.
Place the linux/xkb/symbols/3l
file in your system's symbols
directory
[1], then either:
Run
setxkbmap 3l
to set the layout temporarily.Or, to set
3l
as the default keyboard layout for your system, add a section to your X11 configuration:$ cat /etc/X11/xorg.conf.d/99-keyboard.conf Section "InputClass" Identifier "system-keyboard" MatchIsKeyboard "on" Option "XkbLayout" "3l" EndSection
systemd
has thelocalectl
utility that you may optionally use to maintain this configuration file.
There may also be a package for 3l
in your distribution. There is at least a
package in the Arch Linux AUR available under threelayout.
To create a console mapping from the xkb
symbols file, you can use the
ckbcomp
utility.
[1] | This is typically something like /usr/share/X11/xkb/symbols . |
Mac OS X [2]
- Install Karabiner Elements
- Copy the
macosx/karabiner.json
file to the~/.config/karabiner/
directory. - Select the
3l
profile from Karabiner Elements.
[2] | Get off your hipster butt. This can be used to refer to "OS X" and "macOS" as well. |
Place the AHK script in your "Startup" folder.
To toggle between 3l
and your system layout (e.g., QWERTY), press
both Alt
keys at the same time.
There are a number of modifications that can be preformed to the layout.
Currently, these are only supported on systems with xmodmap
(Sorry Windows
and Mac OS X users).
To apply a mod, run xmodmap ~/path/to/git/repo/linux/xmodmap/mod-XXX
at
login, where XXX
is the name of the mod you wish to apply.
Users are encouraged to submit the mods they find useful in a pull request.
This mod gives you an Insert
key on QWERTY's Whack/Pipe key (above enter).
Useful on some notebooks which do not have an Insert
key, but also
convenient on desktop keyboards.
Many Chromebook computers have a Super_L
key that acts as a "search" key in
Chrome OS where the Caps Lock key should be. As such, when using alternative
layouts that makes good use of this key, the good use is lost. This mod makes
the Super_L
act as Tab
for these systems.
What happens if I have to use someone else's computer and all they've got is QWERTY?
Short-term use of someone's computer with QWERTY is usually a
non-concern. Since most keyboards have the layout printed on the
key caps, most users of 3l
don't have any issues surviving.
For long-term use (such as on a shared machine, or a school lab computer), applying the layout temporarily usually only takes a few minutes to setup and can help relieve some pains.
What happens if someone has to temporarily use my computer?
For Windows, see toggling the layout.
For Linux, most window managers provide a convenient way to toggle
between layouts. If your window manager does not have that, just bind
a key to run setxkbmap
.
If anyone has some Mac OS X tips, please submit a PR. (I presume Karabiner makes this pretty easy.)
How should I start learning?
The Klavaro Typing Tutor is configurable to multiple layouts (you
can put in 3l
as a custom layout) and is an excellent option for
learning. You should start with the basic skills courses before the
speed-typing courses.
Most users will recommend going cold turkey from your old layout when just starting to learn. This will help you focus on your learning, and learning survival QWERTY later is always an option.
How long does it take to learn?
Most users are able to accomplish survival typing skills (>20 WPM) within one week of starting to learn. Focusing on accuracy over speed during your first few weeks of learning will help you be successful, and you'll pick up the speed in the long run.
Will I forget QWERTY?
Most users seem to indicate that they lost some QWERTY skills while
re-training their brain to 3l
, but were eventually able to recover
enough skills to survive in the long term.
Will I type faster than on my old layout?
Maybe. While most users report they are able to type faster than they could on QWERTY, the primary benefit of trying an alternative layout is in typing comfort and health. Many users enjoy reduced repetitive motions, and find typing longer hours less difficult.
Will I have to re-configure my text editor for the new layout?
3l
was designed partly with keeping vanilla Vi-style keybindings
somewhat sane in mind. If you find yourself using many systems and
don't want to have to keep configuration in sync, you'll appreciate
how easy it is to use Vi or Vim style editors with the default
configuration. I personally use Emacs with Evil mode, and haven't
had any issues keeping most of the Vi-style bindings in their standard
configuration. That being said, if you find that some sort of
rebinding with respect to 3l
helps you, I'm curious to see what
you've done. Maybe we can drop this in some sort of contrib/
directory.
I'm curious to hear if and what people do to work with 3l
and
non-Vi editors. Drop me an email or a PR :)
Is the symbols layer designed for a specific programming language?
The symbols layer is mostly derived from the Neo 2.0 keyboard layout, and to the best of my knowledge, was not designed with any specific programming language in mind. I've used it with everything from C-style languages, to HTML, to Haskell, to Python, and Lisp and have found that most every language benefits from the symbols layer.
What about using the layout on mobile?
Modern mobile keyboards (such as Gboard) tend to use machine learning algorithms for predictive input and autocorrect, and these algorithms were trained on QWERTY users. In addition, QWERTY's design of common bigraphs spaced far apart is incidentally a helpful design when using swipe typing. For these reasons, nobody has bothered with making a moblie version.
However, an Android or iOS version of the layout could potentially be useful for tablet typing. If someone with expertise in this domain wanted to implement this and submit a PR, that would be very much appreciated.
This section lists people who have learned to type on 3l
. Users who learn
to type at least 15 WPM (that's what it takes to get past the initial learning
threshold) on 3l
can be added to this list. This list is included here so
you can query typists to see what they like and dislike about the layout before
you dedicate time to learning, or so you can reach out for learning tips.
- Jack Rosenthal (Me, who created
3l
in the Fall of 2015) - Josh Hoffer (who learned
3l
in the Spring of 2017) - Sumner Evans (who learned
3l
in the Spring of 2017) - Robert Zampino (who learned
3l
in the Spring of 2018) - Patrick Nichols (who learned
3l
in the Fall of 2018) - David Florness (who learned
3l
in the Fall of 2018) - Daichi Jameson (who learned
3l
in the Fall of 2018) - Jesus Nunez (who learned
3l
in the Fall of 2018) - Liam Warfield (who learned
3l
in the Spring of 2019)
If you learn the layout, feel free to submit a PR with your name added.
There is an email list for general chat about the layout. Please subscribe to the list. You can send mail to the list using the address:
3l-users@googlegroups.com
You do not have to be a member to post, so feel free to reach out on this list with questions about the layout, even if you're not a user yet.