| `label` | string | Unique label for the node | |
| `label` | string | Unique label for the node | |
| `rows` | int | The number rows of in the composite matrix | |
| `rows` | int | The number of rows in the composite matrix | |
| `cols` | int | The number columns of in the composite matrix | |
| `cols` | int | The number of columns in the composite matrix | |
The `zmk,kscan-composite` node should have one child node per keyboard scan driver that should be composited. Each child node can have the following properties:
The `zmk,kscan-composite` node should have one child node per keyboard scan driver that should be composited. Each child node can have the following properties:
| `label` | string | Unique label for the node | |
| `label` | string | Unique label for the node | |
| `event-period` | int | Milliseconds between each generated event | |
| `event-period` | int | Milliseconds between each generated event | |
| `events` | array | List of key events to simulate | |
| `events` | array | List of key events to simulate | |
| `rows` | int | The number rows of in the composite matrix | |
| `rows` | int | The number of rows in the composite matrix | |
| `cols` | int | The number columns of in the composite matrix | |
| `cols` | int | The number of columns in the composite matrix | |
| `exit-after` | bool | Exit the program after running all events | false |
| `exit-after` | bool | Exit the program after running all events | false |
The `events` array should be defined using the macros from [dt-bindings/zmk/kscan_mock.h](https://github.com/zmkfirmware/zmk/blob/main/app/include/dt-bindings/zmk/kscan_mock.h).
The `events` array should be defined using the macros from [dt-bindings/zmk/kscan_mock.h](https://github.com/zmkfirmware/zmk/blob/main/app/include/dt-bindings/zmk/kscan_mock.h).
@ -157,6 +157,8 @@ this might look something like:
};
};
```
```
See the [Keyboard Scan configuration documentation](../config/kscan.md) for details on configuring the KSCAN driver.
</TabItem>
</TabItem>
<TabItemvalue="split">
<TabItemvalue="split">
@ -260,6 +262,8 @@ This is exemplified with the iris .overlay files.
```
```
See the [Keyboard Scan configuration documentation](../config/kscan.md) for details on configuring the KSCAN driver.
### .conf files (Split Shields)
### .conf files (Split Shields)
While unibody boards only have one .conf file that applies configuration characteristics to the entire keyboard,
While unibody boards only have one .conf file that applies configuration characteristics to the entire keyboard,
@ -341,6 +345,8 @@ Some important things to note:
- `RC(row, column)` is placed sequentially to define what row and column values that position corresponds to.
- `RC(row, column)` is placed sequentially to define what row and column values that position corresponds to.
- If you have a keyboard with options for `2u` keys in certain positions, or break away portions, it is a good idea to set the chosen `zmk,matrix_transform` to the default arrangement, and include _other_ possible matrix transform nodes in the devicetree that users can select in their user config by overriding the chosen node.
- If you have a keyboard with options for `2u` keys in certain positions, or break away portions, it is a good idea to set the chosen `zmk,matrix_transform` to the default arrangement, and include _other_ possible matrix transform nodes in the devicetree that users can select in their user config by overriding the chosen node.
See the [matrix transform section](../config/kscan.md#matrix-transform) in the Keyboard Scan configuration documentation for details and more examples of matrix transforms.
## Default Keymap
## Default Keymap
Each keyboard should provide an OOTB default keymap to be used when building the firmware, which can be overridden and customized by user configs. For "shield keyboards", this should be placed in the `app/boards/shields/<shield_name>/<shield_name>.keymap` file. The keymap is configured as an additional devicetree overlay that includes the following:
Each keyboard should provide an OOTB default keymap to be used when building the firmware, which can be overridden and customized by user configs. For "shield keyboards", this should be placed in the `app/boards/shields/<shield_name>/<shield_name>.keymap` file. The keymap is configured as an additional devicetree overlay that includes the following: