web-dev-qa-db-fra.com

remappe right alt pour se comporter comme ctrl droit

J'essaye de remapper ma right alt se comporter comme mon right ctrl afin que je puisse utiliser mon pouce droit pour appuyer sur la ctrl bouton. C'est Ubuntu 12.04.

J'ai créé le fichier .Xmodmap dans mon dossier personnel 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 64 et mon left alt la clé a le code 108.

Cela fonctionne réellement dans le sens où ma touche alt droite se comporte comme si j'appuyais sur la ctrl clé.

Cependant ma gauche alt la clé ne fait plus rien, ce qui signifie que je n'ai pas de alt touche gauche. C'est étrange étant donné que xmodmap donne le résultat suivant:

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)

La chose étrange est que lorsque je supprime le mappage Alt_R sur control, le alt les clés fonctionnent.

(ie, changez l'avant-dernière ligne en :)

add control = Control_L Control_R

Maintenant, même ma droite alt se comporte comme alt clé qui me confond. Après avoir supprimé le mappage Alt_R de la ligne de contrôle, la sortie de xmodmap donne:

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é this site Web comme source.

8
Hoogendijk

Vous devriez pouvoir utiliser simplement 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 nom Bug # 663218

1) Commencez à nouveau en supprimant ~/.Xmodmap.

2) Notez que vous n'avez pas besoin de effacer Control et Mod1. Cela facilite la modification de ce que vous voulez. Votre ~/.Xmodmap devrait ê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
6
chaskes

Si vous êtes une des personnes malheureuses comme moi qui ne pouvait pas faire passer xmodmap à droite avec Ctrl, alors cela pourrait peut-être aider.

Si vous appuyez à droite des touches Alt et e et que vous obtenez é, cette solution est faite pour vous (besoin d'amélioration).

Exécutez ceci dans le terminal (vérifiez vos codes 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 é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: question1question2

1
Mugur 'Bud' Chirica

Sur Ubuntu 19.04, pour que le mappage s’applique à l’ensemble du système, vous devez modifier deux fichiers:

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

Ajoutez la section suivante à la précédente:

// 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 remplacez include "altwin(meta_alt)" par include "altwin(right_alt)" dans celle-ci.

0
ilyuha21st