https://osdn.net/projects/benizara/releases/
の、
benizaraEXE_01476.zip
がそれ。
デフォルトは親指シフトになっているので、
配列を薙刀式に変更。
横書き版/縦書き版と、JIS記号版/US記号版と、
4通り用意されている。
僕の同時打鍵の設定は、
重なり10%(相互シフトで慣れてるので、
特に同時を意識せずに打ってるため)、
100ms(特に根拠なし)、
程度にしてみた。
本家DvorakJ版より軽く、
しかもDvorakJ版にあるバグ
(シフト入りっぱなしになるやつ)が、
一度も出ない優秀さ!
配列エミュレータは、以後紅皿で決まりか?!
また薙刀式に対応したことで、
3キー同時押しに一般化して、
自由に実装できる可能性が出てきた。
3キー同時押し配列を、
つくってみようぜ!
紅皿はWindowsでしか動かないので、
Macの宗派のみなさんは、
eswaiさんのBenkeiを使いましょう。
イベント割り込み関係の不具合は、再現性に乏しいため
デバッグが難しいのですが、大岡さんやとるさんのご協力のお陰で、短期間に安定版にたどり着くことができました。
キー配列エミュレータのデバッグは、まるでドリフの引き出しのようです。ひとつの引き出しを押し込むと、別の引き出しが勢いよく飛び出してきて顔面を直撃するように、なかなか収束しないのが特徴でした。3キー同時判定が動き始めてから、リリースするまで1ヶ月半もかかってしまいました。
薙刀式は本邦初の3キー同時配列ではありますが、
僕の前にも絶対気づいた人はいたはずで、
にも関わらずそれ以前になかったのは、
実装が困難だったからだと想像します。
それがたまたまDvorakJで実装できたので、
他のやり方で実装しようとする人には大変な困難が降りかかるという。
僕は完全に使う人目線で3キー同時でええやん、
と素直に思っただけなのですが、
薙刀式が実装者泣かせの配列になるとはその時気付かず…
状態遷移表とか考えるだけで嫌になりますね。
平面図じゃなくて立体図になるのでは。
一般化してnキー同時押し(n次元遷移表)なんてのは可能なのだろうか。
さすがにステノワードとかはハードの回路上でやってるんですかね。
もう少し拡張すれば、
一音節をnキー同時押しで済ませるローマ字配列とかできそうですね。
たとえば左手で、促音、子音、拗音、
右手で母音、二重母音、撥音、長音、
などのように割り振ればできるはず。
いっとき考えたんですがローマ字よりカナの方が効率がいいので薙刀式に落ち着きました。
そんな配列を紅皿で作る人が出てくるかもです。
状態遷移表は、紅皿動作仕様書_v1.4.7.pdf
に記載しています。取り敢えず二次元の表で済ましています。
>一般化してnキー同時押し(n次元遷移表)なんてのは可能なのだろうか。
世の中の大多数を占めるUSBキーボードでは、プロトコルの制限上、同時押しは6キーまでのようです。逆にいうと6キーまでは実現できそうですね。
また、キーボードは格子状にスイッチをつなぐ「キーマトリックス」という手法を用いて検出できるように作られている場合があります。このとき、格子の3つが直角三角形になるように同時押しした場合、直角の頂点にあたるスイッチが読み取れない「ゴースト」という現象が発生するおそれがあります。
なお、このような現象が起きないキーボードは、「Nキーロールオーバ」と仕様に謳われています。
もしかすると、3キー同時打鍵の仕様は、Nキーロールオーバのキーボードに限られるのかもしれません。
http://dailynewsagency.com/2014/03/08/microsoft-applied-sciences-group-bbw/
Nキーロールオーバーの件はUSBの仕様の制限と、
キーマトリクスの制限があると聞いたことがあります。
リアルフォースはUSBなのにNキーロールオーバーなのは、
キーボード内に独自ハードで検出していて、
それをUSBの制限内で無理矢理やってるそうです。
このへん自作キーボードでもそれほど突っ込まれてない話題ですねえ。
QMKの仕様上はNキーロールオーバーをオンに出来るけど、
USB転送が出来ないというやつ。
でも3以上の同時押し配列がほんとうに使いやすいならば、
そうしたハード側の仕様も変わるかも知れません。
いつでも目的が手段に先行するべきなので。
7キー目を入力すると、最初に入力されていたキーはまだ押されているにも関わらず、キーオフされたイベントが発生し、かつ7キー目のキーオンイベントが発生します。
紅皿では、キーオンの重なりを見ているので、現状のロジックで対応可能なのは6キー同時押しまでです。なお、Dvorakjではキーオンイベントのみを見ているので、7キー同時押しを判定可能です。
富士通純正キーボード(FMV-KB325)で薙刀式を試してみました。
このキーボードはNキーロールオーバ非対応のようで、3キー以上を入力すると
3キー目の打鍵が反映されない場合があります。
薙刀式のうち、入力できなかったのは以下の4つです。
ふぇ(v.o)
ぢゃ(jgh)
ヴぇ(jlo)
ぐぁ(fhj)
もっとも、薙刀式に手を出すくらいにキーボード沼にはまった方ならば、当然にNキーロールオーバ対応のキーボードをお使いでしょうから、特段には問題にはならないかもしれません。
その他、ノートPCのキーボードでも試してみます。
また、リモート環境でNキー同時押しが可能かも気になります。コロナ禍のなか、リモート環境で薙刀式が使えると嬉しいからです。
追試参考になります。
Nキーロールオーバーしたとしても、
同時は6キーの制限を受けるわけか、なるほどなあ。
自作キーボードだとNKROの項が設定されているので、
キーボードファームウェア内で検知して処理すれば、
USBの制限は受けないでしょうね。
まあそのファームを自分で書かないといけないんですが。
キーボードによっては3キー組み合わせが一部無視されますね。
コストダウンの結果でしょう。
17mmピッチ薄型パンタグラフUS配列の、バッファローBSKBB500は持ち運びに便利なのでよく使うんですが、「ぎょ(WJI)」が効かないですね。
そういうときに小書きのQ同時押しを使います。ちょっとしたストレス。
一応マニュアルには「3キー同時が使えるか確認してね」と注記してありますが、キーボードマニアなら大丈夫だろうとたかを括っています。
リモートで使えるかは通信の仕組みに依存するんですかね。
出し側で判定しとけば大丈夫だろうけど、
受け側で判定するのは難しそう。
別記事にも書きましたが、紅皿の高速で軽い感じはすごいなあと思います。体感でDvorakJの倍以上かな。高速で書くと数文字くらいバッファに入って遅れる感じがありますが、紅皿はそれが感じられない。
この速度帯なら、新しい発見があるかもしれません。