[nvdajp-team 1142] Re: KGSドライバの修正スナップショットjpkgs130120

Takuya Nishimoto nishi****@gmail*****
2013年 1月 20日 (日) 21:06:43 JST


西本です。

>>KGSドライバの修正スナップショットjpkgs130120
>>https://dl.dropbox.com/u/62564469/nvda_snapshot_jpkgs130120.exe
>
> 上記をポータブル版にインストールしました。
> 点字設定でKGSDriver3に設定してみましたが、
> こちらのパソコンではポート選択が出来ず、
> 点字表示が出来ないでいます。
> こちらだけでしょうか?

梅木さま:
KGS Driver 3 は本家が追加したポート選択のコンボボックスで選択するのですが、
ドライバーを切り替えた直後にはコンボボックスが有効にならないようです。
(いつか本家がなおしてくれるのかな。。)
いったんダイアログを閉じて、もう一度同じダイアログを開いても、
まだ選択できないでしょうか?

なお、修正内容についてMISONOさまから質問をいただいたので、MLあてに解説します。

kgs.py の class BrailleDisplayDriver を kgs2.py と kgs3.py で
継承しており、name を kgs2, kgs3 にオーバーロードしています。

そうすると本来はイベントを生成しているクラスの名前が違うので、
gestureMap のイベントの名前を "br(kgs):alt" などではなく "br(kgs3):alt" のように
書き換えなくてはいけません。
ソースファイルの冒頭 _exec() の
inputCore.manager.executeGesture(InputGesture(names, routingIndex))
が例外を出したときにいままで pass で無視していたので、ログで把握できませんでした。。

で、どう直したか、なのですが、 kgs2.py のようにスーパークラスの
gestureMap をそのまま使えば、name が kgs のままジェスチャー処理に成功するのです。。
Python のクラス初期化の微妙な部分なのでしょうね。
いままで kgs2.py がうまく動いていたので、何の疑問も感じませんでした。。
ということで、できるだけ継承を使うように kgs3 を修正しました。

イベントハンドラ登録の lambda で使われている _exec() はクラスの外に書かれていて、
アンダースコアで始まるメソッドは import の対象にならないので、
メソッド名を kgs_exec() に変えました。

ちょっと気持ち悪いのですが kgs3 が動作確認できたら
新しいドライバの処理を kgs に移して kgs2 と kgs3 は廃止するつもりなので、
現状はこのままにしています。

--
Takuya Nishimoto




nvdajp-team メーリングリストの案内