这篇文章将为大家详细讲解有关Python监控键盘按什么键的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

Python如何监控键盘按了什么键

1、安装pynput

pipinstallpynput#condaorpy3

2、程序功能介绍

这个程序是为了实现监听键盘操作,记录键盘输入的值,获取

1 击键行为特征:

第一个键释放到第二个键按下的时间

第一个键按下到第二个键释放的时间

按下一个键盘到释放的时间

2 停顿特征:

停顿是两次敲击键盘是时间差超过规定的停顿阈限,根据已有的研究,这里将停顿阈限定为 2s。本文提取停顿次数、最长停顿、停顿位置等特征。

示例代码:

#-*-coding:utf-8-*-ahelloworldimportsys,osfrompynput.keyboardimportController,Key,Listenerfrompynputimportkeyboardimporttime#fromtkinterimport*start=time.time()end=time.time()fun_start=0time_interval=0index=0dict={'interval_times':0,'max_interval':0.,'interval_location':[]}count=0count_dict={'first_time':0.,'first_p_to_second_r':0.}keyBoard_dict={'Key.enter':'\n','Key.space':'',"Key.tab":'\t'}#比较按键生成的两个txt文件,这里主要是为了实现当退格键按下后,#对比退格前后文本的差异,这里可以自己延伸defcom_str(path,file1,file2):path2=os.path.join(path,file1)path3=os.path.join(path,file2)withopen(path2,'r',encoding='utf-8')asf:file1=f.readlines()content1=[str.strip().split()forstrinfile1]withopen(path3,'r',encoding='utf-8')asf:file2=f.readlines()content2=[str.strip().split()forstrinfile2]#print("content1:",content1)#print("content2:",content2)str1=[]str2=[]forsub_listincontent1:str1.extend(sub_list)forsub_listincontent2:str2.extend(sub_list)#print("thestr1:",str1,"thelength:",len(str1))#print("thestr2:",str2,"thelength:",len(str2))origanl_len=len(str1)print("extend",origanl_len)iflen(str1)>len(str2):str2.extend(['']*(len(str1)-len(str2)))eliflen(str1)<len(str2):str1.extend(['']*(len(str2)-len(str1)))index=0indexs=[]count=0fori,jinzip(str1,str2):ifi!=j:indexs.append(index)count+=1ifindex<origanl_len-1:print("thebefore...")else:print("theafter...")index+=1ifcount==1:print("single...")elifcount>1:print("thesentence...")#得到键入的值defget_key_name(key):ifisinstance(key,keyboard.KeyCode):withopen(r'C:\Users\admin\Desktop\key_record.txt','a',encoding='utf-8')asf:f.write(key.char)withopen(r'C:\Users\admin\Desktop\key_record1.txt','a',encoding='utf-8')asf:f.write(key.char)returnkey.charelse:ifstr(key)in['Key.enter','Key.space','Key.tab']:withopen(r'C:\Users\admin\Desktop\key_record.txt','a',encoding='utf-8')asf:f.write(keyBoard_dict[str(key)])withopen(r'C:\Users\admin\Desktop\key_record1.txt','a',encoding='utf-8')asf:f.write(keyBoard_dict[str(key)])ifstr(key)in['Key.backspace']:com_str(r'C:\Users\admin\Desktop','key_record.txt','key_record1.txt')returnstr(key)#监听按压defon_press(key):globalfun_start,time_interval,index,dict,count,count_dictfun_start=time.time()ifcount==0:count_dict['first_time']=fun_startifindex==0orindex==1:time_interval=fun_start-startifindex==1andtime_interval>2.:#停顿位置dict["interval_location"].append(key)#停顿次数dict['interval_times']+=1#最长停顿dict['max_interval']=time_intervaliftime_interval>dict['max_interval']elsedict['max_interval']index+=1print("正在按压:",get_key_name(key))#监听释放defon_release(key):globalstart,fun_start,time_interval,index,count,count_dictcount+=1ifcount==2:#第一个键按下到第二个键释放的时间count_dict['first_p_to_second_r']=time.time()-count_dict['first_time']count=0#按下一个键盘到释放的时间print("theintervalbetweenfirstpressandrelease:",time.time()-start-time_interval)start=time.time()index=1print("已经释放:",get_key_name(key))ifkey==Key.esc:#停止监听returnFalse#开始监听defstart_listen():withListener(on_press=on_press,on_release=on_release)aslistener:listener.join()if__name__=='__main__':#开始监听,按esc退出监听start_listen()print(dict)

关于Python监控键盘按什么键的方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。