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のバーチャルステープルゾーンを歩き回る必要があります。
引用: