Sway 用の複雑なカスタム XKB ファイルを作成するにはどうすればよいですか?

Sway 用の複雑なカスタム XKB ファイルを作成するにはどうすればよいですか?

Sway は Wayland を使用するため、XKB ファイルは X ではなく Sway によって解析されます。

  • キーボードにレイヤーを追加したい(おそらくHyperを使用)
  • いくつかの修飾キーをシャッフルしたい

多くのサイトを見てきましたが、まだこれを実現する方法がわかりません。XKB には非常に多くの部分があり、どこに何があるのか​​わかりません。サンプル ファイル (または複数のファイル) と説明が必要です。

答え1

たとえば、xkb 構成ファイルの名前が custom-xkb で、 に保存されているとします~/.config。次に、これを sway 構成ファイルに含めます。

input "type:keyboard" {           # or input <identifier> 
  xkb_file ~/.config/xkb/custom-xkb
}

おそらくその部分はすでにご存知でしょう。難しいのはファイルの作成ですcustom-xkb。私は専門家ではありませんが、次のようにします。

  1. 「xkb 仕様」を Web 検索すると、Wikipedia から のx.org完全な仕様まで、あらゆる種類の情報が見つかります。おそらく、すでにそのようなリソースのコレクションをお持ちでしょう。
  2. 次に、システム内のデフォルトのキーボード設定ファイルを、おそらく か何かで見つけます\etc\X11\xdg\(少し調べる必要があるかもしれません。私の変わったディストリビューションでは、パスは です/nix/store/n1mlvwrkdlm77b4ai9s26kwji89jjb65-xkeyboard-config-2.27/share/X11/xkb/)。
  3. symbolsそのパスでは、と の2 つのサブディレクトリを探しますtypes。最初のサブディレクトリには、さまざまな言語のキーマップがすべて含まれており、各ファイル内にはその言語のキーマップのバリエーションがあります。2 番目のサブディレクトリでは、仮想キーが定義されています (Mod1、Control など)。
  4. 次に、それらのファイルの内容を自分のものにコピーし~/.config/xkb/custom-xkb、さまざまな編集を試して何が起こるかを確認します。そして、収集したインターネット リソースを使用して疑問を解消します。何か壊滅的なことが起こった場合は、Control+Alt+F1 を押して、nox ログインを実行し、行をコメントアウトしてxkb_file ~/.config/xkb/custom-xkb、X サーバーを再起動します...
  5. サブディレクトリrulesgeometryおよびの内容は変更しませんkeycodes。ただし、それらも確認する必要があります。

実際にそれをやったことはありませんが、おそらくうまくいくでしょう。実際の構成ファイルを見ると、チュートリアルやガイドが実際に何を言っているのかがわかると思います...

幸運を祈る

答え2

XKB は実に複雑なものです。(少なくとも私の経験では。最初のリリースが 1996 年にさかのぼるという事実と、私の意見ではドキュメントがあまり良くないことが原因で、奇妙な設計上の決定がいくつかあるようです。)

私はさまざまな構成を試して、ある程度の理解に達することができ、動作を確実に推測でき、レイアウトを快適に作成しながらも、達成したいことを表現できる十分な柔軟性を備えた機能のサブセットに落ち着きました。

私が学んだことの包括的なチュートリアルを書くのにはかなり時間がかかりますが、デフォルトのレイアウトを読むよりも理解しやすいと思われる私の設定ファイルを確認することはできます。

https://github.com/Isti115/dotfiles/tree/master/.config/xkb

(これらはSwayの設定に含まれていますここ

特に、ラップトップ用に作成したファイルは複数のレイヤーがあるのでお勧めですLenovo-L13.xkb。(スペースバーを押しながらキーを修飾キーにすることもできます。evdoublebind) Vortex Core レイアウトも優れていますが、キーボード自体もプログラム可能なので、それだけでは十分ではありません。

ここで見つからないものが必要な場合は、前の回答ですでに述べたように、まずは組み込みファイルを調べるところから始めます。 を使用して、キーボードでどのファイルが使用されているかを知ることができますsetxkbmap -print。その後、xkbファイルが配置されている場所でインポートされた定義を調べることができます。(NixOS を使用している場合を除き、Arch の下など、適切な場所にある可能性があります/usr/share/X11/xkb。)

関連情報