python pynput监听键盘_做了个python3 pynput 监控鼠标键盘操作并回放的模块

importpynputimporttimeimportreimportthreadingclassControlMouseKeyboard(object):

mouse=pynput.mouse.Controller()

keyboard=pynput.keyboard.Controller()

mouse_listener=None

keyboard_listener=None

mouse_keyboard_move=[]

time_order=[]

default_keys={'Key.alt': pynput.keyboard.Key.alt,'Key.alt_l': pynput.keyboard.Key.alt_l,'Key.alt_r': pynput.keyboard.Key.alt_r,'Key.alt_gr': pynput.keyboard.Key.alt_gr,'Key.backspace': pynput.keyboard.Key.backspace,'Key.caps_lock': pynput.keyboard.Key.caps_lock,'Key.cmd': pynput.keyboard.Key.cmd,'Key.cmd_l': pynput.keyboard.Key.cmd_l,'Key.cmd_r': pynput.keyboard.Key.cmd_r,'Key.ctrl': pynput.keyboard.Key.ctrl,'Key.ctrl_l': pynput.keyboard.Key.ctrl_l,'Key.ctrl_r': pynput.keyboard.Key.ctrl_r,'Key.delete': pynput.keyboard.Key.delete,'Key.down': pynput.keyboard.Key.down,'Key.end': pynput.keyboard.Key.end,'Key.enter': pynput.keyboard.Key.enter,'Key.esc': pynput.keyboard.Key.esc,'Key.f1': pynput.keyboard.Key.f1,'Key.f2': pynput.keyboard.Key.f2,'Key.f3': pynput.keyboard.Key.f3,'Key.f4': pynput.keyboard.Key.f4,'Key.f5': pynput.keyboard.Key.f5,'Key.f6': pynput.keyboard.Key.f6,'Key.f7': pynput.keyboard.Key.f7,'Key.f8': pynput.keyboard.Key.f8,'Key.f9': pynput.keyboard.Key.f9,'Key.f10': pynput.keyboard.Key.f10,'Key.f11': pynput.keyboard.Key.f11,'Key.f12': pynput.keyboard.Key.f12,'Key.f13': pynput.keyboard.Key.f13,'Key.f14': pynput.keyboard.Key.f14,'Key.f15': pynput.keyboard.Key.f15,'Key.f16': pynput.keyboard.Key.f16,'Key.f17': pynput.keyboard.Key.f17,'Key.f18': pynput.keyboard.Key.f18,'Key.f19': pynput.keyboard.Key.f19,'Key.f20': pynput.keyboard.Key.f20,'Key.home': pynput.keyboard.Key.home,'Key.left': pynput.keyboard.Key.left,'Key.page_down': pynput.keyboard.Key.page_down,'Key.page_up': pynput.keyboard.Key.page_up,'Key.right': pynput.keyboard.Key.right,'Key.shift': pynput.keyboard.Key.shift,'Key.shift_l': pynput.keyboard.Key.shift_l,'Key.shift_r': pynput.keyboard.Key.shift_r,'Key.space': pynput.keyboard.Key.space,'Key.tab': pynput.keyboard.Key.tab,'Key.up': pynput.keyboard.Key.up,'Key.insert': pynput.keyboard.Key.insert,'Key.menu': pynput.keyboard.Key.menu,'Key.num_lock': pynput.keyboard.Key.num_lock,'Key.pause': pynput.keyboard.Key.pause,'Key.print_screen': pynput.keyboard.Key.print_screen,'Key.scroll_lock': pynput.keyboard.Key.scroll_lock

}defset_mouse_coordinates(self, x, y):#设置鼠标坐标

self.mouse.position =(x, y)defmouse_move_scroll(self, x, y):#鼠标滚轮

self.mouse.scroll(x, y) #滚动鼠标

defmouse_move(self, x, y):#监听鼠标移动

happen_time =time.time()

self.time_order.append(happen_time)

time_index=self.time_order.index(happen_time)if time_index !=0:

sleep_time= happen_time - self.time_order[time_index - 1]else:

sleep_time=0

self.mouse_keyboard_move.append((x, y, sleep_time))defmouse_right_click(self, x, y, key, state):

happen_time=time.time()

self.time_order.append(happen_time)

time_index=self.time_order.index(happen_time)if time_index !=0:

sleep_time= happen_time - self.time_order[time_index - 1]else:

sleep_time=0

self.mouse_keyboard_move.append((x, y, key, state, sleep_time))defmouse_click(self, x, y, button, pressed):#监听鼠标点击

ifpressed:if button ==pynput.mouse.Button.left:

