Comment remapper le menu contextuel sur une autre clé sous Linux?

19

Je viens d'acheter un Thinkpad Lenovo et je suis tellement fier de tout ce qu'il contient. Il semble aussi solide que le noyau Linux: P.

Le problème est que Lenovo a décidé de supprimer la clé du menu contextuel qui est la clé qui fait le clic droit. Ils l'ont remplacé par une touche d'écran d'impression. Mon clavier a sa partie numérique avec quelques boutons au-dessus. Il y a une touche de loupe que je voudrais remapper pour ouvrir le menu contextuel ou être la touche de clic droit. Est-il possible de faire cela?

J'ai essayé de rechercher d'autres questions connexes, mais je n'ai trouvé que des questions et réponses sur la façon d'ajouter des options au menu contextuel de Nautilus. Je souhaite mapper une touche physique de mon clavier pour ouvrir ce menu. Juste comme avant. Il semble également que Dell laisse tomber cette clé dans son clavier Inspiron. Je ne sais pas ce qui se passe depuis que j'utilise plus le clavier que la souris.

Merci d'avance.

Jhonnytunes
la source
3
Veuillez installer xbindkeys avec sudo apt-get install xbindkeys. Ensuite, dans un terminal, exécutez xbindkeys -ket tapez la clé que vous souhaitez modifier. Pouvez-vous ajouter la sortie à votre question?
Seth
"NoCommand" m: 0x50 + c: 46 Mod2 + Mod4 + l
Jhonnytunes
Qui voudrait une touche d'écran d'impression là où il s'attendrait à une touche de menu? Je me demande sérieusement à quel point vous êtes ivre autorisé à vous présenter pour travailler chez Lenovo. Quoi qu'il en soit, notez que vous n'avez pas besoin d'un .Xmodmapgénéré par xmodmap -pkepour commencer, vous pouvez tout aussi bien mettre votre liaison dans un fichier vide. Regardez également ce que @Baha_hi a découvert ci-dessous.
J. Katzwinkel

Réponses:

13

C'est un peu compliqué mais vous pouvez le faire. Suivez ces étapes:

Détecter le code clé

  1. Exécutez xevpour détecter le code clé:

    xev | grep keycode
    
            state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES,
            state 0x0, keycode 107 (keysym 0xff67, Menu), same_screen YES,
            state 0x0, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
    
  2. Appuyez sur la touche que vous souhaitez reconfigurer. La sortie dans le terminal vous montrera le keycode(attention, peut en avoir plusieurs).

Cartographie de test

  1. Définissez temporairement une nouvelle cartographie, pour moi c'est keycode 107:

    xmodmap -e "keycode  107 = Return NoSymbol Return"
    

Si la clé se comporte comme prévu, vous pouvez enregistrer la configuration.

Sauvegardez votre config

  1. Enregistrez votre table de keymap actuelle dans votre $HOME, pour remplacer le defau:

    xmodmap -pke > ~/.Xmodmap
    
  2. Créez ou modifiez ~/.xinitrcpour charger votre configuration:

    $EDITOR ~/.xinitrc
    
  3. Ajouter les lignes suivantes

    if [ -f $HOME/.Xmodmap ]; then
            /usr/bin/xmodmap $HOME/.Xmodmap
    fi
    

Prendre plaisir

La plupart des informations ci-dessus proviennent d' un article d'ArchWiki .

Ed Villegas
la source
Il ya un problème. Lorsque j'appuie sur le bouton «l» est marqué. Je l'ai vérifié sur xev et il m'a donné le 46 keycode qui est assigné à la lettre L l. Peut-être qu'il n'a pas de code clé à prendre.
Jhonnytunes
@Jhonnytunes. Vérifiez que la disposition de votre clavier est correcte. Vous pouvez changer votre modèle en tapant `sudo dpkg-reconfigure keyboard-configuration`.
Ed Villegas
Toujours le même comportement. J'ai essayé différents modèles de thinkpad et rien.
Jhonnytunes
BTW mon thinkpad est un E530c et n'apparaît pas dans la liste des claviers.
Jhonnytunes
Si c'est la disposition du clavier, peut - être la clé à côté de «Supprimer» est en fait «menu contextuel» (la fonction que vous recherchez). Sinon, reconfigurez une autre clé ou demandez directement au bureau de Lenovo quelle disposition vous devez choisir.
Ed Villegas
12

