紅皿のサポートブログ

キーボード配列エミュレーションソフトウェア「紅皿」の不具合や要望はこちらに

キー配列読み込み時のエラー

どういう訳だかキー配列読み込み時にエラーが発生するようになりましたので、それに対処したという話です。

 エラーが頻発するのは薙刀式と蜂蜜小梅配列です。エラーメッセージは、配列ファイルの要素数がおかしいというもので、要素数0になっています。

 現象が発生するのは、いったん紅皿が立ちあがったのち、再び配列ファイルを読み込むときに限定されます。(ここで気付くべきでした。)

 

・キー配列ファイルに不具合があるのではないか。

 ⇒ その都度、見直しましたが不具合らしきものはなし。

 

・キー配列ファイルの変数の初期化がうまくいっていないのではないか?

 ⇒ すべて初期化しました。変化なし。

 

連想配列の初期化がうまくいっていないのではないか?

 ⇒ オブジェクト要素の削除関数を作りました。変化なし。

 

・ファイル読み込み関数のクセのためではないか?

 ⇒ モダン形式のファイル読み込み関数に書き換えました。変化なし。

 

・変数をトレスすると、キー配列のラインバッファを連想配列にセットしたのち、ランダムに連想配列のモード変数が予期せぬ値に書き換わっていました。

 ⇒ ReadLayout6.ahk のモード変数を追いかけましたが、書き換えている場所はありませんでした。

 

 ここで、モード変数を全プロジェクトに亘って追いかけると、10mSEC割込みの中で同じ名前の変数を使っていた・・・という。そうです、Autohotkey の変数は基本的に global なので、割込みルーチンで使っていた変数と、変数名が衝突していたのですね。

 以下を対処すると、問題は解消しました。

 

 ・ReadLayout6.ahk のモード変数名を固有名称に変更。

 ・ファイル読み込み時には、10mSEC割込みを停止し、読み込んだあとに割り込みを再開。