资讯专栏INFORMATION COLUMN

记录键盘敲击次数 python实现

Raaabbit / 2815人阅读

摘要:作为一个程序员,突然好奇自己每天敲击多少次键盘,于是研究了一下,写了一个程序来记录。其实实现很简单,给安装一个。这个跑起来后,就不要管它,在用完电脑后按下特殊键,就可以输出统计数据了。这一天我总共敲击键盘次。

作为一个程序员,突然好奇自己每天敲击多少次键盘,于是研究了一下,写了一个python程序来记录。这里分享给大家。
其实实现很简单,给python安装一个package pynput。用其中自带的keyboard listener. 在输出统计数据的时候,有两种选择,一种是实时输出,一种是给用某一个特殊的键做为信号告诉代码输出统计数据。我选择的是后者。我用了page_down这个我从来不用的键做输出。这个script跑起来后,就不要管它,在用完电脑后按下特殊键,就可以输出统计数据了。
同时我也附上了我的某一天的统计图。
这一天我总共敲击键盘7836次。一个典型的英文单词长度是6个字母,相当于我敲了1300个单词。单纯的打字速度是100次每分钟,所以我一天只敲了13分钟的键盘。。。

#!/usr/bin/env python
  
from pynput import keyboard

def get_key_name(key):
    if isinstance(key, keyboard.KeyCode):
        return key.char
    else:
        return str(key)

def on_press(key):
    key_name = get_key_name(key)

def on_release(key):
    key_name = get_key_name(key)
    if key_name in keys:
        key_stat[key_name] = key_stat[key_name] + 1

    if key_name == "Key.page_down":
        fp=open("key_stat.xyz","w")
        for key in keys:
            fp.write("%s: %i
" %(key, key_stat[key]))
        return False

key_stat = {}
keys = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","1","2","3","4","5","6","7","8","9","0","`","Key.esc","Key.tab","Key.caps_lock","Key.shift","Key.ctrl","Key.alt","Key.cmd","Key.space","Key.alt_r","Key.cmd_r","Key.enter","Key.shift_r","Key.backspace","Key.up","Key.down","Key.left","Key.right","Key.ctrl_r",",",".","/",";",""","","]","[","=","-"]
for key in keys:
    key_stat[key] = 0
with keyboard.Listener(
    on_press = on_press,
    on_release = on_release) as listener:
    listener.join()

画图的代码如下

#!/usr/bin/python
  
import numpy as np
import matplotlib.pyplot as plt
fp = open("key_stat.xyz")
keys = []
stats = []
total = 0
for line in fp:
    x, y = line.split()
    x = x.replace("Key.","").replace(":","")
    keys.append(x)
    stats.append(int(y))
    total += int(y)
print(total)

plt.bar(keys,stats)
plt.xticks(keys,rotation="45")
plt.show()        

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42029.html

相关文章

  • 浅谈throttle以及debounce的原理和实现

    摘要:浅谈以及的原理和实现背景日常开发中我们经常会遇到一些需要节流调用或者压缩调用次数的情况例如之前我在完成一个需求的时候就遇到了因为后端并发问题导致收到多条信息从而导致函数被重复调用的情况当时的做法是通过对函数的调用进行注册遇到多次调用的时候清 浅谈throttle以及debounce的原理和实现 背景 日常开发中,我们经常会遇到一些需要节流调用,或者压缩调用次数的情况,例如之前我在完成...

    jsbintask 评论0 收藏0
  • jQuery 事件(一) 鼠标与键盘事件

    jQuery 鼠标事件 click与dbclick事件 用交互操作中,最简单直接的操作就是点击操作。jQuery提供了两个方法一个是click方法用于监听用户单击操作,另一个方法是dbclick方法用于监听用户双击操作。这两个方法的用法是类似的,下面以click()事件为例 方法一:$ele.click() 绑定$ele元素,不带任何参数一般是用来指定触发一个事件,用的比较少 点击触发 $(ele...

    Gemini 评论0 收藏0
  • JQuery基础修炼-事件篇

    摘要:目录第章事件介绍第章鼠标事件第章表单事件第章键盘事件第章事件的绑定和解绑第章事件对象的使用第章自定义事件与事件用交互操作中,最简单直接就是点击操作。提供了两个方法一个是方法用于监听用户单击操作,另一个方法是方法用于监听用户双击操作。 目录 第1章 事件介绍 第2章 鼠标事件 第3章 表单事件 第4章 键盘事件 第5章 事件的绑定和解绑 第6章 事件对象的使用 第7章 自定义事件 cli...

    yy13818512006 评论0 收藏0
  • JQuery基础修炼-事件篇

    摘要:目录第章事件介绍第章鼠标事件第章表单事件第章键盘事件第章事件的绑定和解绑第章事件对象的使用第章自定义事件与事件用交互操作中,最简单直接就是点击操作。提供了两个方法一个是方法用于监听用户单击操作,另一个方法是方法用于监听用户双击操作。 目录 第1章 事件介绍 第2章 鼠标事件 第3章 表单事件 第4章 键盘事件 第5章 事件的绑定和解绑 第6章 事件对象的使用 第7章 自定义事件 cli...

    hikui 评论0 收藏0
  • 【译】通过例子解释 Debounce 和 Throttle

    摘要:举例举例通过拖拽浏览器窗口,可以触发很多次事件。不支持,所以不能在服务端用于文件系统事件。总结将一系列迅速触发的事件例如敲击键盘合并成一个单独的事件。确保一个持续的操作流以每毫秒执行一次的速度执行。 Debounce 和 Throttle 是两个很相似但是又不同的技术,都可以控制一个函数在一段时间内执行的次数。 当我们在操作 DOM 事件的时候,为函数添加 debounce 或者 th...

    LeoHsiun 评论0 收藏0

发表评论

0条评论

Raaabbit

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<