この頃からコンソール(コマンドプロンプト)を頻繁に使うようになった私だが、小指をあまり動かせないため、日本語キーボードでは [Enter] を打つたびに右手をホームポジションから離さねばならなかった。*4 ホームポジションをずらすことは少し前からちらちらと考えていたが、互換性との狭間で悩んでいた。しかし このページ や このページ を読んで勇気づけられ、実行に踏み切った。
記号配置は見ての通り。 [ [ ], [ ] ] がこの位置なのは、左手の中指と人差し指で続けて打てるからである。
やはりファンクションキーは全部そろっていないと困る。直感重視型の編集キーは手の移動量を気にしなければ悪くないのだが、よく使う [End] がそれほど使わない [PageDown] よりも遠いことが気になってきた。そこで編集キーをデフォルトに戻し、 [Undo] を [Insert] の位置に移して、 [F12] を解放した。
IBM SpaceSaverII キーボード(日本語 92 キー)を導入。
新しくテンキーのないキーボードを導入した。そのため、これまで [Copy], [Paste] の場所を確保するために記号2つをテンキーへ追い出していたのを、どうしても文字キー領域に戻さねばならない。さあ、どうするか?
いろいろ考えあぐねた末、文字キーと機能キーの区別にこだわらないことを思いついた。文字入力に Shift を併用するのは問題ないんだから、 Shift を押したときだけ機能キーが文字キーに化けてもいいじゃないか! …というわけで、英語キーボードでしばしば左遷される 「 ` 」, 「 ~ 」 をそれぞれ Shift+[Copy] と Shift+[Paste] に割り当ててみた。これが意外にもすんなりと、まったく違和感なく使えることがわかった。なんてスマートなキー割り当てだ! It's perfect!!
アンシフト時とシフト時の組合せを英語キーボード完全準拠に。そして [ ' ] より使用頻度の高い [ - ] をホームポジションに隣接した位置へ。
92キー(109キー相当)になって [Win] が増えたので、前から欲しかった 左[Delete] を実装した。左手だけでマウスとキーボードを操作しているときに便利である。この位置ならホームポジションからも打てないことはない。ほんとうは左側に [Enter] も欲しいのだが…。
同様に [Redo] も実装した。 [Undo] と [Redo] は隣同士とするのが自然だろう。
[Insert] の位置が空いたので 右[Esc] を復活した。こうなると編集キーを直感重視型に戻してもいいのだが、右手の移動量を抑える観点からデフォルトのままとした。そもそも SpaceSaverII は編集キーが1段手前にずれてるから [Delete] はホームポジションと同じ段にあり、これが非常に使いやすかった。
右小指の爪が伸びてきたので。
[ P ] と [Enter] は薬指で押すことにすれば、右小指を動かさなくても使えるキーボードができる。
右へ2列ずらすと 右[Alt] の位置が親指の守備範囲に入り、ホームポジションから打てるようになる。そこで親指シフトの発想を取り入れ、修飾キーを親指に配置してみた。
[Copy] と [Paste] を隣同士にするための玉突き転配。 右[Shift] はひらがなキーの位置にあるが、編集時には遠すぎて使えないのでこの辺りにもうひとつ必要。ちなみに 右[Ctrl] はどうにか兼用可能。
右手親指領域のキー数が足りなくなってきたので、どこにあってもいい [Alt] を追い出した。この位置なら片手で「Alt+すべての文字キー」をカバーできる。
右[Tab] をホームポジションから打てる位置に。ほかは試験的な配置。 右[Shift] は1個でも大丈夫か?
セミコロンよりハイフンの方が使用頻度が高い。 [ H ] の左は思ったより遠くて打ちにくい。
左側にも [Enter] が欲しい。 [Win] はなくても困らないので。
[Alt] は真ん中の1個ですべての文字キーをカバーできる。ランチャーとしての使用にはこれで十分。
[Copy] と [Paste] を隣同士にすることにこだわるのをやめて、 [Copy] を親指にしてみた。ちょっと使ってみたところ、これが実にイイ! すごくしっくりくるというか、頭の中でワンクッション置かずに指が動く。なんでだろ?
[ Y ] の左はホームポジションから近いように見えて、実は [ 0 ] の右よりはるかに遠かった。こんなところに 「 = 」 や 「 + 」 があったらプログラミングなんてやってられない。それとプログラム中では 「 ~ 」 よりも 「 \ 」 の方が使用頻度が高い。
ほんとは右端にも [Shift] と [Alt] が欲しいのに、 [Tab], [Ctrl], [Undo], [Copy] と、それぞれ一番しっくりくる位置に順次割り当てていったら、いつのまにか満席になっちゃった。 「右[Win] や [App] は邪魔なだけ」なんて言ってる人は、足りなくて困ってる人もいるということを知ってほしいですね。
[Alt] を真ん中の1個だけにしたので 元 左[Win] の位置が空いた。それから CapsLock を Shift+[IME] に割り当てたので、実は 元 左[Ctrl] の位置も空いている。とりあえず [Enter] を置くとして、ほかにも右側から移せるキーがあれば移したいところだが…。左手はマウスを使うのと、スペースキーが長いせいで親指の守備範囲にキーが2つしかないこと、そして 左[Backspace] の位置はもはや動かせないことから、親指担当のキーを左側に移すのは難しい。そのほかのキーで移せそうな気がするのは:
元 [Delete] の位置にも [Shift] を置いたらどうだろう? ここなら人さし指で [Shift] + 中指で [Home], [End] 、中指で [Shift] + 親指で [Undo], [Copy] 、ちょっと無理すればカーソルキー、テンキーあたりまで同時に押せそう。
素直に 元 右[Ctrl] の位置を [Shift] にしたら?とは自分でも思うが。 [Copy] を親指で押すのがしっくりくる理由、その本質を見極めるまではこのままでいこうかと。
Delete は入力済みの文章を編集するときに使われる。 Backspace のように文字入力の最中に使われるものではないから、ホームポジションと同時に打てるよう親指に配置する必要はなく、ホームポジションの左右に配置し小指で打つのがよい。編集時はマウスを併用するため指がホームポジションを離れていることも多い。以上の要件から [Delete] は右手側にあり、かつホームポジションからもカーソルキー周辺からも打ちやすい位置にあることが求められる。デフォルトの位置は小指で打つには遠すぎるし、最下段だとホームポジションから打つとき手首が無理な角度になる。したがって [Delete] は元 [Enter] または元 右[Shift] の位置が最適。使用頻度を考えると [Enter] をリプレースするには至らないから、元 右[Shift] の位置が [Delete] となる。
右手2列シフトはプログラミングには向かないことが明らかになったので右手1列シフトに戻した。このころ同時に変えたローマ字配列で右小指の外側に「っ」を割り当てたかったからでもある。
ふと思いついた……かな漢字変換とフォーカス移動って排他的じゃん? 変換中にフォーカス移動することはないだろう。だったら同じキーに割り当てても困らないはず。そこで [変換] → [Tab] とし、 IME 側の設定で [Tab] を 変換/次候補 に割り当てて、変換中以外は同じキーでフォーカス移動できるようにしてみた。
フォーカス移動やウィンドウ切り替えで正順は [Tab] 、逆順は Shift+[Tab] である。正順も逆順も同じくらい頻繁に使うのに、逆順のときだけ押すキーが増えるのは使いにくい(Ctrl+Shift+[Tab] とか)。そこで Shift+[Tab] を単独のキーに割り当て、 [Tab] と隣り合わせに配置してみた。