マウスイベントのフィルタリング

マウスイベントのフィルタリング

私は直面していますこれマウスに問題があります。私の特別なケースでは、実際のイベントが発生し、100ミリ秒も経過せず、重複クリックイベントが発生しました。すべてのマウスイベントが私が作成したプログラムを通過し、特定のイベントを削除できるように、ディスプレイサーバー用のイベントフィルタを作成できますか?私はXディスプレイサーバーと素晴らしいwmを使用しています。

ベストアンサー1

カーネル入力レイヤーでこれを行います。このuinputデバイスを使用すると、入力層イベントを生成するユーザー空間プログラムを作成できます。このオプションを使用してマウス入力デバイスをオンにすると(実行間で正しく認識されることを確認)、生の/dev/input/by-idイベントはX以外のプログラムに具体的に送信されます。 X evdevドライバは自動的に新しいデバイスを選択します。/dev/input/by-pathgrab

ここ例Cプログラムは次のとおりです。Pythonライブラリピピ)Pythonを好むなら、他のプログラミング言語用のライブラリも好きです。ドキュメントやその他のサンプルプログラムは、Googleで簡単に検索できます。


python-uinputからコピーした使用例:

キーボードクリック音の生成

import uinput

with uinput.Device([uinput.KEY_E, uinput.KEY_H,
                    uinput.KEY_L, uinput.KEY_O]) as device:
    device.emit_click(uinput.KEY_H)
    device.emit_click(uinput.KEY_E)
    device.emit_click(uinput.KEY_L)
    device.emit_click(uinput.KEY_L)
    device.emit_click(uinput.KEY_O)

マウスカーソルの移動

import uinput

with uinput.Device([uinput.REL_X, uinput.REL_Y,
                    uinput.BTN_LEFT, uinput.BTN_RIGHT]) as device:
    for i in range(20):
        device.emit(uinput.REL_X, 5)
        device.emit(uinput.REL_Y, 5)

キーボードコンビネーション

import uinput

with uinput.Device([uinput.KEY_LEFTALT, uinput.KEY_TAB]) as device:
    device.emit_combo([uinput.KEY_LEFTALT, uinput.KEY_TAB])

おすすめ記事