instead of the digits printing from right to left as I enter them, they change at one position
lcd.clear();
char displayText[18] = "";
snprintf(displayText, sizeof(displayText), "Set Count:%5d", key - '0');
lcd.setCursor(0, 0);
lcd.print(displayText);
No wonder that you only get one character, because you have cleared the LCD. Don't clear the LCD, just remove the number previously displayed by positioning the cursor and printing " " over it, then reposition the cursor and print the digits string that you just added a digit to