web-dev-qa-db-fra.com

Comment remapper la clé NUMLOCK pour la supprimer?

En raison de la disposition de mon clavier, je souhaite que le verrouillage numérique soit enfoncé de façon permanente et que j'utilise la touche de verrouillage numérique comme touche de suppression. Je n'arrive pas à faire fonctionner ça. Toute idée sur la façon de procéder serait appréciée.

Edit: je cours sur Ubuntu 16

Voici ce que j'ai essayé:

Utiliser Xmodmap avec numlockx

Inspiré par cette question . Ma compréhension est que xmodmap est obsolète, donc ce n'est probablement pas une excellente idée.

  • Créez un fichier ~/.Xmodmap avec la ligne keycode 77 = Delete NoSymbol
  • Courir xmodmap ~/.Xmodmap
  • Courir numlockx on

Cela permet au verrouillage numérique de fonctionner comme suppression et active le pavé numérique jusqu'à la première fois que j'appuie sur la touche de verrouillage numérique. Ensuite, la touche de verrouillage numérique désactive le pavé numérique.

Utilisez XKB

  • Éditer /usr/share/X11/xkb/symbols/us avoir key <NMLK> { [Delete, Num_Lock] }; à la fin du clavier de base.
  • redémarrer l'ordinateur

a également essayé:

  • Éditer /usr/share/X11/xkb/symbols/us avoir replace key <NMLK> { [Delete, Num_Lock] }; à la fin du clavier de base.
  • redémarrer l'ordinateur

Cela souffre de problèmes similaires à ceux de l'autre méthode, pouvant supprimer des œuvres, mais la touche de verrouillage numérique désactive le pavé numérique. Il semble également jouer avec d'autres touches comme la touche Windows lorsque le pavé numérique est activé. J'aime que je contrôle le numlock en utilisant shift + numlock. Je ne trouve aucune différence entre utiliser replace et ne pas l'utiliser.

4

Voici un moyen de le faire en utilisant uniquement xkb, ce qui, je pense, est supérieur à l'utilisation de xmodmap. Cette réponse comprend plus de détails sur ce que je voulais réaliser que la question d'origine. Xmodmap et xkb ne fonctionnent pas toujours bien ensemble, cette approche offre beaucoup plus de flexibilité:

Tout cela vient de: https://wiki.archlinux.org/index.php/X_keyboard_extension

Il y a une liste de keyymes disponibles qui semblent fonctionner ici: http://docs.ev3dev.org/projects/grx/en/ev3dev-stretch/c-api/input_keysyms.html

Cette opération est effectuée manuellement pour vous permettre de commencer avec la configuration qui existe déjà sur votre ordinateur pour éviter les problèmes de compatibilité avec différents claviers. Des exemples d'exécutions antérieures de ceci sont visibles dans config_files/linux/keyboards

Commencez par exécuter xkbcomp $DISPLAY output.xkb pour obtenir vos paramètres de clavier actuels. Puis ajouter:

    interpret osfLeft{
        repeat= True;
        action = RedirectKey(keycode=<LEFT>, clearmodifiers=Lock);
    };
    interpret osfRight{
        repeat= True;
        action = RedirectKey(keycode=<RGHT>, clearmodifiers=Lock);
    };
    interpret osfDown{
        repeat= True;
        action = RedirectKey(keycode=<DOWN>, clearmodifiers=Lock);
    };
    interpret osfUp{
        repeat= True;
        action = RedirectKey(keycode=<UP>, clearmodifiers=Lock);
    };
    interpret osfEndLine{
        repeat= True;
        action = RedirectKey(keycode=<END>, clearmodifiers=Lock);
    };
    interpret osfBeginLine{
        repeat= True;
        action = RedirectKey(keycode=<HOME>, clearmodifiers=Lock);
    };
    interpret osfEscape{
        repeat=True;
        action = RedirectKey(keycode=<ESC>, clearmodifiers=Lock);
    };

à la section de compatibilité du fichier généré.

Au bas de la section des types, ajoutez:

   type "CUST_CAPSLOCK" {
       modifiers= Shift+Lock;
       map[Shift] = Level2;            // Note that this maps Shift only of {Shift,Lock} to Level2. Alt+Shift will be mapped to Level2
       map[Shift+Lock] = Level3;       // but Lock+Shift won't map to Level2 even without this line.
       map[Lock] = Level3;
       level_name[Level1]= "Base";
       level_name[Level2]= "Shift";
       level_name[Level3]= "Lock";
   };
   interpret osfDelete{
       repeat=True;
       action = RedirectKey(keycode=<DELE>, clearmodifiers=Lock);
   };

