私は直面していますこれマウスに問題があります。私の特別なケースでは、実際のイベントが発生し、100ミリ秒も経過せず、重複クリックイベントが発生しました。すべてのマウスイベントが私が作成したプログラムを通過し、特定のイベントを削除できるように、ディスプレイサーバー用のイベントフィルタを作成できますか?私はXディスプレイサーバーと素晴らしいwmを使用しています。
ベストアンサー1
カーネル入力レイヤーでこれを行います。このuinput
デバイスを使用すると、入力層イベントを生成するユーザー空間プログラムを作成できます。このオプションを使用してマウス入力デバイスをオンにすると(実行間で正しく認識されることを確認)、生の/dev/input/by-id
イベントはX以外のプログラムに具体的に送信されます。 X evdevドライバは自動的に新しいデバイスを選択します。/dev/input/by-path
grab
ここ例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])