夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

KeyCastOWで入力モード切替キーを押した際の検知を行う

本日は前回導入したKeyCastOWの改造を行います。

redhologerbera.hatenablog.com

〇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にはユーザー設定の保存項目があるため本来はユーザー自身で辞書を定義するように実装すべきです。

この辺りは将来的に修正していきたいと思います。

本日は以上です。