6

私は来月にかけて自分のキーストロークを分析しようとしており、そのための簡単なプログラムをまとめたいと思っています。コマンドを正確に記録したくはありませんが、キーを押したときに一般的な統計を生成するだけです。

私はこれをPythonでコーディングするのが最も快適ですが、他の提案も受け付けています。これは可能ですか?もしそうなら、どのpythonモジュールを見ればよいですか? これはすでに行われていますか?

私はOSXを使用していますが、UbuntuボックスとWindows XPでもこれを行うことに興味があります。

4

4 に答える 4

4

It looks like you need http://patorjk.com/keyboard-layout-analyzer/

This handy program will analyze a block of text and tell you how far your fingers had to travel to type it, then recommend your optimal layout.

To answer your original question, on Linux you can read from /dev/event* for local keyboard, mouse and joystick events. I believe you could for example simply cat /dev/event0 > keylogger. The events are instances of struct input_event. See also http://www.linuxjournal.com/article/6429.

Python's struct module is a convenient way to parse binary data.

For OSX, take a look at the source code to 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 に答える