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é:
Inspiré par cette question . Ma compréhension est que xmodmap est obsolète, donc ce n'est probablement pas une excellente idée.
~/.Xmodmap
avec la ligne keycode 77 = Delete NoSymbol
xmodmap ~/.Xmodmap
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.
/usr/share/X11/xkb/symbols/us
avoir key <NMLK> { [Delete, Num_Lock] };
à la fin du clavier de base.a également essayé:
/usr/share/X11/xkb/symbols/us
avoir replace key <NMLK> { [Delete, Num_Lock] };
à la fin du clavier de base.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.
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.
Veuillez consulter la vidéo de 30 secondes https://imgur.com/3eLhv14
~/.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
xmodmap ~/.xmodmaprc
à 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.
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.