CTRL+A、CTRL+E をシステム全体で Home、End として機能させるにはどうすればよいですか?

CTRL+A、CTRL+E をシステム全体で Home、End として機能させるにはどうすればよいですか?

CTRL+AとCTRL+Eをマッピングして動作させる方法はありますか?システム全体行の先頭に移動し、それに応じて行の末尾に移動するのと同じですか?

つまり、これらのショートカットがターミナルだけでなく (OSX のように) どのアプリでもシームレスに機能するようにしたいのです。

私のメインシステムは Unity デスクトップを搭載した Ubuntu ですが、デスクトップに依存しない、または少なくとも Gnome、XFCE、LXDE でサポートされるユニバーサル ソリューションがあれば良いと思います。

答え1

xmodmap答えを提供しているように見えるかもしれないが、そうではない。キーコード操作するのはキーボード上の既存のキーであり、変更されたキー。A はcontrolA変更されたキーです。

xmodmapマニュアルページに記載されているように、既存のキーコードまたは(その名前の)キーシムのみを再割り当てできます。

keycode 番号=キーシンボル名...
keycode any=キーシンボル名...
keysym キーシンボル名=キーシンボル名...

が認識しているキーコードを確認するにはxmodmap

xmodmap -pk

これは次のようになります (わかりやすくするために短縮しています)。

There are 4 KeySyms per KeyCode; KeyCodes range from 8 to 255.

    KeyCode Keysym (Keysym) ...
    Value   Value   (Name)  ...

      8     0x0061 (a)      0x0041 (A)      0x00e5 (aring)  0x00c5 (Aring)  
      9     0x0073 (s)      0x0053 (S)      0x00df (ssharp) 0x00cd (Iacute) 
     10     0x0064 (d)      0x0044 (D)      0x08ef (partialderivative)      0x00ce (Icircumflex)    
     11     0x0066 (f)      0x0046 (F)      0x08f6 (function)       0x00cf (Idiaeresis)     
     12     0x0068 (h)      0x0048 (H)      0x01ff (abovedot)       0x00d3 (Oacute) 
     13     0x0067 (g)      0x0047 (G)      0x00a9 (copyright)      0x01bd (doubleacute)    
     14     0x007a (z)      0x005a (Z)      0x07d9 (Greek_OMEGA)    0x00b8 (cedilla)
     ...

xev実際に何が起こるかを示します:

KeyPress event, serial 34, synthetic NO, window 0xc00001,
    root 0x111, subw 0xc00002, time 2209364614, (27,43), root:(47,86),
    state 0x4, keycode 8 (keysym 0x61, a), same_screen YES,
    XLookupString gives 1 bytes: (01) "^A"
    XmbLookupString gives 1 bytes: (01) "^A"
    XFilterEvent returns: False

KeyRelease event, serial 34, synthetic NO, window 0xc00001,
    root 0x111, subw 0xc00002, time 2209364773, (27,43), root:(47,86),
    state 0x4, keycode 8 (keysym 0x61, a), same_screen YES,
    XLookupString gives 1 bytes: (01) "^A"
    XFilterEvent returns: False

コントロール修飾子は0x4状態にあります。XLookupString(キーイベントを組み合わせるためのいくつかの関連関数の1つ)は、キーシンボル「a」を^A(control/A)に変更します。

どのコントロール キーにもキーシムがないため、xmodmapOP の問題では、キーコードの再割り当ては不可能になります。

解決するOP の問題を解決するには、オペレーティング システムに (基本的に) と の個別のイベントの配信を拒否するように指示する方法が必要ですcontrolA、Linux と X はそのような方法では動作しません。特定のアプリケーション (xterm) またはアプリケーションのセット (Gtk ベースのプログラム) に範囲を限定すると、それらを個別に処理できる可能性があります。ただし、システム全体に適用するソリューションは実行可能ではないようです。

関連情報