重新映射右Alt以表现为正确的ctrl

我正在尝试重新映射我的右侧alt以表现得像我的右ctrl所以我可以用我的右拇指按下ctrl按钮。 这是Ubuntu 12.04。

我在我的主文件夹中创建了.Xmodmap文件,其中包含以下内容:

clear control clear mod1 !keycode 64 = Alt_L Meta_L keycode 108 = Alt_R Meta_R add control = Control_L Control_R Alt_R add mod1 = Alt_L Meta_L 

正如您可能猜到的,我的左侧alt键具有键码64,而我的左侧Alt键具有键码108。

这实际上是在我的右Alt键表现就像按下ctrl键的意义上。

但是我的左Alt键现在不再做任何事了,这意味着我没有剩下的alt键。 鉴于xmodmap提供以下输出,这很奇怪:

 xmodmap: up to 4 keys per modifier, (keycodes in parentheses): shift Shift_L (0x32), Shift_R (0x3e) lock Caps_Lock (0x42) control Control_L (0x25), Control_R (0x69), Alt_R (0x6c) mod1 Alt_L (0x40), Alt_L (0xcc), Meta_L (0xcd) mod2 Num_Lock (0x4d) mod3 mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf) mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb) 

奇怪的是,当我将Alt_R映射移到控件上时alt键有效。

(即,将第二行更改为最后一行:)

 add control = Control_L Control_R 

现在,即使我的右侧alt也会像alt键一样让我感到困惑。 从控制行中删除Alt_R映射后,xmodmap的输出给出:

 xmodmap: up to 4 keys per modifier, (keycodes in parentheses): shift Shift_L (0x32), Shift_R (0x3e) lock Caps_Lock (0x42) control Control_L (0x25), Control_R (0x69) mod1 Alt_L (0x40), Alt_L (0xcc), Meta_L (0xcd) mod2 Num_Lock (0x4d) mod3 mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf) mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb) 

希望你们能帮忙。

PS。 我用这个网站作为来源。

您应该能够简单地使用键盘布局>>选项>> Ctrl键位置>>右Alt作为右Ctrl ,但这不起作用。 这已经作为Bug#663218提交给Debian

1)删除〜/ .Xmodmap以重新开始。

2)请注意,您无需清除 Control和Mod1。 这样可以更轻松地仅更改您想要的内容。 你的〜/ .Xmodmap应该是:

 !Swap right control and right alt remove Control = Control_R remove Mod1 = Alt_R keycode 105 = Alt_R keycode 108 = Control_R add Control = Control_R add Mod1 = Alt_R 

如果你是像我这样的不幸的人之一,无法让xmodmap用右Ctrl切换右Alt,那么也许这会有所帮助。

如果你按下右Alt和e然后你得到é那么这个解决方案适合你(需要改进)。

在终端中运行此命令(使用xev检查您的密钥代码):

 xmodmap -e "keycode 108 = Alt_R Meta_R Alt_R Meta_R" 

然后将此代码放在.Xmodmap中:

 remove Control = Control_R remove Mod1 = Alt_R keycode 105 = Alt_R keycode 108 = Control_R add Control = Control_R add Mod1 = Alt_R 

此代码将Alt_Gr键设置为Alt_R,然后使用Ctrl_R交换Alt_r。

如果要在注销后保留此命令,请将以下命令放在任何启动shell文件中,例如〜/ .profile:

 if [ -f $HOME/.Xmodmap ]; then xmodmap -e "keycode 108 = Alt_R Meta_R Alt_R Meta_R" /usr/bin/xmodmap $HOME/.Xmodmap fi 

来源: 问题1 问题2