2014-06-12 24 views
6

In base allo Emacs' manual, i tasti di modifica non fanno distinzione tra maiuscole e minuscole a causa di "motivi storici".Come creare una combinazione di tasti con distinzione tra maiuscole e minuscole in Emacs?

Posso modificare questo comportamento?

Il mio obiettivo è rendere M-a e M-A per significare cose diverse.

Grazie!

+0

Per quanto ne so, sono trattati solo come case-insensitive se v'è una sola definizione chiave. Se si creano due, ad esempio una definizione di chiave in lettere minuscole e una definizione di chiave in maiuscolo, non vengono più considerate come maiuscole e minuscole. Usare il metodo che cerchi è molto comune. Ad esempio, '(global-set-key [? \ S-m] 'minimizza)' e '(global-set-key [? \ S-M]' ingrandisci)' – lawlist

risposta

8

Secondo il manuale,

Un controllo carattere alfabetico -Modified è sempre considerato case-insensitive: Emacs tratta sempre C-A come C-a, C-B come C-b, e così via. La ragione di ciò è storica.

così non si poteva definire come loro:

(global-set-key (kbd "C-a") 'xxx) 
(global-set-key (kbd "C-A") 'yyy) 

ma S- può essere usato per Spostamento, quindi:

(global-set-key (kbd "C-a") 'xxx) 
(global-set-key (kbd "C-S-a") 'yyy) ;; C-A 

è OK. E

Per tutti gli altri modificatori, è possibile rendere maiuscoli e minuscoli i caratteri alfabetici modificati quando si personalizza Emacs. Ad esempio, potresti fare in modo che M-a e M-A eseguano comandi diversi.

Così si può definire la chiave vincolante in questo modo:

(global-set-key (kbd "M-a") 'xxx) 
(global-set-key (kbd "M-A") 'yyy) 
+0

Lo faccio abbastanza spesso, in realtà. Significa richiamare nel doc per il mio codice, tuttavia, che 'C-A' è noto come' C-S-a' (o viceversa). Emacs stesso usa sempre la seconda notazione, con il modificatore Shift esplicito. – Drew