ところが日本語を入力しようとしたらIMEがOFFだったり、逆に英文字を入力しようとしたらIMEがONになっていたりして、誤入力の修正でイライラしてきます(私だけ?)
IMEの状態は、小さなIMEのツールバーを確認しなければならないので面倒です。
そこで、PCにLEDを接続して、IMEの状態を光でお知らせするものを作りました。
LEDが光っていると必ず視界に入るため、視認性が非常に良くなります。
基本的に、下記の組み合わせで使います。
・LEDのON/OFFを制御するWindows側ソフトウェア
・LEDをシリアルポートに繋ぐハードウェア
Windows側ソフトはタスクトレイにもIMEの状態を表示しますので、とりあえずハードウェアを作らなくてもソフトウェアだけで使うこともできます。
接続イメージ
完成イメージ (DSUBシェルに組み込んでみた)
シリアルポートのDTRとRTSをHighにすると、そこから数mA程度の電源を取ることができます。
回路図中のダイオードは、できればショットキーダイオードを使うと電圧降下が少なく済みます。
シリアルポートから出力される電圧は、マザーボードは12V、USB-シリアル変換器は6V程度が多いようです。
あまり多くの電流を消費するとマザーボードやUSB-シリアル変換器を壊す可能性もありますので、電流制限抵抗は大きめにしました。
電流制限抵抗が2.2kΩあれば、大抵のLEDは12Vをかけても最大4mA程度で済みますので問題ないかと思います。
超高輝度のLEDなら4mA程度でもかなり明るいです。
1uFのセラミックコンデンサは念のため入れています。
Visual C++で作成しました。XPで動作確認しています。
ImeState.exeを起動すると、タスクトレイに下のようなアイコンが表示されます。
IMEがOFFの状態 (シリアルポート未接続のとき) | |
IMEがONの状態 (シリアルポート未接続のとき) | |
IMEがOFFの状態 (シリアルポート接続中のとき) | |
IMEがONの状態 (シリアルポート接続中のとき) |
タスクトレイのアイコンを右クリックすると、メニューが表示されます。
接続 | シリアルポート番号を選択して接続します。 |
設定 | 後述の設定画面が表示されます。 |
このプログラムについて | 著作権などが表示されます。 |
終了 | このプログラムを終了します。 |
設定画面では、いくつかの項目が設定できます。
IME状態の監視間隔 | IME状態を監視する間隔を設定します。 短い間隔にすると反応が良くなりますが、スペックが低めのPCだと処理が重くなるかもしれません。 |
LED接続ポート番号 | ここでデフォルトのシリアルポートが設定できます。 |
起動と同時にポートを開く | プログラムの起動時に、上記で設定したシリアルポートに自動で接続します。 |
ひとまずメモ帳などを起動して、IMEをON/OFFしてみてください。それに合わせてLEDもON/OFFします。
メモ帳のIMEをONにしたまま、他のウインドウに切り替えるとLEDがOFFになります。
最前面にあるウインドウの状態によってLEDがON/OFFすることを確認してください。
マザーボードのシリアルポートに接続している場合、Windowsの起動時に点滅する場合があります。
これは恐らくシリアルマウスなどが接続されているかOSが検出するためのものですので、防ぐことはできません。