将普通键转换为修饰键


11

我有一个键盘,出于某种莫名其妙的原因,它具有一个将丹麦元符号发送到OS X-的键§。移位时,它将发送加号/减号- ±

是否可以在Emacs中查看§密钥并将其转换为Hyper或Super?因此,如果我按住该§键并按f,它将H-f在Emacs中激活。

我已经尝试了以下方法,但不起作用:

(define-key key-translation-map (kbd "§") (kbd "<Hyper>"))

它只是<Hyper> is undefined在按下键时说,根本不充当修饰符。

这也行不通:

(define-key key-translation-map (kbd "§") "<Hyper>")

只是把§钥匙变成了<钥匙。



2
您应该能够在操作系统级别执行此操作,但不能在emacs中执行此操作。
马拉巴巴

Answers:


4

简短版本:用Emacs来讲,我真正需要的是和弦


@Malabarba和@XinUmbralis似乎是正确的-Emacs不允许您正常地将普通键转换为修饰键。我真的不喜欢组合键盘上的每个修饰键并称其为“ Hyper”的想法,因为将来它可能会与其他事物发生冲突。

我已经使用过Karabiner,显然您可以使用它创建自定义修饰符。但这需要在操作系统级别映射每个组合,以便§-a发送一些Emacs知道如何处理的信息。

然后我想起了和弦库,并意识到这是我想要的真正的Emacs术语。配置示例:

(require 'key-chord)
(key-chord-mode 1)
(key-chord-define-global "§a" 'other-frame)

我与键和弦有关的一个问题是,键和弦的语义与修饰符+键有些许不同-不允许重复,并且必须非常迅速地输入整个和弦。

如果我想出解决这些问题的方法,我会在某个地方写它,并提供编辑此答案的链接。


3

您可能也可能无法重新绑定分区符号键(§键)来发送超级命令,但是可以使用Seil PCKeyboardHack重新绑定大写锁定键来发送Hyper 。

为了重新绑定Seil中的caps-lock键,只需执行以下操作:

  1. 打开Seil并单击“更改大写锁定键”。
  2. 选中“更改大写锁定键”旁边的复选框。
  3. 双击键码,然后输入键码80。

1
作为答案,这个答案可能会更好。通常,答案除了提供链接外,还应该做更多的事情,部分原因是链接可能随时消失。您能否编辑您的答案以使其更加独立?

不幸的是,至少对于我来说,将键码设置为80并没有任何作用。
Marcin's
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.