www.howardism.org
Babblings of an aging geek in love with the Absurd, his family, and his own hubris.... oh, and Lisp.

Reviewing Kinesis Foot Pedal and Emacs

As a bit of a keyboard geek, I’m an avid fan of the Kinesis Advantage keyboards. I like the multi-thumb key approach to working with the multiple meta keys, and I appreciate how the keys turn inwards to meet my fingers.

My second Kinesis was the Pro model which came with a foot pedal. I hoped to use it as a Control replacement to simplify keychords, or maybe even as a Hyper key in Emacs to extend the number of shortcuts. However, this pedal is quite light, and unless my foot was resting on it, I could never quite be sure where the bugger had run off… and if you have to hunt for one of your keys, it isn’t doing you much good.

Foot Pedal Review

Recently I was asked to review the new Kinesis Foot Pedal to see how it would work in regards to a heavy Emacs user. Interesting that Emacs users is a marketing demographic, but I suppose if someone is going to learn to use Emacs, learning to use a Kinesis isn’t much of a stretch.

This new foot pedal is quite solid. Stays where I expect, and doesn’t move around either on the carpet under my standing desk, or on the wood flooring under my sitting desk. This version also connects via USB, so not only is it useful without a Kinesis keyboard, you can alter its settings through the mountable USB interface.

So, if you are in the market for a foot pedal, this one is quite nice.

Since I never really got traction with my original foot pedal, I wasn’t sure what I would use it for. The internal Kinesis application had a list of quick features:

kinesis-foot-pedal-1.png

Since the Tab is still a pinky key on the Kinesis, I have longed for easier approaches to switching apps, so my first setting was Cmd-Tab for the left button. I’ve attached a screenshot of the special settings, but keep in mind, this only switches between the last two applications, but that has proven to me to be quite useful.

kinesis-foot-pedal-2.png

The pedal has two buttons, so what should I use for the second?

Replacing Control?

As an Emacs user, Control would be an obvious improvement. Granted, moving such a central modifier key from fingers to feet, would require some serious retraining. However, the Kinesis Footpedal App fails at letting a pedal be a modifier key, but does work well replacing a full key chord (and even a key sequence).

What single key-chord should I use?

Replacing a Keychord! But which one?

The key chord that I use most is the most obvious, but what is that? Nerdery Activate! I grabbed the keyfreq project, which prints out a log of key and command usage, to see just what keys I use most. Ignoring inserting of text (51%), micro movements were second:

8.89% next-line C-n
4.84% previous-line C-p
1.90% isearch C-s
1.81% forward-word M-f
1.74% backward-word M-b

I guess I’m addicted to changing lines, which I can recognize since I use relative line numbering with the linum-relative mode… a lot1. Using a foot pedal for only one of those may not be helpful (but I could see wanting to bind directional keys to some sort of foot rocker).

Replace my search? As every Emacs user knows, C-s, is the best way to jump around. However, should I bind it to a foot pedal? Perhaps, but Control and S is hardly a difficult key-chord to type.

Jumping Around with a Pedal

Next on my list of frequent keys, was changing windows and jumping around with ace-window and my latest experiment, avy:

1.19% ace-window C-x o
1.13% forward-char C-f
1.08% delete-backward-char DEL
1.08% avy-goto-word-1 C-c j
1.08% backward-char C-b
0.97% smarter-move-beginning-of-line C-a
0.90% move-end-of-line C-e

Binding the C-x o key-chord to the other Kinesis foot pedal was easy, and works really well. Over the last couple weeks, I’ve been alternating between binding ace-window, and various avy functions2 to the foot pedal with good results (I especially like avy-goto-char-timer as it acts most like isearch).

Summary Thoughts

Overall, a fun experiment, and I think this foot pedal is quite nice. I would love to have more flexibility in programming it (for instance, if the pedal press understood the state context of my system, I would like to have it mute my microphone when Skype is the foreground application, open a new tab when running a browser, etc. Perhaps if it could send a signal to Alfred on my Mac.

Now it is time for me to publish these thoughts and box the pedal to send it back to Kinesis.

Footnotes:

1

When you turn on relative line numbers, you may see something like this:

4 | Aliquam posuere.  Curabitur lacinia pulvinar nibh.
3 | Vivamus id enim.  >Nunc< rutrum turpis sed pede.
2 | Donec posuere augue in quam.  Nulla acilisis,
1 | risus a rhoncus fermentum, tellus tellus lacinia
0 | purus, amet elit. ▮ ← The point
1 | onec hendrerit tempor tellus.  Fusce sagittis,
2 | libero non molestie ollis, magna orci ultrices
3 | dolor, at >vulputate< neque nulla lacinia ros.

The point is embedded in the middle of that text blob, but instead of displaying the absolute line number, the point is always on line 0, and lines above and below count from that point.

To jump to the the made up word, Nunc, simply hit C-3 C-p to move the point up three lines. Similarly to jump lower to vulputate, type C-3 C-n … you know how much to prefix due to the numbers at the beginning.

I find this very good for jumping without needing to count.

2

What do you mean you haven’t played with Avy? Click the link and view the screenshots, and then pop back.

Why would I want to use this?

You can jump to any word or character on your screen in 3 keys. By screen, I mean screen, as you can jump to another buffer window as easily as jumping within the same. Note: Doesn’t attempt to replace isearch, tags or other ways for moving to buffer positions that are off-screen.

Why so many functions?

All Avy functions pretty much do the same thing. Pick one -word- and one -char- version, and bind them to something quick (like that extra Command key on your Mac keyboard).

But the visual colors are overwhelming and confusing!?

Yes, but in practice, you focus on your destination label and ignore the others. What I mean is when you want to jump to a particular word, your eye is already there. You just hit a series of keys you see overlaid on your destination.

Does that help?