KeePassから@を送るとIMEがONになる

| コメント(0) | トラックバック(0)
Windows版KeePassでアカウント名などに"@"が含まれていると、つまりメールアドレスだったりすると、自動入力時に"@"でIMEがONにされ、以後全角になってしまいます。2.18以上で発生しているとか。

そもそもの発端は、SendInputでKEYEVENTF_UNICODEを指定すると、OSが気を利かせてIMEをONにすることのようです。未確認ですが内部でIMM経由だとか何とか(そのためIME依存?)。

KeePassのフォーラムでは当時、@に対してAlt+@が発行されるためにIMEがONになっているんだ、なんてことが書かれているのですが、全くそうは思えません。私の環境でAlt+@を押してもIMEはONになりませんが発生しています。

現実に最新2.23でも発生し続けていますし、Alt+@になっていたなら文字として"@"が入力されるはずがありません。

C#なのにKEYEVENTF_UNICODEなSendInputを使っている理由は、SendKeys.Sendが間違ったキーを発行する場合があるのを回避するためで、例えばキャレット(いわゆるべき乗記号"^")を送ろうとするとアンパサンド(アンド記号"&")になります。

言語或いはキーボード依存なのか、他にもあるのでしょう、きっと。それで8種類の文字を決め打ちでSendInput送りにしています。判別しているのはKeePass.Util.SendInputEx.OSSendKeysWindowsで、そこに2.18から"@"が追加されています。

簡単な回避法としてWshShellオブジェクトのSendKeysを使う手があるそうな。本気でやるにはVkKeyScanExとSendInputですが、元々KeePassはDirectInput対応などは考慮していないソフトですから、WshShellでいいのでしょう。

トラックバック(0)

トラックバックURL: http://mychro.mydns.jp/cgi-bin/mt/mt-tb.cgi/386

コメントする

アーカイブ

ウェブページ

Powered by Movable Type 5.2.13

ホームページ