The hardware setup is more complicated than necessary.
For the software, I would do some thing like this:
Key = readadc();
If (key > key1_threshold) return 1;
If (key > key2_threshold) return 2;
If (key > key3_threshold) return 3;
...
Where the threshold goes from the highest to the lowest ( key1_threshold > key2_threshold > key3_threshold ...).
For your application, you can simply use a switch / case structure to process it.