前回のエントリー
第四回の概要
同時に打鍵する動作の原型を、市式仮配列に導入する。
同時打鍵の仕様の把握
まずは、作者の説明を参照しよう*1。
・同時打鍵
詳しいことは設定ファイル読んでもらうしかないんですが
仕組み上だいたい同時に押してくれればS→ア行もア行→Sも同じ文字<さ>が出ます。
一定の時間内に打鍵したならば、打鍵したキーの順序にかかわらず、同じ文字を出力するということだ。
同時打鍵の実装
実装にあたり重要となるのは三点、すなわち打鍵の順序を問わないと明示すること、打鍵するキーを指定すること、出力する文字を決めること、である。
打鍵の順序を問わないと明示するには、設定項目の冒頭に半角の開き丸括弧を書くこと。閉じ丸括弧は書かないことに注意する必要がある。ただし、これは「順」という文字が設定ファイルの一行目にある場合である。「順」という文字が存在しないならば、半角の開き丸括弧を書く必要は無い。なお、今回の実装では、同時に打鍵する処理を盛り込むので、(書き換えても挙動は全く変わらないが)設定ファイルの一行目の「順に打鍵する配列」を「順にも同時にも打鍵する配列」と書き換えておくとわかりやすいだろう。
打鍵するキーと出力する文字は、順に打鍵するよう設定したのと同様、設定ファイルの表内のキーの位置に文字を記入し、それ以外のキーは表のすぐ外に記述する。
つぎのような設定を追加すると、「S→ア行もア行→Sも同じ文字<さ>」を出力する。
-option-input[ /* QWERTY */ /* 中段 */ [a] | -1E ] ([a][ | | | | | | | | | | | | | | | |sa| | | | | | | | | | | | | | ]
これはAを起点にした設定方法であるが、次のように、Jを起点にする設定を書いてもよい。
-option-input[ /* QWERTY */ /* 中段 */ [j] | -24 ] ([j][ | | | | | | | | | | sa| | | | | | | | | | | | | | | | | | | | ]
そうはいうものの、以下のようにサ行の設定をひとまとめにできることを考慮すれば、前者の設定の方が好ましいだろう*2。
-option-input[ /* QWERTY */ /* 中段 */ [a] | -1E ] ([a][ | | | | | | |si|se| | | | | | | |sa|su|so| | | | | | | | | | | | ]
DvorakJ は、設定ファイル中のかなをローマ字に自動的に変換するから、こう書き換えられる*3。
-option-input[ /* QWERTY */ /* 中段 */ [a] | -1E ] ([a][ | | | | | | |し|せ| | | | | | | |さ|す|そ| | | | | | | | | | | | ]
他の同時打鍵の仕様の実装……
今回も、前回と同様、あとは機械的に設定を追加すればよいだけだから、記述を省略する。
次回は、市式仮配列の中核を為すと見られる、キーを押したままにする動作の実装に取り組む。