dttermのbashカーソルキーが期待どおりに機能しません。

dttermのbashカーソルキーが期待どおりに機能しません。

Bashでいくつかのキーボードショートカットを再マップしようとしています。問題は、表示キーコードを使用しようとするとCtrl-Vすべてのキーが機能しないことです。たとえば、通常どおりに端末を入力し、一番Ctrl-V上に移動します。Home入力Ctrl-VするとCtrl何も表示されません。と入力Ctrl-Vし、left arrowshowと^[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

次に、実際たとえばxevhome私の設定のキーは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のバーチャルステープルゾーンを歩き回る必要があります。

引用:

dtTerm マニュアル、dtTerm 端末オプションページ

標準Xresources dtTermの解析

答え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リソースファイルにあります。

関連情報