Rechercher interpret Caps_Lock et changez le LockMods en SetMods pour que le verrouillage des majuscules ne règle que le modificateur, ne le verrouille pas.

Pour permettre à capslock + WASD de fonctionner comme des touches fléchées: modifiez les touches <AD02>, <AC01>, <AC02>, <AC03> pour avoir le type CUST_CAPSLOCK et ont respectivement osfUp, osfLeft, osfDown, osfRight en troisième position.

Pour permettre à capslock + HJKL de fonctionner comme des touches fléchées: modifiez les touches <AC06>, <AC07>, <AC08>, <AC09> pour avoir le type CUST_CAPSLOCK et ont respectivement osfLeft, osfDown, osfUp, osfRight en troisième position.

Pour permettre à capslock + 0 de s'enregistrer comme home et à capslock + $ de s'enregistrer comme end: éditez les clés <AE04> et <AE10> pour avoir le type CUST_CAPSLOCK et ont respectivement osfEndLine et osfBeginLine en troisième position.

Pour permettre à capslock + barre d'espace de s'enregistrer comme échappement (pratique pour vim) éditez la clé <SPCE> pour avoir le type CUST_CAPSLOCK, ont space en deuxième position et osfEscape en troisième position.

Pour transformer la touche de verrouillage numérique en une touche de suppression et faire un verrouillage des touches + un verrouillage numérique, définissez le <NMLK> de type CUST_CAPSLOCK, ont les positions un et deux ont osfDelete et la position trois ont Num_Lock

Téléchargez à nouveau le fichier modifié sur le serveur avec: xkbcomp output.xkb $DISPLAY.

Si tout fonctionne, placez le fichier quelque part, ~/.Xkeymap fonctionne et crée un script par exemple nommé ~/start_keyboard.sh avec:

#!/bin/bash

xkbcomp ~/.Xkeymap $DISPLAY

Rendez-le exécutable (chmod u+x ~/start_keyboard.sh) et ajoutez le script à vos applications de démarrage.

0
Michael Sobrepera

Veuillez consulter la vidéo de 30 secondes https://imgur.com/3eLhv14

  1. Échangez les clés Num_Lock & Delete avec le code ci-dessous dans ~/.xmodmaprc fichier. Créez le fichier, si vous ne l'avez pas encore attribué à xmodmap.

Modifiez les codes clés en fonction des résultats de votre clavier dans le code ci-dessous.

keycode 77 = Delete
keycode 119 = Num_Lock
clear Mod2
add Mod2 = Num_Lock
  1. Vérifiez l'échange de clés fonctionnant ou non après avoir exécuté la commande xmodmap ~/.xmodmaprc
  2. Si l'échange de clés a fonctionné, créez une application de démarrage pour xmodmap comme ci-dessous.

enter image description here

à ce stade, vous avez atteint presque ce que vous voulez, c'est la clé physique qui apparaît comme NUMLOCK travailler en tant que DEL et la clé physique DEL travailler en tant que NUMLOCK.

  • Pour activer ou désactiver l'état de verrouillage numérique que vous souhaitez utiliser Shift+ Clé physique NUMLOCK comme vous l'avez mentionné dans la question, ceci peut être réalisé avec xbindkeys en combinaison avec xte ou xdotool etc. pour simuler le Num_Lock clé qui est physiquement la DEL clé à ce stade.

Collez le code ci-dessous dans le fichier ~/.xbindkeysrc.scm & [~ # ~] redémarrez [~ # ~] . Créez le fichier, s'il n'est pas encore créé pour xbindkeys. Modifiez la valeur "c:77" basé sur les résultats de votre clavier. en exécutant xbindkeys --key et en appuyant sur la touche physique NUMLOCK

(xbindkey '(shift "c:77") "xte 'key Num_Lock'")

Cela signifie que lorsque vous appuyez sur Shift+NUMLOCK il simule le DEL et ainsi changer l'état Num_Lock On et Off.

Dans le GIF ci-dessous, vous pouvez observer en haut à gauche les symboles 1 et Maj, le symbole 1 bascule lorsque j'appuie sur les touches Maj + NUMLOCK, puis relâchez.

enter image description here

0
PRATAP