重新映射右 alt 键,使其表现为右 ctrl 键

重新映射右 alt 键,使其表现为右 ctrl 键

我正在尝试重新映射我的,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

  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
    

答案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

来源:问题1 问题2

答案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 选项,有一些有用的。

相关内容