OVH Cloud OVH Cloud

Modifier des touches du clavier

6 réponses
Avatar
Olivier V
Bonjour,

J'ai besoin de modifier le mappage de mon clavier pour utiliser un pavé
numérique usb sur un portable (sans avoir à activer le verrouillage
numérique des touches, car alors ça verrouille aussi le clavier principal).

J'avais réussi à le faire en modifiant le /etc/X11/xkb/symbols/pc/fr que
j'avais appelé /etc/X11/xkb/symbols/pc/frperso avec quelques lignes du
type :

key <KP1> { [ KP_End, KP_1, onesuperior, onesuperior ] };
key <KP2> { [ KP_Down, KP_2, twosuperior, twosuperior ] };

puis un petit script me permettait de de charger ce clavier modifié :
#!/bin/bash
setxkbmap -symbols "pc/pc(pc105)+pc/frperso+compose(rwin)"

ou de revenir au clavier habituel (pour quelques applications sous wine) :
#!/bin/bash
setxkbmap -symbols "pc/pc(pc105)+pc/fr+compose(rwin)"

Malheureusement cette méthode ne fonctionne plus (nouvelle version de
xorg ? ...)

Quelqu'un sait-il comment réaffecter les touches du clavier ?

Merci.

Olivier

6 réponses

Avatar
Marc Mezzarobba
J'avais réussi à le faire en modifiant le /etc/X11/xkb/symbols/pc/fr que
j'avais appelé /etc/X11/xkb/symbols/pc/frperso avec quelques lignes du
type :
[...]

Malheureusement cette méthode ne fonctionne plus (nouvelle version de
xorg ? ...)


Ma boule de cristal me suggère que tu es sous Debian, qui a (re)déplacé les
définitions de clavier XKB de /etc vers /usr/lib. (Bon, d'autres distribs
ont peut-être fait la même chose.)

Quelqu'un sait-il comment réaffecter les touches du clavier ?


Tu peux écrire ta config de clavier personnelle où tu veux, disons dans
~/.xkb, et la charger directement avec xkbcomp (au lieu de setxkbmap).

--
Marc Mezzarobba

Avatar
Olivier V

Ma boule de cristal me suggère que tu es sous Debian, qui a (re)déplacé
les définitions de clavier XKB de /etc vers /usr/lib. (Bon, d'autres
distribs ont peut-être fait la même chose.)


Effectivement, désolé : j'ai oublié de préciser que je suis sous Kubuntu 6.
C'est en fait pareil sur une machine sous Mandriva 2006.

Tu peux écrire ta config de clavier personnelle où tu veux, disons dans
~/.xkb, et la charger directement avec xkbcomp (au lieu de setxkbmap).


J'ai pris le fichier fr de /usr/lib/X11/xkb/symbols que j'ai modifié , nommé
frperso et placé dans ~/.xkb et dans /usr/lib/X11/xkb/symbols pour être
sûr.
(J'ai remarqué au passage que /usr/lib/X11/xkb n'est qu'un lien symbolique
vers /etc/X11/xkb).

Les modifications sont :

.............
key <AB10> { [ exclam, section, dead_belowdot, dead_abovedot ] };

// Début des ajouts personnels

key <KPMU> { [ multiply, XF86_ClearGrab ] };
key <KPDV> { [ KP_Divide, XF86_Ungrab , division, division] };

key <KP1> { [ KP_End, KP_1, onesuperior, onesuperior ] };
key <KP2> { [ KP_Down, KP_2, twosuperior, twosuperior ] };
key <KP3> { [ KP_Next, KP_3, threesuperior, threesuperior ] };
key <KP4> { [ KP_Left, KP_4 ] };
key <KP5> { [ KP_Begin, KP_5 ] };
key <KP6> { [ KP_Right, KP_6 ] };
key <KP7> { [ KP_Home, KP_7 ] };
key <KP8> { [ KP_Up, KP_8 ] };
key <KP9> { [ KP_Prior, KP_9 ] };

