Ich bin ein Koffer

"maske" muss natürlich den Postb-Bits der Tasten entsprechen, also
KEY_Check (0 , 0x10);
KEY_Check (1 , 0x20);
KEY_Check (2 , 0x40);
KEY_Check (3 , 0x80);



(PortB & maske ) ergibt ein Byte, das nur aus dem fraglichen Bit aus PortB besteht.

if ( matrix[index] ^= (PortB & maske ) ) ist ja EXCLUSIV ODER.
Das ergebnis ist also nur != 0, wenn das gefragte bit in Matrix und PortB verschieden ist



*schäm*