0

KeyPress および KeyRelease イベントでキーボード入力を取得するコードを開発していますが、プログラムを実行しても何も起こりません。コードの何が問題なのですか? 押されたキーの値を取得する方法は?

void hook()
{
    forever
    {
        XEvent event;
        Display *dpy = XOpenDisplay(NULL);
        XNextEvent(dpy, &event);
        switch (event.type)
        {
        case KeyPress:
            qDebug() << "keypress";
            break;
        case KeyRelease:
            qDebug() << "keyrelease";
            break;
        }
    }
}
4

1 に答える 1

1

キーボードX11イベントの詳細をご覧ください。そのウィンドウがイベントマスクKeyPressMaskにまたはKeyReleaseMaskビットを設定している場合、それらは一部のX11ウィンドウからのみ取得されます。そして、そのウィンドウを作成するか、 InputOnlyInputOutput

どうやらQtを使用しているようです(これは良い考えです)。次に、Qtキーイベントに固執します。

(すべてのX11キーイベントをキャッチする場合は、ディスプレイのルートウィンドウを使用します。ただし、ウィンドウマネージャーに干渉しているため、これは悪い考えです。ICCCMEWMHの詳細をご覧ください)

また、xev-ターミナルで-を実行して、X11イベントについて詳しく理解します。

于 2013-02-03T09:35:03.730 に答える