blechmusikの日記

キー・カスタマイズ・ソフトウェア "DvorakJ" の覚え書きをはじめとして様々なことを書いています。

市式仮配列を実装してみよう 第四回

第四回の概要

同時に打鍵する動作の原型を、市式仮配列に導入する。

同時打鍵の仕様の把握

まずは、作者の説明を参照しよう*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][

 | | | | | |  |し|せ| |
 | | | | | |さ|す|そ| |
 | | | | | |  |  |  | |
]

他の同時打鍵の仕様の実装……

今回も、前回と同様、あとは機械的に設定を追加すればよいだけだから、記述を省略する。


次回は、市式仮配列の中核を為すと見られる、キーを押したままにする動作の実装に取り組む。

*1:ickw0911のブログ : 新配列とりあえず完成。

*2:もちろん、逆に、ア段に着目した設定方法も考えられる。

*3:この自動的な変換を停止するには、設定ファイルの一行目に「そのまま」と記述すること。