Opened 16 years ago
Closed 16 years ago
#2533 closed bug (fixed)
Terminal drops ^D
Reported by: | donn | Owned by: | jackburton |
---|---|---|---|
Priority: | normal | Milestone: | R1 |
Component: | Applications/Terminal | Version: | R1/pre-alpha1 |
Keywords: | Cc: | ||
Blocked By: | Blocking: | ||
Platform: | All |
Description
Terminal ignores <ctrl>D, so it's difficult to exit command line applications that expect EOF, for example Python interpreter.
Apparently, because TermView::KeyDown() partially confuses this input with B_END, whose value is also 0x4. But rawChar != B_END, so eventually it's just not handled by that case branch, and in the nothing comes out because it didn't go through the default case.
The behavior can be fixed by adding an else {} clause, in the B_END branch, similar to the default branch, but that seems like kind of a band-aid. <ctrl>D should probably not match B_END.
Note:
See TracTickets
for help on using tickets.
Note that other character values may be broken here. For example, <ctrl>\ matches B_LEFT_ARROW. I would suggest you dispatch off rawChar rather than *bytes in that big case expression, since most branches follow the same logic and have the same problem. The "if (rawChar == " test can then be omitted from each of those branches. I also omitted the test for <ctrl>H, which looks like a mistake to me.
That works for me: it fixes a handful of broken control characters, and doesn't break anything I expected to work. Something might need to be done for keypad keys, though, as I seem to have lost the numeric keypad.