web-dev-qa-db-ja.com

Control-jをxkb [および|または] xmodmapを使用して制御ビットセット(!)なしでReturnとして機能させる方法

XtermとvimでReturnの代わりにControl-jを使用するのは非常に便利なようです。このシーケンスを、すべてのXアプリに使用したいと思います。

ISO_Level5_ShiftをControlキーに再マッピングし、Returnをjキーの5番目のレベルのシンボルとして設定することでxkbを使用して簡単に実行できますが、その後、vimとxtermの他のすべてのControlの組み合わせが機能しなくなります(xtermとvimが理解できないため) Modキー)、これは絶対に受け入れられません。

Xkb_symbolsセクションで「LOCAL_EIGHT_LEVEL」キータイプを使用してISO_Level5_Shiftを再マッピングせずにこれを行うことができました。これは、Level5修飾子として(ISO_Level5_Shiftの代わりに)Controlを使用します。

    key <AC07> { [ j, J, plusminus, NoSymbol, Return ], type[Group1]= "LOCAL_EIGHT_LEVEL" };

このソリューションの問題-xkbは制御ビットを設定し、Control-jは単にReturnではなくControl-Returnを返します。時々(かなり頻繁に、ところで)、この組み合わせはリターンとして機能しません。

したがって、必要なのは、これらのソリューションの1つを変更して、Control-jの組み合わせの制御ビットを設定解除することです。

このリンクによると: XKBに関するArch Wikiの記事 それは可能ですが、私はこれを行う方法がわかりません。だから、それは私の質問です。

たぶん、Return + Controlのxkb_compatibilityルール、またはこのようなものを追加するか、xmodmapマッピングを追加する必要があります-任意のソリューションをいただければ幸いです。

5
Vasily

私の質問に対する解決策を見つけました。 xkb_symbolsセクション内の各キーにアクションを割り当てることができます。リダイレクトは、必要なアクションです。

key <AC07> { [ j,    J,     plusminus,      NoSymbol,      NoSymbol ],
  type[Group1]="EIGHT_LEVEL_SEMIALPHABETIC",
  actions = [ NoAction(), NoAction(), NoAction(), NoAction(), 
                                Redirect(key=<RTRN>, clearmods=all) ]
};

このアクションを使用すると、既存の修飾子をクリアしたり、新しい修飾子を追加したりできます。

6
Vasily