The problem arises when you try to scan the keypad.

Each ROW is scanned by placing a LOW signal on it, and testing the upper bits of PORTB for the Column results.  But, if 1 of the rows ALWAYS has a LOW signal on it, there's no way to distinguish which row had the button press.

So, your stuck between a Rock and a Hard place.

Don't have that "correct way of doing this".
<br>