Python: obtiene la entrada del mouse sin procesar
Quiero usar Python para leer datos sin procesar del mouse (por ejemplo, señal izquierda, señal derecha) independientemente del puntero del mouse. No quiero leer la posición del cursor, quiero leer los datos sin procesar, similar a como lo haría un juego. ¿Cómo puedo hacer eso? No puedo encontrar ninguna biblioteca que lo admita.
Estoy usando Windows.
Editar: Para aclarar, cuando dije "señal izquierda y señal derecha", me refería al movimiento del mouse , no a los clics del mouse. Edición 2: Creo que la terminología es que quiero el "delta del mouse". Así es como la gente lo hizo en autohotkey -https://www.autohotkey.com/boards/viewtopic.php?t=10159 - pero lo quiero en Python.
Edición 3: Debo mencionar que esto es en un juego que restablece constantemente la posición del puntero, por lo que no puedo usar la diferencia en la posición del puntero. Por eso quiero una API de nivel inferior.
Respuestas
Obtenga la posición del mouse y compare dos eventos. Si el valor del eje x aumenta, el mouse se mueve hacia la derecha, si el valor del eje x disminuye, el mouse se mueve hacia la izquierda:
from pynput.mouse import Listener
last_position = None
def on_move(x, y):
global last_position
if last_position:
if x > last_position:
print('mouse moved right')
elif x < last_position:
print('mouse moved left')
last_position = x
with Listener(on_move=on_move) as listener:
listener.join()
Siempre puede comparar constantemente la posición que fácilmente le hubiera dado un delta. Cualquier API de nivel inferior tendrá que codificar un controlador de mouse usted mismo, que es lo que hacen los desarrolladores de juegos para evitar que las personas escriban scripts, que no es para lo que Python hizo.
import pyautogui
import time
while True:
prev_x, prev_y = pyautogui.position()
time.sleep(0.3)
curr_x, curr_y = pyautogui.position()
if (curr_x - prev_x) > 0:
print("move right")
else:
print("move left")