特定のデフォルトの 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ツールキットには、取り除く翻訳。オーバーライドまたは増強ただし、変換テーブルの一部を選択的に削除することはできません。

それが、省略翻訳リソースパッチ #269このバージョンでは、翻訳テーブルがより管理しやすい部分に分割され、カスタマイズ性が多少向上しました。

起動時に xterm のデフォルト翻訳の 1 つ以上の部分を選択的に省略します。リソース値は、カンマで区切られたキーワードのリストで、省略形も使用できます。 "全画面表示""スクロールロック"「シフトフォント」または「ホイールマウス」. Xtermは以下も認識します"デフォルト"ただし、これを省略すると、リソース設定で同様の定義を提供しない限り、プログラムが使用できなくなります。

しかし、StéphaneChazelas の意見に同意しますが、アプリケーションに渡されるエスケープ シーケンスはボタン イベントに基づいて xterm 内で構築されるため、提案された変更を効果的に使用する方法が不明です。おそらく、文字列アクションを使用する特別な翻訳を作成できるでしょう。

答え2

xterm で処理せずに渡される、すでにバインドされているキーを探している場合は、おそらくinsert()またはinsert-eight-bit()アクションを探していることになります。

xterm のマニュアルページより:

insert()
このアクションは、押されたキーに関連付けられた文字または文字列を挿入します。

insert-eight-bit()
このアクションは、押されたキーに関連付けられた文字または文字列の8ビット(メタ)バージョンを挿入します。1バイト値のみが特別に扱われます。正確なアクションは、altSendsEscapeそしてそのメタ送信エスケープそしてその8ビット入力リソース。メタ送信エスケープリソースは最初にテストされます。8ビット入力完全な議論のためのリソース。

「8ビット」という用語は誤解を招きます。xtermキーが128から255の範囲にあるかどうかをチェックします(8番目のビットが設定されます)。値がその範囲内にある場合、リソース値に応じて、xterm次のいずれかを実行します。

  • 値に128を加算し、8番目のビットを設定する。
  • キーの前にESCバイトを送信するか、
  • キーを変更せずに送信します。

例えば、

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

PS: 同じ問題を解決して、バインドを回避しAlt <Key>Return:fullscreen() \n\、Alt キーを押しながらリターン キーをアプリケーションに渡すことができるようになりました。

関連情報