diff options
author | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2015-12-30 21:01:54 +0100 |
---|---|---|
committer | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2015-12-30 21:01:54 +0100 |
commit | dc02222f9a633b2f76586a1d4a7d1632d1845b27 (patch) | |
tree | b5eab1d81163588b299f3d2f88ddef5bad23ca16 | |
parent | 62c0837cd56e99fbd5364a263d6c7d9ab31714f3 (diff) | |
download | sciteco-dc02222f9a633b2f76586a1d4a7d1632d1845b27.tar.gz |
ncurses: use a default escape delay of 25ms
* this practically fixes the delay issues when using
the escape key since 25ms is too short for humans to notice.
Still it should be large enough for all practical terminal
emulators and transmission speeds to get escape sequences
transmitted.
* If the escape delay turns out to be too short, it can still
be overwritten using the (standard ncurses) $ESCDELAY environment
variable.
* fnkeys.tes will still provide the escape surrogate since the
insert key will often be in a better possition on computer
keyboards.
-rw-r--r-- | doc/sciteco.1.in | 4 | ||||
-rw-r--r-- | doc/sciteco.7.template | 2 | ||||
-rw-r--r-- | src/interface-curses.cpp | 20 |
3 files changed, 24 insertions, 2 deletions
diff --git a/doc/sciteco.1.in b/doc/sciteco.1.in index 7212a08..1d21ecf 100644 --- a/doc/sciteco.1.in +++ b/doc/sciteco.1.in @@ -245,8 +245,8 @@ Additionally \*(ST may be influenced by the environment variables accessed by glib .UE . On a Curses UI, there are other important environment variables -like \fBTERM\fP, \fBLINES\fP and \fBCOLUMNS\fP that may be -accessed when \*(ST enters interactive mode. +like \fBTERM\fP, \fBLINES\fP, \fBCOLUMNS\fP and \fBESCDELAY\fP +that may be accessed when \*(ST enters interactive mode. For ncurses, see section \fBENVIRONMENT\fP in .BR ncurses (3NCURSES) for details. diff --git a/doc/sciteco.7.template b/doc/sciteco.7.template index 30d6c76..bdb25bc 100644 --- a/doc/sciteco.7.template +++ b/doc/sciteco.7.template @@ -137,6 +137,8 @@ With certain interfaces (curses) after enabling function keys, the Escape key might only be handled after a short delay. This is because it might be used by the terminal to transmit Escape Sequences. +This delay is minimized by \*(ST, so using the escape key +should not be a problem even on ncurses/UNIX. .LP Enabling function keys also enables Function Key Macros. These are Q-Register strings inserted into the command stream diff --git a/src/interface-curses.cpp b/src/interface-curses.cpp index 93fe923..8c6af7f 100644 --- a/src/interface-curses.cpp +++ b/src/interface-curses.cpp @@ -803,6 +803,26 @@ InterfaceCurses::init_interactive(void) QRegisters::globals.update_environ(); /* + * On UNIX terminals, the escape key is usually + * delivered as the escape character even though function + * keys are delivered as escape sequences as well. + * That's why there has to be a timeout for detecting + * escape presses if function key handling is enabled. + * This timeout can be controlled using $ESCDELAY on + * ncurses but its default is much too long. + * We set it to 25ms as Vim does. In the very rare cases + * this won't suffice, $ESCDELAY can still be set explicitly. + * + * NOTE: The only terminal emulator I'm aware of that lets + * us send an escape sequence for the escape key is Mintty + * (see "\e[?7727h"). + */ +#ifdef NCURSES_UNIX + if (!g_getenv("ESCDELAY")) + set_escdelay(25); +#endif + + /* * $TERM must be unset or "#win32con" for the win32 * driver to load. * So we always ignore any $TERM changes by the user. |