2013-06-04 31 views
5

Tôi đang cố gắng thực hiện một keylogger trong Emacs (cho mục đích riêng của tôi, không bất chính).Emacs keylogger

Dường như tôi chắc chắn có thể nắm bắt được lệnh cuối cùng thông qua real-last-command trong pre-command-hook

Vì vậy, tôi có thể làm điều gì đó như:

(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) 

Sau một vài lệnh phong trào, chúng tôi nhận

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

Tuy nhiên, tôi cũng quan tâm đến việc nắm bắt các đối số cho các lệnh này (ví dụ: đối số cho left-char, mặc định là 1 nhưng có thể khác nếu các đối số tiền tố được sử dụng.

Có cách nào để truy cập vào args không? Một cái gì đó như real-last-command-arglist?

+4

Bạn không hài lòng với 'C-h l'? – tripleee

+0

Không thực sự, tôi cũng muốn có dấu thời gian. – Ben

Trả lời

3

Tại sao bạn đăng nhập lệnh cuối cùng (tức là trước đó)? Nếu bạn đăng nhập this-command thay vào đó, bạn có thể đăng nhập current-prefix-arg, tương ứng với đối số tiền tố được sử dụng.

+0

Yep, hoạt động. Tôi đã sử dụng lệnh 'real-last -' bởi vì đó là những gì gói [keyfreq] (https://github.com/dacap/keyfreq) sử dụng, nhưng điều này là tốt hơn. Cảm ơn. – Ben

2

Một keylogger cũng được tích hợp vào các emacs: (tệp mở-dribble).