de
ドイツ語のキーボードレイアウトに基づいてカスタムキーボードレイアウト()を作成したいです。アイデアは、Caps-Lockをキーとして2つのレイアウトセットを使用することですMode_switch
。リマッピングはに従って動作するようですxev
。ただし、2番目のレイアウトセットは機能しません。 [CAPS] + [H]を押すと、-> "h"が表示されます("`"である必要があります)。
これは次のシンボルファイルですde_ext
。
default
xkb_symbols "basic" {
include "de"
name[Group1]="de";
name[Group2]="de2";
// the H button should become accent grave when in second group
override key <AC06> {
type[Group2]="ALPHABETIC",
symbols[Group2]= [ grave, grave ]
};
override key <CAPS> { [ Mode_switch, Caps_Lock ] };
};
編集1:
@quixotic そうですね。自分で設定すると実際に動作します。また、de_ext
ファイルをコピーして/usr/share/X11/xkb/
実行してみましたが、setxkbmap de_ext
効果がありました。
/usr/share/X11/xkb/rules/evdev.xml
ただし、レイアウトを追加すると機能しません。
<layout>
<configItem>
<name>de_ext</name>
<shortDescription>xy</shortDescription>
<description>German extended</description>
<languageList>
<iso639Id>ger</iso639Id>
</languageList>
</configItem>
</layout>
Ubuntu 17.04タスクバーのレイアウト選択に新しいレイアウトが表示されますが、これを選択すると、上記のようにCAPS-Lockボタンの動作が異なります。動作するのはCAPS-LockがMode_switchであることです(確認しましたxev
)。ただし、2番目のグループは[CAPS] + [H]を押しても機能しないため、選択されていないようです。 Ubuntu / Gnomeレイアウトスイッチャーを使用するときにどのような違いがあるのか知っていますか?
編集2:
通話中にxkbcomp $DISPLAY broken.xkb
次のことを確認しました。
- 私のxkb_symbolsの名前は次のとおりです。
xkb_symbols "pc+prg+de:2+us:3+inet(evdev)"
私のレイアウトには2つではなく3つのグループがあります(デフォルトのドイツ語レイアウトには2つのレイアウトがありますが、1つだけが定義されています
symbols/de
)。name[group1]="German"; name[group2]="German"; name[group3]="English (US)";
ほぼすべてのキーに対して3つのグループ/レイアウトがあり、2番目は最初のものと同じで、3番目は英語のキーボードレイアウトです。私が直接修正した文字は含まれません。
key <AC01> { type[group1]= "FOUR_LEVEL_ALPHABETIC", type[group2]= "FOUR_LEVEL_ALPHABETIC", type[group3]= "ALPHABETIC", symbols[Group1]= [ a, A, ae, AE ], symbols[Group2]= [ a, A, ae, AE ], symbols[Group3]= [ a, A ] };
これは私が受け取った手紙Hです。
key <AC06> { type[group1]= "FOUR_LEVEL_ALPHABETIC", type[group2]= "ALPHABETIC", type[group3]= "ALPHABETIC", symbols[Group1]= [ h, H, hstroke, Hstroke ], symbols[Group2]= [ h, H ], symbols[Group3]= [ h, H ] };
Caps Lock ボタンへの変更が含まれているため、変更は不要です。
私の仮説は、追加のレイアウトを追加のグループとして含めるようにすべてのシンボルを変更する基本(Ubuntu?)xkb構成にいくつかの規則があることです。私のxkbシンボルがこのルールをトリガーするのを防ぐ方法はありますか?
答え1
ついに解決策を見つけました。ファイルに/usr/share/X11/xkb/rules/evdev
ルールがあります
! model layout[2] = symbols
* * = +%l[2]%(v[2]):2
これにより、2番目のグループがキーボードのデフォルトレイアウトで上書きされます。次の行を追加することで、この問題(デフォルトのde
キーボードレイアウトがある場合)を解決できました。
! model layout[2] = symbols
* de = +de
問題の分析に役立つ@quixoticに感謝します。