如何在Emacs中创建区分大小写的键绑定?

EuA*_*reh 7 emacs elisp case-sensitive key-bindings

根据Emacs的手册,由于"历史原因",修饰键不区分大小写.

我可以改变这种行为吗?

我的目标是制造M-aM-A表达不同的东西.

谢谢!

son*_*yao 8

根据手册,

A修改后的Control字母字符始终被视为不区分大小写:Emacs始终将CA视为Ca,CB视为Cb,依此类推.其原因是历史性的.

所以你无法定义它们:

(global-set-key (kbd "C-a") 'xxx)
(global-set-key (kbd "C-A") 'yyy)
Run Code Online (Sandbox Code Playgroud)

S-可以用于Shift,所以:

(global-set-key (kbd "C-a") 'xxx)
(global-set-key (kbd "C-S-a") 'yyy)  ;; C-A
Run Code Online (Sandbox Code Playgroud)

没关系 和

对于所有其他修饰符,您可以在自定义Emacs时使修改后的字母字符区分大小写.例如,你可以让Ma和MA运行不同的命令.

所以你可以像这样定义键绑定:

(global-set-key (kbd "M-a") 'xxx)
(global-set-key (kbd "M-A") 'yyy)
Run Code Online (Sandbox Code Playgroud)