Clementson's Blog

Bits and pieces (mostly Lisp-related) that I collect from the ether.

June 2006
Sun Mon Tue Wed Thu Fri Sat
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30
May  Jul

Surviving Emacs - Part 5

Friday, June 9, 2006

In my last Surviving Emacs post, I described my new ergonomic development setup with Kinesis contoured keyboard, foot pedals, etc. I have received a lot of email and comments from people regarding my setup asking either for specifics or commenting on their own choices. In a later post, I plan to post some additional information about how I maximize keyboard usage on Mac OS X (that post won't be related to the Kinesis keyboard setup); however, in this post, I will just focus on the Kinesis-specific customizations that I've done. So, if you you don't use a Kinesis keyboard or you aren't interested in Kinesis customizations, now is a good time to look for something else on Planet Lisp to read! ;-)

First of all, I am using a Kinesis keyboard attached to a 17" Mac Powerbook G4 that is on a laptop stand (have a look at the setup here). I also use foot pedals; however, not on a regular basis. Because the Kinesis keyboard allows me to use my thumbs (the strongest fingers) for most of the more common control and modifier keys, I find that most of my RSI-related problems were solved just by switching to the keyboard. I tend to use the foot pedals when I've got a lot of repetitive edit operations that I can't easily solve with a keyboard macro but I use just the keyboard most of the time. The Kinesis keyboard can come configured for a machine running OS X, Windows, or Linux; however, all of the layouts are fairly similar. The picture below shows the standard layout if you choose the Mac OS X keyboard layout:

Kinesis Mac Keyboard
				       Layout

I have modified this layout a bit to adapt better to my work style. I haven't made these changes lightly and I only made them after using the standard Kinesis layout for some time. I figured that the Kinesis engineers had thought long and hard about the keyboard layout and I wanted to benefit from their research before I started experimenting with my own customizations. This was a good idea as I adopted many of their layout choices after getting used to using the keyboard. For example, I initially disliked the positioning of the arrow keys but got used to them after a while and I now prefer the default Kinesis layout for the arrow keys. However, after using the keyboard for a few months and slowly altering key positions, I have come up with the following layout (optimized for Emacs usage on a Mac):

My Kinesis Keyboard
				       Layout

The changes from the Mac OS X standard layout are:

  1. First of all, I banished the Caps Lock key to the upper left position on the keyboard and moved the +/= and Tab keys down. This positions the Tab key directly to the left of my pinky finger and makes it much easier to press. Since I use Tab much more than the +/= key and I almost never use the Caps Lock key, that arrangement made a lot of sense.
  2. I also put a Cirque Smart Cat trackpad in the center area of the keyboard. This makes it easy to do a mouse operation without actually moving my hands off the keyboard (again, in a later post, I will describe different things I do to minimize mouse usage and maximize keyboard usage on Mac OS X).
  3. Next, I got rid of the INS key altogether (I never use it) and moved the Home key off of the center set of keys. Since Home is also a key I rarely use, moving it freed up a position on the core central "thumb" block of keys in the middle of the keyboard. Also, it made it symmetrical with the End key (symmetry is good for key combinations!)
  4. The most important modifications that I made involved the re-positioning of the Apple Cmd, the Ctrl and the Option/Alt keys. I use Option/Alt for Meta in Emacs, preferring it over using Cmd for Meta (Note: If you use Option to enter characters that are not on the keyboard, then this will not be a good choice; however, I rarely need to type non-English characters these days, so it works well for me). The reason for this is that I prefer to leave the standard Apple Cmd key bindings mostly alone. That way, I can use all of the Emacs Meta bindings without losing the Mac ones and I can supplement the Emacs Ctrl and Meta bindings with additional single bindings using the Cmd key (rather than creating multiple chords on the Ctrl and Meta keys). This gives me some of the same benefits that having a dedicated Super/Hyper key on the old LispM keyboards provided. You'll notice that the Ctrl keys are positioned on the outer columns of the middle block as they tend to be the modifier keys that I use the most. I only have one Apple Cmd key and that is conveniently located in the center-right of the left middle block. I have two Option/Alt keys as I bind Meta to Option/Alt in Emacs and I want one Meta key for each hand. However, you'll notice that the keys aren't symmetrical - they initially were symmetrical (both were next to the Ctrl keys); however, I found that it was more of a strain for me to reach the Option/Alt key when it was in the place where the End key is now located, so I moved it to the current location. For some odd reason, I don't find it difficult to press the right Option/Alt key.
Well, there you have it - my current, optimized Kinesis keyboard layout. With this layout, I can work very quickly/efficiently and I almost never have any hand/arm pain. The downside of this layout though is that I now find it a bit difficult to adapt to a "normal" keyboard layout on those occasions when I have to use one. If you watched the video of my Surviving Emacs lispvan presentation, you probably noticed my typing errors and the times when I struggled a bit during the presentation. I can attribute this to the fact that I've grown so accustomed to using the Kinesis keyboard with my customized layout! Luckily, just about the only time I need to use something other than my Kinesis keyboard these days is when I go to a lispvan meeting.

emacs Copyright © 2006 by Bill Clementson