The first thing I would do is get clarification of just what is meant by that third requirement:
3. control + y, control + x should be ignored
Taken literally, it means that all occurrences of ctrl-x and ctrl-y should be deleted from the input string. Saying "control x is pressed" and going back to the prompt is not at all like that.
Requirement 2 indicates that keyboard input should be processed only after the <enter> key is pressed, and that also is inconsistent with doing anything immediately when ctrl-x or ctrl-y is pressed. To make the builtin read
command return those characters immediately you would have to make it read single characters ("-n 1" option) and do a lot of extra setup and processing. The builtin read
command is not well suited for that sort of use.