2017-01-17 10 views
0

, поэтому я пытаюсь создать короткий скрипт в Python. Что я хочу сделать, так это то, что если щелкнуть мышью, мышь вернется к произвольной позиции (прямо сейчас в середине экрана). Я бы хотел, чтобы это запустилось в фоновом режиме, чтобы оно могло работать в ОС (скорее всего, Chrome или какой-то веб-браузер). Мне также понравится, чтобы пользователь мог удерживать определенную кнопку (например, ctrl), и они могли щелкнуть и не иметь сброса позиции. Таким образом, они могли закрыть сценарий без разочарования.Python Проверьте, была ли нажата мышь

Я уверен, что знаю, как это сделать, но я не уверен, какую библиотеку использовать. Я бы предпочел, если бы это была кросс-платформа или, по крайней мере, Windows + Mac. Вот мой код до сих пор:

#! python3 
# resetMouse.py - resets mouse on click - usuful for students with 
# cognitive disabilities. 

import pymouse 

width, height = m.screen_size() 
midWidth = (width + 1)/2 
midHeight = (height + 1)/2 

m = PyMouse() 
k = PyKeyboard() 


def onClick(): 
    m.move(midWidth, midHeight) 


try: 
    while True: 
     # if button is held down: 
      # continue 
     # onClick() 
except KeyboardInterrupt: 
    print('\nDone.') 

ответ

1

Я был в состоянии заставить его работать только с WIN32API. Он работает при нажатии на любое окно.

import win32api 
import time 

width = win32api.GetSystemMetrics(0) 
height = win32api.GetSystemMetrics(1) 
midWidth = int((width + 1)/2) 
midHeight = int((height + 1)/2) 

state_left = win32api.GetKeyState(0x01) # Left button down = 0 or 1. Button up = -127 or -128 
while True: 
    a = win32api.GetKeyState(0x01) 
    if a != state_left: # Button state changed 
     state_left = a 
     print(a) 
     if a < 0: 
      print('Left Button Pressed') 
     else: 
      print('Left Button Released') 
      win32api.SetCursorPos((midWidth, midHeight)) 
    time.sleep(0.001) 
0

Я был в состоянии заставить его работать на Windows, используя pyHook и WIN32API:

import win32api, pyHook, pythoncom 

width = win32api.GetSystemMetrics(0) 
height = win32api.GetSystemMetrics(1) 
midWidth = (width + 1)/2 
midHeight = (height + 1)/2 

def moveCursor(x, y): 
    print('Moving mouse') 
    win32api.SetCursorPos((x, y)) 

def onclick(event): 
    print(event.Position) 
    moveCursor(int(midWidth), int(midHeight)) 
    return True 

try: 
    hm = pyHook.HookManager() 
    hm.SubscribeMouseAllButtonsUp(onclick) 
    hm.HookMouse() 
    pythoncom.PumpMessages() 
except KeyboardInterrupt: 
    hm.UnhookMouse() 
    print('\nDone.') 
    exit()