Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


The standard german keyboard layout sucks for programming. For example [ is AltGr+8, which requires contorting your hand in unspeakable ways. There is also this beautiful layout called Neo, which has, among other things, a whole layer with every special character a programmer's heart desires—arranged in an easy to reach fashion. However, Neo rearranges all the other keys too. Which is good for ergonomics, but has the downside of messed up shortcuts in various applications and needing to learn a whole new layout.

Neolight tries to make the best of both worlds by adding a third (and forth) layer, while keeping the standard qwertz layout intact as far as possible.

  • The third layer is activated by Capslock and # and contains special characters needed for programming.
  • The fourth layer is activated by < and Menu and contains navigation keys.

All other keys stay the same. In fact, Neolight is not necessarily tied to the german layout and you can use it in combination with any other layout, provided your physical keyboard has the right set of keys.

The Layout

Layer 3

Layer 4

Variant with additional escape keys

There is also a variant that has additional escape keys, which are convenient in Vim. They are located at:

  • Mod3+q
  • + on the standard german layout (the key above the right Mod3 in the image above)
  • Mod3++

Installation and Usage


On Arch Linux Neolight is available as an AUR package here.

On other Linux distributions you can install it by running ./linux/ as superuser (and ./linux/ --uninstall for removing it again). Depending on your desktop environment you might need to log out and in again (or restart) for it to be fully available.

This will add the following XKB layout and options:

  • XKB layout (only german)

    The standalone layout is called neolight, which also has a variant called de_escape_keys. They can be (temporarily) activated via:

    setxkbmap -layout neolight -variant de
    setxkbmap -layout neolight -variant de_escape_keys

    To check the current XKB config:

    setxkbmap -query
  • XKB options (compatible with other layouts)

    The XKB options can be combined with any keyboard layout and add the third and forth layer to them. They are called neolight and neolight:escape_keys and can be (temporarily) activated via:

    setxkbmap -option neolight
    setxkbmap -option neolight:escape_keys

Activating the layout or an option more permanently depends on your system:


Neolight should show up in the german layout variants as "German (Neolight)".

If the new layers do not work properly and you have multiple layouts, make sure to set Neolight as the first one. Some other ways to fix that particular problem are mentioned in the Neo FAQ.

To set one of the options, add them to the dconf key at /org/gnome/desktop/input-sources/xkb-options as ['neolight', ... other options] or ['neolight:escape_keys', ... other options]. The dconf-editor utility helps with that.

Note: These options only work for the first layout, should you have multiple. There are ways around this, but I have not added them yet.


Neolight should show up in the IBus Preferences (ibus-setup) as "German (Neolight)".

I haven't found a way to set individual XKB options there. A workaround would be setting "Use system keyboard layout" and configuring the XKB layout/options in a different way.


If Neolight is missing from your layout selector, let me know and I'll try to add support for it.


The Windows version uses Autohotkey. You can either install Autohotkey and run neolight.ahk, or run the compiled neolight.exe directly. Both can be found on the release page. Then just add it to autostart.

Similar to the linux XKB option version above, this just adds the layers on top of any existing layout, no matter which.

How to Learn

If you want some typing practice, have a look at, which lets you type open source code instead of just regular text.


Neo has a variant called NeoQwertz that tries to do something similar: it has all the features of Neo, but keeps the alphabetic keys from qwertz. This does mean that e.g. Shift+2 does not produce " and no regular AltGr layer. But if that is fine for you, you might want to just go ahead and use NeoQwertz (which comes preinstalled with X11 on most linux distributions!).