I've had an issue with ZMK when I wanted to use my existing
34-key keymap for a new keyboard which has more keys.
After a brief look at the source code of keyboard definitions, I found that one
can apply a transform in keymap file which maps listed keys to specific switches
on the board.
#include "34keys.keymap"
#include <dt-bindings/zmk/matrix_transform.h>
/ {
chosen {
zmk,matrix_transform = &thirty_four_key_transform;
};
thirty_four_key_transform: keymap_transform_2 {
compatible = "zmk,matrix-transform";
columns = <10>;
rows = <4>;
map = <
RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,6) RC(0,7) RC(0,8) RC(0,9) RC(0,10)
RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,6) RC(1,7) RC(1,8) RC(1,9) RC(1,10)
RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,6) RC(2,7) RC(2,8) RC(2,9) RC(2,10)
RC(3,4) RC(3,5) RC(3,6) RC(3,7)
>;
};
};