key <KP0> { [ KP_Insert, KP_0 ] };
key <KPDL> { [ KP_Delete, KP_Decimal ] };

// Fin des ajouts personnels

include "level3(ralt_switch)"
.......

Ensuite dans ~/.xkb/config.xkb j'ai mis :

xkb_keymap {
xkb_keycodes { include "xfree86+aliases(azerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc(pc105)+frperso" };
xkb_geometry { include "pc(pc105)" };
};

Et j'execute :

:~$ setxkbmap -print
xkb_keymap {
xkb_keycodes { include "xfree86+aliases(azerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc(pc105)+fr(latin9)" };
xkb_geometry { include "pc(pc105)" };
};

:~$ xkbcomp ~/.xkb/config.xkb $DISPLAY
Warning: Multiple symbols for level 2/group 1 on key <KPDL>
Using KP_Decimal, ignoring period
Warning: Symbol map for key <KPDL> redefined
Using last definition for conflicting fields
Warning: Symbol map for key <AD01> redefined
Using last definition for conflicting fields
Warning: Symbol map for key <AD02> redefined
Using last definition for conflicting fields
Warning: Symbol map for key <AD03> redefined
Using last definition for conflicting fields
Warning: Symbol map for key <AD04> redefined
Using last definition for conflicting fields
Warning: Symbol map for key <AD05> redefined
Using last definition for conflicting fields
Warning: Symbol map for key <AD06> redefined
Using last definition for conflicting fields
Warning: Symbol map for key <AD07> redefined
Using last definition for conflicting fields
Warning: Symbol map for key <AD08> redefined
Using last definition for conflicting fields
Warning: Symbol map for key <AD09> redefined
Using last definition for conflicting fields
Warning: Symbol map for key <AD10> redefined
Using last definition for conflicting fields
Warning: Symbol map for key <AD11> redefined
Using last definition for conflicting fields
Warning: Symbol map for key <AD12> redefined
Using last definition for conflicting fields
Warning: Symbol map for key <AC01> redefined
Using last definition for conflicting fields
Warning: Symbol map for key <AC02> redefined
Using last definition for conflicting fields
Warning: Symbol map for key <AC03> redefined
Using last definition for conflicting fields
Warning: Symbol map for key <AC04> redefined
Using last definition for conflicting fields
Warning: Symbol map for key <AC05> redefined
Using last definition for conflicting fields
Warning: Symbol map for key <AC06> redefined
Using last definition for conflicting fields
Warning: Symbol map for key <AC07> redefined
Using last definition for conflicting fields
Warning: Symbol map for key <AC08> redefined
Using last definition for conflicting fields
Warning: Symbol map for key <AC09> redefined
Using last definition for conflicting fields
Warning: Symbol map for key <AC10> redefined
Using last definition for conflicting fields
Warning: Symbol map for key <AC11> redefined
Using last definition for conflicting fields
Warning: Symbol map for key <AB01> redefined
Using last definition for conflicting fields
Warning: Symbol map for key <AB02> redefined
Using last definition for conflicting fields
Warning: Symbol map for key <AB03> redefined
Using last definition for conflicting fields
Warning: Symbol map for key <AB04> redefined
Using last definition for conflicting fields
Warning: Symbol map for key <AB05> redefined
Using last definition for conflicting fields
Warning: Symbol map for key <AB06> redefined
Using last definition for conflicting fields
Warning: Symbol map for key <AB07> redefined
Using last definition for conflicting fields
Warning: Symbol map for key <AB08> redefined
Using last definition for conflicting fields
Warning: Symbol map for key <AB09> redefined
Using last definition for conflicting fields
Warning: Symbol map for key <AB10> redefined
Using last definition for conflicting fields
Warning: Type "ONE_LEVEL" has 1 levels, but <RALT> has 2 symbols
Ignoring extra symbols
Warning: Type "CTRL+ALT" has 2 levels, but <KPDV> has 4 symbols
Ignoring extra symbols
Warning: No symbols defined for <SYRQ> (keycode 92)
Warning: No symbols defined for <BRK> (keycode 114)
Warning: No symbols defined for <FK13> (keycode 118)
Warning: No symbols defined for <FK14> (keycode 119)
Warning: No symbols defined for <FK15> (keycode 120)
Warning: No symbols defined for <FK16> (keycode 121)
Warning: No symbols defined for <FK17> (keycode 122)
Warning: No symbols defined for <KPDC> (keycode 123)
Warning: No symbols defined for <XFER> (keycode 129)
Warning: No symbols defined for <I02> (keycode 130)
Warning: No symbols defined for <NFER> (keycode 131)
Warning: No symbols defined for <I04> (keycode 132)
Warning: No symbols defined for <AE13> (keycode 133)
Warning: No symbols defined for <I06> (keycode 134)
Warning: No symbols defined for <I07> (keycode 135)
Warning: No symbols defined for <I08> (keycode 136)
Warning: No symbols defined for <I09> (keycode 137)
Warning: No symbols defined for <I0A> (keycode 138)
Warning: No symbols defined for <I0B> (keycode 139)
Warning: No symbols defined for <I0C> (keycode 140)
Warning: No symbols defined for <I0D> (keycode 141)
Warning: No symbols defined for <I0E> (keycode 142)
Warning: No symbols defined for <I0F> (keycode 143)
Warning: No symbols defined for <I10> (keycode 144)
Warning: No symbols defined for <I11> (keycode 145)
Warning: No symbols defined for <I12> (keycode 146)
Warning: No symbols defined for <I13> (keycode 147)
Warning: No symbols defined for <I14> (keycode 148)
Warning: No symbols defined for <I15> (keycode 149)
Warning: No symbols defined for <I16> (keycode 150)
Warning: No symbols defined for <I17> (keycode 151)
Warning: No symbols defined for <I18> (keycode 152)
Warning: No symbols defined for <I19> (keycode 153)
Warning: No symbols defined for <I1A> (keycode 154)
Warning: No symbols defined for <I1B> (keycode 155)
Warning: No symbols defined for <K59> (keycode 157)
Warning: No symbols defined for <I1E> (keycode 158)
Warning: No symbols defined for <I1F> (keycode 159)
Warning: No symbols defined for <I20> (keycode 160)
Warning: No symbols defined for <I21> (keycode 161)
Warning: No symbols defined for <I22> (keycode 162)
Warning: No symbols defined for <I23> (keycode 163)
Warning: No symbols defined for <I24> (keycode 164)
Warning: No symbols defined for <I25> (keycode 165)
Warning: No symbols defined for <I26> (keycode 166)
Warning: No symbols defined for <I27> (keycode 167)
Warning: No symbols defined for <I28> (keycode 168)
Warning: No symbols defined for <I29> (keycode 169)
Warning: No symbols defined for <K5A> (keycode 170)
Warning: No symbols defined for <I2B> (keycode 171)
Warning: No symbols defined for <I2C> (keycode 172)
Warning: No symbols defined for <I2D> (keycode 173)
Warning: No symbols defined for <I2E> (keycode 174)
Warning: No symbols defined for <I2F> (keycode 175)
Warning: No symbols defined for <I30> (keycode 176)
Warning: No symbols defined for <I31> (keycode 177)
Warning: No symbols defined for <I32> (keycode 178)
Warning: No symbols defined for <I33> (keycode 179)
Warning: No symbols defined for <I34> (keycode 180)
Warning: No symbols defined for <K5B> (keycode 181)
Warning: No symbols defined for <K5D> (keycode 182)
Warning: No symbols defined for <K5E> (keycode 183)
Warning: No symbols defined for <K5F> (keycode 184)
Warning: No symbols defined for <I39> (keycode 185)
Warning: No symbols defined for <I3A> (keycode 186)
Warning: No symbols defined for <I3B> (keycode 187)
Warning: No symbols defined for <I3C> (keycode 188)
Warning: No symbols defined for <K62> (keycode 189)
Warning: No symbols defined for <K63> (keycode 190)
Warning: No symbols defined for <K64> (keycode 191)
Warning: No symbols defined for <K65> (keycode 192)
Warning: No symbols defined for <K66> (keycode 193)
Warning: No symbols defined for <I42> (keycode 194)
Warning: No symbols defined for <I43> (keycode 195)
Warning: No symbols defined for <I44> (keycode 196)
Warning: No symbols defined for <I45> (keycode 197)
Warning: No symbols defined for <K67> (keycode 198)
Warning: No symbols defined for <K68> (keycode 199)
Warning: No symbols defined for <K69> (keycode 200)
Warning: No symbols defined for <K6A> (keycode 201)
Warning: No symbols defined for <I4A> (keycode 202)
Warning: No symbols defined for <K6B> (keycode 203)
Warning: No symbols defined for <K6C> (keycode 204)
Warning: No symbols defined for <K6D> (keycode 205)
Warning: No symbols defined for <K6E> (keycode 206)
Warning: No symbols defined for <K6F> (keycode 207)
Warning: No symbols defined for <HKTG> (keycode 208)
Warning: No symbols defined for <K71> (keycode 209)
Warning: No symbols defined for <K72> (keycode 210)
Warning: No symbols defined for <AB11> (keycode 211)
Warning: No symbols defined for <I54> (keycode 212)
Warning: No symbols defined for <I55> (keycode 213)
Warning: No symbols defined for <I56> (keycode 214)
Warning: No symbols defined for <I57> (keycode 215)
Warning: No symbols defined for <I58> (keycode 216)
Warning: No symbols defined for <I59> (keycode 217)
Warning: No symbols defined for <I5A> (keycode 218)
Warning: No symbols defined for <K74> (keycode 219)
Warning: No symbols defined for <K75> (keycode 220)
Warning: No symbols defined for <K76> (keycode 221)
Warning: No symbols defined for <I5E> (keycode 222)
Warning: No symbols defined for <I5F> (keycode 223)
Warning: No symbols defined for <I60> (keycode 224)
Warning: No symbols defined for <I61> (keycode 225)
Warning: No symbols defined for <I62> (keycode 226)
Warning: No symbols defined for <I63> (keycode 227)
Warning: No symbols defined for <I64> (keycode 228)
Warning: No symbols defined for <I65> (keycode 229)
Warning: No symbols defined for <I66> (keycode 230)
Warning: No symbols defined for <I67> (keycode 231)
Warning: No symbols defined for <I68> (keycode 232)
Warning: No symbols defined for <I69> (keycode 233)
Warning: No symbols defined for <I6A> (keycode 234)
Warning: No symbols defined for <I6B> (keycode 235)
Warning: No symbols defined for <I6C> (keycode 236)
Warning: No symbols defined for <I6D> (keycode 237)
Warning: No symbols defined for <I6E> (keycode 238)
Warning: No symbols defined for <I6F> (keycode 239)
Warning: No symbols defined for <I70> (keycode 240)
Warning: No symbols defined for <I71> (keycode 241)
Warning: No symbols defined for <I72> (keycode 242)
Warning: No symbols defined for <I73> (keycode 243)
Warning: No symbols defined for <I74> (keycode 244)
Warning: No symbols defined for <I75> (keycode 245)
Warning: No symbols defined for <I76> (keycode 246)
Warning: No symbols defined for <I77> (keycode 247)
Warning: No symbols defined for <I78> (keycode 248)
Warning: No symbols defined for <I79> (keycode 249)
Warning: No symbols defined for <I7A> (keycode 250)
Warning: No symbols defined for <I7B> (keycode 251)
Warning: No symbols defined for <I7C> (keycode 252)
Warning: No symbols defined for <I7D> (keycode 253)
Warning: No symbols defined for <I7E> (keycode 254)
Warning: No symbols defined for <I7F> (keycode 255)
:~$ setxkbmap -print
xkb_keymap {
xkb_keycodes { include "xfree86+aliases(azerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc(pc105)+fr(latin9)" };
xkb_geometry { include "pc(pc105)" };
};

