xbindkeys はカーソルを右または左キーにバインドします。

xbindkeys はカーソルを右または左キーにバインドします。

カーソルが右または左に移動するたびに、オペレーティングシステムが右または左ボタンを押すと解釈するようにマウスをプログラムしたいと思います。左右のカーソルに対応するマウスイベントとxbindkeysに使用される構文は何ですか(正しいツールのようです)。

xev -event mouseMotionNotify イベントを使用すると、カーソル移動が提供されることを確認できます。どのような方法でこのイベントを受信して​​右/左ボタンを押すことができますか?

ベストアンサー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)

おすすめ記事