这种方法不会创建修饰键,因为您在按住修饰符的情况下按下另一个键,但它仍然允许您使用超级绑定。
By default you can utilise the additional modifier keys via the C-x@ prefix. See C-x@C-h for the full list.
这些绑定位于function-key-map
,并且您可以使用相同的方法来获取自己的独立于操作系统的绑定。例如。:
(define-key function-key-map (kbd "C-c H") 'event-apply-hyper-modifier)
function-key-map
是所有人的父母local-function-key-map
实例。仔细注意:
如果“local-function-key-map”中的条目与在次要模式、本地或全局键盘映射中进行的绑定冲突,则它们将被忽略。 IE。仅当原始按键序列不具有任何绑定时才适用重新映射。
C-hig (elisp) Translation Keymaps
RET
因此,请确保您使用没有现有绑定的按键序列。 (理论上这是相当有限的,但是 YMMV。)
Edit:澄清一下,当您使用没有超级修饰键的计算机时,这为您提供了一种访问任何现有“超级”绑定的方法,但实际上并不创建新的修饰键。如果您没有可供访问的现有绑定,则此技术与常规前缀绑定相比没有任何优势。
我相信,正如彼得评论的那样,创建真正的修饰键是操作系统级别的任务。 AFAIK 当您单独按下修饰键时,Emacs 不会接收任何输入,而当您按下带有修饰键的非修饰键时,Emacs 会接收(修改后的)输入。相反,当您按下/按住非修饰键时,Emacs 会立即接收输入,并且无法将该输入与其他输入组合起来并将其全部视为单个(已修改)事件。
IIRC, xmodmap
这将是 Unix 系统中实现此目的的典型机制,因此 OSX 很可能就是这种情况。以下链接可能有帮助:
- http://computing.fnal.gov/docs/products/xemacs/v21_1/xemacs.info,.SuperandHyperKeys.html http://computing.fnal.gov/docs/products/xemacs/v21_1/xemacs.info,.SuperandHyperKeys.html
- http://www.emacswiki.org/emacs/XModMap http://www.emacswiki.org/emacs/XModMap
- http://www.emacswiki.org/emacs/MetaKeyProblems http://www.emacswiki.org/emacs/MetaKeyProblems