IME のオン・オフを分かりやすくするアドオン

オフのときは青
http://farm3.static.flickr.com/2200/2277193230_e06c8a7689.jpg
オンのときは赤になる
http://farm3.static.flickr.com/2249/2276400687_f13d55522a.jpg


Mozilla Firefox用拡張 IME and DiMENSiON (Rhapsody in Blue (w/z IME and DiMENSiON))
Portable Firefox でも使えるらしい。若干手間がかかるようだが。
IME and DiMENSiON w/z Portable Firefox (Rhapsody in Blue (w/z IME and DiMENSiON))


IME の ON/OFF 時のカーソルの色を変更 - gan2 の Ruby 勉強日記Meadow(Emacs) だったけど今回のはその Firefox 版って感じ。
IME がオンなのかオフなのか分からなくなった経験は、たぶん誰にでもあるんじゃないだろうか。
Meadow でキャレット*1の色が変わるようにしたらずいぶん使いやすくなったので、他のアプリでもできないかなーと思ったのがきっかけ。


Windows のほとんどのアプリでは、SetCaretColor - FrownWikiで紹介されている SetCareColor を使うことでキャレットの色を自分好みのものにカスタマイズすることができる。
ちなみにキャレットの幅もカスタマイズできる。素晴らしい!
でも Firefox は独自にキャレットを描画しているらしく、SetCareColor では対応できていなかった*2
で、Firefox の使用頻度はまあいっかーであきらめられるほど少なくはなかったので、別の方法を探してみたら上記のアドオンに辿り着いたというわけ。
最初はキャレットの色を変更する方法を探していたのだけど、背景色が変わるのでも本質的には変わらないのでいいかなといった感じ。


このアドオン、IME and DiMENSiON は IME がオフのときは背景が青に、オンのときは赤になるのがデフォルトの設定だ。
デフォルトと言ったのは、たぶんアドオンをばらして自分でソースを書き替えればカスタマイズも可能だと思うからだ。
でもそれはちょっとめんどくさそうだったので、Meadow や SetCareColor の設定を変更して、青赤に対応させようと考えた。


Meadow は簡単だった。
IME の ON/OFF 時のカーソルの色を変更 - gan2 の Ruby 勉強日記の設定をほんの少し書き替えただけで OK だった。

;;; IME の ON/OFF 時のカーソルの色を変更
(add-hook 'mw32-ime-on-hook
          (function (lambda () (set-cursor-color "red"))))
(add-hook 'mw32-ime-off-hook
          (function (lambda () (set-cursor-color "blue"))))

キャレットの色は薄めの青や赤にすると見辛かったので、ベタな青赤にすることにした。


問題は SetCareColor の方だ。
いや、正確には Windows のキャレットの仕様だ。
SetCareColor は付属の ini ファイルでカスタマイズができる。
設定ファイルの内容はすごく分かりやすい。
色の設定の該当箇所だけ抜き出すとこんな感じ。

[Close]	;IMEが閉じられている時の設定
r=0
g=0
b=255
MinWidth=6

[Open]	;IMEが開いている時の設定
r=255
g=0
b=0
MinWidth=6

MinWidth は Meadow のキャレット(ポイント)の幅がそのくらいだったので合わせてみた。
そして色の設定もこれでばっちり青赤で問題ない。
と思っていたのだけど、どうやら Windows では、背景の色によってキャレットの色が変わってしまうらしい。
上記の設定は背景が白のときは意図した通りの青赤が表示されるが、黒だと全然違う色になってしまう。
2ch から得た情報によると、背景色とキャレットの色とで XOR を取ってるんじゃないかということ。
なるほど。たしかにそんな感じだ。
こんなことがなければ、サクラエディタの背景が微妙なオレンジだってことに一生気付かなかったかもしれない。
んで、これの解決策は、各アプリケーションごとに背景の色を白にするしかないみたい。
できれば XOR を取らないようにしたいところなんだけどそれは無理っぽい(´・ω・`)


あ、そうだ。
SetCaretColor よりもなまずIMEを先に見付けたんだった。
これは AutoHotKeyスクリプト。exe 版もある。
だけどなぜか僕の環境だと動かなかった。
IME じゃなくて SKKIME なのが原因かな?と思ってたけど、なんかそうでもなさそうだなぁ。
また気が向いたときにでも調査したい。

*1:カーソルではなくこう呼ぶらしい。Emacs でいうポイントのこと。いやポイントっていうとまたそれはちょっと違ってきちゃうのだけども。

*2:あと Thunderbird や Word もダメらしい。Thunderbird はともかく Word もダメとはちょっと意外。