做为一个程序员,忽然好奇本身天天敲击多少次键盘,因而研究了一下,写了一个python程序来记录。这里分享给你们。
其实实现很简单,给python安装一个package pynput。用其中自带的keyboard listener. 在输出统计数据的时候,有两种选择,一种是实时输出,一种是给用某一个特殊的键作为信号告诉代码输出统计数据。我选择的是后者。我用了page_down这个我历来不用的键作输出。这个script跑起来后,就不要管它,在用完电脑后按下特殊键,就能够输出统计数据了。
同时我也附上了个人某一天的统计图。
这一天我总共敲击键盘7836次。一个典型的英文单词长度是6个字母,至关于我敲了1300个单词。单纯的打字速度是100次每分钟,因此我一天只敲了13分钟的键盘。。。python
#!/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()