You will also need to account for how you handle de-bouncing the switches. When the switch is pressed or released you will see several very short duration on and off transitions and you will need to make sure your logic is immune to these.
This can be accomplished in either hardware or software and google should provide more than enough information on ways to accomplish this task.
I recently designed a controller where I use a state machine implemented in programmable logic to periodically scan the switches, detect and qualify any switch transitions, save the updated switch readings and then generate an interrupt to the processor. The performance has been great: it is very responsive, can detect when a switch is pressed and released, and does not burden the software with periodic polling.