作为一个程序员,突然好奇自己每天敲击多少次键盘,于是研究了一下,写了一个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\n' %(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()