Bashでいくつかのキーボードショートカットを再マップしようとしています。問題は、表示キーコードを使用しようとするとCtrl-V
すべてのキーが機能しないことです。たとえば、通常どおりに端末を入力し、一番Ctrl-V
上に移動します。Home
入力Ctrl-V
するとCtrl
何も表示されません。と入力Ctrl-V
し、left arrow
showと^[OD
入力してCtrl-V
同じCtrl-left arrow
内容を表示します。
カーソルを行の先頭または末尾に移動し、Ctrl - 矢印を使用して単語を移動するためにHomeとEndを再マップしようとしています。私はSolarisでDtTermを使用しています。
解決策:
.X デフォルト:
Dtterm*DtTerm*Translations: #override \n\
<KeyPress>osfBeginLine: string("0x1B")string("[1~") \n\
<KeyPress>osfEndLine: string("0x1B")string("[4~") \n\
Ctrl<KeyPress>osfLeft: string("0x1B")string("OC") \n\
Ctrl<KeyPress>osfRight: string("0x1B")string("OD")
.inputrc:
"\e[1~": beginning-of-line
"\e[4~": end-of-line
"\eOD": forward-word
"\eOC": backward-word
答え1
私は何年もdtTermを使用していません。キーボードモードとカーソルキーモードを「アプリケーションモード」(ターミナル - >オプションの下にあります)に設定して動作させることができます。
うまくいかない場合は、Xresourcesパスに従う必要がありますが、Homeキー(キーなどescape)はDtTerm(ala OSF / Motif)に特別な意味を持ち、再生には追加の作業が必要だと思いました。よく。
明らかに、翻訳で#overrideを使用することは「公式にサポート」されていませんが、ハッキングとして機能します。
シェルでdtTermを実行して現在存在するキーマップを見つけ、aを実行してdtTermにキーShiftCtrl*マップをダンプさせる必要があります(dtTermを実行しているシェルの標準出力に表示されます)。*Xキーバインディングについて話すとき、これは数字パッドのキーです(KP_Multiplyとも呼ばれます)。
私はdtTermがosfBeginLine
。
次に、実際たとえばxev
、home私の設定のキーはkeysymです0xff50
。
KeyPress event, serial 30, synthetic NO, window 0x3600001,
root 0x102, subw 0x0, time 643678606, (78,90), root:(1578,578),
state 0x0, keycode 110 (keysym 0xff50, Home), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
~/.Xdefaults
次に、次を編集して追加する必要があります。
Dtterm*DtTerm*translations:#override\n\
:<KeyPress>osfBeginLine: string("0xff50")
その後、実行するとファイルをインポートする必要がdtaction ReloadResources
あります.Xdefaults
。
運が良ければ、マッピングを得て、いつものようにキーバインディングをすることができます。そうでなければ、おそらく巨大なスパゲッティの山だったMotifのバーチャルステープルゾーンを歩き回る必要があります。
引用:
答え2
物理端末は、矢印で使用される CTRL に対して異なるコードシーケンスを生成しません。端末エミュレータは、物理的な祖先と同じように動作しようとしたが、それに続いた。使用する端末エミュレータに応じて独自のシーケンスを定義することもできます。たとえば、私は
XTerm*VT100*Translations: #override \
Ctrl<Key>Prior:scroll-back(1,halfpage)\n\
<Key>Prior:string(0x1B)string([5~)\n\
Ctrl<Key> Next:scroll-forw(1,halfpage)\n\
<Key>Next:string(0x1B)string([6~)\n\
<Key>Delete:string(0x1B)string([3~)\n\
Ctrl<Key>Home:string(0x1B)string(CH~)\n\
Ctrl<Key>End:string(0x1B)string(CE~)\n\
<Key>Home:string(0x1B)string(H~)\n\
<Key>End:string(0x1B)string(E~)\n\
<Key>BackSpace:string(0x7F)\n\
Ctrl<Key>Left:string(0x1B)string(CL~)\n\
Ctrl<Key>Right:string(0x1B)string(CR~)\n\
Ctrl<Key>Up:string(0x1B)string(CU~)\n\
Ctrl<Key>Down:string(0x1B)string(CD~)\n
私はXTermリソースファイルにあります。