emacs的Xkb配置
我正在尝试将三个键(左alt、右win和menu)重新映射到emacs的特定键。 具体来说,我想使用RWIN作为Hyper,我的左alt作为Meta,我的菜单作为alt 我以这种方式设置xkb。有两个文件,第一个是super_hyper(在~/.xkb/symbols中): 然后我设置了所有的emacs的Xkb配置,emacs,keyboard,x11,Emacs,Keyboard,X11,我正在尝试将三个键(左alt、右win和menu)重新映射到emacs的特定键。 具体来说,我想使用RWIN作为Hyper,我的左alt作为Meta,我的菜单作为alt 我以这种方式设置xkb。有两个文件,第一个是super_hyper(在~/.xkb/symbols中): 然后我设置了所有的 xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY xev表明,所有这些都可以完美地工作。emacs可以很好地使用hyper(右windows键)和met
xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY
xev表明,所有这些都可以完美地工作。emacs可以很好地使用hyper(右windows键)和meta(左alt键)修饰符。但是当我使用菜单键时,它的响应就像一个元修饰符,就像alt键一样。如何求解?您的左
alt
键应该已经映射为meta
键。我将在一个示例中演示如何配置Emacs以将AltGr
(右alt)识别为hyper
键。您可以根据自己的需要调整示例
AltGr
钥匙的钥匙代码:xev
。然后反复点击AltGr
键,然后关闭程序。在输出中,您可以读取AltGr
的键代码。我得到:
...keycode 108 (keysym 0xffea, Alt_R)...
shift-shift-L(0x32)、shift-R(0x3e)
锁帽和锁(0x42)
控制面板(0x25),控制面板(0x69)
mod1 Alt_L(0x40)、Alt_R(0x6c)、Meta_L(0xcd)
mod2数字锁(0x4d)
mod3
mod4
mod5 ISO_等级3_移位(0x5c),模式_开关(0xcb)
在十六进制中,键码108(十六进制0x6c)与Alt\u R
相关联
mod1
中删除Alt\u R
,因为我们希望将其映射到hyper
。此步骤是可选的。例如,我的菜单
键(十六进制代码:0x87)不会出现在此输出中。因此,我可以跳过这一步#删除与mod1相关的所有键
xmodmap-e“清除mod1”
#但是,由于我们只对Alt\u R感兴趣,请重新分配我们错误删除的内容
xmodmap-e“添加mod1=Alt_L Meta_L”
AltGr
键重新分配给Hyper
(您可以选择其他键,例如:Alt\u R
或Super\u L
,Super\u H
,…:xmodmap-e“keycode 108=Hyper\u R”
xmodmap-e“添加mod3=Hyper\u R”
AltGr-f
时,它告诉我H-f
未定义。我现在可以使用超键进行新的键绑定:(全局设置键(kbd“H-f”)'查找文件)
如果我在步骤4-5中选择将AltGr
和mod3
分配给Super\u R
,我会在步骤6中使用“S-f”
作为新的键绑定。同样,在步骤4-5中将AltGr
分配给Alt\u R
会导致在设置绑定时使用例如“A-f”
编辑
如果要将键(例如
菜单
键)分配给Alt\u R
,必须确保Meta\u L
键已映射(例如映射到mod1
)。如果Meta\u L
(例如分配给Alt\u L
)未出现在xmodmap-pm
输出中,则很可能是您的键(例如菜单
)充当进一步的meta
修改器。我不确定,但也许这个链接可以给你提供更多的见解:谢谢,但是这个链接除了gnome/ubuntu GUI之外,没有提供任何配置键盘的方法(我怀疑它会提供xkb选项配置,这远远不能满足我的需要)。我不需要一种方法来重新映射普通键,我已经可以做到了,我可以轻松地创建super和hyper。我真正需要的是有一个被emacs识别为Alt键的Alt键。我设置键没有问题,也不需要重新映射Alt键(这是meta)。我只希望键(菜单)映射为Alt(不是meta)我已经这么做了,xev显示它工作得很好,但是出于奇怪的原因(可能是emacs alt到meta回退?或者某些mod映射错误?)emacs不承认这是alt,而是meta。我想知道为什么以及如何解决。你如何在emacs中绑定alt键?如果我错了,请纠正我,但meta在旧键盘上不是现在的alt键吗?emacs能够与alt和meta有不同的键绑定,所以我会有另一个按meta不同的修饰符:是的,alt键或mally发送meta。我的键盘也有同样的行为。但我想有一个额外的修改器。如果我没有弄错的话,你可以在我的回答中看到这一点。我举了一个例子,说明如何将右Alt键指定给Hyper。但是,在最后一段中,我提到了如何使右Alt键的行为与实际的Alt键类似。在你的情况下,你需要获得menu keycode,删除到它绑定的任何位置,例如mod1(可选),重复步骤4,但不使用Hyper_R,您应该使用Alt_R并最终将其映射到mod3(步骤5)。然后,它将表现为Alt。我给出了一个右Alt键的示例,主要用于说明。我稍微修改了最后一段。
xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY
...keycode 108 (keysym 0xffea, Alt_R)...