2011-05-14 45 views
1
一鍵宏

我試圖使用一鍵宏(如寫here在Emacs

(defun toggle-kbd-macro-recording-on() 
    "One-key keyboard macros: turn recording on." 
    (interactive) 
    (define-key 
    global-map 
    (events-to-keys (this-command-keys) t) 
    'toggle-kbd-macro-recording-off) 
    (start-kbd-macro nil)) 

(defun toggle-kbd-macro-recording-off() 
    "One-key keyboard macros: turn recording off." 
    (interactive) 
    (define-key 
    global-map 
    (events-to-keys (this-command-keys) t) 
    'toggle-kbd-macro-recording-on) 
    (end-kbd-macro)) 


(global-set-key '[(f1)]   'call-last-kbd-macro) 
(global-set-key '[(shift f1)] 'toggle-kbd-macro-recording-on) 

但是,當我按下Shift-F1,我得到錯誤:

define-key: Symbol's function definition is void: events-to-keys

如何我可以修復它嗎?

回答

5

events-to-keys功能似乎已經過時了。從我所知道的情況來看,它應該只是寫作而已:

(defun toggle-kbd-macro-recording-on() 
    "One-key keyboard macros: turn recording on." 
    (interactive) 
    (define-key 
    global-map 
    (this-command-keys) 
    'toggle-kbd-macro-recording-off) 
    (start-kbd-macro nil)) 

(defun toggle-kbd-macro-recording-off() 
    "One-key keyboard macros: turn recording off." 
    (interactive) 
    (define-key 
    global-map 
    (this-command-keys) 
    'toggle-kbd-macro-recording-on) 
    (end-kbd-macro)) 

(global-set-key '[(f1)]   'call-last-kbd-macro) 
(global-set-key '[(shift f1)] 'toggle-kbd-macro-recording-on)