重新映射右 alt 以作为右 ctrl

Hoo*_*ijk 8 xmodmap

我正在尝试重新映射我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
Run Code Online (Sandbox Code Playgroud)

你可能猜到了,我的左 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)
Run Code Online (Sandbox Code Playgroud)

奇怪的是,当我删除 Alt_R 映射到 上时controlalt键起作用了。

(即,将倒数第二行更改为:)

add control = Control_L Control_R
Run Code Online (Sandbox Code Playgroud)

现在,即使是我的右 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)
Run Code Online (Sandbox Code Playgroud)

希望大家能帮忙。

附:我使用这个网站作为来源。

cha*_*kes 6

您应该可以简单地使用Keyboard Layout >> Options >> Ctrl key position >> Right Alt as Right 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
    
    Run Code Online (Sandbox Code Playgroud)