Python - получить необработанный ввод с мыши
Я хочу использовать Python для чтения необработанных данных с мыши (например, левый сигнал, правый сигнал) независимо от указателя мыши. Я не хочу читать позицию курсора, я хочу читать необработанные данные, как в игре. Как я могу это сделать? Я не могу найти библиотеки, которые его поддерживают.
Я использую винду.
Изменить: чтобы уточнить, когда я сказал «левый сигнал и правый сигнал», я имел в виду движение мыши , а не щелчки мышью. Редактировать 2: я считаю, что терминология заключается в том, что мне нужна «дельта мыши». Вот как люди это делали в autohotkey -https://www.autohotkey.com/boards/viewtopic.php?t=10159 - но я хочу это на Python.
Изменить 3: я должен упомянуть, что это в игре, которая постоянно сбрасывает положение указателя, поэтому я не могу использовать разницу в положении указателя. Вот почему мне нужен API более низкого уровня.
Ответы
Получите положение мыши и сравните два события. Если значение оси x увеличивается, мышь перемещается вправо, если значение оси x уменьшается, мышь перемещается влево:
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()
Вы всегда можете постоянно сравнивать позицию, которая легко дала бы вам дельту. Любой API нижнего уровня вам придется самостоятельно написать код драйвера мыши, что и делают разработчики игр, чтобы люди не писали сценарии, а Python не для этого.
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")