Ich persönlich würde für alle Tasten eine Bit-Matrix anlegen, die ich beim scannen einzeln vergleiche.
Matrix-Bit = 1 und TastenPin=1 --> nix zu tun
Matrix-Bit = 1 und TastenPin=0 --> taste (neu) gedrückt ->sende ON
Matrix-Bit = 0 und TastenPin=0 --> taste festgehalten, nix zu tun
Matrix-Bit = 0 und TastenPin=1 --> taste ausgeslassen--> sende OFF
und dann den Tastenpin in der Matrix merken
Das kann man nun unterschiedlich geschickt machen, aber das Prinzip bleibt
Lesezeichen