カスタムキーボードレイアウトを作成しました。~/dot/c98.xkb
次のようになります。
// vim: ft=xkb
xkb_keymap {
xkb_keycodes "k" { include "evdev(evdev)" };
xkb_geometry "g" { include "pc(pc105)" };
xkb_types "t" {
};
xkb_compat "c" {
};
xkb_symbols "s" {
};
};
空のブロックに実際に何かがあるようですが、スペースを節約するために省略します。
これをコンパイルしてデコンパイルすると、xkbcomp c98.xkb c98.xkm; xkbcomp c98.xkm c98_xkm.xkb
元のファイルと同じファイルが生成されます(デコンパイルされたコードに似ています)。
ただし、これを行うとxkbcomp c98.xkb $DISPLAY; xkbcomp $DISPLAY c98_display.xkb
エラーメッセージが表示され(まだ機能しますが、メッセージは以下にコピーされます)、ファイルは元のものと少し似ています。
keycodes
evdev+aliases(qwerty)
だけではなく、含めてevdev
名前が変更されましたevdev+aliases(qwerty)
。types
多くの内容が含まれていますが、私が指定した内容は含まれておらず(ただ含まれているように見えます)、名前が/complete
に変更されました。complete
compat
私が言ったことが含まれていますが、それ以上ですvirtual_modifiers
。その人はとも呼ばれますcomplete
。symbols
name[group1]
フィールドがに変更され、English (US)
一部のフィールドに奇妙な値があることを除き、含める必要があるものが含まれています。type
名前の代わりにインデックスを保存しているようですが、フィールドが破損しているtypes
ため...ブロック名がに変更されましたpc+us+inet(evdev)
。geometry
ブロック名を含め、含めるべき内容が含まれているようです。
何らかの理由でxkbcomp
いくつかのブロックだけがコピーされ、keycodes
フィールドtypes
は無視されるようです。
レイアウトを設定しようとすると、上記のエラーメッセージは次のとおりです。
X Error of failed request: BadAtom (invalid Atom parameter)
Major opcode of failed request: 135 (XKEYBOARD)
Minor opcode of failed request: 18 (XkbSetNames)
Atom id in failed request: 0x435345
Serial number of failed request: 70
Current serial number in output stream: 73
完全なソースコードとc98_xkm.xkb
の違いをc98_display.xkb
確認できます。ここ。