Ich kenne die Programmiersprache C nicht, deswegen kann ich das in deinem Code nicht prüfen.

Wenn die Bits am RB4-RB7 einzeln nacheinander nur für bestimmte Zeit gesetzt werden, (z.B. zuerst RB4, danach RB5 usw.), könnten zwei Tasten in einer Spalte quasi gleichzeitig (tatsächlich aber nacheinander) eingelesen werden. Die entsprechende Bitmuster für RB4-RB7 sehen dann z.B. so aus: 1000, 0100, 0010, 0001.

Wenn jede Taste einen eigenen Bit setzen würde, sollte auch keine Probleme bei gleichzeitig gedrückten Tasten in einer Zeile geben.

MfG