2017-01-17 7 views
0

です。私はPythonで短いスクリプトを作成しようとしています。私がしたいのは、マウスをクリックすると、マウスが任意の位置(画面の真ん中)にリセットされるということです。私はこれをバックグラウンドで実行したいので、OS(おそらくChrome、または一部のWebブラウザ)で動作します。また、ユーザーが特定のボタン(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

私はそれがpyHookとのWin32APIを使用してWindowsのために働くことができました:

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() 
関連する問題