Je cherche un moyen de remapper certaines touches dans ubuntu.
c'est-à-dire
J'aimerais changer PgUp a Home o PgDown a End .
Existe-t-il une commande intégrée ou un outil pour réassigner les clés dans Ubuntu/GNOME ?
Je cherche un moyen de remapper certaines touches dans ubuntu.
c'est-à-dire
J'aimerais changer PgUp a Home o PgDown a End .
Existe-t-il une commande intégrée ou un outil pour réassigner les clés dans Ubuntu/GNOME ?
Avis : Depuis 2013, Ubuntu et ses dérivés n'utilisent plus de xmodmap
mais utilisez plutôt xkb
. Pour plus d'informations, voir cette réponse . La réponse ci-dessous n'est plus pertinente pour les versions actuelles.
Pour remapper certaines touches, vous avez besoin de deux outils. D'abord xev (outil en ligne de commande) et le second xmodmap (également outil en ligne de commande). Les deux devraient être disponibles dans Ubuntu sans installation supplémentaire.
Démarrez une fenêtre de terminal et exécutez xev
. Maintenant, il est actif et attend que vous appuyiez sur une touche. Ensuite, appuyez sur la touche dont vous voulez modifier le comportement, par exemple PgUp .
xev
donnera quelques informations sur la touche pressée. La troisième ligne est importante. Elle doit ressembler à :
state 0x10, keycode 110 (keysym 0xff55, Prior), same_screen YES,
dans cet exemple Prior
est le nom du comportement auquel la clé est assignée en ce moment, le numéro keycode est l'identifiant interne pour reconnaître la clé. Faites maintenant la même chose avec une autre clé, c'est-à-dire PgDown donne ce résultat
state 0x10, keycode 115 (keysym 0xff56, Next), same_screen YES,
Là encore, la partie intéressante pour nous est keycode 115
y Next
- le nom du comportement.
maintenant quand vous voulez échanger les deux clés utilisez xmodmap
.
xmodmap -e "keycode 110 = Next"
Cela change la touche avec le code 110 sur votre clavier pour l'action Next
. C'est assez simple.
Notez que si la clé que vous mappez doit avoir une signification différente lorsqu'elle est utilisée avec la fonction Shift (par exemple pour les claviers britanniques), Shift + 2 donne des guillemets), vous pouvez simplement énumérer la commande secondaire après la première. Par exemple, si vous voulez que la touche avec le code 53 corresponde à la barre oblique inverse normalement, mais au symbole de la barre lorsqu'elle est utilisée avec shift, vous pouvez le faire :
xmodmap -e "keycode 53 = backslash bar"
Informations complémentaires : La séquence de ces mappings est Key , Shift+Key , mode_switch+Key , mode_switch+Shift+Key , AltGr+Key , AltGr+Shift+Key . Pour sauter une colonne, utilisez NoSymbol
. De plus, aquí est une liste complète de tous les keysyms.
Note : Ces changements ne concernent que la session X active et seront perdus après un redémarrage. Si vous voulez sauvegarder les changements de façon permanente, vous devez exécuter les commandes suivantes après les commandes ci-dessus :
xmodmap -pke >~/.Xmodmap
(il crée un fichier nommé .Xmodmap
dans votre répertoire personnel ( ~
))
Ensuite, vous devez créer un fichier nommé .xinitrc
dans votre répertoire personnel où vous avez placé la commande xmodmap .Xmodmap
dans.
Vous pouvez maintenant modifier .Xmodmap
et exécuter xmodmap .Xmodmap
depuis la console pour voir les changements immédiatement. Les changements dans .Xmodmap
persistera.
source : Ubuntu Foruns
Si la touche que vous remappez a un comportement différent en fonction d'un état ( comme la façon dont les touches du clavier numérique dépendent de NumLock), il vous suffit de faire xmodmap -pm
pour obtenir une liste de modificateurs et ensuite faire :
xmodmap -e "KEYCODE MODIFIER = behaviour behaviour_with_modifier"
Supposons, par exemple, que vous souhaitiez obtenir un point à la place d'une virgule sur le clavier numérique (utile pour la plupart des programmeurs), mais que vous souhaitiez conserver le comportement de "suppression" lorsque NumLock est désactivé.
xmodmap -e "keycode 91 mod2 = KP_Delete period"
mod2
parce que xmodmap -pm
nous dit que mod2
es Num_Lock
les autres noms s'obtiennent en appuyant sur les touches en xev
.
Si vous essayez de déplacer une touche Shift, il y a quelques étapes supplémentaires :
xmodmap -e "keycode 62 = Up" # Shift => Up
xmodmap -e "keycode 111 = Shift_R" # Up => Shift
xmodmap -e "add shift = Shift_R" # Make the new Shift key actually do shifting
xmodmap -e "remove shift = Up" # Prevent the old Shift key from shifting
xset r 62 # Make the new Up key autorepeat
xset -r 111 # Prevent the new Shift key from autorepeating
J'ai juste eu une idée après coup... Je pense que vous voulez dire quelque chose de complètement différent par "remap"... mais je vais laisser ma réponse telle quelle... (Je ne sais pas comment réassigner une touche pour qu'elle se comporte comme une autre).
UPDATE J'ai répondu à la mauvaise question :)... veuillez consulter la réponse du Wiki communautaire de NES (acceptée ci-dessus).
Il existe deux façons générales de remap relier une clé.
Pour les méthodes "locales à un programme", il existe parfois un moyen de modifier les raccourcis clavier proposés par l'application elle-même... ex.
Firefox
a un addon appelé keyconfig ... pour plus d'informations, voir ceci Poste de MozillZine
La plupart des programmes Ubuntu sont basés sur Gnome et il existe un utilitaire spécifique permettant de modifier la combinaison de touches pour tout élément de menu de ces applications Gnome... Il s'appelle Editable Menu Accelerator
... Il s'agit d'un outil très sensible, mais assez puissant. Vous pouvez l'activer en exécutant gconf-editor
(via le Terminal ou Alt+F2)... naviguez jusqu'à desktop
-- gnome
-- interface
et sélectionnez can_change_accels
.... Vous pouvez alors changer les éléments de menu pour virtuellement ce que vous voulez (par programme/fenêtre)... Je vous suggère de le désactiver dès que vous avez fait ce dont vous avez besoin...
Sinon, vous pouvez configurer des touches de raccourci globales. J'utilise un programme appelé xbindkeys Il existe également une option disponible via le menu principal -- Préférences, appelée Keyboard Shortcuts
Si vous utilisez xbindkeys, vous devrez l'ajouter à vos "Startup Applications" (Menu principal -- Préférences) ... En outre (comme suggéré par Stefano Palazzo), j'ai déjà écrit une description plus détaillée de xbindkeys dans une réponse sur ce site. page askubuntu
Voici comment j'ai essayé de modifier le mappage de la fonction ENTER sur la touche SHIFT clé (et vice versa) :
$ uname -a
RAPPORTS :
Linux box 2.6.32-37-generic #81-Ubuntu SMP Fri Dec 2 20:35:14 UTC 2011 i686 GNU/Linux
$ which xmodmap
RAPPORTS :
/usr/bin/xmodmap
$ which xev
RAPPORTS :
/usr/bin/xev
$ xev
(ignorez les cinquante lignes suivantes environ)
PRESS THE ENTER KEY (notice the third line):
KeyPress event, serial 33, synthetic NO, window 0x5600001,
root 0x110, subw 0x0, time 263441120, (738,242), root:(771,314),
state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES,
XLookupString gives 1 bytes: (0d)
XmbLookupString gives 1 bytes: (0d)
XFilterEvent returns: False
KeyRelease event, serial 33, synthetic NO, window 0x5600001,
root 0x110, subw 0x0, time 263441271, (738,242), root:(771,314),
state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES,
XLookupString gives 1 bytes: (0d)
XFilterEvent returns: False
PRESS THE SHIFT KEY (notice the third line):
KeyPress event, serial 30, synthetic NO, window 0x5600001,
root 0x110, subw 0x0, time 263592202, (464,368), root:(497,440),
state 0x0, keycode 62 (keysym 0xffe2, Shift_R), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 33, synthetic NO, window 0x5600001,
root 0x110, subw 0x0, time 263592298, (464,368), root:(497,440),
state 0x1, keycode 62 (keysym 0xffe2, Shift_R), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
Ce qui est important, c'est la troisième ligne de chaque touche :
FOR:
state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES,
The name "Return" is the name of the behavior of the key pressed.
The number of the key pressed is "36".
state 0x0, keycode 62 (keysym 0xffe2, Shift_R), same_screen YES,
The name "Shift_R" is the name of the behavior of the key pressed.
The number of the key pressed is "62".
INVERSER LE MAPPAGE :
$ xmodmap -e "keycode 62 = Return"
$ xmodmap -e "keycode 36 = Shift_R"
SAUVEGARDER LES RÉSULTATS :
$ xmodmap -pke > ~/.Xmodmap
$ vi ~/.xinitrc
ADD
xmodmap ~/.Xmodmap
$ sudo reboot
Le principal problème était que l'inversion ne fonctionnait PAS. Le site ENTER a été mis en correspondance avec la clé SHIFT_R mais la touche SHIFT_R n'a pas été mis en correspondance avec la clé ENTER clé. Allez comprendre.
Pour effectuer des remappages globaux indépendamment de X, vous pouvez utiliser la fonction console-setup(5) à la place.
Dans mon cas, je voulais remapper Caps Lock pour D puisque mon D -La clé est cassée :)
J'ai d'abord utilisé dumpkeys(1) pour obtenir un modèle pour un mappage, dans le cas de l D -La partie intéressante est le mappage pour le code de touche 32 (sur mon clavier) ; Notez qu'il y a deux espaces dans le motif grep !
$ sudo dumpkeys | grep "keycode 32" > tempfile
$ cat tempfile
keycode 32 = +d
shift keycode 32 = +D
altgr keycode 32 = +eth
shift altgr keycode 32 = +ETH
control keycode 32 = Control_d
shift control keycode 32 = Control_d
altgr control keycode 32 = Control_d
shift altgr control keycode 32 = Control_d
(121 lines total...)
Afin de modifier la carte à appliquer à Caps Lock (code 58 sur mon clavier) au lieu de
sed 's/32/58/' -i tempfile
Maintenant, il se lit comme suit
keycode 58 = +d
shift keycode 58 = +D
altgr keycode 58 = +eth
(etc...)
Pour ajouter cette remappage à la carte par défaut, il suffit de l'ajouter au fichier d'inclusion de remap pour console-setup
sudo sh -c 'cat tempfile >> /etc/console-setup/remap.inc'
und console-setup doit être reconfiguré (en sautant les questions de faible priorité avec des -phigh
)
sudo dpkg-reconfigure console-setup -phigh
Maintenant le remappage devrait être terminé, et être chargé automatiquement au démarrage.
SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.