J’ai récupéré un portable avec un clavier en mauvais état : certaines touches ne fonctionnent plus.
Les touches Fn, les flèches d’orientation, le w et le 0 sont défectueux.

On peut utiliser les flèches en désactivant le pavé numérique, le 0 avec les majuscules, enfin les touches Fn ne sont pas indispensables. Me restait le problème du w.
Il fallait donc attribuer ce caractère à une touche qui présentait peu d’utilité.
J’ai choisi la touche windows.

Repérer le keycode de la touche “windows”

Dans une console, lancez xev et presser la touche à renseigner.

$ xev

par exemple, la touche windows a pour keycode 133.

KeyRelease event, serial 37, synthetic NO, window 0x2400001,
    root 0x498, subw 0x0, time 1315996, (133,229), root:(727,552),
    state 0x40, keycode 133 (keysym 0x77, w), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

Créez un fichier .xmodmaprc dans votre répertoire personnel puis renseignez-le en indiquant la lettre ou le signe que vous souhaitez attribuer à cette touche.

Chez moi, la touche w ne fonctionnait plus.
Pour l’afficher grâce à la touche windows (keycode 133) j’écris donc :

keycode 133 = w

Activation

Pour qu’il soit pris en compte à chaque démarrage, il faut renommer le fichier .xmodmaprc en .Xmodmap

Vérifions

Désormais, lorsque je lance xev et que je presse la touche windows, la console me renvoie :

KeyPress event, serial 37, synthetic NO, window 0x2400001,
    root 0x498, subw 0x0, time 3900069, (-313,170), root:(591,435),
    state 0x0, keycode 133 (keysym 0x77, w), same_screen YES,
    XKeysymToKeycode returns keycode: 52
    XLookupString gives 1 bytes: (77) "w"
    XmbLookupString gives 1 bytes: (77) "w"
    XFilterEvent returns: False

Maintenant, je peux utiliser cette touche windows dans la console et dans les traitements de textes.