odwzoruj prawy alt, aby zachowywał się jak prawy Ctrl

8

Próbuję zmienić mapowanie, right altaby zachowywał się tak, jak mój, right ctrlwięc mogę użyć prawego kciuka, aby nacisnąć ctrlprzycisk. To jest Ubuntu 12.04.

Plik .Xmodmap utworzyłem w moim folderze domowym z następującą zawartością:

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

Jak można się domyślić, mój lewy klawisz alt ma kod 64, a mój left altklucz ma kod 108.

To faktycznie działa w tym sensie, że mój prawy klawisz Alt działa tak, jakbym go naciskał ctrl.

Jednak mój lewy altklawisz już nic nie robi, co oznacza, że ​​nie mam już altklucza. Jest to dziwne, biorąc xmodmappod uwagę następujące wyniki:

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)

Najdziwniejsze jest to, że kiedy usunąć mapowanie Alt_R na control, że altklawisze działają.

(tj. zmień drugą do ostatniej linii na :)

add control = Control_L Control_R

Teraz nawet moja prawa alt działa jak altklucz, który mnie dezorientuje. Po usunięciu mapowania Alt_R z linii kontrolnej dane wyjściowe xmodmapdają:

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)

Mam nadzieję, że możecie pomóc.

ps. Użyłem tej strony jako źródła.

Hoogendijk
źródło

Odpowiedzi:

6

Powinieneś być w stanie po prostu użyć układu klawiatury >> Opcje >> Pozycja klawisza Ctrl >> Prawy Alt jako Prawy Ctrl , ale to nie działa. Zostało to już zgłoszone przeciwko Debianowi jako Bug # 663218

1) Zacznij od nowa, usuwając ~ / .Xmodmap.

2) Pamiętaj, że nie musisz wyczyścić Control i Mod1. Ułatwia to zmianę tylko tego, co chcesz. Twoja ~ / .Xmodmap powinna być:

!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
kolby
źródło
2

Jeśli jesteś jednym z nieszczęśliwych ludzi takich jak ja, którzy nie mogli zmusić xmodmap do zmiany Alt z prawym Ctrl, to może to pomoże.

Jeśli naciśniesz klawisz Alt i e, a otrzymasz é, to rozwiązanie jest dla Ciebie (wymaga poprawy).

Uruchom to w terminalu (sprawdź kody dostępu za pomocą xev):

xmodmap -e "keycode 108 = Alt_R Meta_R Alt_R Meta_R"

następnie umieść ten kod w .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

Ten kod ustawia klucz Alt_Gr na Alt_R, a następnie zamienia Alt_r za pomocą Ctrl_R.

Jeśli chcesz, aby pozostało po wylogowaniu, umieść następujące polecenia w dowolnym pliku powłoki startowej, na przykład ~ / .profile:

if [ -f $HOME/.Xmodmap ]; then
  xmodmap -e "keycode 108 = Alt_R Meta_R Alt_R Meta_R"
  /usr/bin/xmodmap $HOME/.Xmodmap
fi

źródła: pytanie 1 pytanie 2

Mugur „Bud” Chirica
źródło
1

W systemie Ubuntu 19.04, aby mapowanie obejmowało cały system, należy zmienić dwa pliki:

  • / usr / share / X11 / xkb / symbols / altwin
  • / usr / share / X11 / xkb / symbols / pc

Dodaj następną sekcję do poprzedniej:

// 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> };
};

I zamień include "altwin(meta_alt)"na include "altwin(right_alt)"te ostatnie.

ilyuha21st
źródło
To odpowiada na pytanie i działa. Ale zaakceptowana odpowiedź zamienia prawy Alt i prawy Ctrl. To nie było pierwotnie zadawane, ale myślę, że jest to rozwiązanie, którego wielu szuka (posiadanie dwóch elementów sterujących po prawej stronie nie jest tak przydatne). Czy mógłbyś dodać, jak zmapować odpowiednią kontrolę do prawej alt?
Tedward