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

1、安装pynputpip install pynput # conda or py3

2、程序功能介绍

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

1 击键行为特征:

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

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

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

2 停顿特征:

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

示例代码:# -*- coding: utf-8 -*-ahello world

import sys, os

from pynput.keyboard import Controller, Key, Listener

from pynput import keyboard

import time

# from tkinter import *

start=time.time()

end=time.time()

fun_start=0

time_interval=0

index=0

dict={'interval_times':0,'max_interval':0.,'interval_location':[]}

count=0

count_dict={'first_time':0.,'first_p_to_second_r':0.}

keyBoard_dict={'Key.enter':'\n',

'Key.space':' ',

"Key.tab":'\t'}

#比较按键生成的两个txt文件,这里主要是为了实现当退格键按下后,

#对比退格前后文本的差异,这里可以自己延伸

def com_str(path, file1, file2):

path1 = os.path.join(path, file1)

path2 = os.path.join(path, file2)

with open(path1, 'r', encoding='utf-8') as f:

file1 = f.readlines()

content1 = [str.strip().split() for str in file1]

with open(path2, 'r', encoding='utf-8') as f:

file2 = f.readlines()

content2 = [str.strip().split() for str in file2]

#print("content1:", content1)

#print("content2:", content2)

str1 = []

str2 = []

for sub_list in content1:

str1.extend(sub_list)

for sub_list in content2:

str2.extend(sub_list)

# print("the str1:", str1, "the length:", len(str1))

#print("the str2:", str2, "the length:", len(str2))

origanl_len = len(str1)

print("extend", origanl_len)

if len(str1) > len(str2):

str2.extend([' '] * (len(str1) - len(str2)))

elif len(str1)

str1.extend([' '] * (len(str2) - len(str1)))

index = 0

indexs = []

count = 0

for i, j in zip(str1, str2):

if i != j:

indexs.append(index)

count += 1

if index

print("the before...")

else:

print("the after...")

index += 1

if count == 1:

print("single...")

elif count>1:

print("the sentence...")

#得到键入的值

def get_key_name(key):

if isinstance(key, keyboard.KeyCode):

with open(r'C:\Users\admin\Desktop\key_record.txt','a',encoding='utf-8') as f:

f.write(key.char)

with open(r'C:\Users\admin\Desktop\key_record1.txt','a',encoding='utf-8') as f:

f.write(key.char)

return key.char

else:

if str(key) in ['Key.enter','Key.space','Key.tab']:

with open(r'C:\Users\admin\Desktop\key_record.txt', 'a',encoding='utf-8') as f:

f.write(keyBoard_dict[str(key)])

with open(r'C:\Users\admin\Desktop\key_record1.txt', 'a',encoding='utf-8') as f:

f.write(keyBoard_dict[str(key)])

if str(key) in ['Key.backspace']:

com_str(r'C:\Users\admin\Desktop','key_record.txt','key_record1.txt')

return str(key)

# 监听按压

def on_press(key):

global fun_start,time_interval,index,dict,count,count_dict

fun_start = time.time()

if count == 0:

count_dict['first_time'] = fun_start

if index == 0 or index == 1:

time_interval = fun_start - start

if index == 1 and time_interval > 2.:

#停顿位置

dict["interval_location"].append(key)

#停顿次数

dict['interval_times'] += 1

#最长停顿

dict['max_interval'] = time_interval if time_interval > dict['max_interval'] else dict['max_interval']

index += 1

print("正在按压:", get_key_name(key))

# 监听释放

def on_release(key):

global start,fun_start, time_interval, index,count,count_dict

count+=1

if count==2:

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

count_dict['first_p_to_second_r']=time.time()-count_dict['first_time']

count=0

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

print("the interval between first press and release:",

time.time() - start-time_interval)

start = time.time()

index = 1

print("已经释放:", get_key_name(key))

if key == Key.esc:

# 停止监听

return False

# 开始监听

def start_listen():

with Listener(on_press=on_press, on_release=on_release) as listener:

listener.join()

if __name__ == '__main__':

# 开始监听,按esc退出监听

start_listen()

print(dict)

