如何刪除特定的預設 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 傳遞給應用程式。

相關內容