如何删除特定的默认 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 默认翻译的一个或多个部分。资源值是逗号分隔的关键字列表,可以缩写: “全屏”,“滚动锁定”,“移动字体”或者“滚轮鼠标”。 Xterm 还识别“默认”,但省略它将使程序无法使用,除非您在资源设置中提供类似的定义。

然而,同意 StéphaneChazelas 的观点,目前还不清楚如何有效地使用建议的更改,因为传递给应用程序的转义序列是在 xterm 内部基于按钮事件构建的。也许您可以使用字符串操作进行特殊翻译。

答案2

如果您正在寻找要传递的已绑定键而不需要 xterm 处理它,那么您可能正在寻找insert()insert-eight-bit()操作。

来自 xterm 手册页:

insert()
此操作插入与按下的键关联的字符或字符串。

insert-eight-bit()
此操作插入与按下的键关联的字符或字符串的八位(元)版本。仅对单字节值进行特殊处理。确切的操作取决于alt发送转义元发送转义八位输入资源。这元发送转义首先测试资源。请参阅八位输入进行充分讨论的资源。

“八位”一词具有误导性:xterm检查密钥是否在 128 到 255 范围内(第八位已设置)。如果该值在该范围内,则取决于资源值,xterm然后可以执行以下操作之一:

  • 将该值加 128,设置其第八位,
  • 在按键之前发送 ESC 字节,或者
  • 发送未更改的密钥。

例如,

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

PS:我刚刚解决了同样的问题,以避免 biding Alt <Key>Return:fullscreen() \n\,以便能够将 Alt-return 传递给应用程序。

相关内容