-->

emacs的创建功能键(emacs create key modifier)

2019-09-17 11:36发布

我使用Mac OS上的Emacs。 我想一个修饰符(元,控制,...)映射到一个简单的键。 基本上这就是我需要: (global-set-key (kbd "a") 'hyper)这里,仅仅是一个关键,没有控制-A或什么,只是‘一个’单独修改内部消除。 我想“一个”,例如要成为超级,但我无法找到一个解决方案。

有人有线索?

Answer 1:

这种方法不会使你在按住修饰符另一个关键意义上的修饰键,但是它允许您使用Hyper绑定不过。

默认情况下,您可以利用通过CX @前缀额外的修饰键。 见CX @ 的完整列表。

这些绑定在function-key-map ,你可以用同样的方法来获得自己的独立于操作系统的绑定。 例如:

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

function-key-map是所有家长local-function-key-map实例。 仔细注意:

如果他们在小模式,局部或全局的键盘布局由绑定冲突的地方`功能键映射”项将被忽略。 即只有当原始密钥序列,否则不会有任何约束力的应用重新映射。

CH 1 (elisp) Translation Keymaps RET

所以请确保您使用的密钥序列与任何现有绑定。 (在理论是相当限制,但情况因人而异。)

编辑:为了澄清,这给你一个方法,当你使用一台机器不超修饰键访问任何现有的“超”的绑定,但实际上并没有创建一个新的组合键。 如果你没有现有绑定访问,这种技术比普通的前缀绑定有没有优势。

我认为它是,因为彼得评论说,创造一个真正的修改键是一个系统级的任务的情况。 据我所知,当你按它自己的组合键,Emacs将不接受任何输入,而当你按下一个非修饰与改性,Emacs的接收(修改)输入。 相反,当你按下/保持非修改键,Emacs的立即接收输入,并且有没有办法将输入与其他输入相结合,并把它作为一个单一的(修改)事件。

IIRC, xmodmap将是在Unix系统上实现这一目标的典型机制,使可能成为OSX的情况。 以下链接可以帮助:

  • http://computing.fnal.gov/docs/products/xemacs/v21_1/xemacs.info,.SuperandHyperKeys.html
  • http://www.emacswiki.org/emacs/XModMap
  • http://www.emacswiki.org/emacs/MetaKeyProblems


文章来源: emacs create key modifier