使用pynput模块监听用户键盘输入,保存至txt

# -*- 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.}# 回车,空格,tab键
keyBoard_dict = {'Key.enter': '\n','Key.space': ' ',"Key.tab": '\t'}# 得到键盘按下的值,写入文本里
def get_key_name(key):if isinstance(key, keyboard.KeyCode):with open(r'dict/key_record.txt', 'a', encoding='utf-8') as f:f.write(key.char)return key.charelse:#如果敲击了删除键就写进txtif str(key) in ['Key.backspace']:print('用户敲击了删除键')with open(r'dict/key_record.txt', 'a', encoding='utf-8') as f:f.write('删除键')if str(key) in ['Key.enter', 'Key.space', 'Key.tab']:with open(r'dict/key_record.txt', 'a', encoding='utf-8') as f:f.write(keyBoard_dict[str(key)])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_startif index == 0 or index == 1:# 取到间隔时间差time_interval = fun_start - startif 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 += 1print("正在按下:", get_key_name(key))# 监听释放键盘
def on_release(key):global start, fun_start, time_interval, index, count, count_dictcount += 1if count == 2:# 第一个键按下到第二个键释放的时间count_dict['first_p_to_second_r'] = time.time() - count_dict['first_time']count = 0# 按下一个键盘到释放的时间print("按下按键到松开的时间:   ",round(time.time() - start - time_interval,2))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)

执行结果:


使用pynput模块监听用户键盘输入,保存至txt相关推荐

  1. flutter APP中禁止软键盘弹出,监听硬键盘输入方法

    flutter App中禁止软键盘弹出,监听硬键盘输入的方法 之前的工作中遇到一个需求,想点击输入框后不弹出软键盘,使用设备硬键盘输入,解决方法:设置输入框只读并且显示光标,然后配置键盘监听就可以了. ...

  2. java edittext 输入监听_Android应用开发之Android EditText 监听用户输入完成的实例

    本文将带你了解Android应用开发Android EditText 监听用户输入完成的实例,希望本文对大家学Android有所帮助. 我们都知道, Android   EditText输入框,并没有 ...

  3. Python中用keyboard库实现监听用户输入

    Python中用keyboard库实现监听用户输入 前言 一.keyboard库 二.使用示例 1.引入库 前言 在用Python做一个Selenium网页自动化工具时,发现如果用户提供的数据太多,需 ...

  4. android 代码设置 键盘适应_Android自适应软键盘的Dialog以及监听软键盘弹起

    最近项目中遇到一个需求:新手引导.跟一般的新手引导没有什么太大区别,思路都是搞一个带阴影的遮罩层,然后在上边儿给一些提示性的文字,由于需求中有些特殊的地方,所以我用了一个全屏的dialog(而且,di ...

  5. 【Android应用】【监听软键盘弹起与关闭】

    [背景] 在很多App开发过程中需要在Activity中监听Android设备的软键盘弹起与关闭,但是Android似乎没有提供相关的的监听API给我们来调用,本文提供了一个可行的办法来监听软键盘的弹 ...

  6. React Native - Keyboard API使用详解(监听处理键盘事件)

    参考: React Native - Keyboard API使用详解(监听处理键盘事件) 当我们点击输入框时,手机的软键盘会自动弹出,以便用户进行输入. 但有时我们想在键盘弹出时对页面布局做个调整, ...

  7. Android 类似淘宝 电商 搜索功能,监听软键盘搜索事件,延迟自动搜索,以及时间排序的搜索历史记录的实现

    最近跳槽去新公司,接受的第一个任务是在 一个电商模块的搜索功能以及搜索历史记录的实现. 需求和淘宝等电商的功能大体差不多,最上面一个搜索框,下面显示搜索历史记录.在EditText里输入要搜索的关键字 ...

  8. 实时监听文本框输入 oninput、onchange与onpropertychange事件的用法和区别

    前端页面开发的很多情况下都需要实时监听文本框输入,比如腾讯微博编写140字的微博时输入框hu9i动态显示还可以输入的字数.过去一般都使用onchange/onkeyup/onkeypress/onke ...

  9. Android App监听软键盘按键的三种方式(转)

    最近有类似需求,在csdn上刚好发现,粘贴过来,以防止忘记喽 前言: 我们在android手机上面有时候会遇到监听手机软键盘按键的时候,例如:我们在浏览器输入url完毕后可以点击软键盘右下角的&quo ...

  10. Android App监听软键盘按键的三种方式

    前言: 我们在android手机上面有时候会遇到监听手机软键盘按键的时候,例如:我们在浏览器输入url完毕后可以点击软键盘右下角的"GO"按键加载url页面:在点击搜索框的时候,点 ...

最新文章

  1. 华为秘密作战计划曝光,重注研发AI芯片挑战英伟达,轮值董事长挂帅
  2. 请简述一下线程的sleep()方法和yield()方法的区别?
  3. webflux系列--reactor源码(二)
  4. hexo github搭建博客常用的命令
  5. 移动云亮相 2021 IDC 年度盛典 共话变革与赋能
  6. qcow2磁盘格式分析
  7. Android学习笔记---27_网络通信之通过GET和POST方式提交参数给web应用,以及使用httpClient,来给web项目以post方式发送参数
  8. 常用插件的封装(轮播图、选项卡、楼梯导航及、拖拽)
  9. 生产者消费者模型-管程法(Java)
  10. C语言程序运行闪退解决方案
  11. keil中下载程序的擦除功能
  12. JS 设置适配屏幕分辨率大小
  13. Radius认证有线与无线网络(一)
  14. 淘金网UCskype即时通讯软件定制
  15. 365地图java_中国气候区划在线地图(1:3200万)
  16. ThinkPHP 模板变量输出
  17. 使用地图编辑器构建游戏场景
  18. 2019「友盟杯」数据分析大赛结果公布
  19. 记一次组装电脑的经历
  20. 如何进行远程会议及在线演示

热门文章

  1. Java设计person类,有姓名,年龄,性别。要求:该类至多只能创建一男,一女两个对象。
  2. java中utilities类_Java SwingUtilities类
  3. 线性表——顺序表基本知识以及基本操作
  4. python3调用js_关于python3运行JS文件的问题
  5. java找链表中最小值_算法图解:如何找出栈中的最小值?
  6. c++输出的值精确到小数点后5位_直击灵魂——圆周率小数点后3位到12411亿位到底有啥用?...
  7. 能运行c语言的最便宜电脑配置,低配置电脑流畅运行Win7的技巧
  8. linux fortran 大数组,fortran动态数组大小分配问题(allocatable)? - 程序语言 - 小木虫 - 学术 科研 互动社区...
  9. e: 无法定位软件包 python-pip_关于Sony镜头不同系列定位的最全面分析
  10. Communication System dp 动态规划 || 贪心