Hatena::ブログ(Diary)

Wisteria::Diary RSSフィード Twitter

2009/05/10

[] Phase16b 「普通のキーボード」の終着点

これが標準的なハードウェア向けの (おそらく) 最終バージョンになる。実装方法を含め、少し詳しく記述しておこう。

f:id:mobitan:20090510213017p:image

f:id:mobitan:20090510213019p:image

概説

  • 親指の 3 キーはワンショットモディファイヤ。押してる間はそれぞれ Mod1, Mod2, Mod3 に、単独で押して離すとそれぞれ [Space], [Enter], [Delete] になる。
  • 平常時は上のマッピング。Mod1 (スペースキー) を押しながらだと下のマッピングになり、ホームポジションから手を動かさずに編集操作ができる。
  • Mod2 または Mod3 を押しながら文字キーを押すと IME on になり、Enter を押すと IME off になる。
  • Mod1+ で非自明なキーは次の通り。Mod1+[ X ] = Ctrl+Shift+[Tab], Mod1+[ C ] = Ctrl+[Tab], Mod1+[ V ] = Ctrl+[F4], Mod1+[ T ] = ウィンドウ最大化トグル, Mod1+[ G ] = Alt+[F4], Mod1+[ B ] = ウィンドウ最小化, Mod1+[ Y ] = Ctrl+[Home], Mod1+[ / ] = Ctrl+[End], Mod1+[ = ] = クリップボード履歴 (常駐ソフトのキー設定に合わせる), Mod1+[ , ] = Shift+[Tab], Mod1+[ . ] = [Tab].

変更点

