我在mac os上使用emacs。
我想将修饰符(Meta,Control,...)映射到一个简单的键。
基本上这就是我需要的:(global-set-key (kbd "a") 'hyper)
这里只是一个键,没有Control-a或者其他什么,只是一个单独的whithout修饰符。
我希望“a”成为超级例如但我无法找到解决方案。
有人有线索吗?
答案 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可能就是这种情况。以下链接可能有所帮助: