aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--build_keyboard.mk4
-rw-r--r--build_layout.mk9
-rw-r--r--docs/feature_layouts.md29
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)
OPT_DEFS += -DCONVERT_TO_PROTON_C
endif
+ifneq ($(FORCE_LAYOUT),)
+ TARGET := $(TARGET)_$(FORCE_LAYOUT)
+endif
+
include quantum/mcu_selection.mk
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
$$(foreach LAYOUTS_REPO,$$(LAYOUTS_REPOS),$$(eval $$(call SEARCH_LAYOUTS_REPO)))
endef
+ifneq ($(FORCE_LAYOUT),)
+ ifneq (,$(findstring $(FORCE_LAYOUT),$(LAYOUTS)))
+ $(info Forcing layout: $(FORCE_LAYOUT))
+ LAYOUTS := $(FORCE_LAYOUT)
+ else
+ $(error Forced layout does not exist)
+ endif
+endif
+
$(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`:
but the `LAYOUT_<layout>` variable must be defined in `<folder>.h` as well.
+## Building a Keymap
+
+You should be able to build the keyboard keymap with a command in this format:
+
+ make <keyboard>:<layout>
+
+### Conflicting layouts
+When a keyboard supports multiple layout options,
+
+ LAYOUTS = ortho_4x4 ortho_4x12
+
+And a layout exists for both options,
+```
+layouts/
++ community/
+| + ortho_4x4/
+| | + <layout>/
+| | | + ...
+| + ortho_4x12/
+| | + <layout>/
+| | | + ...
+| + ...
+```
+
+The FORCE_LAYOUT argument can be used to specify which layout to build
+
+ make <keyboard>:<layout> FORCE_LAYOUT=ortho_4x4
+ make <keyboard>:<layout> FORCE_LAYOUT=ortho_4x12
+
## Tips for Making Layouts Keyboard-Agnostic
### Includes