Windows8.1で「親指の友」が動かない件(発展)
少し間が空いてしまいました…。
親指シフトの件も進めたいし、OSというかプラットフォームというか、そういうものを作ろう…というプロジェクトも(自分の中では)動きが出ていたりして、あまりまとまりが無くなってきています…。ちゃっちゃと手を動かさないとですね。
親指シフトの話の続きです。
そもそも、かなと英字のモード判別が必要になっているから話がややこしいのであって、キーボード側から見て両モードの区別が無くなれば良いのではないか?という話です。
つまり、基本的なアプローチは
- キーボード側は同時打鍵を検出したとき、予め定義された特定の逐次打鍵ストロークを出力する。
つまり、同時打鍵の操作を、あたかも小指シフト等との逐次打鍵のように変換して出力します(ストレートでSHift +等)。
- NICOLA配列への対応は、極力OSの「キーボードレイアウト」の仕組みだけで対応する。
となります。
実は、ここまでは親指の友ドライバでも似た様な仕組みになっているのですが、このままでは以下のような問題があり、親指の友ドライバでは入力モードの判別が必要になってしまっています。
- 濁点・半濁点の入力
Windowsのキーボードレイアウトには、1キーストロークの操作で複数文字を入力する仕組みが元々存在しません。
さらに、かなの配列は「半角カナ」で定義するため、濁音付き・半濁音付きの文字を、そのままキーボードレイアウトに定義することができません(何せWindows NT 3.1のころの仕組みなので…)。正確に言うと、Windows2000以降では「合字(リガチャ)」を1キー操作で入力するための仕組みがあり、現在ではこれを流用することで複数文字を入力させることができるのですが、残念ながらこの入力はIMEが悉く無視して下さいます(MS-IME 2000とJapanistで確認。何も入力されなくなる)。
ということで、親指の友ドライバでは、クロスシフトと半濁音入力の際に、2つのキーがそれぞれ押されたようなキーストロークを出しています。
しかしながら、この点さえ妥協すればモードの区別は不要になります。例えば、以下のような形です。
- JISかなのように濁点・半濁点入力を2ストロークにする
これは、NICOLAをはじめとする親指シフト族最大の利点を殺すことになるので、NICOLA使いとしてはやりたくない選択です。しかしこれを行うと、空いたクロスシフトを別の目的に転用することが出来ます。
例えば、私は普段、英字入力中のクロスシフトでCtrlキーとの逐次打鍵を生成するようにしています(現行の親指の友ドライバで可能な設定です)。「Aの隣にCtrlが無いと~」等と言わなくても大変快適です(寧ろCtrlキーを多用するなら、小指操作よりも親指シフトのノリで入力できた方が遥かに楽だと思います)。或いは、欧州圏で使われるAltGrとの組合せにも良いかもしれません。
つまり、非日本語圏の方やローマ字入力慣れしている方、Ctrl操作を多用する方に「同時打鍵の大きなメリットを手軽に享受して頂く」ことができるので、意味はあるのではないかと思います。
- 入力モードに関係なく濁点・半濁点のストロークを出す…が、英字入力では文字が出ないようにしておく
キーボードレイアウトの定義を工夫するとこういう定義も出来ると考えています。NICOLA使いであれば、かな入力はほぼ同等の操作感です。
英字入力時に親指シフトの操作を行うと、例えばストレートシフトではShiftキーとの逐次入力、クロスシフトでは何も入力されない・又は通常の英字だけ出てくる…といったような動作になると思います。
但し、この仕組みは「濁点・半濁点入力が文字にならない」だけであって、キーコードとしては各プログラムへ通知されてしまいます。例えば、ショートカットキーとしてこのストロークを入力したとすると、(無効な入力があったとして)余計にビープ音が鳴ったりするかもしれません。このため、NICOLA以前の半濁音入力(Shiftキーを使うもの)は対応しない方が良いでしょう。こうすることで、親指シフト操作を行わない限り、英字入力で変なストロークが出ることはありません。
…ということで、親指の友の作り直しも兼ねて、この両方の仕組みに対応したドライバを作っている最中です。
2003DDKを手に入れたので、もしかしたら64bit版のバイナリも出せるかもしれません(ろくに動作確認はできませんが…)。尚、私がまともな署名を付けることはできないので、リリースできたとしてもテストモードなり自己署名を各自付けて使って頂くことになると思います。