Das grundsätzliche Prinzip stimmt. Im Detail aber verbesserungswürdig.

Jetzt setze ich zu Anfang der Abfrage die erste Zeile auf high und die anderen Zeilen auf low.
Würde ich auf keinen Fall so machen. Wenn es nämlich eine sehr einfache Matrix ohne Dioden ist, kannst du dann durch Drücken von zwei Tasten sehr leicht einen Kurzschluss zwischen einem High- und einem Low-Ausgang produzieren. Deine Serienwiderstände verhindern dann zwar Schlimmeres, aber du hast an den Spalteneingängen keinen eindeutigen Pegel mehr.
Besser:
Alle Zeilenausgänge standardmäßig hochohmig (also als Eingang konfigurieren), und dann immer nur eine Zeile zur Zeit auf Ausgang stellen.

Noch zu beachten:
An den Spalteneingängen brauchst du zwingend Pull-Up/Down-Widerstände, weil die Eingänge ohne gedrückte Taste sonst "in der Luft hängen" würden.

Wie ich es machen würde:
Serienwiderstände an den Ausgängen weglassen. An den Eingängen die internen Widerstände nutzen. Da das Pull-Ups sind, muss der eine "eingeschaltete" Ausgang auf Low sein, und die Eingänge sind dann auch auf Low zu prüfen.