是否可以将emacs interpet一个fn键作为修饰键?我可以绑定f6,f.ex。超级?
我有这个:
(setq ns-function-modifier 'hyper) ; set Mac's Fn key to type Hype
试图这样做:
(setq <f6> 'hyper)
但后者不起作用。
我不想将操作系统作为一个整体看作f9作为某种修饰键(使得在其他应用程序中更容易将功能键用于不同目的)。
编辑:似乎一种可能的解决方案是将f9
绑定到C-x @ h
但是当我尝试获取函数C-x @
或C-x @ h
的文档时,我不会# 39;得到任何结果。 (它只显示该函数的文档,如果我实际执行命令,然后注意h-x
已被&{34;翻译&#34;来自C-x @ h x
。所以,如果有某种方式通过函数将C-x @ h
绑定到一个键(我猜宏可以工作,但我更喜欢在可能的情况下使用elisp)我想这可以解决我的问题。
http://www.gnu.org/software/emacs/manual/html_node/emacs/Modifier-Keys.html
即使您的键盘缺少这些额外的修改键,您也可以 使用C-x @输入:C-x @ h将“超级”标志添加到下一个 字符,C-x @ s添加“超级”标志,而C-x @ a添加“alt” 旗。例如,C-x @ h C-a是一种进入Hyper-Control-a的方法。 (不幸的是,使用C-x @无法添加两个修饰符 两次为同一个角色,因为第一个去上班 C-x。)
答案 0 :(得分:7)
如果你希望它作为超级修饰符起作用,你将它与被修改的键一起保持下来,那么不 - 那是一个操作系统级别的东西,所以你需要在外面处理它Emacs。 xmodmap
是Unix下的标准方法,如果内存服务我已经读过,它在OSX中有效。
但是,您绝对可以将C-x @ h
(event-apply-hyper-modifier
)调用的函数绑定到另一个键序列。
您无法确定该功能名称的原因是该绑定位于所谓的“翻译键映射”中,该“翻译键映射”指定在读取键序列时进行的翻译,而不是对完整键序列进行绑定。因此, C-h k (其读取键序列)不能用于建立它。 OTOH注意你可以仍然使用 Cx @ Ch 来查看 Cx @ 前缀, 为您提供您所追求的信息。
有关详细信息,请参阅 C-h i g (elisp) Translation Keymaps
RET
通常,event-apply-*-modifier
函数(用于shift,control,meta(您的Alt键),super,hyper和&amp; alt(不是您的Alt键))从用户读取下一个键,然后将所需的修饰符应用于该键,将结果传递给它,就像使用实际修饰键键入它一样。
以下(我从another answer of mine取消)将使用键盘上的数字键来表示所有修饰键。
然后您可以将序列 h-x 键入为&lt; kp-5&gt; x
(define-key function-key-map (kbd "<kp-1>") 'event-apply-control-modifier)
(define-key function-key-map (kbd "<kp-2>") 'event-apply-meta-modifier)
(define-key function-key-map (kbd "<kp-3>") 'event-apply-super-modifier)
(define-key function-key-map (kbd "<kp-4>") 'event-apply-shift-modifier)
(define-key function-key-map (kbd "<kp-5>") 'event-apply-hyper-modifier)
(define-key function-key-map (kbd "<kp-6>") 'event-apply-alt-modifier)
n.b。对于 F9 ,请使用(kbd "<f9>")
。