2012-11-03 47 views
3

我曾問一個關於在Emacs按住Ctrl鍵綁定箭頭在提問終端:Emacs的輸入解碼-map爲終端

Emacs Ctrl modifiers don't work in console

,被告知,那Linux的終端仿真器不處理這種組合。我設法創造loadkeys命令文件,用於處理這些鍵:

control keycode 105 = F100 
string F100 = "\033[[left" 
control keycode 106 = F101 
string F101 = "\033[[right" 

然後加載它從根:

#loadkeys ./funcskeys 

,每次當我按Ctrl-權利或控制檯Ctrl鍵左,我打印出'正確'或'左'。現在我需要在Emacs中處理這個。據我從這個問題的理解:

Binding M-<up>/M-<down> in Emacs 23.1.1

一定要做,使用input-decode-map功能。但我無法使它工作。 Plz,幫忙。

回答

6

稍微改變你的 「funcskeys」 文件生成以下轉義序列:

control keycode 105 = F100 
string F100 = "\033[1;5D" 
control keycode 106 = F101 
string F101 = "\033[1;5C" 

以下行然後添加到您的.emacs文件:

(define-key input-decode-map "\e[1;5C" [(control right)]) 
(define-key input-decode-map "\e[1;5D" [(control left)]) 

運行loadkeys和重新啓動的Emacs,後CTRL +左CTRL +右應該工作。您可以通過鍵入驗證這一點:

章K C的右

章K C的左

要實際結合這些按鍵的命令,如forward-word ,您可能需要在.emacs文件中添加以下行:

(global-set-key [(control right)] 'forward-word) 
(global-set-key [(control left)] 'backward-word) 

請注意,這整個方法具體只是使鍵組合CTRL +左CTRL +右工作。它例如使ALT +左/ALT +右工作,或涉及CTRL字符任何其他的按鍵組合。

+0

我不知道爲什麼,但你的方法沒有奏效。我用(全局設置鍵「\ M- [1; 5C」'正向詞)做出來的。那麼你的elisp代碼是沒有必要的。你知道嗎,怎麼了? – user4035

+0

對不起,只是「沒有工作」是沒有足夠的信息,有一個想法是什麼錯。但試試我剛剛做出的變化。 – Thomas

+0

現在,它的工作。我會自己解決其他密鑰。 – user4035