переназначить право 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)

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

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

Ответы:


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

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


Это отвечает на вопрос и работает. Но принятый ответ меняет правый alt и правый ctrl. Это не было изначально задано, но я думаю, что это решение, которое многие ищут (наличие двух элементов управления справа не очень удобно). Не могли бы вы добавить, как отобразить правильный контроль на правый alt?
Тедвард
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.