Searching again, looks like zmk added support for the common 595 shift register: https://github.com/zmkfirmware/zmk/pull/1325
Edit: You could avoid using diodes, but diodes increase the number of switches possible via a matrix more than shift registers do by giving you more gpio. I’d imagine one can use both together.