aboutsummaryrefslogtreecommitdiff
path: root/docs/features/community_modules.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/features/community_modules.md')
-rw-r--r--docs/features/community_modules.md38
1 files changed, 26 insertions, 12 deletions
diff --git a/docs/features/community_modules.md b/docs/features/community_modules.md
index a28c5afaeb..69fc47f617 100644
--- a/docs/features/community_modules.md
+++ b/docs/features/community_modules.md
@@ -72,6 +72,7 @@ A Community Module is denoted by a `qmk_module.json` file such as the following:
{
"module_name": "Hello World",
"maintainer": "QMK Maintainers",
+ "license": "GPL-2.0-or-later",
"features": {
"deferred_exec": true
},
@@ -86,6 +87,10 @@ A Community Module is denoted by a `qmk_module.json` file such as the following:
At minimum, the module must provide the `module_name` and `maintainer` fields.
+The `license` field is encouraged to indicate the terms for using and sharing the module. It is recommended to use a [SPDX license identifier](https://spdx.org/licenses/) like "`Apache-2.0`" or "`GPL-2.0-or-later`" if possible.
+
+The `url` field may specify a URL to more information about the module.
+
The use of `features` matches the definition normally provided within `keyboard.json` and `info.json`, allowing a module to signal to the build system that it has its own dependencies. In the example above, it enables the _deferred executor_ feature whenever the above module is used in a build.
The `keycodes` array allows a module to provide new keycodes (as well as corresponding aliases) to a keymap.
@@ -122,18 +127,27 @@ Introspection is a relatively advanced topic within QMK, and existing patterns s
Community Modules may provide specializations for the following APIs:
-| Base API | API Format | Example (`hello_world` module) | API Version |
-|----------------------------|-------------------------------------|----------------------------------------|-------------|
-| `keyboard_pre_init` | `keyboard_pre_init_<module>` | `keyboard_pre_init_hello_world` | `0.1.0` |
-| `keyboard_post_init` | `keyboard_post_init_<module>` | `keyboard_post_init_hello_world` | `0.1.0` |
-| `pre_process_record` | `pre_process_record_<module>` | `pre_process_record_hello_world` | `0.1.0` |
-| `process_record` | `process_record_<module>` | `process_record_hello_world` | `0.1.0` |
-| `post_process_record` | `post_process_record_<module>` | `post_process_record_hello_world` | `0.1.0` |
-| `housekeeping_task` | `housekeeping_task_<module>` | `housekeeping_task_hello_world` | `1.0.0` |
-| `suspend_power_down` | `suspend_power_down_<module>` | `suspend_power_down_hello_world` | `1.0.0` |
-| `suspend_wakeup_init` | `suspend_wakeup_init_<module>` | `suspend_wakeup_init_hello_world` | `1.0.0` |
-| `shutdown` | `shutdown_<module>` | `shutdown_hello_world` | `1.0.0` |
-| `process_detected_host_os` | `process_detected_host_os_<module>` | `process_detected_host_os_hello_world` | `1.0.0` |
+| Base API | API Format | Example (`hello_world` module) | API Version |
+|----------------------------------|-------------------------------------------|---------------------------------------------|-------------|
+| `keyboard_pre_init` | `keyboard_pre_init_<module>` | `keyboard_pre_init_hello_world` | `0.1.0` |
+| `keyboard_post_init` | `keyboard_post_init_<module>` | `keyboard_post_init_hello_world` | `0.1.0` |
+| `pre_process_record` | `pre_process_record_<module>` | `pre_process_record_hello_world` | `0.1.0` |
+| `process_record` | `process_record_<module>` | `process_record_hello_world` | `0.1.0` |
+| `post_process_record` | `post_process_record_<module>` | `post_process_record_hello_world` | `0.1.0` |
+| `housekeeping_task` | `housekeeping_task_<module>` | `housekeeping_task_hello_world` | `1.0.0` |
+| `suspend_power_down` | `suspend_power_down_<module>` | `suspend_power_down_hello_world` | `1.0.0` |
+| `suspend_wakeup_init` | `suspend_wakeup_init_<module>` | `suspend_wakeup_init_hello_world` | `1.0.0` |
+| `shutdown` | `shutdown_<module>` | `shutdown_hello_world` | `1.0.0` |
+| `process_detected_host_os` | `process_detected_host_os_<module>` | `process_detected_host_os_hello_world` | `1.0.0` |
+| `default_layer_state_set` | `default_layer_state_set_<module>` | `default_layer_state_set_hello_world` | `1.1.0` |
+| `layer_state_set` | `layer_state_set_<module>` | `layer_state_set_hello_world` | `1.1.0` |
+| `led_matrix_indicators` | `led_matrix_indicators_<module>` | `led_matrix_indicators_hello_word` | `1.1.0` |
+| `led_matrix_indicators_advanced` | `led_matrix_indicators_advanced_<module>` | `led_matrix_indicators_advanced_hello_word` | `1.1.0` |
+| `rgb_matrix_indicators` | `rgb_matrix_indicators_<module>` | `rgb_matrix_indicators_hello_word` | `1.1.0` |
+| `rgb_matrix_indicators_advanced` | `rgb_matrix_indicators_advanced_<module>` | `rgb_matrix_indicators_advanced_hello_word` | `1.1.0` |
+| `pointing_device_init` | `pointing_device_init_<module>` | `pointing_device_init_hello_word` | `1.1.0` |
+| `pointing_device_task` | `pointing_device_task_<module>` | `pointing_device_task_hello_word` | `1.1.0` |
+
::: info
An unspecified API is disregarded if a Community Module does not provide a specialization for it.