Tabella di traduzione (Xt)
Il formato testuale di Xt per associare tasti e pulsanti del mouse ad azioni con nome in un widget, sostituibile da ~/.Xresources senza toccare il programma.
Ogni widget Xt ha una risorsa translations, una tabella il cui lato sinistro è una sequenza di eventi e il cui lato destro è una o più azioni: <Key>q: quit(), Ctrl<Key>s: search(forward), Shift<Btn1Down>: select-start(). Un evento si scrive come modificatori, tipo e dettaglio, e più eventi si possono concatenare per doppi clic o sequenze di più tasti. Le azioni sono definite dalla classe del widget o registrate dal programma con XtAppAddActions, e il Translation Manager di Xt effettua la corrispondenza man mano che gli eventi arrivano.
Il punto è che la tabella è una risorsa come le altre. Le direttive #override, #augment e #replace stabiliscono se le righe dell'utente si pongono sopra, sotto o al posto di quelle del widget, così una riga come XTerm*VT100.translations: #override Shift <KeyPress> Insert: insert-selection(PRIMARY) cambia il comportamento di xterm senza ricompilare. Era la risposta degli anni Ottanta alle scorciatoie configurabili, e insolitamente potente: xterm può inviare stringhe arbitrarie con string() e gli editor Athena si potevano riassegnare tasto per tasto. La sintassi era però abbastanza fragile – un solo \n\ mancante nel file di risorse e l'intera tabella spariva in silenzio – che la maggior parte delle persone si accontentava di incollare righe trovate su Usenet. GTK e Qt hanno abbandonato del tutto il meccanismo; lì le associazioni sono fisse nel codice e si ottiene una finestra delle preferenze.