self.mouse_right_click(x, y,'left', 'pressed')elif button ==pynput.mouse.Button.middle:

self.mouse_right_click(x, y,'middle', 'pressed')elif button ==pynput.mouse.Button.right:

self.mouse_right_click(x, y,'right', 'pressed')else:if button ==pynput.mouse.Button.left:

self.mouse_right_click(x, y,'left', 'release')elif button ==pynput.mouse.Button.middle:

self.mouse_right_click(x, y,'middle', 'release')elif button ==pynput.mouse.Button.right:

self.mouse_right_click(x, y,'right', 'release')defmouse_scroll(self, x, y, dx, dy):#监听鼠标滚轮

happen_time =time.time()

self.time_order.append(happen_time)

time_index=self.time_order.index(happen_time)if time_index !=0:

sleep_time= happen_time - self.time_order[time_index - 1]else:

sleep_time=0

self.mouse_keyboard_move.append((x, y,'middle', dx, dy * 50, sleep_time))deflistener_mouse(self):#监听鼠标、键盘

self.mouse_listener = pynput.mouse.Listener(on_move=self.mouse_move, on_click=self.mouse_click,

on_scroll=self.mouse_scroll)

self.keyboard_listener= pynput.keyboard.Listener(on_press=self.keyboard_input_press,

on_release=self.keyboard_input_release)

self.mouse_listener.start()

self.keyboard_listener.start()

self.mouse_listener.join()

self.keyboard_listener.join()return

def keyboard_input_press(self, key): #按键按下

happen_time =time.time()

self.time_order.append(happen_time)

time_index=self.time_order.index(happen_time)if time_index !=0:

sleep_time= happen_time - self.time_order[time_index - 1]else:

sleep_time=0

self.mouse_keyboard_move.append((str(key), True, sleep_time))def keyboard_input_release(self, key): #按键释放

happen_time =time.time()

self.time_order.append(happen_time)

time_index=self.time_order.index(happen_time)if time_index !=0:

sleep_time= happen_time - self.time_order[time_index - 1]else:

sleep_time=0

self.mouse_keyboard_move.append((str(key), False, sleep_time))if key ==pynput.keyboard.Key.esc:

self.stop_listener_keyoard()

with open('aa.txt', "w") as f:for i inself.mouse_keyboard_move:

f.write(str(i)+ '\n')

f.close()defstop_listener_keyoard(self):

pynput.keyboard.Listener.stop(self.keyboard_listener)

pynput.mouse.Listener.stop(self.mouse_listener)defclick_mouse_press(self, x, y, keys):

self.set_mouse_coordinates(x, y)if keys == 'left':

self.mouse.press(pynput.mouse.Button.left)elif keys == 'right':

self.mouse.press(pynput.mouse.Button.right)elif keys == 'middle':

self.mouse.press(pynput.mouse.Button.middle)defclick_mouse_release(self, x, y, keys):

self.set_mouse_coordinates(x, y)if keys == 'left':

self.mouse.release(pynput.mouse.Button.left)elif keys == 'right':

self.mouse.release(pynput.mouse.Button.right)elif keys == 'middle':

self.mouse.release(pynput.mouse.Button.middle)defplayback(self):

with open('aa.txt', "r") as f:for line inf.readlines():

double_list= re.findall(r'[A-Za-z0-9._/;\[\]\\\=\-\`]+', line)print(double_list)if 'pressed' inline:

time.sleep(float(double_list[4]))

self.click_mouse_press(int(double_list[0]), int(double_list[1]), double_list[2])elif 'release' inline:

time.sleep(float(double_list[4]))

self.click_mouse_release(int(double_list[0]), int(double_list[1]), double_list[2])elif 'middle' inline:

time.sleep(float(double_list[5]))

self.mouse_move_scroll(int(double_list[3]), int(double_list[4]))elif 'Key' inline:if 'Key.esc' inline:pass

else:if 'True' inline:

self.keyboard_press_key(self.default_keys[double_list[0]])if 'False' inline:

self.keyboard_release_key(self.default_keys[double_list[0]])else:if 'True' inline:

self.keyboard_press_key(double_list[0])elif 'False' inline:

self.keyboard_release_key(double_list[0])else:

time.sleep(0.005)

self.set_mouse_coordinates(int(double_list[0]), int(double_list[1]))defkeyboard_press_key(self, word):

self.keyboard.press(word)#按下

defkeyboard_release_key(self, word):

self.keyboard.release(word)#松开

deflistener_all(self):

thread_obj= threading.Thread(target=A.listener_mouse)

thread_obj.start()if __name__ == '__main__':

A=ControlMouseKeyboard()#A.listener_all()

#A.playback()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值