カーソルが右または左に移動するたびに、オペレーティングシステムが右または左ボタンを押すと解釈するようにマウスをプログラムしたいと思います。左右のカーソルに対応するマウスイベントとxbindkeysに使用される構文は何ですか(正しいツールのようです)。
xev -event mouse
MotionNotify イベントを使用すると、カーソル移動が提供されることを確認できます。どのような方法でこのイベントを受信して右/左ボタンを押すことができますか?
答え1
このPythonスクリプトはフラット入力パッケージが意図した目標を達成しました。
import time
from pynput import mouse, keyboard
from pynput.keyboard import Key, Controller
keyboard = Controller()
prevX = -1
def on_move(x, y):
global prevX
if prevX == -1:
prevX = x
elif prevX < x:
keyboard.press(Key.right)
keyboard.release(Key.right)
elif prevX > x:
keyboard.press(Key.left)
keyboard.release(Key.left)
if prevX != x:
prevX = x
listener = mouse.Listener(
on_move=on_move)
listener.daemon = True
listener.start()
while True:
time.sleep(1)
特定の方向で特定の数のマウスイベントの後にのみキーを押すように調整します。
import time
from pynput import mouse, keyboard
from pynput.keyboard import Key, Controller
keyboard = Controller()
sensitivity = 20 # number of events to trigger key press
prevX = -1
leftEvents = 0
rightEvents = 0
def on_move(x, y):
global prevX
global leftEvents
global rightEvents
if prevX == -1:
prevX = x
elif prevX < x:
rightEvents += 1
leftEvents = 0
elif prevX > x:
leftEvents += 1
rightEvents = 0
if rightEvents == sensitivity:
keyboard.press(Key.right)
keyboard.release(Key.right)
rightEvents = 0
if leftEvents == sensitivity:
keyboard.press(Key.left)
keyboard.release(Key.left)
leftEvents = 0
if prevX != x:
prevX = x
listener = mouse.Listener(
on_move=on_move)
listener.daemon = True
listener.start()
while True:
time.sleep(1)