2009年08月22日

pDiceとTouchkeySIP

JIKさん

>当方入力SIPに Touchkeysip 使用。タイ語入力を可能にしてタイ日辞書を使用しておりますが、
>タイ語の"ป" = UNICODE の 0x0E1B を検索欄に入力したとたんに入力文字がクリアされて検索欄が空欄になります。
>これはTouchkeysipからpDiceの検索欄に入力したときにのみ起こります。


ご報告ありがとうございます。
夏休みと体調不良が重なったせいでコメントのチェックができてませんでした。遅くなって申し訳ない。

んで、ご報告の件ですが、pDiceはESCキーで入力欄をクリアする仕様です。該当コードの後半の0x1Bが入った時点で、この機能が暴発しているようです。

と当たりをつけて、TouchkeySIPとタイ語用のスクリプトを入れて試してみました。
タイ語用のスクリプトは、ググって一発目の http://www.el-camino-real.com/archives/2008/03/26.html を入れてみました。

予想通り、0x0E1Bの文字を入れたタイミングで、WM_KEYUP(0x1B)が来ていました。


スクリプト(defaultscript.txt)の内容を確認してみたところ、F_KEYUPの処理が下記のようになっていました。(725行目付近)

# Unicode かどうかで処理わける
IF CMP_EQ $GW_SV_U 0
THEN
SendVirtual $GW_SVPARAM2 KEYEVENTF_KEYDOWN
ELSE
SendChar 0 0 $GW_SVPARAM2
ENDIF
SendVirtual $GW_SVPARAM0 KEYEVENTF_SKEYUP


Unicode文字の時はWM_CHARを送るようにしているのに、共通処理でWM_KEYUPもついでに送ってしまっているようです。

ここを、以下のように書き換えたところ、症状は出なくなりました。


# Unicode かどうかで処理わける
IF CMP_EQ $GW_SV_U 0
THEN
SendVirtual $GW_SVPARAM2 KEYEVENTF_KEYDOWN
SendVirtual $GW_SVPARAM0 KEYEVENTF_SKEYUP
ELSE
SendChar 0 0 $GW_SVPARAM2
ENDIF


スクリプト作者さんの意図が掴み切れてないところがあるので、これで正しいかどうかは分かりません。後は、ご自身で確認してください。

posted by Jiro at 13:40 | Comment(1) | TrackBack(0) | 日記
この記事へのコメント
ありがとうございます!! まさしく上記で解決できました。わざわざスクリプトをご検証くださり、本当に感謝致します。これでポープラーの単語が引ける!タイ語を勉強している方、pDice+touchkeysipは最強です。
Posted by JIK at 2009年09月01日 15:44
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/31505873
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック