GNU Info

Info Node: (efaq)Handling C-s and C-q with flow control

(efaq)Handling C-s and C-q with flow control


Next: Binding C-s and C-q Prev: X key translations for Emacs Up: Key bindings
Enter node , (file) or (file)node

How do I handle `C-s' and `C-q' being used for flow control?
============================================================

   `C-s' and `C-q' are used in the XON/XOFF flow control protocol.
This messes things up when you're using Emacs over a serial line,
because Emacs binds these keys to commands by default.  Because Emacs
won't honor them as flow control characters, too many of these
characters are not passed on and overwhelm output buffers.  Sometimes,
intermediate software using XON/XOFF flow control will prevent Emacs
from ever seeing `C-s' and `C-q'.

   Possible solutions:

   * Disable the use of `C-s' and `C-q' for flow control.

     You need to determine the cause of the flow control.

        - your terminal

          Your terminal may use XON/XOFF flow control to have time to
          display all the characters it receives.  For example, VT
          series terminals do this.  It may be possible to turn this
          off from a setup menu.  For example, on a VT220 you may
          select "No XOFF" in the setup menu.  This is also true for
          some terminal emulation programs on PCs.

          When you turn off flow control at the terminal, you will also
          need to turn it off at the other end, which might be at the
          computer you are logged in to or at some terminal server in
          between.

          If you turn off flow control, characters may be lost; using a
          printer connected to the terminal may fail.  You may be able
          to get around this problem by modifying the `termcap' entry
          for your terminal to include extra NUL padding characters.

        - a modem

          If you are using a dialup connection, the modems may be using
          XON/XOFF flow control.  It's not clear how to get around this.

        - a router or terminal server

          Some network box between the terminal and your computer may
          be using XON/XOFF flow control.  It may be possible to make
          it use some other kind of flow control.  You will probably
          have to ask your local network experts for help with this.

        - `tty' and/or `pty' devices

          If your connection to Emacs goes through multiple `tty' and/or
          `pty' devices, they may be using XON/XOFF flow control even
          when it is not necessary.

          Eirik Fuller <eirik@theory.tn.cornell.edu> writes:

               Some versions of `rlogin' (and possibly `telnet') do not
               pass flow control characters to the remote system to
               which they connect.  On such systems, Emacs on the
               remote system cannot disable flow control on the local
               system.  Sometimes `rlogin -8' will avoid this problem.

               One way to cure this is to disable flow control on the
               local host (the one running `rlogin', not the one
               running `rlogind') using the `stty' command, before
               starting the `rlogin' process.  On many systems, `stty
               start u stop u' will do this.

               Some versions of `tcsh' will prevent even this from
               working.  One way around this is to start another shell
               before starting rlogin, and issue the `stty' command to
               disable flow control from that shell.

          Use `stty -ixon' instead of `stty start u stop u' on some
          systems.


   * Make Emacs speak the XON/XOFF flow control protocol.

     You can make Emacs treat `C-s' and `C-q' as flow control
     characters by evaluating the form

          (enable-flow-control)

     to unconditionally enable flow control or

          (enable-flow-control-on "vt100" "h19")

     (using your terminal names instead of `vt100' or `h19') to enable
     selectively.  These commands will automatically swap `C-s' and
     `C-q' to `C-\' and `C-^'.  Variables can be used to change the
     default swap keys (`flow-control-c-s-replacement' and
     `flow-control-c-q-replacement').

     If you are fixing this for yourself, simply put the form in your
     `.emacs' file.  If you are fixing this for your entire site, the
     best place to put it is in the `site-lisp/site-start.el' file.
     (Here `site-lisp' is actually a subdirectory of your Emacs
     installation directory, typically `/usr/local/share/emacs'.)
     Putting this form in `site-lisp/default.el' has the problem that
     if the user's `.emacs' file has an error, this will prevent
     `default.el' from being loaded and Emacs may be unusable for the
     user, even for correcting their `.emacs' file (unless they're
     smart enough to move it to another name).

     `enable-flow-control' can be invoked interactively as well: `M-x
     enable-flow-control <RET>'.


   For further discussion of this issue, read the file `etc/PROBLEMS'
(in the Emacs source directory when you unpack the Emacs distribution).


automatically generated by info2www version 1.2.2.9