たとえば、Super + x、Super + c、Super + vの形式のいくつかのシーケンスをCtrl + x、Ctrl + c、Ctrl + vなどの他のシーケンスにバインドする場合、(OPとして)これらが特定のスーパーキーシーケンスは通常、システム上のスーパーキーの他の使用に影響を与えることなく、カットアンドペーストにマッピングされます。XKB拡張のみを使用することも可能です。以下の手順では、手順の概要を説明し、2つの異なる起動キーボードセットアップの詳細の2つの異なる例を示します。うまくいけば、システムに適応するのに十分な情報が得られます。システム上のファイルを作成および編集することに慣れていることを前提としています/usr/share/X11/xkb
。
XKB構成ツリーを配置する場所を決定します。最初にシステムを見つけます。通常、これは/ usr / share / X11 / xkbにありますが、存在しない場合にどのように見つけるかは定かではありません。「xkb」という名前のディレクトリをシステムで検索できます。とにかく、それを見つけたら、システムをその場で変更するか、または任意のディレクトリを使用できます。システムディレクトリを使用する利点は、変更をはるかに簡単に呼び出すことができることですが、欠点は、将来のシステム更新によって変更が上書きされる可能性があることです(警告されています)。いずれにせよ、今後言及されるすべてのファイル名はこのディレクトリに関連するものであり、必要に応じて$ XKBLOCAL $として参照し、すべてのコマンドはそれが現在のディレクトリであると想定します。
現在のx、c、vキーがキーのXKB「タイプ」を決定します。これを行う最も簡単な方法は、コマンドを使用することですxkbcomp -a $DISPLAY - | grep -C 6 c,
(コンマが意図的にパターンに含まれていることに注意してください)。最初のセットアップ例では、これにより以下が生成されます。
key <AB02> {
type= "ALPHABETIC",
symbols[Group1]= [ x, X ]
};
key <AB03> {
type= "ALPHABETIC",
symbols[Group1]= [ c, C ]
};
key <AB04> {
type= "ALPHABETIC",
symbols[Group1]= [ v, V ]
};
key <AB05> {
一方、他のセットアップ例では、これにより
key <AB02> {
type= "FOUR_LEVEL",
symbols[Group1]= [ x, X, approxeq, dead_ogonek ]
};
key <AB03> {
type= "FOUR_LEVEL",
symbols[Group1]= [ c, C, ccedilla, Ccedilla ]
};
key <AB04> {
type= "FOUR_LEVEL",
symbols[Group1]= [ v, V, squareroot, U25CA ]
};
key <AB05> {
結果は、最初の例では関連するキーのタイプは「ALPHABETIC」であり、2番目の例では「FOUR_LEVEL」のタイプです。キーボードの設定に応じて、それらが他の種類のものであることがあります。以下では、タイプは$ TYPE $と呼ばれます。これは、実際の文字列ALPHABETICまたは以下のコマンド内の任意の文字列に置き換える必要があります。
$ TYPE $の定義を見つけて、$ XKBLOCAL $ / typesディレクトリの新しいファイルにコピーします。これを行うコマンドを次に示しますxkbcomp -a $DISPLAY - | grep -z -o 'type "$TYPE$" {[^}]*};' > types/cutpaste
。私が選択したファイル「cutpaste」の名前は任意で、好きな名前を使用しますが、後の手順でこのファイルを一貫して参照する必要があることに注意してください。最初のセットアップでは、このファイルはコンテンツを取得します
type "ALPHABETIC" {
modifiers= Shift+Lock;
map[Shift]= Level2;
map[Lock]= Level2;
level_name[Level1]= "Base";
level_name[Level2]= "Caps";
};
他の例では、コンテンツを取得します
type "FOUR_LEVEL" {
modifiers= Shift+LevelThree;
map[Shift]= Level2;
map[LevelThree]= Level3;
map[Shift+LevelThree]= Level4;
level_name[Level1]= "Base";
level_name[Level2]= "Shift";
level_name[Level3]= "Alt Base";
level_name[Level4]= "Shift Alt";
};
ファイルタイプ/カットペーストを編集して、2つのことを行います。適切なXKB句となるプリアンブルとポストアンブルを追加し、タイプ名とタイプ定義を変更して、Superに対応する修飾子によって生成されるレベルをもう1つ追加します。システム上でその修飾子が何であるかを確認する必要があります。以下で使用されるMod4である可能性があります。必要な変更は、types / cutpasteの2つの最終バージョンの例から明らかです。
default partial xkb_types "addsuper" {
type "ALPHABETIC_SUPER" {
modifiers= Shift+Lock+Mod4;
map[Shift]= Level2;
map[Lock]= Level2;
map[Mod4]= Level3;
map[Shift+Mod4]= Level3;
map[Lock+Mod4]= Level3;
level_name[Level1]= "Base";
level_name[Level2]= "Caps";
level_name[Level3]= "With Super";
};
};
そして
default partial xkb_types "addsuper" {
type "FOUR_LEVEL_SUPER" {
modifiers= Shift+LevelThree+Mod4;
map[Shift]= Level2;
map[LevelThree]= Level3;
map[Shift+LevelThree]= Level4;
map[Mod4]= Level5;
map[Shift+Mod4] = Level5;
map[LevelThree+Mod4] = Level5;
map[Shift+LevelThree+Mod4] = Level5;
level_name[Level1]= "Base";
level_name[Level2]= "Shift";
level_name[Level3]= "Alt Base";
level_name[Level4]= "Shift Alt";
level_name[Level5]= "With Super"';
};
};
2番目のステップでgrepによって出力されたキーシンボル定義を2番目の新しいファイルシンボル/カットペーストにコピーし、同様のプリアンブルとポストアンブルを追加し、定義を変更して新しいタイプを使用し、目的のキーを処理するアクションを定義に追加しますスーパーバージョンによって生成されます。この2つの例での結果は次のとおりです。
default partial xkb_symbols "superversions" {
replace key <AB02> {
type[Group1]= "ALPHABETIC_SUPER",
symbols[Group1]= [ x, X, NoSymbol ],
actions[Group1]= [ NoAction(), NoAction(), RedirectKey(key=<LatX>,mods=Control,clearmods=Super)]
};
replace key <AB03> {
type[Group1]= "ALPHABETIC_SUPER",
symbols[Group1]= [ c, C, NoSymbol ],
actions[Group1]= [ NoAction(), NoAction(), RedirectKey(key=<LatC>,mods=Control,clearmods=Super)]
};
replace key <AB04> {
type[Group1]= "ALPHABETIC_SUPER",
symbols[Group1]= [ v, V, NoSymbol ],
actions[Group1]= [ NoAction(), NoAction(), RedirectKey(key=<LatV>,mods=Control,clearmods=Super)]
};
};
そして
default partial xkb_symbols "superversions" {
replace key <AB02> {
type[Group1]= "FOUR_LEVEL_SUPER",
symbols[Group1]= [x,X,approxeq,dead_ogonek,NoSymbol],
actions[Group1]= [NoAction(),NoAction(),NoAction(),NoAction(),RedirectKey(key=<LatX>,mods=Control,clearmods=Super)]
};
replace key <AB03> {
type[Group1]= "FOUR_LEVEL_SUPER",
symbols[Group1]= [c,C,ccedilla,Ccedilla,NoSymbol],
actions[Group1]= [NoAction(),NoAction(),NoAction(),NoAction(),RedirectKey(key=<LatC>,mods=Control,clearmods=Super)]
};
replace key <AB04> {
type[Group1]= "FOUR_LEVEL_SUPER",
symbols[Group1]= [v,V,squareroot,U25CA,NoSymbol],
actions[Group1]= [NoAction(),NoAction(),NoAction(),NoAction(),RedirectKey(key=<LatV>,mods=Control,clearmods=Super)]
};
};
2番目の例では、行の長さを少し制御できるように、(重要ではない)空白もいくつか絞り出しています。
XKBが現在使用しているルールセットの名前を見つけます。それは簡単です、それはの結果に示されていsetxkbmap -query
ます。私の場合、それは「evdev」でした。
rules / evdev(またはルールセットの名前)のシステムバージョンを$ XKBLOCAL $ / rules / evdevにコピーし、作成したオプションを指すルールを追加します。ここには2つの選択肢があります。evdevのすべてをコピーするか、実際に使用しているキーボードモデル、レイアウト、バリアント、およびオプションに言及している部分のみをコピーできます。もちろん、システムファイルを適切に変更する場合は、コピーする必要はなく、編集するだけです。
この場合、追加されるものは、最初のキーボード設定に関係なく同一であるため、例は1つだけです。で始まるルールファイルのセクションを見つけて、そのセクションに! option = symbols
行cutpaste:super = +cutpaste
を追加します。また、ルールファイルのセクションで始まり、そのセクションへ! option = types
の行も見つけcutpaste:super = +cutpaste
ます。
evdev.lstのシステムバージョンをコピーし、新しいオプションの行を追加します。このファイルの名前は、.lstが追加されたルールファイルの名前に単に対応することに注意してください。前の手順と同様に、ファイル全体をコピーするか、使用しているモデル、レイアウト、バリアント、オプションで参照される部分のみをコピーできます。このファイルで始まるセクションを見つけて、次の! option
ような行を追加するだけです:cutpaste:super Add super equivalents of cut and paste operations
そのセクションに。
OK、すべての構成ファイルが配置されました。システムファイルを変更した場合は、で新しいオプションを呼び出すことができますsetxkbmap -option cutpaste:super
。一方、そうしなかった場合は、$ XKBLOCAL $ディレクトリの場所をsetxkbmapに知らせる必要があります。さらに悪いことに、サーバーはそのディレクトリがどこにあるかを知らず、setxkbmapはそれを認識しません(最終的にサーバーが別のマシンで実行されている可能性があるため、おそらく認識できません)。したがって、setxkbmapの出力をxkbcompにパイプし、そのコマンドに$ XKBLOCALディレクトリがあることを伝える必要があります。したがって、完全なコマンドラインはですsetxkbmap -I$XKBLOCAL$ -option cutpaste:super -print | xkbcomp -I$XKBLOCAL - $DISPLAY
。