diff options
| -rw-r--r-- | build_keyboard.mk | 4 | ||||
| -rw-r--r-- | build_layout.mk | 9 | ||||
| -rw-r--r-- | docs/feature_layouts.md | 29 |
3 files changed, 42 insertions, 0 deletions
diff --git a/build_keyboard.mk b/build_keyboard.mk index 71ba80523..ee6a69fc7 100644 --- a/build_keyboard.mk +++ b/build_keyboard.mk | |||
| @@ -135,6 +135,10 @@ ifeq ($(strip $(CONVERT_TO_PROTON_C)), yes) | |||
| 135 | OPT_DEFS += -DCONVERT_TO_PROTON_C | 135 | OPT_DEFS += -DCONVERT_TO_PROTON_C |
| 136 | endif | 136 | endif |
| 137 | 137 | ||
| 138 | ifneq ($(FORCE_LAYOUT),) | ||
| 139 | TARGET := $(TARGET)_$(FORCE_LAYOUT) | ||
| 140 | endif | ||
| 141 | |||
| 138 | include quantum/mcu_selection.mk | 142 | include quantum/mcu_selection.mk |
| 139 | 143 | ||
| 140 | ifdef MCU_FAMILY | 144 | ifdef MCU_FAMILY |
diff --git a/build_layout.mk b/build_layout.mk index beb1cb662..6e9f97dae 100644 --- a/build_layout.mk +++ b/build_layout.mk | |||
| @@ -15,4 +15,13 @@ define SEARCH_LAYOUTS | |||
| 15 | $$(foreach LAYOUTS_REPO,$$(LAYOUTS_REPOS),$$(eval $$(call SEARCH_LAYOUTS_REPO))) | 15 | $$(foreach LAYOUTS_REPO,$$(LAYOUTS_REPOS),$$(eval $$(call SEARCH_LAYOUTS_REPO))) |
| 16 | endef | 16 | endef |
| 17 | 17 | ||
| 18 | ifneq ($(FORCE_LAYOUT),) | ||
| 19 | ifneq (,$(findstring $(FORCE_LAYOUT),$(LAYOUTS))) | ||
| 20 | $(info Forcing layout: $(FORCE_LAYOUT)) | ||
| 21 | LAYOUTS := $(FORCE_LAYOUT) | ||
| 22 | else | ||
| 23 | $(error Forced layout does not exist) | ||
| 24 | endif | ||
| 25 | endif | ||
| 26 | |||
| 18 | $(foreach LAYOUT,$(LAYOUTS),$(eval $(call SEARCH_LAYOUTS))) \ No newline at end of file | 27 | $(foreach LAYOUT,$(LAYOUTS),$(eval $(call SEARCH_LAYOUTS))) \ No newline at end of file |
diff --git a/docs/feature_layouts.md b/docs/feature_layouts.md index 1ee8b5e35..b34fd442d 100644 --- a/docs/feature_layouts.md +++ b/docs/feature_layouts.md | |||
| @@ -51,6 +51,35 @@ The folder name must be added to the keyboard's `rules.mk`: | |||
| 51 | 51 | ||
| 52 | but the `LAYOUT_<layout>` variable must be defined in `<folder>.h` as well. | 52 | but the `LAYOUT_<layout>` variable must be defined in `<folder>.h` as well. |
| 53 | 53 | ||
| 54 | ## Building a Keymap | ||
| 55 | |||
| 56 | You should be able to build the keyboard keymap with a command in this format: | ||
| 57 | |||
| 58 | make <keyboard>:<layout> | ||
| 59 | |||
| 60 | ### Conflicting layouts | ||
| 61 | When a keyboard supports multiple layout options, | ||
| 62 | |||
| 63 | LAYOUTS = ortho_4x4 ortho_4x12 | ||
| 64 | |||
| 65 | And a layout exists for both options, | ||
| 66 | ``` | ||
| 67 | layouts/ | ||
| 68 | + community/ | ||
| 69 | | + ortho_4x4/ | ||
| 70 | | | + <layout>/ | ||
| 71 | | | | + ... | ||
| 72 | | + ortho_4x12/ | ||
| 73 | | | + <layout>/ | ||
| 74 | | | | + ... | ||
| 75 | | + ... | ||
| 76 | ``` | ||
| 77 | |||
| 78 | The FORCE_LAYOUT argument can be used to specify which layout to build | ||
| 79 | |||
| 80 | make <keyboard>:<layout> FORCE_LAYOUT=ortho_4x4 | ||
| 81 | make <keyboard>:<layout> FORCE_LAYOUT=ortho_4x12 | ||
| 82 | |||
| 54 | ## Tips for Making Layouts Keyboard-Agnostic | 83 | ## Tips for Making Layouts Keyboard-Agnostic |
| 55 | 84 | ||
| 56 | ### Includes | 85 | ### Includes |
