2013-04-05 81 views
1

人們可以很容易地映射某些鍵向上滾動。加速鍵盤滾動

(defun up1() 
    (interactive) 
    (scroll-up 1)) 
(defun up2() 
    (interactive) 
    (scroll-up 2)) 
(global-set-key "\M-]" 'up2) 

我正在尋找的是以下行爲。滾動的第一把 將調用up1(),隨後的調用up2()。

回答

1

如何:

(setq my-scroll-counter 0) 
(setq my-scroll-limit 5) 

(defun up1() 
    (interactive) 
    (if (eq last-command this-command) 
     (incf my-scroll-counter) 
    (setq my-scroll-counter 0)) 
    (if (> my-scroll-counter my-scroll-limit) 
     (scroll-up 2) 
    (scroll-up 1))) 

(global-set-key "\M-]" 'up1) 

如果你想要的東西票友一點點,你算算你的滾動步動態基於你多少次重複命令:

(setq my-scroll-counter 0) 
(setq my-maximum-scroll 20) 
(setq my-scroll-acceleration 4) 

(defun up1() 
    (interactive) 
    (if (eq last-command this-command) 
     (incf my-scroll-counter) 
    (setq my-scroll-counter 0)) 
    (scroll-up (min 
       (+ 1 (/ my-scroll-counter my-scroll-acceleration)) 
       my-maximum-scroll))) 

(global-set-key "\M-]" 'up1) 
+0

不完全是。我只想在鍵盤重複中加入「加速」。這個想法是,如果我停止滾動,這意味着我想更仔細地看當前可見的代碼。 – Calaf 2013-04-05 20:59:18

+0

我不明白你的意思。每當您連續調用up1而不是另一個命令時,加速度會超過「my-scroll-limit」時間。 '鍵盤重複'是什麼意思? – Tyler 2013-04-05 21:02:57

+0

如果您按下鍵盤鍵,則只輸入一個實例,但如果按住鍵盤鍵,則會重複鍵並獲得多個實例。如果我持有\ M-],我希望滾動速度最初很慢,但要加速。如果我停下來,我想要重新啓動相同的行爲。 – Calaf 2013-04-05 21:18:52