我正在尝试重新映射我的,right alt使其像我的一样运行,right 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,而我的left 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 映射时control,这些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)
希望大家能够帮忙。
我用过这网站作为来源。
答案1
你应该能够简单地使用键盘布局 >> 选项 >> Ctrl 键位置 >> 右 Alt 为右 Ctrl,但不起作用。这已经针对 Debian 提出错误#663218
通过删除重新开始
~/.Xmodmap
。请注意,您不需要清除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
答案2
如果您和我一样不幸,无法让 xmodmap 将右 Alt 键与右 Ctrl 键切换,那么也许这会有所帮助。
如果您按下右 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,然后将 Alt_r 与 Ctrl_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
答案3
在 Ubuntu 19.04 上,为了使映射覆盖整个系统,您应该更改两个文件:
- /usr/share/X11/xkb/符号/altwin
- /usr/share/X11/xkb/符号/pc
在前一个部分中添加以下部分:
// Ctrl is mapped to the Alt.
partial modifier_keys
xkb_symbols "right_alt" {
key <LALT> { [ Alt_L, Meta_L ] };
key <RALT> { type[Group1] = "TWO_LEVEL",
symbols[Group1] = [ Control_R, Control_R ] };
modifier_map Mod1 { Alt_L, Alt_R, Meta_L, Meta_R };
modifier_map Control { <LCTL>, <RALT> };
};
并将其替换include "altwin(meta_alt)"
为include "altwin(right_alt)"
后者。
答案4
我发现了一个更简单的方法。
将该命令添加到自动启动或 .xinitrc:
setxkbmap -option ctrl:ralt_rctrl
它强制右 alt 键表现得像右 control 键。我还建议查看其他 setxkbmap 选项,有一些有用的。