emacs创建键修饰符

its*_*tsu 4 emacs modifier-key

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

有人有线索吗?

phi*_*ils 7

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

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

这些绑定在function-key-map,您可以使用相同的方法来获得自己的OS独立绑定.例如:

(define-key function-key-map (kbd "C-c H") 'event-apply-hyper-modifier)
Run Code Online (Sandbox Code Playgroud)

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

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

C-hig (elisp) Translation Keymaps RET

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

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

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

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