Virtual bindings (Motif)
Lo strato di Motif tra tasti fisici e comportamento dei widget: il codice ascolta osfCancel e osfHelp, non Esc e F1, e un file di binding decide che cosa significhino sulla tastiera che si ha davanti.
Motif doveva girare sulla LK201 di DEC, sulla Type 4 di Sun e sulle tastiere di HP e IBM, tutte con tasti diversi per aiuto, cancellazione e navigazione, e talvolta con lo stesso nome di tasto ma keysym diversi. OSF risolse il problema facendo parlare lo style guide e la tabella di traduzione di ogni widget in keysym virtuali: osfActivate, osfCancel, osfHelp, osfMenuBar, osfBackSpace, osfDelete, osfPageUp, osfPrimaryPaste e una trentina di altri. All'avvio vengono tradotti in keysym reali a partire dalla proprietà _MOTIF_DEFAULT_BINDINGS della finestra radice, dal file .motifbind nella home o dalla risorsa defaultVirtualBindings, e in mancanza di tutto ciò da una tabella del produttore scelta in base alla stringa vendor del server X.
Lo strumento xmbind legge un file di binding e lo colloca sulla finestra radice, e Motif forniva file già pronti per ogni produttore. Il risultato era che lo stesso binario si comportava correttamente su hardware diverso, e che chi aveva Esc nel posto sbagliato poteva rimediare con una riga: osfCancel : <Key>Escape. Era anche all'origine di un classico fastidio: un programma Motif in cui Backspace cancellava nel verso sbagliato significava quasi sempre che osfBackSpace e osfDelete puntavano al keysym errato per quella tastiera, cosa che xmodmap non poteva correggere perché il guasto stava un livello più in alto.