emacs创建关键点修改器

emacs创建关键点修改器,emacs,modifier-key,Emacs,Modifier Key,我在mac os上使用emacs。 我想把一个修改器(Meta,Control,…)映射到一个简单的键。 基本上这就是我需要的:(全局设置键(kbd“a”)'hyper) 这里a只是a键,没有控件-a或其他什么,只是“a”,没有修改器。 例如,我希望“a”变成超链接,但我找不到解决方案 有人有线索吗?这种方法不会在按住修改器的情况下按另一个键的意义上生成修改器键,但它允许您使用超绑定 默认情况下,您可以通过C-x@前缀使用其他修改器关键点。见C-x@C-h代表完整列表 这些绑定位于函数键映射中,

我在mac os上使用emacs。 我想把一个修改器(Meta,Control,…)映射到一个简单的键。 基本上这就是我需要的:
(全局设置键(kbd“a”)'hyper)
这里a只是a键,没有控件-a或其他什么,只是“a”,没有修改器。 例如,我希望“a”变成超链接,但我找不到解决方案


有人有线索吗?

这种方法不会在按住修改器的情况下按另一个键的意义上生成修改器键,但它允许您使用超绑定

默认情况下,您可以通过C-x@前缀使用其他修改器关键点。见C-x@C-h代表完整列表

这些绑定位于
函数键映射中
,您可以使用相同的方法获得自己的独立于操作系统的绑定。e、 g:

(定义键功能键映射(kbd“C-C H”)“事件应用超修饰符)
功能键映射
是所有
本地功能键映射
实例的父级。请仔细注意:

如果“本地函数键映射”中的条目与在次要模式、本地或全局键映射中进行的绑定冲突,则将忽略这些条目。即,仅当原始密钥序列没有任何绑定时,重新映射才适用

C-hig
(elisp)翻译键图


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

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

我相信,正如Peter评论的那样,创建一个真正的修改器密钥是一项操作系统级的任务。AFAIK当您单独按下修改器键时,Emacs不会接收任何输入,当您使用修改器按下非修改器时,Emacs会接收(修改的)输入。相反,当您按住非修改器键时,Emacs会立即接收输入,并且无法将该输入与其他输入组合起来,并将其视为单个(修改的)事件

IIRC,
xmodmap
将是在Unix系统中实现这一点的典型机制,因此OSX很可能就是这样。以下链接可能会有所帮助:


您运行的操作系统和Emacs版本是什么?据我所见,设置超键和超级键是操作系统特有的。我的emacs版本是23.4,我在mac OS 10.7上运行。我已经尝试过这种解决方法,但不幸的是,它的行为并不完全像普通的修改器。例如,如果我在delete char上映射了H-d,那么当我输入a-d时,它将第一次工作,但是如果我再次输入d,它将插入一个“d”,而不是删除另一个char。此函数只发送一个“事件”,因此我不能将其用作真正的修饰符。不幸的是:-(谢谢phils,我不知道mac OS下存在xmodmap,这应该可以完成任务;-)“确保使用没有现有绑定的密钥序列”,或者可以使用密钥转换映射,而这似乎比其他密钥绑定更优先(至少根据我的测试)。