Button matrix that needs no diodes... I thought, but was WRONG.
The matrix has X rows and Y columns with a switch at each junction. Start with all pins moded INPUT_PULLUP. Now make 1 column pin OUTPUT LOW and read 1 or all of the rows as a port read. Set the column pin back to INPUT_PULLUP. Repeat for all of the columns.
Me in another thread where the notion struck me: I think that if a button matrix has all the pins but 1 column pin at a time pinMode(x,INPUT_PULLUP) and that 1 pinMode(x,OUTPUT) and then set LOW in the DDR register. Each row can read the column, if the pins are on the same port then 1 read gets them all. When the rows are done reading, set the pin back to INPUT_PULLUP and make the next column OUTPUT LOW.
As far as I can figure, this matrix needs no diodes to get multiple keypresses right. The LOW column pin only drains rows with a closed switch to it. There is no power path up, only drains down.