xkbコンパイルはどのように機能しますか?

xkbコンパイルはどのように機能しますか?

「Linux from scratch」環境でのX起動時にxkbcompが失敗する問題に直面しました。私の標準的なUbuntuコンピュータでは、キーマップをコンパイルすることもできないことがわかりました。

xkbcomp -w 10 -R/usr/share/X11/xkb -xkm rules/evdev dummy.km

これによりエラーが発生します。

Warning: Changing root directory to "/usr/share/X11/xkb"
syntax error: line 16 of rules/evdev
last scanned symbol is:
Errors encountered in rules/evdev; not compiled.

xkbcompはどのように使用すればよいですか?

答え1

/usr/share/X11/xkb/rules/evdev仕様が含まれていますルール。ルールは、XKBに部品からキーマップを構築する方法を教えてくれますが、特定のキーマップを指定するわけではありません。入力は次xkbcompのようになります。キーマップ

入力が何であるかを見つける最も簡単な方法は 読むことです。マニュアルページ(ハハいいえ) 読んでいます。公式文書(まるで)誤解を招く 名前を読んでいるかのように信頼できないガイド(素敵ですね。竣工式ホームページにリンクがあります。X.org Wikiしかし、それにもかかわらず情報を持っているxkbcomp実際にこれがインターネットから尋ねるerrrへの入力だと言っていませんか?ああ、ちょうどそうでした。

まあ、xkbcomp双方向で動作します。したがって、ディスプレイがキーマップをデコンパイルするように要求すると、許容可能な入力が表示されます。

xkbcomp :0 - | less

構文は次のとおりです。

xkb_keymap {
  xkb_keycodes { … };
  xkb_types    { … };
  xkb_compat   { … };
  xkb_symbols  { … };
  xkb_geometry { … };
}

次の中括弧内の内容は、xkb_xxxディレクトリ内のファイルの内容です/usr/share/X11/xkb/xxx。ステートメントを使用して既存のファイルを読み取るようにinclude指示できます。xkbcompファイル名の間にディレクティブを追加する必要がありますinclude+一部のファイルには複数のxkb_xxxディレクティブが含まれているため、目的のディレクティブの名前を括弧内に渡します。たとえば、Composeonでアメリカのレイアウトを使用するには、Menu次のようにします。

xkb_symbols { include "us+compose(menu)" }

あなたは尋ねることができますsetxkbmap許容可能な入力を生成しますxkbcomp-printキーマップをサーバーにプッシュするのではなく、出力を確認するオプションを渡します。setxkbmap、、、、を使用して対応する-compat-geometryおよびを設定-keycodesします。-typesxkb_xxx-layoutxkb_symbols

setxkbmap -layout "us+compose(menu)" -print

実際、私は上記から省略した内容で嘘をつきました。より簡単な方法があります。情報は次のとおりです。アーチスウィキ。 Arch Linuxを使用するか、使用しないかにかかわらず、システムを構成する方法を知りたい場合は、Arch wikiは素晴らしいリソースです。

関連情報