[doc] add a simple way to make a coord_mapping
This commit is contained in:
parent
b6a782e83c
commit
d1f23a668c
@ -63,6 +63,48 @@ coord_mapping = [
|
||||
]
|
||||
```
|
||||
|
||||
Note: Not all numbers are necessarily used ! The keyboard assumes
|
||||
`number of line * number of rows` keys. Some of the possible keys might not be
|
||||
used. For example a keyboard with 60 keys might have 8 rows, 8 cols, allowing
|
||||
64 total combinations -- hence 64 keys. 4 numbers will then not be used for keys
|
||||
in the `coord_mapping` (might be anyone of them depending of the wiring).
|
||||
|
||||
### Find your coord mapping
|
||||
The following code will help you setup your `coord_mapping` by having every key
|
||||
send its corresponding number. Use it after your pins and module definition
|
||||
to define both `keyboard.coord_mapping` and `keyboard.keymap`.
|
||||
|
||||
```python
|
||||
from kmk.handlers.sequences import simple_key_sequence
|
||||
from kmk.keys import KC
|
||||
|
||||
# *2 for split keyboards, which will typically manage twice the number of keys
|
||||
# of one side. Having this N too large will have no impact (maybe slower boot..)
|
||||
N = len(keyboard.col_pins) * len(keyboard.row_pins) * 2
|
||||
|
||||
keyboard.coord_mapping = list(range(N))
|
||||
|
||||
layer = []
|
||||
|
||||
for i in range(N):
|
||||
c, r = divmod(i, 100)
|
||||
d, u = divmod(r, 10)
|
||||
layer.append(
|
||||
simple_key_sequence(
|
||||
(
|
||||
getattr(KC, 'N' + str(c)),
|
||||
getattr(KC, 'N' + str(d)),
|
||||
getattr(KC, 'N' + str(u)),
|
||||
KC.SPC,
|
||||
)
|
||||
)
|
||||
)
|
||||
keyboard.keymap = [layer]
|
||||
|
||||
if __name__ == '__main__':
|
||||
keyboard.go()
|
||||
```
|
||||
|
||||
## Keymaps
|
||||
Keymaps are organized as a list of lists. Keycodes are added for every key on
|
||||
each layer. See [keycodes](keycodes.md) for more details on what keycodes are
|
||||
|
Loading…
Reference in New Issue
Block a user