There are some problems with the way standalone Info interprets key presses. Commands can be invoked when they were not expected if the user doesn't know what they are doing or presses the wrong keys by mistake. For example, typing ESC ESC Left executes the "goto-invocation-node" command, and enters the letter "D" in the echo area. This happens because there is an input byte sequence starting with ESC ESC, so after two ESC's are typed, it waits to see if it will be completed. The Left key is producing the sequence "ESC O D". The ESC character here is added to the waiting "ESC ESC". There is no byte sequence starting "ESC ESC ESC", so it discards this and starts again with the "O" (which does "goto-invocation-node"). Shift-Left and Shift-Right also do funny things because the byte sequences these key combinations produce are not recognized.
I have some ideas how this could be fixed. The incremental search mode already checks whether ESC starts a longer sequence by checking if there are more characters waiting in the program's input buffer. I don't think this is failproof; I think there could be a short delay to see if further bytes follow that are part of a recognized sequence. There would be an intermediate step between the byte stream and commands where the byte stream was translated into a key or combination of keys. However, before that, it might make things easier if another change were implemented: get rid of the need to run infokey to read the user's .infokey file. I have often forgotten to run this program and it is an inconvenience when trying to run multiple versions of info, each of which require their own version of infokey to be run first. It just seems like an extra step for the user with no benefit. It would be better just to have a single .infokey file (or maybe it could be called .info) which the program reads on start-up. What do people think?
