Ist es ein cross-Plattform-python-low-level-API zum erfassen oder erzeugen Sie Tastatur-Ereignisse?
Bin ich zu schreiben versucht, eine cross-Plattform-python-Programm, das würde im hintergrund laufen, überwachen alle Tastatur-Ereignisse, und wenn er sieht einige spezielle Tastenkombinationen, die es erzeugt eine oder mehrere Tastatur-Ereignisse von seiner eigenen. Dies könnte beispielsweise nützlich sein, um Strg-@ zugeordnet "my.email@address", so dass jedes mal ein Programm fragt mich nach meiner E-Mail-Adresse brauche ich nur geben Sie Strg-@.
Ich kenne solche Programme, die bereits existieren, und ich bin das Rad neu erfinden... aber mein Ziel ist nur zu erfahren Sie mehr über low-level-Tastatur-APIs. Außerdem, die Antwort auf diese Frage könnte nützlich sein, um andere Programmierer, zum Beispiel, wenn Sie wollen, starten Sie eine SSH-Verbindung, die ein Kennwort erforderlich ist, ohne die Hilfe von pexpect.
Vielen Dank für Ihre Hilfe.
Hinweis: es ist eine ähnliche Frage aber es beschränkt sich auf die Windows-Plattform, und erfordert keine python. Ich bin auf der Suche nach einem cross-Plattform-python-api. Es gibt auch andere Fragen in Bezug auf Tastatur-Ereignisse, aber anscheinend sind Sie nicht daran interessiert, in den systemweiten Tastatur-Ereignisse, nur die Applikations-spezifischen Tastenkombinationen.
Edit: ich sollte wohl hinzufügen eines Haftungsausschlusses hier: ich nicht möchten, schreiben Sie eine keylogger. Wenn ich gebraucht ein keylogger, ich könnte ein download aus dem web, eine sowieso. 😉
InformationsquelleAutor der Frage MiniQuark | 2009-03-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es keine solche API. Meine Lösung war, zu schreiben, ein helper-Modul, das einer anderen Helfer je nach dem Wert von
os.name
.Verwenden Sie unter Windows die Win32-Erweiterungen.
Unter Linux, die Dinge sind ein wenig komplizierter, da Reale Betriebssysteme schützen Sie Ihre Benutzer vor Keyloggern[*]. So hier müssen Sie ein root-Prozess, die Uhren eine der[] die Griffe in
/dev/input/
. Ihre beste Wette ist wahrscheinlich auf der Suche für einen Eintrag unter/dev/input/by-path/
enthält die strings"kbd"
oder"keyboard"
. Das sollte in den meisten Fällen funktionieren.[*]: Herrgott, nicht einmal mein virus/Trojaner scanner beschweren, wenn ich ein Python Programm, das die Haken in der Tastatur-Ereignisse...
InformationsquelleAutor der Antwort Aaron Digulla
Als der Mann, der schrieb die ursprüngliche pykeylogger linux-port habe, kann ich sagen, es ist nicht wirklich ein cross-Plattform ein. Im wesentlichen, ich schrieb die pyhook API für Tastatur-Ereignisse zu erfassen, die von den xserver selbst, mit der record-Erweiterung. Natürlich, dies übernimmt die record-Erweiterung ist es, in den x server geladen.
Aus, es ist im Grunde nur erkennen, wenn man auf windows oder linux, und dann laden Sie das richtige Modul für das OS. Alles andere sollte identisch sein.
Werfen Sie einen Blick auf die pykeylogger Quelle, in pyxhook.py für die Klasse und die Umsetzung. Andernfalls, lade einfach das Modul, oder pyhook statt, je nach OS.
InformationsquelleAutor der Antwort
Ich habe ein paar tests mit Ubuntu 9.10. pykeylogger scheint nicht zu funktionieren. Ich habe tryied zum ändern der /etc/X11/xorg.conf damit die module geladen werden, aber in dieser speziellen version von ubuntu gibt es kein xorg.conf. Also, in meinen opiniion pykelogger funktioniert NICHT unter ubuntu 9.10 !!
InformationsquelleAutor der Antwort PeiMei
Cross-platform-UI-Bibliotheken wie Tkinter oder wxPython haben-API für Tastatur-Ereignisse. Mit diesen konnten Sie die Karte «STRG»+«@», um eine Aktion.
InformationsquelleAutor der Antwort vartec
Unter linux, möchten Sie vielleicht einen Blick auf pykeylogger. Aus irgendeinem seltsamen Grund, das Lesen aus /dev/input/.... funktioniert nicht immer, wenn X ausgeführt wird. Zum Beispiel, es funktioniert nicht auf ubuntu 8.10. Pykeylogger verwendet xlib, der funktioniert genau dann, wenn der andere Weg nicht. Ich bin noch auf der Suche in dieser, also, wenn Sie einen einfacheren Weg, dies zu tun, bitte sagen Sie mir.
InformationsquelleAutor der Antwort Kim Stebel
Unter Linux ist es möglich, dies ganz einfach tun, mit Xlib. Finden Sie auf dieser Seite für details:
http://www.larsen-b.com/Article/184.html
InformationsquelleAutor der Antwort Chris McCormick