emacs 中元命令的用户超级键



我正在尝试学习 emacs,并希望将键盘上的超级键用于 emacs 中的任何元命令,因为我使用 dwm 作为我的窗口管理器,它广泛使用元键。我已经阅读了此页面,使用它来尝试

(setq x-meta-keysym 'super)
(setq x-super-keysym 'meta)

没有运气。理想情况下,我想简单地翻转它们,但仅限于 emacs 中。当我用 C-h v 检查变量 x-meta-keysym 和 x-super-keysym 时,命令似乎确实被正确评估。当我使用 linux 实用程序 xev 检查超级键时,它确认我按下的键已映射到Super_L。

我同意@Tyler

就我而言,我使用 dwm 作为窗口管理器,因此元 (ALT) 键用于控制其几乎所有功能。使用 emacs 时,元键与某些键绑定冲突,例如:当我在单词 M-f 或 Mb 周围移动时(这就是我;)来到这个线程的原因),所以我找到了三个选择来摆脱这个问题:

1)更改Emacs键绑定并使用超级键作为元键

(setq  x-meta-keysym 'super
       x-super-keysym 'meta)

这两个符号(变量)都是必需的,因为如果你只使用 x-super-keysym 'meta,它会将两个键都作为元键。如果你只使用 x-meta-keysym 'super,它会禁用两者,de 命令缓冲区将返回 s-x 是未定义的。

2) 在 config.h 文件中将元的 DWM 键绑定更改为超级键。看看 http://dwm.suckless.org/customisation/windows_key

 /* key definitions */
 -#define MODKEY Mod1Mask /* meta (ALT) key */
 +#define MODKEY Mod4Mask /* super (windows or cmd) key */
3)覆盖xmodmap键映射绑定,将

mod1交换为super,将mod4交换为meta(一定要第一眼检查xmodmap返回的内容,并且不影响其他程序的键绑定)

最后,我建议不要更改默认的 emacs 元键,因为它对您的手指不太舒服,并且可能会导致您对击键反应缓慢。根据您的环境尝试选项 2 或 3。

因此,事实证明,当 emacs 不在终端模式下使用时,上述命令有效。我一直在终端中专门尝试它,这就是它不起作用的原因。我不确定如何在终端中修复它,但我想它已经足够好了。

编辑:是终端模拟器在按键到达Emacs之前吞噬了它们,所以原始命令确实有效,只要按键实际上进入了Emacs。

最新更新