it-swarm-ja.com

エスケープシーケンスを送信するためにubuntuターミナルを取得します(control + shift + up)

この問題は、emacs(-nwオプションを指定)を使用すると始まります。最初に説明させてください。ホットキー(emacs用)を次のように定義しようとしました

(global-set-key [(control shift up)] 'other-window)

しかし、それは機能しません(エラーなし、単に機能しません)、どちらも機能しません

(global-set-key [(control shift down)] 'other-window)

だが

(global-set-key [(control shift right)] 'other-window) 

そして

(global-set-key [(control shift left)] 'other-window)

作業!

しかし、最後の2つのキーの組み合わせは(デフォルトで)emacsによって使用されるため、他の機能のためにそれらを変更したくありません。

だから私はどのように作ることができますか control-shift-up そして control-shift-down 作業?

「(コントロールシフトアップ)」をググったのですが、 control-shift-up 他の人が使用します(ただし、結果は少なくありません)。

Stack Overflowフォーラムで、Gilleは次のように答えました。

Ctrl+Shift+Up コンピュータに信号を送信しますが、端末エミュレータは明らかにそのエスケープシーケンスを送信していません。したがって、問題は2つの部分にあります。まず、ターミナルエミュレータにエスケープシーケンスを送信させる必要があります。エスケープシーケンスは、ターミナルエミュレータに依存し、スーパーユーザーの資料、またはUNIXシステムを使用している場合はUnix.SEです。次に、Emacsでエスケープシーケンスを宣言する必要があります。私の答えはその部分を説明しています

だから私はこの質問のためにここに来ます:

自分の端末(ubuntu 10.04と組み込み端末を使用)を取得して、のエスケープシーケンスを送信するにはどうすればよいですか? Control+Shift+UpControl+Shift+down

4
user565739

UbuntuはGNOMEとgnome-terminalを使用します。そのドキュメントによると( バージョン2. )、 CtrlShiftUp そして CtrlShiftDown はスクロールバックバッファをナビゲートするために使用され、この「機能」をオフにする方法はないようです(ターミナルライブラリであるvteのソースコードを変更する以外は)。


Ubuntu 10.04でvteにパッチを適用するには:

  1. ターミナルエミュレーションライブラリであるvteを再構築します。

    1. コンパイルに必要なソフトウェアをインストールします。

      Sudo apt-get install git-core fakeroot
      Sudo apt-get build-dep vte
      
    2. vteソースコードをダウンロードして、パッチを適用します。

      cd /tmp
      git clone git://Gist.github.com/771667.git patches
      apt-get source vte
      cd vte-0.23.5
      patch -p1 < ../patches/vte-0.23.5.patch
      
    3. Debianパッケージを作成し、インストールします。

      dpkg-buildpackage -us -uc
      Sudo dpkg -i ../libvte9_0.23.5-*.deb
      
  2. すべてのgnome-terminalプロセスを閉じます。

  3. 楽しんでください-次のvte更新まで...

0.23のパッチ:

diff -ur vte-0.23.5/src/vte.c vte-0.23.5+patched/src/vte.c
--- vte-0.23.5/src/vte.c    2010-01-14 02:46:18.000000000 +0200
+++ vte-0.23.5+patched/src/vte.c    2011-01-09 15:19:01.000000000 +0200
@@ -4948,26 +4948,6 @@
            }
            break;
        /* Keypad/motion keys. */
-       case GDK_KP_Up:
-       case GDK_Up:
-           if (modifiers & GDK_CONTROL_MASK 
-                            && modifiers & GDK_SHIFT_MASK) {
-               vte_terminal_scroll_lines(terminal, -1);
-               scrolled = TRUE;
-               handled = TRUE;
-               suppress_meta_esc = TRUE;
-           }
-           break;
-       case GDK_KP_Down:
-       case GDK_Down:
-           if (modifiers & GDK_CONTROL_MASK
-                            && modifiers & GDK_SHIFT_MASK) {
-               vte_terminal_scroll_lines(terminal, 1);
-               scrolled = TRUE;
-               handled = TRUE;
-               suppress_meta_esc = TRUE;
-           }
-           break;
        case GDK_KP_Page_Up:
        case GDK_Page_Up:
            if (modifiers & GDK_SHIFT_MASK) {

0.26のパッチ:

diff -ur vte-0.26.2/src/vte.c vte-0.26.2+patched/src/vte.c
--- vte-0.26.2/src/vte.c    2010-11-13 14:18:41.000000000 +0200
+++ vte-0.26.2+patched/src/vte.c    2011-01-09 15:06:54.870000002 +0200
@@ -5153,26 +5153,6 @@
            }
            break;
        /* Keypad/motion keys. */
-       case GDK_KEY (KP_Up):
-       case GDK_KEY (Up):
-           if (modifiers & GDK_CONTROL_MASK 
-                            && modifiers & GDK_SHIFT_MASK) {
-               vte_terminal_scroll_lines(terminal, -1);
-               scrolled = TRUE;
-               handled = TRUE;
-               suppress_meta_esc = TRUE;
-           }
-           break;
-       case GDK_KEY (KP_Down):
-       case GDK_KEY (Down):
-           if (modifiers & GDK_CONTROL_MASK
-                            && modifiers & GDK_SHIFT_MASK) {
-               vte_terminal_scroll_lines(terminal, 1);
-               scrolled = TRUE;
-               handled = TRUE;
-               suppress_meta_esc = TRUE;
-           }
-           break;
        case GDK_KEY (KP_Page_Up):
        case GDK_KEY (Page_Up):
            if (modifiers & GDK_SHIFT_MASK) {
4
user1686

Ctrl+Shift+UpCtrl+Shift+Down gnomeのデフォルト端末によってキャプチャされているように見えますが、10.04では「ターミネーター」と呼ばれる端末を使用する傾向があります。これらのキーはマップされていないようです。

1
Forbesmyester