|
|
@@ -399,7 +399,7 @@ def is_keymap_target(keyboard, keymap):
|
|
|
return False
|
|
|
|
|
|
|
|
|
-def list_keymaps(keyboard, c=True, json=True, additional_files=None, fullpath=False):
|
|
|
+def list_keymaps(keyboard, c=True, json=True, additional_files=None, fullpath=False, include_userspace=True):
|
|
|
"""List the available keymaps for a keyboard.
|
|
|
|
|
|
Args:
|
|
|
@@ -418,14 +418,19 @@ def list_keymaps(keyboard, c=True, json=True, additional_files=None, fullpath=Fa
|
|
|
fullpath
|
|
|
When set to True the full path of the keymap relative to the `qmk_firmware` root will be provided.
|
|
|
|
|
|
+ include_userspace
|
|
|
+ When set to True, also search userspace for available keymaps
|
|
|
+
|
|
|
Returns:
|
|
|
a sorted list of valid keymap names.
|
|
|
"""
|
|
|
names = set()
|
|
|
|
|
|
+ has_userspace = HAS_QMK_USERSPACE and include_userspace
|
|
|
+
|
|
|
# walk up the directory tree until keyboards_dir
|
|
|
# and collect all directories' name with keymap.c file in it
|
|
|
- for search_dir in [QMK_FIRMWARE, QMK_USERSPACE] if HAS_QMK_USERSPACE else [QMK_FIRMWARE]:
|
|
|
+ for search_dir in [QMK_FIRMWARE, QMK_USERSPACE] if has_userspace else [QMK_FIRMWARE]:
|
|
|
keyboards_dir = search_dir / Path('keyboards')
|
|
|
kb_path = keyboards_dir / keyboard
|
|
|
|
|
|
@@ -443,7 +448,7 @@ def list_keymaps(keyboard, c=True, json=True, additional_files=None, fullpath=Fa
|
|
|
info = info_json(keyboard)
|
|
|
|
|
|
community_parents = list(Path('layouts').glob('*/'))
|
|
|
- if HAS_QMK_USERSPACE and (Path(QMK_USERSPACE) / "layouts").exists():
|
|
|
+ if has_userspace and (Path(QMK_USERSPACE) / "layouts").exists():
|
|
|
community_parents.append(Path(QMK_USERSPACE) / "layouts")
|
|
|
|
|
|
for community_parent in community_parents:
|