14 votes

Comment transformer n'importe quelle touche en touche de modification ?

Lorsqu'on appuie sur certaines touches et qu'on les maintient enfoncées, par exemple Control , Alt , Super Dans le cas d'une touche de type "T", aucun événement de relâchement n'est généré, alors que dans le cas d'autres touches, de multiples événements de relâchement et d'appui sont générés, simulant la pression et le relâchement de la touche plusieurs fois.

Je veux faire en sorte que certaines des touches multimédia ou les Fn de mon clavier en touches de modification, et xev montre qu'ils sont tous du deuxième type. Est-il possible de rendre les clés ordinaires collantes afin qu'aucun événement de libération ne soit généré ?

1voto

Bill K Points 32115

Si je comprends bien, ce que vous voulez, c'est décocher l'option "Les appuis sur les touches se répètent lorsque la touche est maintenue enfoncée" dans Menu > Système > Préférences > Clavier.

enter image description here

1voto

sleepyeyesvince Points 31

La première chose à faire est d'identifier le "keycode" ou "keysym" de la clé que vous souhaitez remplacer et la clé par laquelle vous souhaitez la remplacer.

Prenons l'exemple du remplacement de la touche " F12 " par " Super Gauche ".

  1. Ouvrez le terminal et exécutez cette commande :

xev | awk -F'[ )]+' '/^KeyPress/ { a[NR+2] } NR in a { printf "%-3s %s\n", $5, $8 }'

Ceci lancera xev qui capture les pressions sur les touches, élimine les informations non pertinentes et vous donne, via la sortie du terminal, le 'keycode' et le 'keysym' de la touche sur laquelle vous appuyez. Appuyez sur chacune des touches que vous voulez remplacer et sur celle avec laquelle vous voulez la remplacer.

Lorsque j'appuie sur la touche F12 de mon clavier, j'obtiens ce résultat :

96 F12

Et quand j'appuie sur la touche Super Gauche de mon clavier, j'obtiens cette sortie :

133 Super_L

Vous devrez les noter quelque part ou vous en souvenir pour les utiliser plus tard.

  1. Ouvrez un éditeur de texte et entrez ce texte (mon exemple de remplacement de F12 par Super Gauche) :

keycode 96 = Super_L

または

keysym F12 = Super_L

D'après mes tests, les deux options devraient fonctionner.

  1. Enregistrez ce fichier dans votre répertoire personnel sous le nom de .Xmodmap (notez le "X" en majuscules)

  2. Pour le tester, dans le terminal, entrez à nouveau cette commande depuis votre répertoire personnel :

xmodmap .Xmodmap

Si tout s'est déroulé comme prévu, votre touche F12 devrait maintenant fonctionner comme votre Super Gauche.

Chaque fois que vous apportez une modification à votre .Xmodmap vous pouvez exécuter à nouveau la commande ci-dessus pour appliquer les changements.

Vous ne devriez pas avoir besoin d'exécuter cette commande à chaque fois que vous vous connectez, car elle devrait être lue et appliquée à chaque fois que vous vous connectez. Si toutefois cela ne fonctionne pas, alors vous pouvez bien sûr placer cette commande dans un script de démarrage.

Il y a quelques mises en garde à mentionner :

a) Certains claviers ont une touche appelée "Fn" ou similaire pour accéder aux fonctions secondaires des touches, comme les contrôles multimédia. D'après ce que j'ai lu, il n'est pas possible de remapper cette touche "Fn" elle-même, mais vous devriez être en mesure de remapper les touches multimédia individuelles que l'appui sur "Fn+key" fournit.

b) Si vous débranchez et rebranchez votre clavier, vous devrez recharger l'application .Xmodmap avec la même commande que celle de l'étape 4 ci-dessus.

c) Si, pour une raison quelconque, vous souhaitez mettre en commentaire (ignorer) une ligne dans le fichier .Xmodmap vous devez mettre un " !" au début de la ligne (au lieu d'un "#" comme dans certains autres fichiers de configuration).

SistemesEz.com

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.

Powered by:

X