Как удалить определенный перевод xterm X11 по умолчанию?

Как удалить определенный перевод xterm X11 по умолчанию?

Я использую xterm, который поставляется с набором переводов по умолчанию, перечисленных на странице руководства. Для #augmentпереводов #overrideя редактирую свой $XAPPLRESDIR/XTermфайл; это работает так, как и ожидалось.

Однако я не могу найти способудалятьопределенный перевод по умолчанию (и передать событие приложению, работающему в xterm).

В частности, я хочу, Meta <Btn2Down>чтобы событие было передано приложению. Переводы xterm по умолчанию связывают это с clear-saved-lines()действием с

ПРИВЯЗКИ КЛАВИШ ПО УМОЛЧАНИЮ
[...]
Мета <Btn2Down>:clear-saved-lines() \n\

Что нужно сделать, чтобы приложение получило событие Meta-Btn2Down?

решение1

Насколько я понимаю, в X Toolkit нет функции, которая могла быудалятьперевод. Вы можетепереопределитьилиувеличиватьно не выборочно удалять часть таблицы перевода.

Это было одной из причин добавленияпропуститьПереводресурс впатч #269. В этой версии таблица переводов разбита на более управляемые части, что позволяет выполнять несколько лучшую настройку:

Выборочно опустить одну или несколько частей переводов xterm по умолчанию при запуске. Значение ресурса — это список ключевых слов, разделенных запятыми, который может быть сокращен: "полноэкранный","прокрутка-блокировка","shift-шрифты"или"колесико-мышь". Xterm также распознает"по умолчанию", но если этого не сделать, программа станет непригодной для использования, если только вы не предоставите аналогичное определение в настройках ресурсов.

Однако, соглашаясь со StéphaneChazelas, неясно, как вы эффективно используете предлагаемое изменение, поскольку escape-последовательности, которые передаются в приложение, создаются внутри xterm на основе событий кнопок. Возможно, вы могли бы сделать специальный перевод, который использовал бы действие строки.

решение2

Если вы ищете уже привязанные ключи, которые нужно передать без обработки xterm, вероятно, вы ищете insert()или insert-eight-bit()действия.

Из страницы руководства xterm:

insert()
Это действие вставляет символ или строку, связанную с нажатой клавишей.

insert-eight-bit()
Это действие вставляет восьмибитную (Meta) версию символа или строки, связанной с нажатой клавишей. Только однобайтовые значения обрабатываются специально. Точное действие зависит от значенияaltSendsEscapeиmetaSendsEscapeиeightBitInputРесурсы.metaSendsEscapeресурс тестируется первым. СмотритеeightBitInputресурс для полного обсуждения.

Термин «восьмибитный» вводит в заблуждение:xtermпроверяет, находится ли ключ в диапазоне от 128 до 255 (задан восьмой бит). Если значение находится в этом диапазоне, в зависимости от значений ресурсов,xtermзатем можно выполнить одно из следующих действий:

  • добавьте 128 к значению, установив его восьмой бит,
  • отправить байт ESC перед клавишей или
  • отправьте ключ без изменений.

Например,

Meta <Btn2Down>:insert-eight-bit() \n\

PS: Я только что решил ту же проблему, чтобы избежать ожидания Alt <Key>Return:fullscreen() \n\, чтобы иметь возможность передать Alt-return в приложение.

Связанный контент