6

我正在尝试在下个月分析我的击键,并想组合一个简单的程序来做到这一点。我不想准确地记录命令,而只是在我的按键上生成一般统计信息。

我最喜欢用 python 编码,但我愿意接受其他建议。这可能吗,如果可以,我应该看哪些 python 模块?这已经完成了吗?

我在 OSX 上,但也有兴趣在 Ubuntu 机器和 Windows XP 上执行此操作。

4

4 回答 4

4

看起来你需要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/

于 2009-08-12T17:19:14.103 回答
2

除非您打算自己编写界面,否则您将需要一些库,因为正如其他海报所指出的那样,您需要访问由桌面环境管理的低级按键事件。

在 Windows 上,PyHook库将为您提供所需的功能。

在 Linux 上,您可以使用Python X 库(假设您正在运行图形桌面)。

这两个都被pykeylogger使用,效果很好。您最好下载源代码(参见例如 pyxhook.py)以查看如何捕获按键事件的具体示例。修改它以对键的分布求和而不是记录排序应该是微不足道的。

于 2009-07-27T22:47:08.030 回答
2

由于当前 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()
于 2009-08-27T23:28:23.030 回答
0

根据您要收集的统计数据,也许您不必自己编写;该程序Workrave是一个程序,通过监视键盘和鼠标活动来提醒您小憩。它保留了您可能使用的此活动的统计信息(除非您想要非常详细/更具体的统计信息)。在最坏的情况下,您可以查看源代码 (C++) 以了解它是如何完成的。

于 2009-06-29T07:53:03.740 回答