J'ai trouvé ici qu'en utilisant: shift+ F10ouvre le menu contextuel.

Je sais que ce n'est pas la meilleure solution mais j'ai pensé que cela pourrait aider pour une utilisation temporaire!

PS: J'ai aussi le e530c, et je l'ai testé sur Debian 7 (Wheezy).

Bahax
la source
3

J'ai finalement trouvé le moyen de le faire après des heures de tests et échoue: D

Installez d'abord xautomation:

sudo apt-get install xautomation

Dirigez-vous ensuite vers l'onglet Raccourci de la section Clavier dans les paramètres du système Ubuntu. Accédez d'abord à l'entrée Captures d'écran et remappez les actions sur une autre clé ou désactivez-les si vous le souhaitez. J'ai remplacé la clé PrtSc (Print) par le bouton noir du Thinkpad (Launch1).

Accédez maintenant à la section Raccourcis personnalisés et ajoutez un raccourci. nommez-le comme vous le souhaitez, par exemple Menu. Dans le champ Command, insérez ceci:

xte 'keydown Shift_L' 'key F10' 'keyup Shift_L'

Le travail est terminé! Ça marche comme un miracle;)

Danial Behzadi
la source
2

Cela a fait l'affaire pour moi. Pour moi, le code clé du bouton "PrtSc" sur mon thinkpad est 107. J'ai trouvé cela par l'outil "xev" dans ubuntu.

xmodmap -e "keycode  107 = Menu"

Il s'agit d'un changement temporaire.

Vous pouvez rendre cela permanent en ajoutant cette commande à / etc / profile et elle s'exécutera à chaque démarrage et ce sera un changement permanent.

Pointeur nul
la source
1

J'ai récemment acquis un Lenovo E550 et j'ai eu le même problème, je l'ai résolu en utilisant xte(de xautomation) avec xmodmap.

Pourquoi les autres réponses ne fonctionneront pas entièrement?

  1. La réponse @Ed Villegas (ni @Null Pointer ) ne fonctionnera pas car certaines des touches situées au-dessus de la partie numérique ne sont pas des clés uniques en elles-mêmes ( par exemple, la touche de verrouillage est liée à la combinaison Super+ L). Lorsque xevest utilisé pour essayer de trouver le code clé de la clé de verrouillage, il renvoie à la fois le Superet les Lcodes clés, il vous suffit d'interpréter la xevsortie ligne par ligne.

  2. Pour @Bahax et @John Finegan : Shift+ F10est une touche de menu contextuel, elle ne fonctionne pas dans toutes les applications et ne fournit pas les mêmes fonctions que Menu. Si vous sélectionnez un fichier dans l'explorateur de fichiers et appuyez sur Menule menu contextuel pour que le fichier lui-même apparaisse, cela ne se produit pas avec la combinaison Shift+ F10, il fournirait un menu contextuel pour la fenêtre à la place.

  3. @Danial Behzadi adopte une approche similaire aux personnes du deuxième élément, mais en liant la combinaison de touches à une touche via un simulateur de frappe, il reliera la touche au Shift+ F10et fournira le même résultat.

La réponse qui fonctionne

Il est important de prendre en compte que la touche qui n'est pas présente dans le clavier ThinkPad est le Menu(c'est-à-dire son nom), elle est illustrée dans l'image suivante:

Touche menu

Bien que la clé ne soit pas présente, son code clé devrait exister dans votre ordinateur, vous pouvez le trouver en imprimant le tableau des codes clés avec xmodmap -pke | grep Menulequel devrait vous donner quelque chose comme:

sortie xmodmap

Dans cet esprit, installez xautomation(afin de l'utiliser xtepour les simulations de frappe) comme dans @Danial Behzadi réponse:

sudo apt-get install xautomation

Et créez un raccourci personnalisé, dans le déclencheur appuyez sur la touche que vous souhaitez être le raccourci, et dans la Actionpâte xte 'key Menu'. Appliquer et tester.

Hans
la source