python监控键盘按下事件_Python如何监控键盘按了什么键相关推荐

  1. jquery触发键盘按下事件

    $("#PvWeight'").bind("keyup", function () {alert(1);}//给两个标签绑定了键盘按下事件 想要通过程序主动触发 ...

  2. python光标变粗了怎么办_Python 操作鼠标键盘 pyAutoGUI

    PyAutoGUI是用Python写的一个模块,使用它可以控制鼠标和键盘. 利用它可以实现自动化任务,再也不用担心有重复枯燥的任务了. pyautogui模块的功能:移动鼠标.点击左右键和滚轮 发送虚 ...

  3. python 捕获鼠标点击事件_Python捕捉和模拟鼠标事件的方法

    本文实例讲述了Python捕捉和模拟鼠标事件的方法.分享给大家供大家参考.具体分析如下: 这个假期玩了不少galgame,不过有些很老的游戏没有自动运行模式,点击鼠标又太伤按键了,于是想把滚动鼠标滚轮 ...

  4. python怎么打出长下划线_Python 中的各种下划线操作你了解吗?

    原标题:Python 中的各种下划线操作你了解吗? 我们在定义一些变量或者方法的时候,常常会用到下划线.在 Python 中,下划线的出镜率非常高,比如变量,有些是一个下划线开头的(_xx),有些是两 ...

  5. linux安防监控,Linux平台下的安防监控系统设计与实现

    摘要: 随着经济的飞速发展和科技进步,人们越来越关注居家安全,安防产品应运而生,其中安防监控系统更是备受关注.本文以提高安防系统的智能化水平为目标,设计和实现了一款Linux平台下的安全防范监控系统. ...

  6. python按键持续按下响应_python按键按住不放持续响应的实例代码

    在学习飞机大战(我也不知道为什么都拿这个练手),飞机左右控制都是按键按一次移动一次,不能按住一个键后持续移动,离开后停止移动. 为了解决这个,查看了参考手册,说让用pygame.key.set_rep ...

  7. python logging默认情况下打印_python logging日志打印过程解析

    一. 基础使用 1.1 logging使用场景 日志是什么?这个不用多解释.百分之九十的程序都需要提供日志功能.Python内置的logging模块,为我们提供了现成的高效好用的日志解决方案.但是,不 ...

  8. python中从键盘输入的代码_python如何从键盘获取输入实例

    python中使用input()函数来获取用户输入 函数 input() 让程序暂停运行,等待用户输入一些文本,获取用户的输入后,Python将其存储到一个变量中,以方便后期使用. name = in ...

  9. python怎么打出长下划线_python长的下划线怎么打

    python中下划线使用键盘上的Shift+减号键即可打出,减号键位于0和加号键之间. 在Python中下划线还具有 private 和 protected 类似的访问权限作用,下面我们具体分析.Py ...

最新文章

  1. linux shell wc统计文件行数
  2. Oracle表空间创建的sql
  3. MYsql 安装后启动服务1067错误
  4. html5 支持表格吗,html5 – 在HTML 5中使用表格很好吗?
  5. 为脚本语言平反-JavaScript篇(3)
  6. gitlab 端口_安装Gitlab-注意端口
  7. dj鲜生-10-用户注册的继续-错误提示的前端显示-防重名验证
  8. 对弈类游戏的人工智能(3)--博弈树优化
  9. Java定时自动锁屏小程序_小程序 番茄时钟如何实现锁屏持续运行功能
  10. 远程登陆cisco防火墙
  11. js回调html的函数,JS回调函数简单用法示例
  12. 太牛了!B 站 UP 主开发会写高考作文的 AI
  13. C语言题目:新胖子公式 (10 分)
  14. html拼凑成一张图片,(代码片段)利用canvas,把多张图合并成一张图片
  15. 通过添加css样式cursor属性,改变鼠标的外形,变成放大镜
  16. 将渲染计算搬到云端,开启低成本、强交互、沉浸式体验
  17. Kettle Carte模式
  18. 蓝牙进阶之路 (003) - AT指令(转)
  19. 物联网专业可以插本计算机技术吗,物联网工程专业专接本考什么
  20. 大二期末作孽(SpringBoot+Vue前后端分离博客社区(重构White Hole))

热门文章

  1. axios在vue中的简单配置与使用
  2. css如何实现背景透明,文字不透明
  3. DIY一块DS3231的高精度时钟模块,让时钟DS3231/DS1302自动识别
  4. Android进阶——Small源码分析之启动流程详解
  5. 基于腾讯信鸽推送平台详细说明
  6. Linux redis安装及开机自启详细教程
  7. 狂神JavaWeb课程笔记
  8. CVPR 2019 论文大盘点-超分辨率篇
  9. 剑指Offer——如何做好自我介绍
  10. Echarts官方社区,炫酷的Echarts 基地