I am thinking about writing a library for matrix keypads with a little twist: the columns are driven by shift registers and there will be leds besides the keypad that can be turned on to indicate custom status.
So for example if someone wants 16 keys on a keypad, they need 4 columns and 4 rows so a total of 8 I/O pins. But on the other hand, only row pins need to be input and column pins are all output. If I make a 8 column by 2 row key pad (physically it can be 4 row by 4 column but electrically connected so that the first two rows are connected so are the last two rows) and use a shift register to drive the 8 columns, I only need 3 pins for the shift register and 2 pins for rows, so only 5 pins instead of 8 pins. Plus, with the shift register, I can hook up a number of leds and relays to do simple indications and controls.
I can see this quite useful in a panel I am designing but is there any general interest of such a library? Any suggestions what format of function calls to do? Maybe try to mock the function calls of the keypad lib in playground? Could be useful to construct some homemade illuminated keypads as well.