You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

114 lines
4.4 KiB

  1. # レイアウト: 複数のキーボードで1つのキーマップを使用
  2. <!---
  3. original document: 0.8.134:docs/feature_layouts.md
  4. git diff 0.8.134 HEAD -- docs/feature_layouts.md | cat
  5. -->
  6. `layouts/` フォルダは、様々なキーボードに適用できる色々な物理キーレイアウトを含みます。
  7. ```
  8. layouts/
  9. + default/
  10. | + 60_ansi/
  11. | | + readme.md
  12. | | + layout.json
  13. | | + a_good_keymap/
  14. | | | + keymap.c
  15. | | | + readme.md
  16. | | | + config.h
  17. | | | + rules.mk
  18. | | + <keymap folder>/
  19. | | + ...
  20. | + <layout folder>/
  21. + community/
  22. | + <layout folder>/
  23. | + ...
  24. ```
  25. `layouts/default/``layouts/community/` は、レイアウト「repositories」の2つの例です。現在のところ、`default` にはユーザの参考用に、レイアウトに関する全ての情報および、`default_<layout>` という名前の1つのデフォルトのキーマップが含まれています。`community` には全ての共有キーマップが含まれており、それらはユーザが `layouts/` にクローンするための別のリポジトリに分割することを最終的な目的としていますQMK は `layouts/` 内のすべてのフォルダを検索するため、ここに複数のリポジトリを持つことができます。
  26. 各レイアウトフォルダは、レイアウトの物理的な側面に基づいて、可能な限り一般的な名称で(`[a-z0-9_]`)という名前が付けられ、キーボードで定義されるレイアウトと一緒に `readme.md` を含みます。
  27. ```md
  28. # 60_ansi
  29. LAYOUT_60_ansi
  30. ```
  31. 新しい名前は既存のレイアウトで設定された標準に準拠しようと努力する必要があり、必要に応じて PR/Issue で議論することができます。
  32. ## レイアウトのサポート
  33. キーボードがレイアウトをサポートするために、変数は `<keyboard>.h` で定義し、引数/キー (できれば物理レイアウト)の数に一致している必要があります。
  34. #define LAYOUT_60_ansi KEYMAP_ANSI
  35. レイアウトの名前は次の正規表現に一致しなければなりません: `[a-z0-9_]+`
  36. フォルダ名はキーボードの `rules.mk` に追加する必要があります:
  37. LAYOUTS = 60_ansi
  38. `LAYOUTS` は任意のキーボードフォルダレべルの `rules.mk` に設定することができます:
  39. LAYOUTS = 60_iso
  40. ただし、`LAYOUT_<layout>` 変数は `<folder>.h` でも定義する必要があります。
  41. ## キーマップのビルド
  42. 以下の形式でコマンドを使ってキーボードキーマップを作成できるはずです:
  43. make <keyboard>:<layout>
  44. ### レイアウトの競合
  45. キーボードが複数のレイアウトオプションをサポートし、
  46. LAYOUTS = ortho_4x4 ortho_4x12
  47. なおかつ両方のオプションについてレイアウトが存在する場合、
  48. ```
  49. layouts/
  50. + community/
  51. | + ortho_4x4/
  52. | | + <layout>/
  53. | | | + ...
  54. | + ortho_4x12/
  55. | | + <layout>/
  56. | | | + ...
  57. | + ...
  58. ```
  59. FORCE_LAYOUT 引数はどのレイアウトをビルドするかを指定するために使うことができます
  60. make <keyboard>:<layout> FORCE_LAYOUT=ortho_4x4
  61. make <keyboard>:<layout> FORCE_LAYOUT=ortho_4x12
  62. ## キーボードに依存しないレイアウトを作成するためのヒント
  63. ### インクルード
  64. `#include "planck.h"` を使う代わりに、以下の行を使ってコンパイルされる `<keyboard>.h` (`<folder>.h` はここでインクルードすべきではありません)ファイルをインクルードすることができます:
  65. #include QMK_KEYBOARD_H
  66. キーボード固有のコードを保持したい場合は、これらの変数を使って `#ifdef` 文でエスケープすることができます:
  67. * `KEYBOARD_<folder1>_<folder2>`
  68. 例えば:
  69. ```c
  70. #ifdef KEYBOARD_planck
  71. #ifdef KEYBOARD_planck_rev4
  72. planck_rev4_function();
  73. #endif
  74. #endif
  75. ```
  76. 名前は小文字でキーボード/リビジョンのフォルダ/ファイル名と正確に一致することに注意してください。
  77. ### キーマップ
  78. 同じレイアウトで分割および非分割キーボードをサポートするためには、キーマップでキーボード非依存の `LAYOUT_<layout name>` マクロを使う必要があります。例えば、Let's Split および Planck が同じレイアウトを共有するには、`LAYOUT_planck_grid` や C 配列の場合の単なる `{}` の代わりに、`LAYOUT_ortho_4x12` を使う必要があります。