Je cherche un moyen de remapper certaines clés dans Ubuntu.
c'est à dire.
Je voudrais changer PgUp à Home ou PgDown à End.
Existe-t-il une commande intégrée ou un outil qui réaffecte les clés dans Ubuntu/GNOME?
Remarque: À partir de 2013, Ubuntu et ses dérivés n'utilisent plus xmodmap
name__, mais plutôt xkb
name__. Pour plus d'informations, voir cette réponse . La réponse ci-dessous n'est plus pertinente pour les versions actuelles.
Pour remapper certaines clés, vous avez besoin de deux outils. Premier xev (outil de ligne de commande) et second xmodmap (également outil de ligne de commande). Les deux devraient être disponibles dans Ubuntu sans installation supplémentaire.
Démarrez la fenêtre du terminal et exécutez xev
name__. Maintenant, il est actif et attend que vous appuyiez sur une touche. Appuyez ensuite sur la touche dont vous souhaitez modifier le comportement. c'est à dire. PgUp.
xev
affichera des informations sur la touche enfoncée. La troisième ligne est importante. Il devrait ressembler à:
state 0x10, keycode 110 (keysym 0xff55, Prior), same_screen YES,
dans cet exemple, Prior
est le nom du comportement auquel la clé est affectée pour le moment, le numéro keycode est l'identifiant interne permettant de reconnaître la clé. Maintenant, faites cela avec une autre clé, c'est-à-dire PgDown donner cette sortie
state 0x10, keycode 115 (keysym 0xff56, Next), same_screen YES,
Ici encore, la partie intéressante pour nous est keycode 115
et Next
- le nom du comportement.
maintenant, lorsque vous voulez échanger les deux clés, utilisez xmodmap
name__.
xmodmap -e "keycode 110 = Next"
Ceci change la clé avec le code de touche 110 sur votre clavier en l'action Next
name__. C'est assez simple.
Notez que si la clé que vous mappez doit avoir une signification différente lorsqu’elle est utilisée avec le Shift touche (par exemple pour les dispositions de clavier britanniques, Shift+2 donne des guillemets), vous pouvez simplement énumérer la commande secondaire après la première. Par exemple, si vous souhaitez que la clé portant le code 53 mappe normalement en barre oblique inverse, mais au symbole de barre utilisé avec shift, vous pouvez effectuer les opérations suivantes:
xmodmap -e "keycode 53 = backslash bar"
Informations complémentaires: La séquence de ces mappages est Key, Shift+Key, mode_switch+Key, mode_switch+Shift+Key, AltGr+Key, AltGr+Shift+Key. Pour ignorer une colonne, utilisez NoSymbol
name__. De plus, ici est une liste complète de tous les keysyms.
Remarque: ces modifications concernent uniquement la session X active et seront perdues après le redémarrage. Lorsque vous souhaitez enregistrer les modifications de manière permanente, vous devez exécuter les commandes suivantes après celles 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
.
Vous pouvez maintenant modifier .Xmodmap
et exécuter xmodmap .Xmodmap
à partir de la console pour voir les modifications immédiatement. Les modifications apportées à .Xmodmap
persisteront.
source: buntu Foruns
Si la clé que vous remappez a un comportement différent en fonction de l'état (comme la manière 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 au lieu d'une virgule sur le clavier numérique (utile pour la plupart des programmeurs), mais que vous souhaitiez conserver le comportement "supprimer" lorsque NumLock est désactivé.
xmodmap -e "keycode 91 mod2 = KP_Delete period"
mod2
, parce que xmodmap -pm
nous indique que mod2
est Num_Lock
, les autres noms sont obtenus en appuyant sur les touches dans xev
name__.
Si vous essayez de déplacer une touche Maj, 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
Je viens d’avoir une réflexion après coup. Je pense que vous pouvez vouloir dire quelque chose de complètement différent par "remapper" .. mais je vais laisser ma réponse telle quelle ... (Je ne sais pas comment réaffecter une clé à se comporter comme un autre)
UPDATE: ma "réflexion a posteriori" a été confirmée. (J'ai répondu à la mauvaise question:) ... veuillez consulter la réponse du wiki communautaire de NES (acceptée ci-dessus).
Il y a deux manières générales de remapper relier une clé.
Pour les méthodes "locales à un programme", il existe parfois un moyen de modifier les combinaisons de touches proposées par l'application elle-même ... par exemple.
Firefox
a un addon appelé keyconfig ... pour quelques informations, voir ceci post de MozillZine
La plupart des programmes Ubuntu sont basés sur Gnome et il existe un utilitaire spécifique pour modifier le raccourci clavier de tout élément de menu de ces applications Gnome ... Il s’appelle Editable Menu Accelerator
... C’est un outil très sensible, mais assez puissant .. Vous pouvez activez-le en exécutant gconf-editor
(via Terminal ou Alt + F2) ... naviguez vers desktop
name __ - gnome
name __ - interface
et sélectionnez can_change_accels
... Vous pouvez ensuite modifier les éléments de menu en virtuellement tout ce que vous aimez (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 raccourcis clavier globaux. J'utilise un programme appelé xbindkeys , et une option est également disponible via le menu principal - Préférences, appelé Keyboard Shortcuts
Si vous utilisez xbindkeys, vous devrez l’ajouter à vos "Applications de démarrage" (menu principal - Préférences) ... Aussi (comme suggéré par Stefano Palazzo), j’ai déjà écrit une description plus détaillée de xbindkeys dans une réponse à ce sujet. page askubunt
Voici comment j’ai essayé de changer la cartographie du ENTER clé de la 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 prochaines lignes 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
L’important est la troisième ligne de chaque pression de 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".
INVERSEZ LA CARTOGRAPHIE:
$ xmodmap -e "keycode 62 = Return"
$ xmodmap -e "keycode 36 = Shift_R"
CONSERVER LES RÉSULTATS:
$ xmodmap -pke > ~/.Xmodmap
$ vi ~/.xinitrc
AJOUTER
xmodmap ~/.Xmodmap
$ Sudo reboot
Le problème principal était que l'inversion ne fonctionnait pas. le ENTER la clé a été mappée sur la SHIFT_R clé; mais le SHIFT_R la clé n'a pas été mappée sur la ENTER clé. Allez comprendre.
Pour effectuer des remappages globaux indépendamment de X, vous pouvez utiliser console-setup (5) .
Dans mon cas je voulais remapper Caps Lock la clé de D, depuis ma Dla clé est cassée :)
J'ai d'abord utilisé dumpkeys (1) pour obtenir un modèle de mappage, dans le cas de la D-key, le bit intéressant est le mappage du keycode 32 (sur mon clavier); Notez qu'il y a deux espaces dans le modèle 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 changer la carte à appliquer à Caps Lock (code 58 sur mon clavier) à la place
sed 's/32/58/' -i tempfile
Maintenant il lit
keycode 58 = +d
shift keycode 58 = +D
altgr keycode 58 = +eth
(etc...)
Pour ajouter cette reconfiguration à la carte par défaut, il suffit simplement de l'ajouter au fichier d'inclusion de la reconfiguration pour la configuration de la console .
Sudo sh -c 'cat tempfile >> /etc/console-setup/remap.inc'
et la configuration de la console doit être reconfigurée (en sautant les questions de faible priorité avec -phigh
)
Sudo dpkg-reconfigure console-setup -phigh
Maintenant, le remappage doit être terminé et chargé automatiquement au démarrage.
J'ai passé une journée entière à essayer de créer un raccourci pour Ctrl+Pageup
.
J'ai d'abord essayé xmodmap
mais cela ne peut pas générer d'événements de modificateur. Il est donc impossible de créer un raccourci qui génère par exemple l'événement Control
name__.
J'ai ensuite essayé xbindkeys
avec xmacro
name__. Ce type de travail fonctionne, mais xbindkeys
n'est pas en mesure de capturer certaines combinaisons de touches sur mon système, telles que Alt + ___
.
J'ai donc finalement utilisé les propres raccourcis clavier de Unity -> Raccourcis personnalisés pour configurer mon raccourci.
Et au lieu de xmacro
name__, j’ai maintenant utilisé le programme xvkbd
pour générer les événements de clavier, mais ce n’est qu’une préférence personnelle. xmacro
et xvkbd
fonctionnent presque de la même manière. Une astuce supplémentaire consiste à ajouter un paramètre de délai dans xmacro
ou xvkbd
pour vous assurer que les événements ne sont pas perdus.
Pour moi, AutoKey de Software Center a fonctionné le mieux. Il a une interface graphique intuitive, pour ajouter une nouvelle liaison cliquez sur Nouveau -> Phrase et
<left>
(la liste des clés spéciales est ici ).Si vous avez besoin de remapper une clé pour un programme spécifique uniquement, j'ai viens d'ajouter cette fonctionnalité sur hax11.
Je voudrais changer PgUp à Home ou PgDown à End.
Pour ce faire avec hax11, ouvrez le fichier de configuration du profil du programme sous ~/.config/hax11/profiles
(par exemple, ~/.config/hax11/profiles/usr\lib\firefox\firefox
) et ajoutez:
Enable=1
MapK112=K110
MapK117=K115