Linuxでは、キーマッピングはどのように機能しますか? [コピー]

Linuxでは、キーマッピングはどのように機能しますか? [コピー]

私はいつもLinuxでキーマップと関連項目がどのように調和しているのかを理解するのに苦労しました。

何かが間違っていると、それを見つけるために多くの古いメーリングリストとフォーラムの投稿を後にする必要がある場合は、血が沸騰します。それ1つのコマンドまたはinputrc行で私の問題を解決できます。

Ctrl端末タイプを切り替える前に、vimでバックスペースが機能しない、bashで+矢印が機能しないなど、いくつかの古典的な問題があります。または、最近、新しい Debian インストールで@キーが実際に印刷され、"印刷される"問題が発生しました@(間違ったキーボードレイアウト?)

ファイルやツールを見るだけではあまり役に立ちません。 rcと入力しますか? xkbmapを設定しますか?コンソール設定?実際、どこから始めるべきですか?理解するキーボードの問題を解決するために他人の疑わしいコマンドを試す必要がないようにするにはどうすればよいですか?

ベストアンサー1

これは予想よりも複雑ですが、ここに私の試みがあります。

最も基本的なレベルでは、カーネルはキーボードデバイスを認識する方法を知り、キーボードの概念を理解します。コンソールキーマップ。これはキーボードを構成する最も簡単な方法であり、考慮すべき変数は1つだけ必要ですが、これらの設定はLinuxテキストコンソールのキーボード入力にのみ影響します。

Xorgに入ると、状況は少し複雑になりますが、意味はあります。 Xorgには、理解すべき非常に重要ないくつかの特定の概念があります。

  • Xorgはカーネルをバイパスし、コンソールで指定されたキーマップを無視しながらキーボードデバイスと直接通信します。
  • Xorgを使用すると、xorg.confファイルでキーボードの特定のオプションを設定できますが、現在Linuxディストリビューションはxorg.confファイルなしで実行しようとしています。 Xorgのバージョンによっては、InputClassセクション内(最新バージョンのXorg)またはセクション内(以前のバージョン)でInputDeviceXkbLayoutを指定する必要があるかもしれません。
  • キーを押すと、Xorgにはいくつかの特定の解釈レイヤがあります。
  1. 最も基本的なレベルでは、各キーイベントは数値キーコードで表示されます。
  2. XkbModel は XkbLayout と共に使用され、与えられたキーコードを実際のキーイベントに関連付けます。たとえば、私のキーボードではキーコード50が生成されますShift_L
  3. オプションで、キーボードに複数のXkbLayoutを指定してから、リストXkbOptions全体(通常は保存されている/usr/share/X11/xkb/rules)を使用してレイアウト切り替え方法を設定できます。 (これはDvořákを自分で教えたい場合や、英語とロシア語のキーボードレイアウトを切り替えたい場合に便利です。)
  4. 各キーコードは、保持している修飾子に応じてさまざまな方法で解釈できます。xmodmap保持している修飾子に基づいて、どのキーイベントが送信されるかを確認できます。

おすすめ記事