2014-03-03 5 views

Antwort

10

Verwenden Sie einfach Modifikator S (Shift) in Ihrer Tastenbindung. Z.B .:

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

Wenn es nichts zu dem verschobenen Schlüssel explizit gebunden ist dann übersetzt Emacs automatisch auf den unverschobenen Schlüssel.

Vom Elisp Hand Knoten Key Sequence Input:

Wenn ein Eingabezeichen ist in Großbuchstaben (oder den Verschiebungs modifier) ​​und hat keinen Schlüssel Bindung, aber die Klein Äquivalent hat eine, dann read-key-sequence' converts the character to lower case. Note that lookup-key 'führt auf diese Weise keine Fallkonvertierung durch.

+0

Ah, ich verstehe. Ich war verwirrt, weil Aquamacs automatisch zwischen 'm-c' und 'M-C' unterscheidet und letzteres als 'm-s-c' aufnimmt. Ich sehe jetzt, dass Sie für GNU Emacs den Shift-Modifikator separat angeben müssen. – incandescentman

+0

Warte, eigentlich funktioniert es nicht. Ich habe versucht '(definiere-key meine-keys-minor-mode-map (kbd" MSc ") 'aktivieren-auto-kapitalisieren-mode)' und '(define-key meine-keys-minor-mode-map (kbd" \ M- \ Sc ") 'enable-auto-capitalize-mode)'. – incandescentman

+1

Wenn Sie 'kbd' verwenden, verwenden Sie nicht' \ M' usw. Syntax: 'kbd' erwartet die gleiche Syntax, die Sie in der Ausgabe sehen, wenn Sie' C-h k' verwenden. Aber es scheint, dass Sie hierfür entweder String- oder Vektor-Syntax, nicht 'kbd', verwenden müssen. Versuchen Sie also '(define-key mymap) \ M- \ S-c '' mycmd)' oder '(define-key mymap [(meta shift? C)] 'mycmd)'. Oder '(define-key mymap (kbd" M-C ") 'mycmd)'. – Drew

3

Emacs die beiden ist sehr einfach zu unterscheiden Um: eine Bindung für M-C hinzufügen. Die Übersetzung von M-C zu M-c geschieht als Fallback, wenn für M-C keine Bindung gefunden wurde.