What do you mean by parallel and serial scanning? I think you are talking about bit-scanning and scanning the entire port in one shot.
To solve your problem, you can use Internal Timer to periodically scan the swithces. Store the data of previous scan in some variable say 'old' and then store the newly scanned data into 'new'. Compare both of them and if they are not equal, that means there was a push, or release of button. If the bit changed from 0 to 1 it was push (this depends on your switch logic) and vice-versa.