emacs创建键修饰符

时间:2012-05-24 03:32:31

标签: emacs modifier-key

我在mac os上使用emacs。 我想将修饰符(Meta,Control,...)映射到一个简单的键。 基本上这就是我需要的:(global-set-key (kbd "a") 'hyper) 这里只是一个键,没有Control-a或者其他什么,只是一个单独的whithout修饰符。 我希望“a”成为超级例如但我无法找到解决方案。

有人有线索吗?

1 个答案:

答案 0 :(得分:7)

这种方法不会产生修饰键,因为你按住修改器按下另一个键,但它允许你使用超绑定。

默认情况下,您可以通过 C-x @ 前缀使用其他修饰键。有关完整列表,请参阅 C-x @ C-h

这些绑定位于function-key-map中,您可以使用相同的方法来获取自己的OS独立绑定。 e.g:

(define-key function-key-map (kbd "C-c H") 'event-apply-hyper-modifier)

function-key-map是所有local-function-key-map个实例的父级。请注意:

  

如果`local-function-key-map'中的条目与次模式,本地或全局键映射中的绑定冲突,则忽略这些条目。即重新映射仅适用于原始密钥序列否则不具有任何绑定的情况。

C-h i g (elisp) Translation Keymaps RET

因此,请确保使用没有现有绑定的键序列。 (理论上这是非常有限的,但是YMMV。)

编辑:为了澄清,当您使用没有超级修饰键的计算机时,这为您提供了一种访问任何现有“超级”绑定的方法,但实际上并未创建新的修饰键。如果您没有可访问的现有绑定,则此技术与常规前缀绑定相比没有优势。

我相信正如彼得所评论的那样,创建一个真正的修饰键是一个操作系统级别的任务。当您自己按下修改键时,AFAIK,Emacs不会收到任何输入,当您使用修饰符按下非修饰符时,Emacs会收到(修改过的)输入。相反,当您按下/按住非修饰键时,Emacs会立即接收输入,并且无法将该输入与其他输入组合,并将其全部视为单个(已修改)事件。

IIRC,xmodmap将是在Unix系统中实现这一目标的典型机制,因此OSX可能就是这种情况。以下链接可能有所帮助: