A keyboard layout with QWERTY letters and a symbols layer
Fix typo in Linux xmodmap
c76e1e8f — Jordan Newport 1 year, 4 months ago
Fix README error
41abb3aa — Jordan Newport 1 year, 4 months ago
Move README to markdown


browse  log 



You can also use your local clone with git send-email.

#3l-symbols - A symbols layer for QWERTY

#What is 3l-symbols?

3l-symbols could be considered an alternative keyboard layout. It uses the QWERTY letter keys, but improves coding ergonomics by including the symbol and cursor layers from Jack Rosenthal's 3l layout. Note that use of the symbols layer is required, because certain symbol keys are replaced by the modifier keys that give access to the symbol and cursor layers, so the only way to type those symbols is with the symbols layer.

3l-symbols is currently implemented only for Linux and Windows. I can't really see wanting to make a Mac version myself, but maybe someone else will. It's apparently common to use a tool called "Karabiner Elements" to do this; 3l has an implementation.

Layout image

The Sym layer includes the symbols on the upper right of the keys, while the Cur layer includes the symbols on the bottom of Q-T and A-G.

No other keys are changed; without the modifiers held down the layout is normal QWERTY (except that the characters normally typed by the modifier keys will not work). This includes the comma, period, and semicolon keys--they are not moved by this layout. This also includes the whole left column of keys--Tab, Caps, etc. I personally run an xmodmap on top of this layout that remaps those keys, but you can do what you like, including nothing at all.


Switching to a new keyboard layout is hard. It is difficult enough to switch for typing regular letters, but in my experience, it is far more difficult to switch to an alternative layout if you are highly familiar with a set of keybindings, such as those provided by a text editor such as Vim (my personal experience). However, the symbols and cursors layers provided by such keyboard layouts as 3l or Neo (from which 3l itself derives much of its versions of these layers) are still highly useful, and are far less difficult to switch to due to the lower frequency of these characters and the lack of keybindings involving them.

This layout is intended to make typing code or other symbol-intensive things more ergonomic and easier by providing symbols in an easier-to-reach place by providing a symbols layer. It should not make a big difference to speed in either direction if what is being typed is not symbol-intensive. It also provides a cursor layer, which includes arrow, navigation, and delete keys on or near home row.

#Testing the layout without installation

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 type setxkbmap us, 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 the system tray) or you press both Alt keys at the same time.



Place the linux/xkb/symbols/3ls file in your system's symbols directory (typically something like /usr/share/X11/xkb/symbols), then either:

  1. Run setxkbmap 3ls to set the layout temporarily.

  2. Or, to set 3l-symbols 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" "3ls"

    systemd has the localectl utility that you may optionally use to maintain this configuration file.

To create a console mapping from the xkb symbols file, you can use the ckbcomp utility.


Place the AHK script in your "Startup" folder.