remapper alt droite pour se comporter comme ctrl droit


8

J'essaie de remapper mon right altcomportement right ctrlpour que je puisse utiliser mon pouce droit pour appuyer sur le ctrlbouton. Il s'agit d'Ubuntu 12.04.

J'ai créé le fichier .Xmodmap dans mon dossier d'accueil avec le contenu suivant:

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

Comme vous pouvez le deviner, ma touche alt gauche a le code clé 64 et ma left altclé a le code clé 108.

Cela fonctionne en fait dans le sens où ma touche alt droite se comporte comme si j'appuyais sur la ctrltouche.

Cependant, ma altclé gauche ne fait plus rien, ce qui signifie que je n'ai plus de altclé. C'est étrange étant donné que cela xmodmapdonne la sortie suivante:

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)

Ce qui est étrange, c'est que lorsque je supprime le mappage Alt_R control, les altclés fonctionnent.

(c.-à-d., changez l'avant-dernière ligne en :)

add control = Control_L Control_R

Maintenant, même mon alt droit se comporte comme une altclé qui me confond. Après avoir supprimé le mappage Alt_R de la ligne de contrôle, la sortie de xmodmapdonne:

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)

J'espère que vous pouvez aider.

ps. J'ai utilisé ce site Web comme source.

Réponses:


6

Vous devriez pouvoir simplement utiliser la disposition du clavier >> Options >> Position de la touche Ctrl >> Alt droite comme Ctrl droite , mais cela ne fonctionne pas. Cela a déjà été déposé contre Debian sous le bogue # 663218

1) Recommencez en supprimant ~ / .Xmodmap.

2) Notez que vous n'avez pas besoin d' effacer Control et Mod1. Cela rend plus facile de changer uniquement ce que vous voulez. Votre ~ / .Xmodmap doit être:

!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

Si vous êtes l'une des malheureuses personnes comme moi qui n'a pas pu faire en sorte que xmodmap commute Alt à droite avec Ctrl à droite, alors peut-être que cela aidera.

Si vous appuyez à droite sur Alt et e et que vous obtenez é, cette solution est pour vous (nécessite une amélioration).

Exécutez ceci dans le terminal (vérifiez vos codes clés avec xev):

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

puis mettez ce code dans votre .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

Ce code définit votre clé Alt_Gr sur Alt_R, puis il échange Alt_r avec Ctrl_R.

Si vous souhaitez que cela reste après votre déconnexion, placez les commandes suivantes dans l'un de vos fichiers shell de démarrage, par exemple ~ / .profile:

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

sources: question1 question2


1

Sur Ubuntu 19.04, pour étendre le mappage à l'échelle du système, vous devez modifier deux fichiers:

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

Ajoutez la section suivante à l'ancienne:

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

Et remplacer include "altwin(meta_alt)"le include "altwin(right_alt)"dans ce dernier.


Cela répond à la question et fonctionne. Mais la réponse acceptée échange le bon alt et le bon ctrl. Cela n'a pas été demandé à l'origine, mais je pense que c'est une solution que beaucoup recherchent (avoir deux contrôles à droite n'est pas si pratique). Pourriez-vous ajouter comment mapper le bon contrôle à la bonne alt?
Tedward
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.