переназначить право alt вести себя как правильно ctrl

8

Я пытаюсь переназначить мой, 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_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)

Надеюсь, вы, ребята, можете помочь.

пс. Я использовал этот сайт в качестве источника.

Hoogendijk
источник

Ответы:

6

Вы должны иметь возможность просто использовать раскладку клавиатуры >> Параметры >> Положение клавиши Ctrl >> Right Alt as Right 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
chaskes
источник
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.

Если вы хотите, чтобы это оставалось после выхода из системы, поместите следующие команды в любой из ваших файлов оболочки запуска, например ~ / .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

Мугур Буд Будь Чирица
источник
1

В Ubuntu 19.04, чтобы сделать общесистемное отображение, вы должны изменить два файла:

  • / USR / доли / X11 / Х / символы / altwin
  • / USR / доли / X11 / Х / символы / шт

Добавьте следующий раздел к предыдущему:

// 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)"в последнем.

ilyuha21st
источник
Это отвечает на вопрос и работает. Но принятый ответ меняет правый alt и правый ctrl. Это не было изначально задано, но я думаю, что это решение, которое многие ищут (наличие двух элементов управления справа не очень удобно). Не могли бы вы добавить, как отобразить правильный контроль на правый alt?
Тедвард