まだ改訂するのか、しますとも。
「同時押しを、アルペジオに拡張」出来たのです!
以下、実装しているDvorakJのプログラミングの話。
DvorakJにおける、
(から記述される同時押しには二種類ある。
キーの前につく符号が-と+で表記される。
-の同時押しは、○ミリ秒以内に設定したN個のキーが押されたら、
同時押しと判定し、その○は「待機と遅延」で設定する。
先日発表して、しばらく使っていたv6「六本指」はこれを採用している。
ところが、その○ミリ秒をどう設定するかが難しいのである。
デフォルトは40ミリ秒。
しかし高速打鍵にこれは遅すぎる。
アルペジオ打鍵を同時押しと判定してしまうからである。
ご存知のように、カタナ式はアルペジオ打鍵が特徴だ。
そのタランという感じが気持ちいいので、
それに40ミリ秒は長いのである。
(音にたとえると分かりやすい。
テレビの1フレームは33ミリ秒。
1フレームで子音二音発声することは可能だ。
たとえばプルっ(4音)とかは巻き舌で2フレぐらいで発音できる)
長いと何が起こるか。
アルペジオ打鍵が同時押しに化けてしまうのだ。
つまり、アルペジオ打鍵のスピードを落とす(ゆっくり言う)か、
○ミリ秒をシビアにするしかない。
僕は20ミリ秒程度を推奨していたが、
トップスピードではいけるが、
ダラダラ打ちのスピードではシビアすぎる。
両方に対処できないのである。
対策のひとつは、
アルペジオにならない組み合わせを同時押しに設定すること。
子音部の同時押しは、そのように出来た。
ローマ字で違う子音が連続することはほぼないからである。
しかし、母音部の「ん」を、
「い」「え」の母音同時押しにしたのがまずかった。
「えい」のアルペジオと同時押しを区別出来ない。
対策はふたつ。
「ん」の同時押しを変える。(しかしカタナ式v5との直感的関係性が失われる)
同時押しを+にしてみる。
ということで、
最近はずっと+で定義される同時押しをいじっていた。
これのいいところは、
「Aを押しながらBを押す」という判定が出来ることだ。
○ミリ秒以内というシビアな同時押しではなく、
アルペジオ打鍵を押しっぱなしにしたら同時押し、
アルペジオ打鍵を離したら普通の二文字、
という「こちらの打鍵速度を落とさずに入力していける」
ことが最高だ。
しかも押しっぱなしだから、無限に待ってくれる。
シビアな入力だろうがダラダラ入力だろうが行けるのである。
ところが。
この+は、「キーを押して離したときに入力と判定する」のため、
打鍵感覚が結構変わるのである。
一言で言うと、モッタリする。
-の入力は「押した瞬間」(+同時押し判定○ミリ秒が過ぎてから)
に文字が出るのだが、
+の入力は「押して、離したあと」(+同)
に文字が出るのだ。
子音部の同時押しもこれで設定して、アルペジオ同時押し対応にすると、
「全ての子音がモッタリ入力になってしまう」
という現象に悩まされていた。
単純に同時押し判定が沢山増えたせいで、
(なんといってもこの判定には、
Aを押しながらBを押す、とBを押しながらAを押すの、
二つの判定をしなければならない。
同時押しは4種、シフトを合わせると計16の判定。
他にも濁音シフトや、シフトが遅れたときの判定も走っている)
うちのPCスペックが足りないのではないかと疑った。
ワードが急に重くなる原因も突き止めた。
原因はそれもあったが、
単純に+の入力判定は、モッタリする、
というのが答えだった。
そもそもこの+入力は、入力キー数が約2/3の、
かな入力を使用に想定している。
だからローマ字ほどバカバカ打たないスピードでも、
恐らく実用に堪えうるのだと思う。
しかも、DvorakJの+判定は、
「修飾キーともう一個の二個まで」(通常キーなら無限なのだが)
というマニュアルの表記を見落としていて、
シフト時の連続シフトが出来なくて悩んでいたのだ。
(見つけるまで一週間かかった…)
ということは、
そもそもがカタナ式の要求する仕様に合ってない、
という結論が導きだされる。
ところが昨日、第三の方法を思いついた。
「同時押し判定ではなく、順打鍵として処理する」という方法だ。
-A[ Bが押されたら{BS}C ]
-B[ Aが押されたら{BS}C ]
の形式で定義(BSは、既に出たAやBを消す用)しておけば、
「アルペジオ打鍵でも同時押しでもいける」
ということに気づいたのである。
順打鍵だから、無限にダラッと打っても対応でき、
○ミリ秒などというシビアさから解放される。
かつ仮に同時押ししたとしても、
ABかBAにキーボード内で処理されるから、
結局順打鍵入力になるというカラクリである。
これはなかなかの発見で、
(三つ以上の同時押しは組み合わせ爆発がありそうだ)
DvorakJの同時押しの項目にマニュアルとして乗っけてもいいレベルと、
勝手に自負する。
大岡式アルペジオ同時押し、とでも名付けよう。
(ひとつだけある懸念は、
一回出たAを出力して消すまだるっこしさだ。
表示的にはほとんど気にならなかった。
タイピングソフトでは毎回誤打判定にされるが、
まあそれはいいや)
これで子音部のモッタリ感が開放され、
かつ同時押しもアルペジオ同時押しも可能という、
タイピングソフトで誤打扱いされる以外は、
最高の結果を得た。
問題は母音部だ。
二重母音と同時押しを区別しなければならない。
「家」と「英」と「い+え同時押し」をだ。
ここは結局、
「えを押しながらいを押す、アルペジオ押しっぱなし」
の+判定とした。
逆の「いを押しながらえ」はやめた。
モッタリするのは「え」だけにする為だ。
母音部のモッタリは、全打鍵のモッタリに影響する。
したがって、モッタリ判定は、
五母音の中の最もマイナーな「え」だけに限定したのである。
ということで、
カタナ式史上最高速かつ腱鞘炎知らず、
かつ最も楽、かつアルペジオが気持ちいいという、
最高のバージョンに仕上がった次第。
(しかもv5と同時に存在できる条件をクリア!)
プログラミングの話で申し訳ないが、
もしDvorakJで同時押し設定に悩んでいる人がいれば、
と思って書いてみた次第だ。
(日本で10人いるのか?)
ついでに、
コントロール系の編集モードを、
使い勝手のいいように配置を少し弄っている。
右手一本でやり易いようなアイデアを思いついた。
具体的にいうと、
コントロールOは、コントロール↓(文節移動)ではなく、
ただの↓にしようと考えている。
文節移動は高速移動に便利なのだが、
「パッと見どこへカーソルがいくか予測できない」
という欠点がある。
なので、
コントロールA(↑に文節移動)でバーっと大体動いて、
コントロールOで一個ずつ下に行って目的を捉える、
としたほうが作業がやり易いことに気づいたからだ。
この編集モードは殆ど再変換に使われるので、
再変換のキーバインドもやり易くしたいものである。
そろそろタイピング動画を公開しても恥ずかしくないレベルには来たような気がするので、
v7で動画撮影しようかなあと考えている。
結構快適な打ち心地なので、
それが伝わるように撮るつもり。
GWにやるかなあ。おっと新作も準備せねば。
2017年04月24日
この記事へのコメント
コメントを書く
この記事へのトラックバック