すべてのイベントを取得するには
最後の問題として挙げていた件ですが…
通常のアプリケーションとしては、特殊なキー(例えば「全角/半角キー」とか「Windowsキー」)はあまり扱う必要はないのですが、リモートでPCを操作しようとする今回の場合すべてのキーを扱う必要があります。
先人たちの知恵を頼りに早速googleさんで検索してみました。
どうやら仮想関数eventFilter()を実装してQApplicationのインスタンスにイベントフィルタとして登録(install)すればいいみたいですね。
virtual bool eventFilter(QObject *obj, QEvent *event);
イベントフィルターということなので、すべてのイベント(キー、マウスなど)が起こる度にこの関数が呼ばれるみたいです。ということは、今までデバイスの種類(キーボード/マウス)とイベントの種類(キーが押された/離された、マウスのボタンが押された、など)で別々な関数を書いていたのを1つにまとめる必要がありそうです。
これで取り敢えず見えている問題は解決できそうです。
あとはドキュメント作りもあるか…USキーボードも…インストーラ環境の確認(EXEpress6)も…
(追記)
QApplicationのインスタンスにイベントフィルタを登録しても、「全角/半角」、「ひらがな/カタカナ」、「変換」、「左右のWindows」の各キーイベントは取得できないようです…無変換キーだけは取得できますが…
これ以上だとQApplicationのサブクラスを作って、notify()関数をオーバライドする手段しかなさそうです。
« 「ブリュンヒルデ零式改」をVS2013 for Desktopで作ってみます その2 | トップページ | 「ブリュンヒルデ零式改」をVS2013 Expressで作ってみます その3 »
« 「ブリュンヒルデ零式改」をVS2013 for Desktopで作ってみます その2 | トップページ | 「ブリュンヒルデ零式改」をVS2013 Expressで作ってみます その3 »
コメント