Comme vous le voyez, elles ne sont pas prises en compte.

Que faire ?

Merci.

Olivier V

Avatar
lhabert
Olivier V :

J'ai pris le fichier fr de /usr/lib/X11/xkb/symbols que j'ai modifié


Le problème, c'est qu'il est un complément en plus d'autres fichiers (les
histoires de rules et cie, plus les options passées dans le xorg.conf),
c'est un bordel infâme pas documenté. À ta place, je ferais plutôt un
« xkbcomp "$DISPLAY" fr.xkb » pour obtenir un .xkb complet correspondant à
ton mapping, et c'est celui-là que je modifierais.

Avatar
Olivier V

Le problème, c'est qu'il est un complément en plus d'autres fichiers (les
histoires de rules et cie, plus les options passées dans le xorg.conf),
c'est un bordel infâme pas documenté.


Oh oui ...

À ta place, je ferais plutôt un « xkbcomp "$DISPLAY" fr.xkb » pour obtenir
un .xkb complet correspondant à ton mapping, et c'est celui-là que je
modifierais.


J'ai executé : xkbcomp "$DISPLAY" fr.xkb
J'ai modifié le fichier en frperso.xkb et rechargé le tout avec :
xkbcomp frperso.xkb "$DISPLAY"

et tout fonctionne à merveille !

