This solution is good but you have to keep in mind that you cannot use it for 2 or more simultaneously pressed keys and in battery operated units with floating power supply.
Your note is very appropriate. 2 or more simultaneously pressed keys can not be recognized. For battery operation can be added a routine like this:
if sample > 900 and sample < 1015 then
LCDOUT $FE, $80," Low battery "
not find 4bit bcd or binary output port
value it is easy to add an lookup table and set 4 I/O to corresponding BCD code.