2014-03-03 131 views

回答

10

只需在您的密鑰綁定中使用修飾符S(Shift)。例如:

(global-set-key "\M-\S-c" 'foobar) 

如果沒有明確的綁定到移位的鍵,那麼Emacs會自動將它轉換爲未移位的鍵。

從elisp的手冊,節點Key Sequence Input

如果輸入字符是大寫(或具有移位改性劑),沒有鍵結合,但其小寫等效有一個,那麼read-key-sequence' converts the character to lower case. Note that lookup-key'不以這種方式執行大小寫轉換。

+0

啊,我明白了。我很困惑,因爲Aquamacs會自動區分'm-c'和'M-C',並將後者視爲'm-s-c'。我現在看到,對於GNU Emacs,你必須單獨指定shift修飾符。 – incandescentman

+0

等一下,實際上它不起作用。我嘗試了'(define-key my-keys-minor-mode-map(kbd「MSc」)'enable-auto-capitalize-mode)'和'(define-key my-keys-minor-mode-map(kbd「 \ M- \ Sc「)'enable-auto-capitalize-mode)'。 – incandescentman

+1

如果你使用'kbd',那麼不要使用'\ M'等語法:'kbd'在使用'C-h k'時需要與輸出中看到的語法相同。但是,似乎你必須使用字符串或矢量語法,而不是'kbd'。所以試試'(define-key mymap「\ M- \ S-c」'mycmd)'或'(define-key mymap [(meta shift?c)]'mycmd)'。或者'(define-key mymap(kbd「M-C」)'mycmd)'。 – Drew

3

要獲得Emacs的區分兩個非常簡單:添加綁定爲M-CM-CM-c的翻譯發生在沒有發現M-C的結合時作爲回退。