我正在尝试在下个月分析我的击键,并想组合一个简单的程序来做到这一点。我不想准确地记录命令,而只是在我的按键上生成一般统计信息。
我最喜欢用 python 编码,但我愿意接受其他建议。这可能吗,如果可以,我应该看哪些 python 模块?这已经完成了吗?
我在 OSX 上,但也有兴趣在 Ubuntu 机器和 Windows XP 上执行此操作。
我正在尝试在下个月分析我的击键,并想组合一个简单的程序来做到这一点。我不想准确地记录命令,而只是在我的按键上生成一般统计信息。
我最喜欢用 python 编码,但我愿意接受其他建议。这可能吗,如果可以,我应该看哪些 python 模块?这已经完成了吗?
我在 OSX 上,但也有兴趣在 Ubuntu 机器和 Windows XP 上执行此操作。
看起来你需要http://patorjk.com/keyboard-layout-analyzer/
这个方便的程序将分析一段文本,并告诉您手指必须移动多远才能键入它,然后推荐您的最佳布局。
要回答您最初的问题,在 Linux 上,您可以从 /dev/event* 中读取本地键盘、鼠标和操纵杆事件。我相信你可以简单地举例cat /dev/event0 > keylogger
。事件是 的实例struct input_event
。另见http://www.linuxjournal.com/article/6429。
Python 的struct模块是解析二进制数据的便捷方式。
对于 OSX,请查看 logkext 的源代码。http://code.google.com/p/logkext/
除非您打算自己编写界面,否则您将需要一些库,因为正如其他海报所指出的那样,您需要访问由桌面环境管理的低级按键事件。
在 Windows 上,PyHook库将为您提供所需的功能。
在 Linux 上,您可以使用Python X 库(假设您正在运行图形桌面)。
这两个都被pykeylogger使用,效果很好。您最好下载源代码(参见例如 pyxhook.py)以查看如何捕获按键事件的具体示例。修改它以对键的分布求和而不是记录排序应该是微不足道的。
由于当前 X 服务器的Record扩展似乎已损坏,因此pykeylogger
用于 Linux 并没有真正的帮助。看看evdev
它的demo
功能,而不是。解决方案更糟糕,但它至少可以工作。
归结为设置设备的挂钩
import evdev
keyboard_location = '/dev/input/event1' # get the correct one from HAL or so
keyboard_device = evdev.Device(keyboard_location)
然后,定期轮询设备以获取密钥的状态和其他信息:
keyboard_device.poll()
根据您要收集的统计数据,也许您不必自己编写;该程序Workrave是一个程序,通过监视键盘和鼠标活动来提醒您小憩。它保留了您可能使用的此活动的统计信息(除非您想要非常详细/更具体的统计信息)。在最坏的情况下,您可以查看源代码 (C++) 以了解它是如何完成的。