Merci.

Olivier V

Avatar
Marc Mezzarobba
J'ai pris le fichier fr de /usr/lib/X11/xkb/symbols que j'ai modifié ,
nommé frperso et placé dans ~/.xkb et dans /usr/lib/X11/xkb/symbols pour
être sûr.
(J'ai remarqué au passage que /usr/lib/X11/xkb n'est qu'un lien symbolique
vers /etc/X11/xkb).


[Pour Debian, j'avais dit une connerie, c'est /usr/share/X11/xkb.]

Comme vous le voyez, elles ne sont pas prises en compte.


Oui, désolé de ne pas avoir été clair : il faut faire une
config « complète ». La méthode de Luc convient, mais tu peux aussi
utiliser la bibliothèque de configs clavier fournie, sur le modèle :

xkb_keymap {
xkb_keycodes { include "xfree86+aliases(azerty)" };
xkb_types { include "complete" };
xkb_compatibility { include "complete" };
xkb_symbols "essai" {
include "pc(pc105)+fr(latin9)"
key <TLDE> { [ backslash, bar, notsign, VoidSymbol ] };
};
xkb_geometry { include "pc(pc105)" };
};

--
Marc Mezzarobba

Avatar
Olivier V

Oui, désolé de ne pas avoir été clair : il faut faire une
config « complète ».


Tout fonctionne maintenant avec votre méthode aussi :

Rappel de la méthode pour les archives :

1) J'ai récupéré la configuration standard avec : setxkbmap -print
2) J'ai modifié le fichier et obtenu :
xkb_keymap {
xkb_keycodes { include "xfree86+aliases(azerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols "perso" {
include "pc/pc(pc105)+pc/fr+compose(rwin)"
key <KPMU> {
type= "CTRL+ALT",
symbols[Group1]= [ multiply, XF86_ClearGrab ]
};
key <KPDL> { [ comma, comma, comma,
comma ] };
};
xkb_geometry { include "pc(pc105)" };
};

3) J'ai chargé les modifications avec : xkbcomp frperso.xkb "$DISPLAY"

Merci.

Olivier V