2 回答

TA贡献1845条经验 获得超8个赞
您可以合并两者而不会弄乱模块文件:
1)mouse.hook()用于记录事件而无需等待(就像它发生的那样mouse.record())。它接受一个函数并将该事件返回给它。
2) 使用keyboard.wait(key)等待按键被按下
3) 使用mouse.unhook()停止录音。
这是一个示例代码:
import mouse
import keyboard
events = [] #This is the list where all the events will be stored
mouse.hook(events.append) #starting the recording
keyboard.wait("a") #Waiting for 'a' to be pressed
mouse.unhook(events.append) #Stopping the recording

TA贡献1803条经验 获得超6个赞
您还可以使用线程将键盘和鼠标连接在一起。以下代码将记录鼠标事件和键盘事件,然后回放。您可以通过按 Escape 按钮停止监视。
import threading
import mouse
import keyboard
def monitorMouseKeyboardEvents():
#These are the list where all the events will be stored
mouse_events = []
keyboard_events = []
#Start recording
mouse.hook(mouse_events.append) #starting the mouse recording
# keyboard.hook(lambda _: keyboard_events.append(_))
keyboard.start_recording()
keyboard.wait("esc") #Waiting for 'Esc' button to be pressed
#Stopping recording
mouse.unhook(mouse_events.append)
# keyboard.unhook(keyboard_events.append)
keyboard_events = keyboard.stop_recording()
return mouse_events, keyboard_events
def playMouseMouseKeyboardEvents(mouse_events, keyboard_events):
'''
Playing the recorded events at the same time
'''
k_thread = threading.Thread(target = lambda :keyboard.play(keyboard_events))
k_thread.start()
#Mouse threadings:
m_thread = threading.Thread(target = lambda :mouse.play(mouse_events))
m_thread.start()
#waiting for both threadings to be completed
k_thread.join()
m_thread.join()
if __name__ == "__main__":
mouse_events, keyboard_events=monitorMouseKeyboardEvents()
playMouseMouseKeyboardEvents(mouse_events, keyboard_events)
添加回答
举报