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)

관련 정보