8

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

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

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

4

2 回答 2

7

我同意@Tyler

在我的例子中,我使用 dwm 作为窗口管理器,所以 meta (ALT) 键用于控制几乎所有的功能。使用 emacs 时,元键与某些键绑定发生冲突,例如:当我在 Mf 或 Mb 上移动时(这就是我来到这个线程的原因;)),所以我找到了三个选择来解决这个问题:

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

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

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

2) 在 config.h 文件中将 meta 的 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。

于 2014-08-11T04:36:45.823 回答
3

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

编辑:是终端仿真器在进入emacs之前吞噬了按键,所以原始命令确实有效,只要按键实际上使其进入emacs。

于 2013-10-04T00:07:44.010 回答