Happy Hacking Keyboard Professional Review

by Steve R. Hastings

Product Information. 

The Good. 

  • Excellent keyboard feel and large keys provide smooth typing.

  • Super compact.

  • DIP switches provide multiple configuration options.

The Bad. 

  • Lack of dedicated keys means common operations need Fn-<key> combinations.

The Happy Hacking Keyboard Professional (HHKB Pro) is a compact USB keyboard with an excellent feel, some intriguing features and a hefty price tag. It's made by PFU, part of the Fujitsu Corporation.

The most important thing about any keyboard is this: how well does it work for typing? Although the HHKB Pro has fewer keys than a normal keyboard has, the keys it does have are full size and are mostly where your fingers expect to find them. The keys have an excellent feel too, clicking gently when you type but not clacking loudly. I find that I can touch-type at full speed with this keyboard. In fact, I wish my full-size keyboard had keys this nice.

Earlier keyboards in the Happy Hacking keyboard line have membrane keys with rubber caps. The HHKB Pro, however, has a circular cone spring system. According to the Happy Hacking Web site, this system provides softer keystrokes and a longer keyboard life.

As with many laptop keyboards, the HHKB Pro has a Fn key (for Function) that can combine with other keys to make a keystroke that is not otherwise available. The HHKB Pro, with only 60 keys, doesn't have dedicated function keys; but you can get an F1 keystroke with Fn-1, F12 with Fn-= and so on. This keyboard doesn't even have dedicated arrow keys; up, down, left and right are, respectively, Fn-[, Fn-/, Fn-; and Fn-'.

The HHKB Pro has the Esc and Ctrl keys in the traditional places. The most common keyboard layout today is the 104-key layout, based on the 101-key layout that IBM introduced in 1986. 104-key keyboards have a Caps Lock key to the left of the ASDF home row of keys and have two Ctrl keys, on opposite sides of the keyboard. The HHKB Pro has a single Ctrl key instead of a Caps Lock key; Fn-Tab serves as the Caps Lock key. A 104-key layout keyboard has the Esc key widely separated from the rest of the keyboard, at the extreme upper left. The HHKB Pro places the Esc key immediately above the Tab key and to the left of the 1 key.

The HHKB Pro also has a set of DIP switches that can be used to customize the way the keyboard works. These are located behind a small cover on the back side of the keyboard.

The SW1 and SW2 DIP switches select among three modes: default or HHK mode, HHK Lite mode and Macintosh mode. The only difference between the default mode and HHK Lite mode is some additional key combinations become available in HHK Lite mode. For example, you cannot use the Fn-Tab combination for Caps Lock in default mode; HHK Lite mode enables it. I can see no reason why anyone would prefer the default mode to the HHK Lite mode, and I recommend you use HHK Lite mode if you use an HHKB Pro keyboard.

Immediately above the Return key is a key labeled Delete. The SW3 DIP switch, when on, changes this to make it work as a Backspace key. Whether or not SW3 is on, Fn-Delete always works as a Backspace key, and Fn-` always works as a Delete key.

Two Alt keys are present, to the left and right of the spacebar. There also are two keys labeled with diamonds; these can be used as the logo keys from a 104-key keyboard. The SW5 DIP switches can be used to swap the functions of Alt and diamond keys. If you frequently use Alt keys—for example, if you use Emacs and Alt is your meta key—you probably will prefer this. The diamond keys are bigger and easier to press.

The SW4 DIP switch controls whether the left diamond key works as a logo key or as a second Fn key. If SW5 is enabled, making the left Alt key work as a logo key, the left Alt key becomes be the second Fn key.

The last DIP switch, SW6, controls whether the keyboard goes to sleep when the computer does. Fn-Esc makes a keystroke called Power that can be used to control a PC's sleep mode. I didn't test this feature, though.

The HHKB Pro also has a few multimedia key combinations: volume down, volume up, mute and eject are, respectively, Fn-A, Fn-S, Fn-D and Fn-F. However, these are supported only when the HHKB Pro is in Macintosh mode. In the other two modes, holding down the Fn key does not change the keystrokes these keys make. If you want the multimedia keys to work, you could try setting the keyboard to Macintosh mode, and in your desktop environment's keyboard preferences set your keyboard type to Macintosh. I tried this and it worked for me. The HHKB Pro even generated the same multimedia keystrokes as my other keyboard, so both keyboards could be used to adjust the volume of my speakers.

Daily Use

When you first use the HHKB Pro, the first thing you notice is the lack of dedicated arrow keys. Anytime you need an arrow key, you have to press a Fn-<key> combination. What's worse is the arrow keys are not immediately obvious; you need to take your hand off the keyboard, look at it, press the combination and then put your hand back for more typing. If you use the HHKB Pro long enough, though, you probably can learn to press the Fn combinations for the arrow keys without looking. But this simply is not as convenient as having dedicated arrow keys.

However, Linux builds on a long UNIX tradition, and UNIX was developed on many different terminals that had many different keyboards. As a result, both Emacs and vi are designed to be usable with only standard ASCII keys. In my college days, I used to write Pascal programs on ADM3A terminals that didn't even have a dedicated Backspace key; you had to press Ctrl-H when you wanted a backspace. If you can learn to use Emacs or vi keystrokes, you can get by fine without using arrow keys, and there are many programs in Linux that use these keystrokes.

I configured my bash shell to use vi keystrokes for command-line editing and quickly became comfortable with it. See the sidebar for notes on using vi or Emacs mode in the shell.

Actually, I'm kicking myself now that I didn't set my shell for vi mode long ago. Because I'm expert with vi, I can edit command lines much better in vi mode, without taking my hands from the home row keys. If you have spent time mastering either vi or Emacs, try them in the shell!

If you have a small laptop or a tablet PC, the HHKB Pro makes an excellent carry-along keyboard. If you pack the HHKB Pro into a bag, I recommend you fully unplug the USB cable. The HHKB Pro's cable is a standard USB cable with an A connector on one end and a mini-B connector on the other.

Price

Unfortunately, the HHKB Pro is rather expensive. The Web site lists the regular price as $269. I searched the Web and was able to find the HHKB Pro for as little as $249, which is still much more than I am willing to pay for a keyboard.

The Happy Hacking Keyboard Lite 2 model, in USB or in PS/2, is available for a regular price of $69.

Conclusion

If it were not for the price, I wholeheartedly would recommend the HHKB Pro. It's everything you could ask for in such a compact keyboard. Of course I'm using it to type this article, and I'm enjoying the smooth feel of the keys. It is nicer than my usual keyboard, but alas it costs more than six times as much.

vi or Emacs Mode in the Shell

By default, the bash shell already should be in Emacs mode. You can use Ctrl-P and Ctrl-N instead of the up and down arrow keys to scroll through the command history. You can use other Emacs keystrokes to edit command lines.

To make bash use vi keys, edit a file called .inputrc in your home directory and insert these lines:

set editing-mode vi
set keymap vi-insert

Then, start up a fresh bash shell and try it out. If you press the Esc key, you enable editing mode, where hjkl keys work as left, down, up and right arrow keys. Other vi commands, including ^ for jump to start of line and $ for jump to end of line, also work.

If your system defaults to vi and you want Emacs mode, insert these lines in your .inputrc file:

set editing-mode emacs
set keymap emacs

These features come courtesy of the GNU Readline Library. For more information on Readline and its features, run man 3 readline or check the Readline Web site (cnswww.cns.cwru.edu/php/chet/readline/rltop.html).

Not only bash but any program that uses the GNU Readline Library can be customized by making changes to your .inputrc file. For example, the GDB debugger uses Readline.

If you use the tcsh shell, again Emacs mode is available by default. You can set vi editing mode by placing this line in your .tcshrc file:

bindkey -v

Read the tcsh man page for more information.

If you use the zsh shell, all you have to do is set the EDITOR or VISUAL environment variable to your favorite editor. If your choice contains the string “vi”, zsh sets vi mode; otherwise it defaults to Emacs mode. You also directly can manage the editing mode with zsh's bindkey command. See the zsh man page for more information.

Even the Midnight Commander (mc) file manager supports Emacs-style command-line editing as well as Emacs-like and vi-like key bindings in its file viewer.

Steve R. Hastings first used UNIX on actual paper teletypes. He enjoys bicycling with his wife, listening to music, petting his cat and making his Linux computers do new things.

Load Disqus comments