2013-09-24 15 views
5

我正在尝试学习emacs,并且想要在我的键盘上使用超级密钥来处理emacs中的任何元命令,因为我使用dwm作为我的窗口管理器,并且它使用元键广泛。我已阅读this page,使用它来尝试emacs中的元命令的用户超级密钥

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

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

+0

这对我有用。但是,您的窗口管理器会在Emacs看到它们之前拦截按键。所以,如果你的窗口管理器使用超级密钥,你会得到冲突,可能会使它看起来像Emacs不能正常工作。 – Tyler

+0

当我使用它们时,我尝试使用M-x并查看它是否有任何影响。当我尝试使用我的超级密钥时,我只是将一个x插入缓冲区。但是,当我尝试使用meta key时,M-x仍然有效。所以我不认为它是Windows的经理。 – adiviness

回答

3

所以,事实证明,当终端模式中不使用emacs时,上述命令工作。我一直在终端尝试它,这就是为什么它不工作。我不知道如何在终端上修复它,但我想它已经足够了。

编辑:这是终端模拟器在他们到达emacs之前吞噬了按键,所以原始命令可以工作,只要按键实际上使它成为emacs。

3

我@Tyler

同意在我来说,我使用DWM作为窗口管理器,所以元(ALT)键用于几乎控制其所有功能。当使用emacs时,元键与一些键绑定冲突,例如:当我在字母Mf或Mb(这就是为什么我来到这个线程)移动时,所以我找到了三个选择来摆脱这个问题:

1)改变emacs的键绑定,并使用超键作为meta键

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

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

2)将meta的dwm键绑定改为config.h文件中的超级键。参加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至超级MOD4至元(一定要检查什么xmodmap的第一眼的回报,而不会影响其它程序的按键绑定)

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