我在 mac os 上使用 emacs。
我想将修饰符(Meta、Control...)映射到一个简单的键。
基本上这就是我需要的:(global-set-key (kbd "a") 'hyper)这里 a 只是 a 键,没有 Control-a 或其他任何东西,只有“a”,没有修饰符。
例如,我希望“a”成为 super ,但我找不到解决方案。

有人有线索吗?

最佳答案

这种方法不会在您按住修饰符的情况下按下另一个键的意义上创建修饰键,但它仍然可以让您使用 super 绑定(bind)。

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

这些绑定(bind)在 function-key-map 中,您可以使用相同的方法来获取您自己的与操作系统无关的绑定(bind)。例如。:

(define-key function-key-map (kbd "C-c H") 'event-apply-hyper-modifier)
function-key-map 是所有 local-function-key-map 实例的父对象。仔细注意:



C-hig (elisp) Translation Keymaps RET

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

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

我相信,正如 Peter 评论的那样,创建真正的修饰键是操作系统级别的任务。 AFAIK 当您单独按下修饰键时,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 创建键修饰符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10730775/

    10-13 02:57