国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > Python常见问题 > Python如何监控键盘按了什么键

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

头像

月亮邮递员

2020-03-26 18:05:303508浏览 · 0收藏 · 0评论

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

1、安装pynput

pip 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) < len(str2):
        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 < origanl_len - 1:
                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视频教程

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

45岁老阿姨喷了三次尿素乳青 | 免费B站看大片真人电视剧| 成人猫咪最新地域网名是什么啥| 打牌生猴子的视频大全 | 蜜糖在线观看免费高清电视剧| 空调怎么选| 强伦女教师2:伦理| 吃瓜群众在线爆料免费观看| 漂亮的女邻居5》HD| 免费的行情网站WWW下载大全| 大叔和妈妈免费观看电视剧第3集 妈妈叫我戴上避孕套是什么歌 | 一边啃奶头一边躁狂会怎么样 | 揉鸡的正确手法图解| 《交换做爰》在线观看| 蜜桃成时熟2| 《互换人妻HD中字》| 电影《偷吃》在线观看| YSL水蜜桃86满十八岁多少钱 | 妈妈与儿子高清免费版电视剧| 妈妈がだけの母さん歌词| 美女和帅哥一起努力生产豆浆的视.| 《漂亮的女邻居5》HD| 丝袜美腿| 星空电影在线观看免费完整版| 免费的行情网站WWW网页版| 久久无码亚洲成A人片| 《性爽2》电影| 免费看黄A片真人真事| 丈夫不在家儿媳想老公的背景故事| 酒鬼酒股票| 戴着小玩具练瑜伽| 偷偷在线观看免费的电视剧最新| 腹肌体育生导管网站| 诡秘之主 小说| 欧美大片| 《高压监狱5》完整版| 女性抹胸开襟哺乳衣的注意事项| 迅雷种子搜索神器| 美国伦理〈欲奴3)| 欧美大片| WWW.麻豆都传媒