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.