Problème: je souhaite modifier / redéfinir la disposition de mon clavier (pc105 se) de sorte que lorsque j'appuie sur certaines touches avec mod3 (super) et mod4 (hyper), un caractère différent est renvoyé.
Par exemple.
Le code clé 61 produit un «moins» (-) lorsqu'il est enfoncé normalement et un «soulignement» (_) lorsqu'il est enfoncé avec une touche Maj. Lorsque vous appuyez sur le premier groupe de modificateurs (AltGr), "dead_belowdot" et "dead_abovedot" sont générés (sans / avec décalage).
Ce que je veux, c'est une parenthèse gauche ou droite (sans / avec décalage) lorsque j'appuie sur la touche avec la touche Super (win) également enfoncée, ainsi qu'une barre oblique / barre oblique inverse pour la clé Hyper (configurée avec le verrouillage majuscule).
J'ai essayé d'ajouter un .Xmodmap
dans mon répertoire personnel et l'exécuter avec xmodmap ~/.Xmodmap
en utilisant la syntaxe suivante
keycode 61 = minus underscore a b c d e f g h i j k l m n o p
Cependant, cela entraînera c / d dans AltGr, alors que le verrouillage des victoires / majuscules ne donnera toujours que - / _
J'ai également essayé de modifier directement / usr / share / X11 / xkb / symboles / se et essayé les modifications suivantes:
key <BKSL> { [apostrophe, asterisk, acute, multiply], [a,b,c,d], [e,f,g,h], [i,j,k,l]};
Mais tout ce qui se passe, c’est '* ´ ×' * '* (respectivement pour normal, altgr, win et maj lock) J'ai aussi essayé
key <BKSL> { [apostrophe, asterisk, acute, multiply, a,b,c,d, e,f,g,h, i,j,k,l]};
Mais dès qu'il y a plus de quatre champs spécifiés, il semble que la clé soit totalement cassée et la clé revient au comportement par défaut pc105 (us?).
Comme je n'ai rien trouvé sur stackoverflow, super-utilisateur ou google sur la façon de gérer mon scénario, je pose la question ici.
C'est mon xmodmap -pm
xmodmap: up to 3 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock
control Control_L (0x25), Control_R (0x69)
mod1 Alt_L (0x40), Meta_L (0xcd)
mod2 Num_Lock (0x4d)
mod3 Hyper_L (0x42), Hyper_L (0xcf)
mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce)
mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
Réponses:
Deux ans plus tard, je suis enfin fier de répondre à ma propre question.
J'ai trouvé la méthode la plus simple, la plus fiable et la plus extensible consiste à ne compter que
xmodmap
.1. Obtenir les codes clés des clés spéciales
Courir
xev
pour déterminer le code de clé que vous souhaitez utiliser pour changer de mode. Appuyez ensuite sur les touches qui vous intéressent et notez lekeycode
Le code clé se trouve sur la troisième ligne, code clé 66.
Pour moi, ce sont les clés qui m'ont particulièrement intéressé et les codes correspondants pour moi:
Caps Lock
, code clé 66Pause|Break
, code clé 128Left Windows key
, code clé 133Num Lock
, code clé 772. Définir les touches du sélecteur
C’est la configuration que j’ai choisie, mais vous pouvez choisir votre propre configuration. Je l'ai sauvegardé dans un fichier
$HOME/.xmodmap
.De cette façon j'ai lié
Caps Lock
àMode_switch
,Pause Break
àCompose
et la gaucheWin
la clé deSuper_L
. leCompose
key est particulièrement utile car elle permet de combiner deux clés pour la ligature. Par exemple.Compose
suivi parT
etM
résultats dans le signe de la marque™
.3. Obtenir les liaisons de clavier actuelles de
xmodmap
Afin de ne pas détruire la disposition de mon clavier, je voulais garder mes touches aussi proches que possible de ma disposition d'origine. Pour ce faire, j'ai imprimé le keymap actuel et cherché les keycodes que je voulais changer.
Bien sûr, vous pouvez tout aussi facilement utiliser
grep
ouack
, selon l'outil que vous préférez utiliser.Le résultat est au même format que celui que vous spécifiez dans votre
~/.xmodmap
comme ça:4. Sauvegardez votre existant
xmodmap
Juste au cas où quelque chose se passerait mal, ce n’est jamais une mauvaise idée d’avoir votre
xmodmap
disponible pour se replier facilement.5. Ajoutez des caractères aux 2e, 3e et 4e niveaux de vos clés
Pour autant que je sache, le format de la
.xmodmap
le fichier est comme ça:Maintenant, je ne comprends pas tous ces niveaux mais
Mode_Switch
(Caps Lock
dans mon cas) vous donnera le niveau 2 etAlt Gr
me donne le niveau 3, et c’est à peu près tout ce qui m’intéresse alors j’ai laissé le reste de cette ligne~/.xmodmap.bak
et vient de remplacer les 3ème, 4ème, 5ème et 6ème colonnes (niveaux 2 et 3, plus décalage) par des caractères valides ( Voir ici pour une liste de caractères valides ).6. Testez votre
.xmodmap
Maintenant, laisse
xmodmap
exécuter votre.xmodmap
et testez votre nouvelle disposition de clavier.7. Assurez-vous que votre clavier est chargé sur x init
J'ai ajouté ceci à mon
$HOME/.xinitrc
:J'espère que cela a été utile!
la source