にわかVimmerはエルゴノミクスの夢を見るか?: キー入力環境最適化への道 ver. 0.2

私のキーマップ変更with KeyCtrl and XKeymacs - 学習する機械、学習しない人間に引き続き、キー入力環境をどのようにすれば、快適なテキスト入力が行えるか、という話。

自分にとって最も快適な配置を目指して、今日も試行錯誤は続く。前回から(というか日々)設定は大幅に変わっております。

自分の試行錯誤の結果を書いています。自分と似たような環境にある人には、参考になるかもしれません。

本稿の用語

キーマップ(キーレイアウト)
キーボードの物理的な各キーと、それらに実際に割り当てられているキーの組
コマンド割り当て
"検索"、"削除"、"ファイルを開く"、"コピー"などのコマンドに割り当てられているキーボードショートカット

目標設定

目標
自分にとって快適なテキスト入力を行えるキー入力環境(キーマップとコマンド割り当て、IMEキー設定の三つ)を構築すること。具体的には、可能ならば Vi キーバインド。無理なら Emacs キーバインド
利用するS/W, H/Wの条件
OSはWindowsXPIMEMS-IME(またはGoogle日本語入力)。メインのテキスト入力はgVimで。他はFirefoxTweenThunderbirdなどで、比較的長いテキストの入力を行う。


上記の最終目標を達成するために、以下の小目標群を挙げる。

(1) トリッキーな*1キーバインドや、特殊なツール*2を使うことはしない
慣れるのが難しく、ミスが頻発することや、デフォルトの環境を使わざるを得ない場合に困るから。
(2) なるべくホームポジションから手を動かさないような配置をめざす
快適なキーボード操作のためには当然必要。
(3) キーの上書きは、自分があまり使わないキー*3のみに行い、よく使うキー*4は上書きせずそのまま残す
元々のキー配置を体が覚えているので、それらを残しておくことがミス対策として重要。
(4) 既に存在して、よく使うコマンド*5を上書きすることはなるべく避ける
競合が起こると面倒なので、なるべくあまり使わないコマンドに新しい操作を割り当てるようにする。


それでは以下、これらの目標を満たすために、どのようなことを行ったのかを書く。

目標を満たすための環境設定

利用ツール

利用するツールはXKeymacs。フリーで手に入る、使いやすい、これ一つでキーマップ変更とコマンド割り当て変更の両方が行える、などが理由。

利用するキーボード

標準的な日本語キーボードを想定する。
理由は二つ。(1)手に入りやすいし、どこでもこれが使われている。(2)スペースキーの左右に無駄なキーがたくさんあって、これらに自分の好きなようにキー割り当てできる。

環境設定の基本方針

上記の小目標群を満たすようにと考えたキー入力環境設定の基本方針は、以下にようになる。

VimではVimの操作体系を利用し、それ以外のアプリケーションではEmacsライクな操作体系を利用する。

新しいキーレイアウト

Xkeymacsで以下のように設定する。

  • Capsキー --> Ctrlキー*6
  • 無変換キー --> Escキー
  • 変換キー --> セミコロンキー
  • セミコロンキー --> Enterキー

新しいコマンド割り当て

Xkeymacsで以下のように設定する。

  • 標準
    • IME切り替え --> C-o*7
  • テキスト入力を比較的多く行うアプリケーション(Firefox, Thunderbirdなど)
    • IME切り替え --> C-o
    • BackSpace --> C-h
    • Delete --> C-d
    • 行頭、行末、前の行、次の行、前の文字、次の文字 --> C-a, C-e, C-p, C-n, C-b, C-f
    • 全て選択 --> C-r
    • 検索 --> C-g
MS-IMEキー設定

「プロパティ --> 全般 --> 設定 --> キー設定」から、以下のようにユーザ定義を行う。

  • 文節を短くする --> C-s (Short)
    • 元々 Shift - ← に割り当てられていた機能を、C-sにも割り当てればよい(以下同じ)
  • 文節を1長くする --> C-l (Long)
    • デフォルト
  • ひらがな変換 --> C-g (hiraGana)*8
    • F6の機能をC-gにも割り当てる
  • カタカナ変換 --> C-k (kataKana)
    • F7の機能をC-kにも割り当てる
  • 前の文節へ移動 --> C-b (Back)
    • C-sの機能をC-bにも割り当てる
  • 次の文節へ移動 --> C-f (Forward)
    • C-dの機能をC-fにも割り当てる
Google日本語入力キー設定*9

「プロパティ --> 一般 --> キー設定 --> キー設定の選択 --> 編集」から、ユーザ定義を行う。基本的には、MS-IMEと同様のキー設定にする。

