CTRL + AとCTRL + Eをマップして機能するようにする方法はありますかシステム全体行の先頭に移動し、それに応じて行の終わりに移動しますか?
つまりこれらのショートカットが、ターミナルだけでなく(つまり、OSXのように)どのアプリでもシームレスに機能するようにしたいと思います。
私のメインシステムはUnityデスクトップを備えたUbuntuですが、デスクトップに依存しない、または少なくともGnome、XFCE、LXDEでサポートされるユニバーサルソリューションがあると便利です。
xmodmap
は答えを提供しているように見えるかもしれませんが、そうではありません。keycodes操作するのはキーボード上の既存のキーであり、変更キー。 A controlA 修飾キーです。
xmodmap
は、マニュアルページにリストされているように、既存のキーコードまたは(それらの名前の)keysymsのみを再割り当てできます。
keycode
[〜#〜] number [〜#〜] = [〜# 〜] keysymname [〜#〜].。keycode
any
= [〜#〜] keysymname [〜#〜].。keysym
[〜#〜] keysymname [〜#〜] =- [〜#〜] keysymname [〜#〜].。
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」のkeysymを^A
(control/A)に変換します。
どのコントロールキーにもkeysymがないため、OPの問題でxmodmap
を使用してキーコードを再割り当てすることはできません。
solve OPの問題を解決するには、オペレーティングシステムに(本質的に)個別のイベントの配信を拒否するように指示する方法が必要になります。 control そして A —しかし、LinuxとXはそのようには機能しません。スコープを特定のアプリケーション(xterm)またはアプリケーションのセット(Gtkベースのプログラム)に限定すると、それらを個別に扱うことができます。しかし、システム全体に適用されるソリューションは実行可能ではないようです。