2013-06-04 3 views
5

Ich versuche, einen Keylogger in Emacs (für meine eigenen, nicht ruchlosen Zwecke) zu implementieren.Emacs Keylogger

Es scheint, dass ich zuverlässig den letzten Befehl durch real-last-command im pre-command-hook

So erfassen kann ich so etwas wie tun:

(setq keylog-list nil) 

(defun my-keylogger-function() 
    (setq keylog-list (cons real-last-command keylog-list))) 

(add-hook 'pre-command-hook 'my-keylogger-function) 

Nach ein paar Bewegungsbefehle, bekommen wir

keylog-list's value is 
(describe-variable left-char left-char previous-line previous-line left-char eval-last-sexp) 

Allerdings möchte ich auch die Argumente für diese Befehle erfassen (zB die Argumente zu left-char, die von Standard ist 1, kann aber abweichen, wenn Präfix-Argumente verwendet werden.

Gibt es auch eine Möglichkeit, auf die Argumente zuzugreifen? Etwas wie real-last-command-arglist?

+4

Sie sind nicht mit 'C-h l' zufrieden? – tripleee

+0

Nicht wirklich, ich bin auch daran interessiert, Zeitstempel zu haben. – Ben

Antwort

3

Warum protokollieren Sie den letzten (d. H. Vorherigen) Befehl? Wenn Sie stattdessen this-command protokollieren, können Sie current-prefix-arg protokollieren, was dem verwendeten Präfix-Argument entspricht.

+0

Ja, das funktioniert. Ich habe 'real-last-command' verwendet, weil das Paket [keyfreq] (https://github.com/dacap/keyfreq) verwendet wird, aber das ist besser. Vielen Dank. – Ben

2

Ein Keylogger ist auch in Emacs integriert: (Open-Dribble-Datei).