Control-D gives a hex value of 0x04, where as ENTER or CR gives a hex value of 0x0d,
they are not the same. Control D returns the carriage on old tty machines, on many modern linux platforms it is treated as CRLF, that is carriage return and a linefeed. Control-D indicates end of file or end of transmission.
Hasn’t been an issue for me. Perhaps you don’t have your system properly configured?