以下にキー設定のファイルを用意した。キー設定ウィンドウからインポートして利用できる。

バージョン 0.1
上記 MS-IME の設定とほぼ同じキー設定。
バージョン 0.2
バージョン 0.1 の設定に加え、C-p で Google 日本語予測変換、C-t で半角アルファベット変換、C-u でキャンセル、C-a でカーソル先頭移動、C-e でカーソル末尾移動。
バージョン 0.3
バージョン 0.2 の設定に加え、変換中のバックスペースによる削除を追加。

新しい環境設定は快適か

以上の設定によって、キー入力環境は快適になったか。各小目標にも触れつつ、見ていこう。

カーソル移動

Vimでのカーソル移動は快適そのものである。

Firefoxなどでのテキスト入力では、Emacsライクな移動手段を使える。これもなかなか快適である。

なお、検索(C-f)と全て選択(C-a)が上書きされてしまったので、別のコマンドを割り当てておく。これは快適性が少し下がるが、我慢する。

削除

どのアプリケーションでもC-h, C-dで削除を行える。

手が勝手にBSキーやDelキーを押してしまうことを想定して、これらのキーはそのまま残している。

決定・日本語変換

セミコロンキーでEnter、C-oでIME切り替え、この2つによって、決定・日本語変換を手を動かさずに行える。

セミコロンキーがつぶれたので、代わりに変換キーにセミコロンキーを割り当てる。セミコロンの位置が変わってしまうが、我慢する。

Enterキーと半角/全角キーも、勝手に動いてしまう手のために残しておく。

また、IMEの機能に、その機能の頭文字を表すキーバインドを割り当てることで、直感的かつ手の動きの少ない日本語入力を可能にしている。

ところで、Enterのコマンドについては、どういう割り当てにするか一番悩んだ。どこに持ってきても「これだ!」という位置がなく、未だに悩んですらいる。

Enterは、C-;, C-j, C-mなども考えたのだが、「元のEnterキーと同じように右手小指を使う」「右手だけで押せる」ほうが良いと考え、セミコロンキーに割り当てることにした。

また、日本語切り替えも、C-\などの候補があったが、ホームポジションからの手の動きが少ないC-oのほうを採用した。

CtrlとEsc

CapsキーをCtrlキーにするのは定番。無変換キーをEscキーにするのは、Vim使いには必須。*10

つぶれたキーのアフターケア

セミコロンという、それなりによく使うキーの位置が変わってしまった。とはいえ、この一つだけなら我慢できる範囲である。

つぶれたコマンドのアフターケア

アプリケーションに対する新しいコマンド割り当てにより、既存の割り当てが上書きされ、使えなくなる。

例えば、C-oにはIME切り替えを割り当てた。多くのアプリケーションでは、C-oにはファイルを開く操作を割り当てているので、この機能が使えなくなるわけだ。ただし、ファイルを開く操作は、そんなに頻繁に行うわけではないので、ツールバーやメニューバーから行うので十分間に合う。

一番問題が起きそうなのは、多くのアプリケーションで重要な役割であるC-f(検索)とC-a(全て選択)がつぶれてしまったことだろう。ここが一番我慢すべき部分だ。

まとめ

以上、キー入力環境の改善策について見てきた。

Vimについては、基本的にはVimの操作体系を尊重し、それを支援するような設定(「無変換キー --> Escキー」など)を行った。

その他のアプリケーションについては、Xkeymacsによって、移動、削除などの最低限のEmacsライクな操作体系を導入した。むやみに新しい割り当てを導入すると、既存のコマンド割り当てとの競合の解消が面倒になるので、自分が最低限必要と考えるものだけを取り入れるのが上策である。

一部のキーやコマンドがつぶれてしまっているが、ごく少数であり、我慢できる範囲内である。

快適な環境を目指して試行錯誤した結果、VimEmacsの操作体系に集約された、ということは、自分にとって、この2つの操作体系が体にしみついている、ということなのだろう。

*1:ここでは初期設定から離れすぎている、くらいの意味。

*2:特殊なキーボードや、手に入れにくいアプリケーション

*3:変換キーや無変換キーなど。

*4:BSキーやEnterキーなど。

*5:C-F(検索)など。

*6:CapsキーをCtrlキーに変更する、の意。以下同じ。

*7:XkeymacsでIME切り替えにC-oを割り当てる、の意。以下同じ。

*8:2009-12-04追加

*9:2009-12-04追加

*10:もしEmacs使いだったら、Altを変換キーに持ってくるのが良いだろう。Alt-xが押しやすくなる。