
Ich verwende xterm, das mit einer Reihe von Standardübersetzungen geliefert wird, die in der Manpage aufgeführt sind. Um die Übersetzungen zu #augment
ändern , bearbeite ich meine Datei. Das funktioniert wie erwartet.#override
$XAPPLRESDIR/XTerm
Ich kann jedoch keinen Weg finden,entferneneine bestimmte Standardübersetzung (und das Ereignis wird an die in xterm ausgeführte Anwendung weitergegeben).
Konkret möchte ich, dass das Meta <Btn2Down>
Ereignis an die Anwendung weitergegeben wird. Die xterm-Standardübersetzungen binden dies an die clear-saved-lines()
Aktion mit
STANDARDTASTENBELEGUNGEN
[...]
Meta <Btn2Down>:clear-saved-lines() \n\
Was muss ich tun, damit die Anwendung das Meta-Btn2Down-Ereignis empfängt?
Antwort1
So wie ich es verstehe, gibt es keine Funktion im X Toolkit, dieentferneneine Übersetzung. Sie könnenaußer Kraft setzenodervermehrenaber nicht selektiv einen Teil einer Übersetzungstabelle entfernen.
Das war einer der Gründe für die Aufnahme desweglassenÜbersetzungRessource inPatch Nr. 269. Mit dieser Version ist die Übersetzungstabelle in übersichtlichere Teile aufgeteilt, was eine etwas bessere Anpassung ermöglicht:
Lassen Sie beim Start selektiv einen oder mehrere Teile der Standardübersetzungen von xterm weg. Der Ressourcenwert ist eine durch Kommas getrennte Liste von Schlüsselwörtern, die abgekürzt werden können: "Vollbild","Rollensperre","Shift-Schriftarten"oder"Radmaus"Xterm erkennt auch"Standard", aber wenn Sie das weglassen, wird das Programm unbrauchbar, sofern Sie nicht eine ähnliche Definition in Ihren Ressourceneinstellungen angeben.
Ich stimme jedoch mit StéphaneChazelas überein, dass es unklar ist, wie Sie die vorgeschlagene Änderung effektiv nutzen würden, da die an die Anwendung übergebenen Escape-Sequenzen in xterm basierend auf Schaltflächenereignissen erstellt werden. Vielleicht könnten Sie eine spezielle Übersetzung erstellen, die eine Zeichenfolgenaktion verwendet.
Antwort2
Wenn Sie nach bereits gebundenen Schlüsseln suchen, die ohne Verarbeitung durch xterm übergeben werden sollen, suchen Sie wahrscheinlich nach insert()
oder insert-eight-bit()
Aktionen.
Von der xterm-Manpage:
insert()
Diese Aktion fügt das Zeichen oder die Zeichenfolge ein, die der gedrückten Taste zugeordnet ist.
insert-eight-bit()
Diese Aktion fügt eine 8-Bit-Version (Meta) des Zeichens oder der Zeichenfolge ein, die mit der gedrückten Taste verknüpft ist. Nur Einzelbyte-Werte werden speziell behandelt. Die genaue Aktion hängt vom Wert desaltSendsEscapeund dasmetaSendsEscapeund dasachtBitEingangRessourcen. DiemetaSendsEscapeRessource wird zuerst getestet. Siehe dieachtBitEingangRessource für eine umfassende Diskussion.Die Bezeichnung „Acht-Bit“ ist irreführend:xtermprüft, ob der Schlüssel im Bereich 128 bis 255 liegt (das achte Bit ist gesetzt). Wenn der Wert in diesem Bereich liegt, abhängig von den Ressourcenwerten,xtermSie können dann einen der folgenden Schritte ausführen:
- addiere 128 zum Wert und setze das achte Bit,
- ein ESC-Byte vor der Taste senden, oder
- Senden Sie den Schlüssel unverändert.
Zum Beispiel,
Meta <Btn2Down>:insert-eight-bit() \n\
PS: Ich habe gerade das gleiche Problem gelöst, um das Bieten zu vermeiden Alt <Key>Return:fullscreen() \n\
und Alt-Return an eine Anwendung übergeben zu können.