11

バックグラウンドで実行され、すべてのキーボードイベントを監視し、特定のショートカットが表示されると、独自のキーボードイベントを1つ以上生成するクロスプラットフォームのPythonプログラムを作成しようとしています。たとえば、Ctrl-@を"my.email@address"にマッピングすると便利な場合があります。そのため、プログラムによってメールアドレスの入力を求められるたびに、Ctrl-@と入力するだけで済みます。

私はそのようなプログラムがすでに存在することを知っています、そして私は車輪の再発明をしています...しかし私の目標はただ低レベルのキーボードAPIについてもっと学ぶことです。さらに、この質問への回答は、他のプログラマーにとって役立つ場合があります。たとえば、pexpectを使用せずに、パスワードが必要なSSH接続を起動したい場合などです。

ご協力いただきありがとうございます。

注:同様の質問がありますが、これはWindowsプラットフォームに限定されており、Pythonは必要ありません。クロスプラットフォームのPythonAPIを探しています。キーボードイベントに関連する他の質問もありますが、明らかに、システム全体のキーボードイベントには関心がなく、アプリケーション固有のキーボードショートカットにのみ関心があります。

編集:私はおそらくここに免責事項を追加する必要があります:私はキーロガーを書きたくありません。キーロガーが必要な場合は、とにかくWebからダウンロードできます。;-)

4

6 に答える 6

8

そのような API はありません。私の解決策は、 の値に応じて異なるヘルパーを使用するヘルパー モジュールを作成することでしos.nameた。

Windows では、Win32 拡張機能を使用します。

Linux では、実際の OS がユーザーをキーロガーから保護するため、事態はもう少し複雑になります[*]。したがって、ここでは、 のハンドルの 1 つを監視するルート プロセスが必要になります/dev/input/。あなたの最善の策は、おそらく/dev/input/by-path/文字列"kbd"またはを含む下のエントリを探すことです"keyboard"。ほとんどの場合、これでうまくいくはずです。

[*]: うわあ、キーボード イベントにフックする Python プログラムを起動しても、私のウイルス/トロイの木馬スキャナでさえ文句を言うことはありません...

于 2009-03-24T10:15:09.387 に答える
7

オリジナルのpykeyloggerlinuxポートを書いた人として、私は実際にはクロスプラットフォームのものはないと言うことができます。基本的に、レコード拡張機能を使用して、キーボードイベント用のpyhook APIを書き直し、xserver自体からキャプチャしました。もちろん、これはレコード拡張がそこにあり、xサーバーにロードされていることを前提としています。

そこから、基本的には、WindowsとLinuxのどちらを使用しているかを検出し、OSに適したモジュールをロードするだけです。他のすべては同一でなければなりません。

クラスと実装については、pyxhook.pyにあるpykeyloggerソースをご覧ください。それ以外の場合は、OSに応じて、そのモジュールをロードするか、代わりにpyhookをロードします。

于 2009-07-27T17:44:51.913 に答える
1

Ubuntu 9.10 でいくつかのテストを行いました。pykeylogger が機能していないようです。モジュールをロードできるようにするために /etc/X11/xorg.conf を変更しようとしましたが、その特定のバージョンの ubuntu には xorg.conf がありません。したがって、私の意見では、pykeloggerはubuntu 9.10では機能していません!!

于 2009-11-03T08:44:38.160 に答える
0

Linuxでは、Xlibを使用してこれを非常に簡単に行うことができます。詳細については、次のページを参照してください。

http://www.larsen-b.com/Article/184.html

于 2009-11-26T09:59:02.060 に答える
0

Linux では、 pykeyloggerを見たいと思うかもしれません。奇妙な理由により、X が実行されている場合、/dev/input/.... からの読み取りが常に機能するとは限りません。たとえば、ubuntu 8.10 では動作しません。Pykeylogger は xlib を使用します。これは、他の方法では機能しないときに正確に機能します。これについてはまだ調査中なので、もっと簡単な方法があれば教えてください。

于 2009-03-25T13:23:18.727 に答える
0

TkinterwxPythonなどのクロスプラットフォーム UI ライブラリには、キーボード イベント用の API があります。これらを使用して、«CTRL» + «@» をアクションにマップできます。

于 2009-03-24T10:23:58.027 に答える