emacsとgnome端末にキーを渡すには?

emacsとgnome端末にキーを渡すには?

Alt + 6を使って6番目のGNOMEターミナルタブに切り替えたいです。しかし、端末タブの下のemacsにある場合、キーはemacsに渡され、端末では機能しません。

キーは最初に端末によってキャプチャされ、次に端末によってemacsに渡されますか?

emacsやgnomeターミナルキーを変更したくありません。 Emacsでは動作しませんが、gnome端末で動作するようにAlt + 6の前にエスケープ修飾キーを追加する方法はありますか?

ありがとうございます!

ベストアンサー1

Ubuntu Utopic以前にリリースされた以前のバージョンのgnome-terminalは、「自動」「デュアル」動作を実装するために使用されました。タブが6つ以上の場合は、Alt + 6を押すと6番目のタブに切り替わります。それ以外の場合は、内部で実行されているすべてのアプリケーション(emacsなど)にキーストロークが送信されます。

最新バージョン(Ubuntu Vividで始まる)には、これらの自動動作はありません。 Alt + 1 - Alt + 9はデフォルトでタブを切り替えるようにバインドされているため、開いているタブが不足している場合は何もしないでください。 Edit->Preferences->Shortcuts でこれらのアクションを定義解除するか、これらのアクションを必要な他のキーに再割り当てすることができます。この場合、Alt + 6がアプリケーション(emacs)に送信されます。

あるいは、Esc 6を押すのに慣れているかもしれません。

キーは最初に端末によってキャプチャされ、次に端末によってemacsに渡されますか?

はい。端末は、内部で実行されているアプリケーションが「not」イベントを処理するかどうかを知ることはできません。したがって、反対のアプローチ(emacsがこれに対処するかどうかを見て、そうでない場合はgnomeターミナルスイッチタブを見てみましょう)は意図的に機能しません。

このデザインの唯一の例外はマウスイベントです。アプリケーションがマウスイベントに興味がある場合は、端末に事前にシグナルを送信する必要があります。もしそうなら、gnome-terminalはイベントを送り、そうでなければそれ自身を処理します。

編集:マウスイベントが唯一の例外ではありません:)私に発生したもう1つの問題は、ターミナルが代替画面(スクロールバーのない画面、ほとんどのフルスクリーンアプリと同様)に切り替えたときにスクロールするキー押し効果です。バー(Shift + PageUpなど)もエスケープシーケンスとしてアプリケーションに送信されます。

おすすめ記事