NSIEP, the different keyboard layout, and the crazy that is Stephan
A few years ago I sat down and thought something like: “I spend all this time customizing my desktop. I customize my editor. I customize so many aspects of my computer to get it the way I want, but the one thing I interact with ALL the time I don’t touch. Why is this? This querty keyboard really sucks. I mean, really. Why don’t I look into customizing this ONE thing that really matters?”
So during the summer of 2010 (I believe) I sat down and researched custom keyboards. I looked into colemark, I looked into Dvorak, Colman and so on. But then I found a great resource, I am not able to find this again, I am sorry, but it was a webpage which allowed you to enter a text corpus, and then it would count all the characters of your text and then generate a report of which characters you used the most often. This also included a keyboard heatmap! Great! What I then did was that I copied a WHOLE lot, actually, all the code I had ever written into this thing. This gave me an output telling me exactly which keys I used the most. Awesome! Let the customization begin.
I read up on what makes an efficient keyboard layout. It is all about the “travel distance” of the fingers or in other words, how far do you need to move your fingers over the keyboard to write a given text. It is measured from the “asdf jkl;” buttons as this is where your fingers normally rest. There is also the factor of which fingers most people are more comfortable using, namely the index- and middle-fingers. Thus the buttons that are used the most should be on those fingers.
#The NSIEP layout
So in my nsiep keyboard layout I have taken into account the travel distance, but I have also made sure that the most common hotkeys (ctrl+c
, ctrl+v
, ctrl+s
, ctrl+z
) all are executable with one hand, as well as being in roughly the same place as you normally find them. Special care is taken to the S and C, which is save and copy. Those are in the same place, and is also coincidentally positioned in the right position comparatively to their frequency of use based on my analysis. Great! I decided to move the V a bit away from C because I hate to miss-press those, as it always causes problems, but I still wanted them to be roughly where they were before. Thus the V is now at the qwerty-B
position. No more copy-paste mayhem, but still fairly similar hand movement.
Because much of the code I did at that time included semi-colons ;
, that of course became it’s own button (which it is not on the normal Norwegian qwerty layout). Both semi-colon ;
and colon :
appeared to be used roughly the same amount, and it makes much sense to have them on the same button. They are now at the qwerty-Q
and qwerty-shift-Q
position respectively.
There are a lot of minor tweaks to this keyboard layout, namely that I have moved the brackets and parenthesis closer to the left hand side for easier use (at least for me). We got (
and )
on qwerty-shift-2
and qwerty-shift-3
respectively, followed by {
and }
on qwerty-shift-4
and qwerty-shift-5
. The square brackets [
and ]
I moved over to the right hand side to qwerty-shift-9
and qwerty-shift-0
. Now all my namespaces and method calls are easier to write (and this side note).
This is all nice and dandy. But I have a few bug-fixes in my keyboard layout. Yes, that is right. What is a bugfix to the keyboard layout you say? For instance, this one; caps-lock now also apply to the number buttons. If you write a lot of numbers while caps is on, then you might not like this, but if you are doing a lot of brackets and stuff then this might be nice. It is something that have bothered me the few times I actually use that caps-lock. I have talked to people who actually use the caps as a keyboard flipper, meaning they can write everything with their left hand when caps is on. This is a very novel thing and I might actually go with this some time in the future.
I have also added all the Greek letters to my keyboard layout. This is something that I have found later to cause problems is a small amount of cases where the shortcuts for doing these letters mess with keyboard shortcuts in some strange programs, but it happens very rarely. To type π
(pi) for instance, I simply do a qwerty-alt-P
. For Π
, capital pi, I do qwerty-alt-shift-P
. This is very neat when taking notes on math, writing in wolfram alpha or you simply want to make your program unsafe in any environment without proper UTF-8 handling. Fun little anti-hack-tool as well as so few manage to deal with this very well ;)
There is more to discuss about this keyboard layout, but I think I will leave it at this. It has significantly increased my independence of looking at the keyboard while typing. I usually didn’t need to do this before, but I happened to do so at occasions. Now that will not work, so I have become much better adept at using my keyboard. I have implemented this keyboard on Windows and on Mac. I have yet to do this is Linux as I usually only interact with Linux over ssh from my mac. If anyone want to make this juicy layout available for Linux I would love to see you do it and please, send it to me!
If you got to the end, wow, I like you! Give this layout a shot. It is strange, but hey, what isn’t? If you want to learn this, or any other keyboard layout, I suggest that you have a picture of the keyboard layout on screen, and you look at that and make sure to use the correct fingers for each button. If you want to learn a new layout, then don’t do the same mistakes you did when learning qwerty. Use all your fingers, yes even your pinkys, and you will soon master a new keyboard layout, and you will feel like a super-ninja-sith-jedi-lord-death-eater-auror! Yeah! NSIEP
You can download the layout from the github repo.
Stephan