カスタムキーボードレイアウトはそのまま使用されません。

カスタムキーボードレイアウトはそのまま使用されません。

カスタムキーボードレイアウトを作成しました。~/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エラーメッセージが表示され(まだ機能しますが、メッセージは以下にコピーされます)、ファイルは元のものと少し似ています。

  • keycodesevdev+aliases(qwerty)だけではなく、含めてevdev名前が変更されましたevdev+aliases(qwerty)
  • types多くの内容が含まれていますが、私が指定した内容は含まれておらず(ただ含まれているように見えます)、名前が/completeに変更されました。complete
  • compat私が言ったことが含まれていますが、それ以上ですvirtual_modifiers。その人はとも呼ばれますcomplete
  • symbolsname[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確認できます。ここ

関連情報