I think this is a more generic solution:
#define KEY_1 0x01 //key1
#define KEY_2 0x02 //key2
#define KEY_3 0x04 //key3
...
//macro to read 6 keys
#define adcKeyscan6(pin) ((analogRead(pin) + 2) >> 4)
key_pressed = adcKeyscan6(BUTTON_PIN1); //read button_pin1
if (key_pressed & KEY_1) {
//key_1 pressed, do something
}
if (key_pressed & (KEY_2 | KEY_3)) {
//key_2 or key_3 pressed, do something else
}
if ((key_pressed & KEY_4) | (key_pressed & KEY_5)) {
//key4 and key_5 pressed.
}
...
You can expand it to read more or less pins. It assumes 10-bit adc and buttons are pulled to Vref.