2009-03-24 6 views
11

Ich versuche, ein plattformübergreifendes Python-Programm zu schreiben, das im Hintergrund läuft, alle Tastaturereignisse überwacht und wenn es einige spezifische Verknüpfungen sieht, erzeugt es ein oder mehrere eigene Tastaturereignisse. Dies könnte zum Beispiel nützlich sein, wenn Strg + @ auf "[email protected]" gesetzt ist, so dass jedes Mal, wenn ein Programm nach meiner E-Mail-Adresse fragt, ich einfach [email protected] eingeben muss.Gibt es eine plattformübergreifende Low-Level-Python-API zum Erfassen oder Generieren von Tastaturereignissen?

Ich weiß, dass solche Programme bereits existieren, und ich erfinde das Rad neu ... aber mein Ziel ist es, mehr über Low-Level Keyboard APIs zu lernen. Außerdem kann die Antwort auf diese Frage anderen Programmierern nützlich sein, zum Beispiel, wenn sie eine SSH-Verbindung starten wollen, die ein Passwort erfordert, ohne pexpect zu verwenden.

Danke für Ihre Hilfe.

Hinweis: Es gibt a similar question, aber es ist auf die Windows-Plattform beschränkt und erfordert keine Python. Ich suche eine plattformübergreifende Python-API. Es gibt noch weitere Fragen zu Tastaturereignissen, aber offensichtlich sind sie nicht an systemweiten Tastaturereignissen interessiert, sondern nur an anwendungsspezifischen Tastaturkürzeln.

Edit: Ich sollte wahrscheinlich einen Haftungsausschluss hier hinzufügen: Ich mache nicht möchte einen Keylogger schreiben. Wenn ich einen Keylogger brauchte, konnte ich trotzdem einen aus dem Internet herunterladen. ;-)

+0

[hier] (http://stackoverflow.com/a/35373648/2924421) ist eine Lösung, die für OS X – Phylliida

Antwort

8

Es gibt keine solche API. Meine Lösung bestand darin, ein Hilfsmodul zu schreiben, das je nach Wert von os.name einen anderen Helfer verwendet.

Verwenden Sie unter Windows Win32 extensions.

Unter Linux sind die Dinge etwas komplexer, da echte Betriebssysteme ihre Benutzer vor Keyloggern schützen [*]. Hier benötigen Sie also einen Root-Prozess, der eines der [] der Handles in /dev/input/ überwacht. Ihre beste Wette ist wahrscheinlich die Suche nach einem Eintrag unter , der die Zeichenfolgen "kbd" oder "keyboard" enthält. Das sollte in den meisten Fällen funktionieren.

[*]: Meine Güte, nicht einmal mein Virus/Trojaner-Scanner wird sich beschweren, wenn ich ein Python-Programm starten, die in die Tastatur-Ereignisse hakt ...

+0

Sehr klare Antwort funktioniert, ich danke Ihnen sehr. :-) – MiniQuark

0

Plattformübergreifender UI-Bibliotheken wie Tkinter oder wxPython API für Tastaturereignisse. Mit diesen können Sie «STRG» + «@» einer Aktion zuordnen.

+1

Leider gibt mir das keinen systemweiten Tastaturmonitor, nur einen anwendungsspezifischen. – MiniQuark

0

Unter Linux möchten Sie vielleicht einen Blick auf pykeylogger werfen. Aus irgendeinem seltsamen Grund funktioniert das Lesen von/dev/input/.... nicht immer, wenn X läuft. Zum Beispiel funktioniert es nicht auf Ubuntu 8.10. Pykeylogger benutzt xlib, was genau dann funktioniert, wenn der andere nicht funktioniert. Ich bin immer noch dabei, also wenn Sie eine einfachere Methode finden, erzählen Sie es mir bitte.

+0

Diese Antwort ist fast drei Jahre alt .... –

6

Als der Typ, der den ursprünglichen Pykeylogger-Linux-Port schrieb, kann ich sagen, dass es nicht wirklich eine plattformübergreifende gibt. Im Wesentlichen habe ich die pyhook-API für Tastaturereignisse neu geschrieben, um sie vom xserver selbst mit der Datensatzerweiterung zu erfassen. Natürlich wird davon ausgegangen, dass die Datensatzerweiterung dort auf dem x-Server geladen ist.

Von dort ist es im Wesentlichen nur festzustellen, ob Sie auf Windows oder Linux sind, und dann das richtige Modul für das Betriebssystem zu laden. Alles andere sollte identisch sein.

Werfen Sie einen Blick auf die Pykeylogger-Quelle, in pyxhook.py für die Klasse und die Implementierung. Ansonsten laden Sie einfach dieses Modul oder stattdessen Pyhook, abhängig vom Betriebssystem.

1

Ich habe ein paar Tests auf Ubuntu 9.10 gemacht. Pykeylogger scheint nicht zu funktionieren. Ich habe versucht, die /etc/X11/xorg.conf zu ändern, damit das Modul geladen werden kann, aber in dieser speziellen Version von ubuntu gibt es keine xorg.conf. Also, meiner Meinung nach arbeitet pykelogger NICHT an Ubuntu 9.10 !!

+0

Ich auch. Ich kann nicht pykeylogger laufen auf ubuntu 9.10 – Rory

+0

Für den Rekord, ich denke, es ist dieser Bug hier, die Pykeylogger von der Arbeit an Ubuntu 9.10 verhindert https://bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/ 315456 – Rory

Verwandte Themen