emacs中元命令的用户超级键

emacs中元命令的用户超级键,emacs,key-bindings,emacs24,Emacs,Key Bindings,Emacs24,我正在尝试学习emacs,并希望在emacs中的任何元命令中使用键盘上的super键,因为我使用dwm作为窗口管理器,它广泛使用元键。我读过,用它来尝试 (setq x-meta-keysym 'super) (setq x-super-keysym 'meta) 没有运气。理想情况下,我只想简单地翻转它们,但只在emacs中。当我用C-hv检查变量x-meta-keysym和x-super-keysym时,命令的计算似乎是正确的。当我用linux实用程序xev检查super键时,它确认我按下

我正在尝试学习emacs,并希望在emacs中的任何元命令中使用键盘上的super键,因为我使用dwm作为窗口管理器,它广泛使用元键。我读过,用它来尝试

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

没有运气。理想情况下,我只想简单地翻转它们,但只在emacs中。当我用C-hv检查变量x-meta-keysym和x-super-keysym时,命令的计算似乎是正确的。当我用linux实用程序xev检查super键时,它确认我按下的键映射到super_L。

因此,当emacs未在终端模式下使用时,上述命令可以工作。我一直在终端上尝试,这就是为什么它不起作用。我不知道如何在终端上修复它,但我想它已经足够好了

编辑:是终端仿真器在键盘进入emacs之前吞食了键盘,所以只要键盘进入emacs,原始命令就可以工作。

我同意@Tyler的观点

在我的例子中,我使用dwm作为窗口管理器,所以meta(ALT)键用于控制它的几乎所有特性。在使用emacs时,元键与一些键绑定冲突,例如:当我在移动单词m-f或Mb时(这就是为什么我来到这个线程;),因此我找到了三种解决此问题的方法:

1) 更改emacs密钥绑定并将超级密钥用作元密钥

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

2) 在config.h文件中将meta的dwm键绑定更改为super键。看一看

3) 重写xmodmap键绑定,将mod1交换为super,将mod4交换为meta(确保第一眼看到xmodmap返回的内容,并且不影响其他程序的键绑定)


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

这对我很有用。但是,您的窗口管理器将在Emacs看到按键之前拦截按键。因此,如果您的窗口管理器使用了super键,您会遇到冲突,这可能会使Emacs看起来无法正常工作。当我使用它们时,我会尝试使用M-x,看看它是否有任何影响。当我尝试使用超级键时,我只是在缓冲区中插入一个x。但当我尝试使用meta键时,M-x仍然有效。所以我认为这不是windows管理器。
 /* key definitions */
 -#define MODKEY Mod1Mask /* meta (ALT) key */
 +#define MODKEY Mod4Mask /* super (windows or cmd) key */