What you're going to have to do in software is both "gate" the adc result into descretised bins and then only declare a valid switch input when you have enough samples that fit in the gates.
ie. no button is say max adc (4096) value
button 1 is say 1000 counts, button 2 2000 counts etc etc
So, sample the adc at say 50 hz, and when you get a result see if it falls into one of the gated bins. ie if the result is between say 950counts and 1050 counts, consider the value to be 1.
Then do the same on the next sampling event. If it isn't 1 again (ie adc has move outside the 950 to 1050 range) then reset a counter to zero, if it is 1, increment a counter. When the counter reaches a suitable value, (say 5, which means button has been pressed for 5 x 20ms = 100ms) consider than a valid switch 1 input etc