Phase16 からの変更点は次のとおり。

  • モードレスな IME 操作体系の提案 に基づき、IME のモード切り替えを完全にモディファイヤ化した。
    • 日本語モードは [Mod2], 英語モード は [Mod3] と、それぞれ別個のモディファイヤキーとした。
    • そのため Shift が親指に置けず、小指シフトになった。救済用に右手小指下段の [ \ ] を [RShift] とした*1
    • もし IME on の状態が残ってしまった場合は [Shift] を単独で押して離せば IME off になる。
    • 「確定と同時に IME off になるので確定アンドゥができない」という問題は、確定アンドゥの代わりに「アンドゥ → IME on → 確定リピート → 全変換取消 → 変換」というシーケンスを送ることで解決した。
  • Mod1 の配列を見直し。
    • Mod1+[ X ], Mod1+[ C ] をそれぞれ Ctrl+Shift+[Tab], Ctrl+[Tab] とした。隣にある Mod1+[ V ] = Ctrl+[F4] と合わせて、タブの操作を手前側に集約した。
    • Mod1+[ " ], Mod1+[ \ ] をそれぞれ PgUp, PgDn とした。これはマウスホイールのないノート PC の救済用であって、使用頻度はきわめて低い。
    • Mod1+[ W ], Mod1+[ R ] をそれぞれ Alt+[←], Alt+[→] とした。これも使用頻度はきわめて低く、「戻る」「進む」を割り当てる必然性もあまりない。*2
  • Mod1+Mod2+文字キー は次のようになる (図には描いてない)。
    • 右手側: 範囲選択 (Ctrl+Shift+[Home], Ctrl+Shift+[←], Shift+[↑], ...)
    • 左手側: よく使うモディファイヤとの組合せ (Shift+[Space], Ctrl+[Enter], ...)
    • 完全な定義は設定ファイルを参照。両親指で範囲選択は便利だが、その他はアドホックな定義であって必然性はあまりない。
  • 記号のペアを入れ替えた。ダブルクオートと波ダッシュがシフトなしで打てるように。
    • 英語キーボード準拠じゃなくなったけど、使用頻度を考えると明らかにこちらの方が良い。

実装方針

  • デスクトップ (フルキーボード) とノート (トラックポイント付き、タッチパッド付き、不等ピッチ、etc.) で同じ配列が使えるようにする。そのために:
    • ホームポジションは標準のままとする。
    • ハードウェアごとの違いはドライバレベル (レジストリの書き換え) で吸収する。ここでは remapkey を使う。
    • それ以外の機能はユーザーレベル (フック系の常駐ソフト) で実現する。ここでは keyhac を使う。
  • IME のモード切り替えをモディファイヤ化するため、keyhac の設定に合わせて IME 側の設定変更も必要である。ここでは ATOK 2008 を使う。
  • Windows Vista 対応。

remapkey の設定

f:id:mobitan:20090510213020p:image

keyhac の設定

ATOK の設定

f:id:mobitan:20090510225334p:image

  • 日本語入力 ON、日本語入力 OFF、確定リピート、入力文字種全角ひらがな、英語入力 ON/OFF にそれぞれ別個のキーを設定するのがキモ。これに keyhac の設定を合わせる。
  • MS-IME でも同様の設定はできると思う。けど確認する気がない。

感想

  • 親指がワンショットモディファイヤだらけで忙しい。全操作時間の半分は親指で Mod1 を押してるような気さえしてくる。
  • 普通のキーボードで Mod1 の割り当てに耐えるキーは [Space] しかない。だから仕方ないとはいえ、スペースキーのロールオーバーが利かなくなるので、やはり英文入力時のリズムはかなり途切れがちな感じになる。
  • それでも、すべての編集操作がホームポジションでできるメリットは他のデメリットを圧倒する。
  • IME 切り替えのモディファイヤ化も効果は大きい。
  • ただし、Mod2 と Enter が同じキーだと和字を細切れ入力するとき親指の負担が大きい。せめて Enter はロールオーバーしてほしい。
  • やっぱ Space と Enter をワンショットモディファイヤにしちゃうのは無理があったかなぁ…。
  • だがしかし、それでもやはり、すべての編集操作がホームポジションでできるメリットは他のデメリットを補って余りある。(大事なことなので 2 度言いました)

まとめ

Phase16b は私が 10 年かけて取り組んできた最適化の集大成です。標準的な日本語キーボードを用いる限り、操作効率の追求はこのあたりで限界に達するでしょう。この先へ進むにはどうしても 親指に 8 個のキーが必要です!

巷にはキーボード改良のアイディアがいろいろありますが、その多くは文章入力の最適化を目指したものであって、編集操作や IME 操作の最適化に関して系統的な成果を得たものは多くありません。これから最適化の道に踏み込む人は、その成果をぜひ公開してほしいです。私もニヤニヤしながら見守りたいと思います。( ̄ー ̄)

*1:小指シフトの煩わしさは否めない。英文入力の機会が少ない人は Mod3 を Shift にした方がいい

*2:私は「戻る」「進む」はマウスジェスチャでやっている

ももんがももんが 2009/10/02 23:27 ももんがともうします。
限界に達するでしょうということですが、こんなのはどうでしょう。
http://pi200k.blog35.fc2.com/blog-entry-70.html

mobitanmobitan 2009/10/03 01:26 タレコミありがとうございます。
いやー笑った笑った。彼にはアクセル全開で突っ走って欲しいなあ。どこまで行けるか見ものですよ。

じょかじょか 2010/06/20 05:35 さまよっているうちにいつのまにかここに来ました。
一度試してみたいのですが、残念ながらconfig.phのリンクが切れています。
是非config.phをもう一度たどれるところにおいてもらえないでしょうか?

mobitanmobitan 2010/07/15 22:15 phase16b_config.py をダウンロード可能にしました。

HashHash 2010/08/12 13:29 これはすごい...!僕も今まで
「ぼくのかんがえたさいきょうのキー配列」
を作ったりしましたが、実際使う上で「やっぱ使いにくい」と挫折してきました。
このキーボード、どうですか?実践で使えていますか?

mobitanmobitan 2010/08/16 23:57 もちろん毎日バリバリ実践しています。ただし、IMEの切り替え方法はモディファイヤではなくなりました。最近の私のキー配列も近々書きたいと思います。
ところで、その「ぼくのかんがえたさいきょうのキー配列」を見てみたいのですが? (^-^)

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト

コメントを書くには、なぞなぞ認証に回答する必要があります。

トラックバック - http://d.hatena.ne.jp/mobitan/20090510/1241968877
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2013 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2015 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2016 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2017 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |