
我正在使用 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 傳遞給應用程式。