本日は前回導入したKeyCastOWの改造を行います。
〇KeyCastOWとは?
KeyCastOWはPCの画面上にキー入力、マウスの入力を検知して画面上にオーバーレイするアプリケーションです。
特徴としてOBSなどの別ソフトの依存がなく、オフラインでも軌道できるオープンソースで公開されているプロジェクトです。
exeファイルの形で公開されておらず、使用するためには自身でビルドをする必要がありますが、前回UTF-8でコンパイルされるようにオプションを付け日本語にも対応するようにしました。
今回は日本語のキーボード特有のキーである入力モード切替キーの検知を表示させていきます。
〇KeyCastOWのキー定義
KeyCastOW
ではいくつかのファイルで構成されていますがキータイプを検知したときに表示するデータが定義されているファイルはkeylog.cpp
になります。
keylog.cpp
では次のようにキーのIDと表示される名前が定義されいます。
・・・ struct Key { int val; LPCWSTR label; }; struct Key specialKeys[] = { {0x08, L"Backspace"}, // back {0x09, L"Tab"}, ・・・ {0xFA, L"PLAY"}, {0xFB, L"ZOOM"}, {0xFC, L"NONAME"}, {0xFD, L"PA1"}, {0xFE, L"OEM_CLEAR"} }; ・・・
すべてのキーは16進数でどのキーが打たれたかが取得できるようになっており、KeyValueの形で定義されています。
筆者の所有するPCの場合入力モード切替キーは日本語モード時に0xF3、アルファベット入力モード時に0xF4であったためここにこの二つを定義した。
日本語のキーボードで0xF3
つまり次のような定義を追加します。
{0xF3, L"Input Mode Jpn"}, {0xF4, L"Input Mode Eng"},
これによって入力モード切替キーが打たれた時、日本語入力モードへの変化時にはInput Mode Jpn、アルファベット入力モード時はInput Mode Engが表示されるようになります。
しかしながらこういった特殊キーについてはシステムによってIDの割り当てが異なる場合があります。
筆者環境ではうまく動きましたが、KeyCastOWにはユーザー設定の保存項目があるため本来はユーザー自身で辞書を定義するように実装すべきです。
この辺りは将来的に修正していきたいと思います。
本日は以上です。