What is the point of the pull-up resistors for rows on this schematic?
Makes sense to me. The MCU column pin selects the column by driving it LO, and scans the row pins. If a button in the selected column is pressed it connects the row to the column and the row pull up gets overridden by the LO column line. You're saying the firmware doesn't do this?