home *** CD-ROM | disk | FTP | other *** search
/ Nebula 1994 June / NEBULA_SE.ISO / Documents / FAQ / GNU-Emacs-faq / part4 < prev    next >
Encoding:
Internet Message Format  |  1993-05-05  |  44.7 KB

  1. Path: senator-bedfellow.mit.edu!enterpoop.mit.edu!eru.mt.luth.se!kth.se!sunic!mcsun!uknet!doc.ic.ac.uk!agate!dog.ee.lbl.gov!network.ucsd.edu!swrinde!cs.utexas.edu!newsfeed.rice.edu!rice!sbyrnes
  2. From: sbyrnes@rice.edu (Steven Byrnes)
  3. Newsgroups: gnu.emacs.help,comp.emacs,news.answers,comp.answers
  4. Subject: GNU Emacs FAQ (4/5, 125-151): Keybindings/Output
  5. Summary: READ BEFORE POSTING.  A regularly posted list of answers to frequently
  6.          asked questions (FAQs) about GNU Emacs and many Emacs Lisp programs.
  7.          Contains pointers to other resources.  Follow "References:" link for
  8.          more metainfo.
  9. Keywords: gnu emacs faq answers frequently asked questions periodic
  10. Message-ID: <GNU-Emacs-FAQ-4.1993.05.04.025218@rice.edu>
  11. Date: 4 May 93 02:52:18 GMT
  12. Expires: Sat, 3 Jul 1993 02:52:18 GMT
  13. References: <GNU-Emacs-FAQ-0.1993.05.04.025218@rice.edu>
  14. Sender: news@rice.edu (News)
  15. Reply-To: gnu-emacs-faq-maintainers@bigbird.bu.edu
  16. Followup-To: poster
  17. Organization: GNU's Not UNIX
  18. Lines: 1006
  19. Approved: news-answers-request@mit.edu
  20. Supersedes: <GNU-Emacs-FAQ-4.1993.01.05.171933@rice.edu>
  21. Originator: sbyrnes@is.rice.edu
  22. Xref: senator-bedfellow.mit.edu gnu.emacs.help:10209 comp.emacs:17191 news.answers:8182 comp.answers:624
  23.  
  24. Archive-Name: GNU-Emacs-FAQ/part4
  25. Last-Modified: Sat, 6 Mar 1993 21:13:32 GMT
  26. Last-Posted: Tue, 4 May 1993 02:52:18 GMT
  27.  
  28.                     GNU Emacs FAQ: Keybindings/Output
  29.  
  30. If you are viewing this text in a GNU Emacs Buffer, you can type "M-2 C-x $" to
  31. get an overview of just the questions.  Then, when you want to look at the text
  32. of the answers, just type "C-x $".
  33.  
  34. To search for a question numbered XXX, type "M-C-s ^XXX:", followed by a C-r if
  35. that doesn't work, then type ESC to end the search.
  36.  
  37. A `+' in the 78th column means something was inserted on the line.  A `-' means
  38. something was deleted and a `!' means some combination of insertions and
  39. deletions occurred.
  40.  
  41. Full instructions for getting the latest FAQ are in question 22.  Also see the
  42. `Introduction to news.answers' posting in the `news.answers' newsgroup, or send
  43. e-mail to `mail-server@rtfm.mit.edu' with `help' on a body line, or use FTP,
  44. WAIS, or Prospero to rtfm.mit.edu.
  45.  
  46.  
  47.  
  48. Changing Key Bindings and Handling Key Binding Problems
  49.  
  50. 125: How do I bind keys (including function keys) to commands?
  51.   
  52.   1. Find out what character sequence is generated by the keystroke sequence
  53.      you wish to bind to a command.  See question 129 for how to do this.
  54.      Keep in mind that the character sequences generated by a keystroke
  55.      sequence varies from one terminal to another.  You may also get
  56.      different results depending on what type of machine you are running on
  57.      (see question 128).  For example, these keystrokes may generate these
  58.      character sequences:
  59.   
  60.        F1        ---> ESC [ 2 2 4 z
  61.        Shift-R10 ---> ESC O t
  62.        L7        ---> ESC [ 3 1 ~
  63.        Remove    ---> C-@
  64.   
  65.   2. Figure out what the Emacs Lisp syntax is for this character sequence.
  66.      Inside an Emacs Lisp string, RET, LFD, DEL, ESC, SPC, and TAB are
  67.      specified with `\r', `\n', `\C-?', `\e', ` ', and `\t'.  C-x is
  68.      specified by `\C-x'.  M-x is specified the same was as "ESC x".
  69.      (Control characters may also be specified as themselves, but I don't
  70.      recommend it.)  An Emacs Lisp string begins and ends with the double
  71.      quote character, `"'.  Here are some examples:
  72.   
  73.        ESC [ D       ---> "\e[D"
  74.        ESC [ 2 2 7 z ---> "\e[227z"
  75.        ESC [ 1 8 ~   ---> "\e[18~"
  76.        C-M-r         ---> "\e\C-r"
  77.   
  78.   3. If some prefix of the character sequence is already bound, you must
  79.      unbind it by binding it to `nil'.  For example:
  80.   
  81.        (global-set-key "\e[" nil)
  82.   
  83.   4. Pick a command to bind your key sequence to.  A command can be a
  84.      "symbol" with a function definition, or a "lambda list", or a string
  85.      (which is treated as a macro).  For example:
  86.   
  87.        (global-set-key "\e[D" 'backward-char)
  88.        (global-set-key "\e[227~" "\exgoto-line\r") ; macro
  89.   
  90.   See `Key Bindings' and `Rebinding' in the online manual.
  91.   
  92.   In Emacs 19 (including Lucid Emacs), you can bind function key F24 like
  93.   this:
  94.   
  95.     (global-set-key 'f24 'some-command)
  96.   
  97. 126: Why does Emacs say `Key sequence XXX uses invalid prefix characters'?
  98.   
  99.   A prefix of the character sequence you were trying to bind was already
  100.   bound.  Usually, the sequence is "ESC [", in which case you should
  101.   evaluate this form first:
  102.   
  103.     (define-key esc-map "[" nil)
  104.   
  105.   NOTE: By default, "ESC [" is bound to backward-paragraph, and if you do
  106.   this you will lose this key binding.  For most people, this is not a
  107.   problem.
  108.   
  109.   See question 125.
  110.   
  111. 127: Why doesn't this [terminal or window-system setup] code work in my
  112.  .emacs file, but it works just fine after Emacs starts up?
  113.   
  114.   This is because you're trying to do something in your .emacs file that
  115.   needs to be postponed until after the terminal/window-system setup code
  116.   is loaded.  This is a result of the order in which things are done
  117.   during the startup of Emacs.  For more details see question 135.
  118.   
  119.   In order to postpone the execution of Emacs Lisp code until after the
  120.   terminal/window-system setup, set the value of the variable
  121.   term-setup-hook or window-setup-hook to be a function which does what
  122.   you want.
  123.   
  124.   See etc/OPTIONS for a complete explanation of what Emacs does every time
  125.   it is started.
  126.   
  127.   Here is a simple example of how to set term-setup-hook:
  128.   
  129.     (setq term-setup-hook
  130.       (function
  131.        (lambda ()
  132.          (cond ((string-match "\\`vt220" (or (getenv "TERM") ""))
  133.             ;; Make vt220's "Do" key behave like M-x:
  134.             (define-key CSI-map "29~" 'execute-extended-command))
  135.            ))))
  136.   
  137. 128: How do I use function keys under X Windows?
  138.   
  139.   This depends on whether you are running Emacs inside a terminal emulator
  140.   window, or whether you are allowing Emacs to create its own X window.
  141.   You can tell which you are doing by noticing whether Emacs creates a new
  142.   window when you start it.
  143.   
  144.   If you are running Emacs inside a terminal emulator window, then it
  145.   behaves exactly as it does on any other tty.  In this case, for function
  146.   keys to be useful, they must generate character sequences that are sent
  147.   to the programs running inside the window as input.  The `xterm' program
  148.   has two different sets of character sequences that it generates when
  149.   function keys are pressed, depending on the sunFunctionKeys X resource
  150.   and the -sf and +sf command line options.  (To find out what these key
  151.   sequences are, see question 129.)  In addition, with xterm,
  152.   you can override what key sequence a specific function key (or any other
  153.   key) will generate with the `translations' resource.  This, for example:
  154.   
  155.     XTerm.VT100.Translations: #override \
  156.       <KeyPress>F1: string(0x1b) string("[xyzzy")
  157.   
  158.   makes the function key F1 generate the character sequence "ESC [xyzzy".
  159.   
  160.   On the other hand, if Emacs is managing its own X window, the following
  161.   description applies.  Emacs receives `KeyPress' events from the X server
  162.   when a key is pressed while the keyboard focus is in its window.  The
  163.   KeyPress event contains an X "keysym" code, which is simply an arbitrary
  164.   number corresponding to the name of the keysym, and information on which
  165.   "modifiers" such as `control' and `shift' are active.  For example, the
  166.   `Tab' keysym is 0xff09.  (Generally, a key on the keyboard will generate a
  167.   keysym whose name is the same as the label on the key, ie. the `Tab' key
  168.   will normally generate the `Tab' keysym.  This can be changed with the
  169.   xmodmap program.)  Emacs recognizes all the keysyms that correspond to
  170.   standard ASCII characters and internally uses the ASCII character instead.
  171.   
  172.   (WARNING: I am about to describe a gross, disgusting hack to you, have
  173.   your barf bag ready.)
  174.   
  175.   When Emacs receives the X keysym of one of the arrow keys, it behaves
  176.   the same as if it had received a letter key with the control modifier
  177.   down as follows (this is hard-coded):
  178.   
  179.     Up    becomes C-p
  180.     Down  becomes C-n
  181.     Right becomes C-f
  182.     Left  becomes C-b
  183.   
  184.   The way Emacs treats other keysyms depends on what kind of machine it was
  185.   compiled on.  The type of the display machine is irrelevant!  Function
  186.   keys are mapped internally to escape sequences, while other keys are
  187.   completely ignored.
  188.   
  189.   1. If compiled on a Sun, Emacs recognizes these X keysyms that
  190.      are normally on a Sun keyboard:
  191.   
  192.        F1 through F9
  193.        L1 through L10 (same as F11 through F20)
  194.        R1 through R15 (same as F21 through F35)
  195.      (The keys labelled R8, R10, R12, and R14 usually are mapped to the
  196.       X keysyms Up, Left, Right, and Down.)
  197.        Break (the `Alternate' key is given this keysym)
  198.   
  199.      These keys work like Sun function keys.  When Emacs recieves the
  200.      keysym, it will internally use character sequences that look like "ESC
  201.      [ ### z", where ### is replaced by a number.  The character sequences
  202.      are identical to those generated by Sun's keyboard under SunView.  Any
  203.      function key not listed above generates "ESC [ - 1 z".
  204.   
  205.      In order to use these key sequences, they should be bound to commands
  206.      using the standard key binding methods, just as if Emacs were running
  207.      on a regular terminal.
  208.   
  209.      WARNING: F11 and L1 are the same keysym in X, as are F12 and L2, etc.
  210.      {Yes, this is stupid.  Complain to the X consortium.}
  211.   
  212.   2. If not compiled on a Sun, the function keys will appear to Emacs in a
  213.      way remarkably similar to the keys of a DEC LK201 keyboard (used on
  214.      some VT series terminals).  These X keysyms will be recognized:
  215.   
  216.        F1 through F20
  217.        Help (treated same as F15)
  218.        Menu (treated same as F16, is the LK201 `Do' key)
  219.        Find
  220.        Insert (LK201 `Insert Here' key)
  221.        Select
  222.        Prior (LK201 `Prev Screen' key *** ONLY IN 18.58 AND LATER ***)
  223.        Next (LK201 `Next Screen' key *** ONLY IN 18.58 AND LATER ***)
  224.   
  225.      And finally, the LK201 key labelled `Remove' (or `Delete') is often
  226.      mapped to the Delete keysym which generates the DEL character (C-?)
  227.      instead of the key sequence given by the LK201 `Remove' key.  It may
  228.      also be mapped to some other keysym, such as `_Remove', in which case
  229.      you can't use it from within Emacs at all.
  230.   
  231.      Each function key will be internally converted to a character sequence
  232.      that looks like "ESC [ ## ~", where ## is replaced by a number.  The
  233.      character sequences are identical to those generated by a LK201
  234.      keyboard.  Any function key not listed above generates "ESC [ - 1 ~".
  235.   
  236.   For the complete list of the numbers which are generated by the function
  237.   keys, look in the file src/x11term.c at the definitions of the function
  238.   stringFuncVal.
  239.   
  240.   If you are running Emacs on a Sun machine, even if your X display is
  241.   running on a non-Sun machine (eg., an X terminal), you get the setup
  242.   described above for Suns.  The determining factor is what type of
  243.   machine Emacs is running (was compiled) on, not what type of machine
  244.   your X display is on.
  245.   
  246.   If you have function keys not listed above on your keyboard, you can use
  247.   `xmodmap' to change their keysym assignments to get keys that Emacs will
  248.   recognize, but that may screw up other programs.
  249.   
  250.   X resources are not used by Emacs to affect the key sequences generated.
  251.   In particular, there are no X key "translations" for Emacs.
  252.   
  253.   If you have function keys not listed above and you don't want to use
  254.   xmodmap to change their names, you might want to make a modification to
  255.   your Emacs.  Johan Vromans <jv@mh.nl> has made available a patch for Emacs
  256.   that adds the x-rebind-key function of Epoch to Emacs 18.58.  This allows
  257.   another layer of key rebinding before Emacs even sees the keys, and in
  258.   this layer you can rebind all of the keys and modifier combinations as
  259.   well.
  260.   
  261.   Anonymous FTP:
  262.     /ftp.eu.net:gnu/emacs/FP-Xfun.Z
  263.     /ftp.urc.tue.nl:pub/tex/emacs/FP-Xfun
  264.   
  265.   Johan Vromans explains what this buys for you:
  266.   
  267.     After implementing this, all keyboard keys can be configured to send
  268.     user definable sequences, eg.,
  269.   
  270.       (x-rebind-key "KP_F1" 0 "\033OP")
  271.   
  272.     This will have the keypad key PF1 send the sequence "ESC O P", just like
  273.     an ordinary VT series terminal.
  274.   
  275. 129: How do I tell what characters my function or arrow keys emit?
  276.   
  277.   Use this function by Randal L. Schwartz <merlyn@iwarp.intel.com>:
  278.   
  279.     (defun see-chars ()
  280.       "Displays characters typed, terminated by a 3-second timeout."
  281.       (interactive)
  282.       (let ((chars "")
  283.         (inhibit-quit t))
  284.     (message "Enter characters, terminated by 3-second timeout.")
  285.     (while (not (sit-for 3))
  286.       (setq chars (concat chars (list (read-char)))
  287.         quit-flag nil))        ; quit-flag maybe set by C-g
  288.     (message "Characters entered: %s" (key-description chars))))
  289.   
  290.   Alternatively, use the "C-h l" view-lossage command, which will display
  291.   the last 100 characters Emacs has seen in its input stream.  Kevin
  292.   Gallagher <kgallagh@digi.lonestar.org> suggests typing some unique string
  293.   like "wxyz", typing the key in question, then typing "C-h l".  The
  294.   characters that appear between "wxyz" and "C-h l" were generated by the
  295.   key.
  296.   
  297. 130: How do I set the X key "translations" for Emacs?
  298.   
  299.   Sorry, you can't; there are no "translations" to be set.  Emacs is not
  300.   written using the Xt library.  The only way to affect the behavior of keys
  301.   within Emacs is through `xmodmap' (outside Emacs) or `define-key' (inside
  302.   Emacs).
  303.   
  304. 131: How do I handle C-s and C-q being used for flow control?
  305.   
  306.   C-s and C-q are used in the XON/XOFF flow control protocol.  This screws
  307.   up Emacs because it binds these characters to commands.  Also, by default
  308.   Emacs will not honor them as flow control characters and may overwhelm
  309.   output buffers.  Sometimes, intermediate software using XON/XOFF flow
  310.   control will prevent Emacs from ever seeing C-s and C-q.
  311.   
  312.   Possible solutions:
  313.   
  314.   * Disable the use of C-s and C-q for flow control.
  315.   
  316.     You need to determine what is the cause of the flow control.
  317.   
  318.     * your terminal
  319.   
  320.       Your terminal may use XON/XOFF flow control to have time to display
  321.       all the characters it receives.  For example, VT series terminals do
  322.       this.  It may be possible to turn this off from a setup menu.  For
  323.       example, on a VT220 you may select `No XOFF' in the setup menu.  This
  324.       is also true for some terminal emulation programs on PCs.
  325.   
  326.       When you turn off flow control at the terminal, you will also need to
  327.       turn it off at the other end, which might be at the computer you are
  328.       logged in to or at some terminal server in between.
  329.   
  330.       If you turn off flow control, characters may be lost; using a printer
  331.       connected to the terminal may fail.  You may be able to get around
  332.       this problem by modifying the `termcap' entry for your terminal to
  333.       include extra NUL padding characters. 
  334.   
  335.     * a modem
  336.   
  337.       If you are using a dialup connection, the modems may be using XON/XOFF
  338.       flow control.  I don't know how to get around this.
  339.   
  340.     * a router or terminal server
  341.   
  342.       Some network box between the terminal and your computer may be using
  343.       XON/XOFF flow control.  It may be possible to make it use some other
  344.       kind of flow control.  You will probably have to ask your local
  345.       network experts for help with this.
  346.   
  347.     * tty and/or pty devices
  348.   
  349.       If your connection to Emacs goes through multiple tty and/or pty
  350.       devices, they may be using XON/XOFF flow control even when it is not
  351.       necessary.
  352.   
  353.       Eirik Fuller <eirik@theory.tn.cornell.edu> writes:
  354.   
  355.         Some versions of `rlogin' (and possibly telnet) do not pass flow
  356.         control characters to the remote system to which they connect.  On
  357.         such systems, Emacs on the remote system cannot disable flow control
  358.         on the local system.  Sometimes `rlogin -8' will avoid this problem.
  359.   
  360.         One way to cure this is to disable flow control on the local host
  361.         (the one running rlogin, not the one running rlogind) using the stty
  362.         command, before starting the rlogin process.  On many systems, `stty
  363.         start u stop u' will do this.
  364.   
  365.         Some versions of `tcsh' will prevent even this from working.  One
  366.         way around this is to start another shell before starting rlogin,
  367.         and issue the stty command to disable flow control from that shell.
  368.   
  369.       Use `stty -ixon' instead of `stty start u stop u' on some systems.
  370.   
  371.   * Make Emacs speak the XON/XOFF flow control protocol.
  372.   
  373.     You can make Emacs treat C-s and C-q as flow control characters by
  374.     evaluating this form:
  375.   
  376.       (set-input-mode nil t)
  377.   
  378.     If you are fixing this for yourself, simply put the form in your .emacs
  379.     file.  If you are fixing this for your entire site, the best place to
  380.     put it is unclear.  I don't know if this has any effect when used in
  381.     lisp/site-init.el when building Emacs; I've never tried that.  {Can
  382.     someone tell me whether it works?}  Putting things in users' .emacs files
  383.     has a number of problems.
  384.   
  385.     Putting this form in lisp/default.el has the problem that if the user's
  386.     .emacs file has an error, this will prevent lisp/default.el from being
  387.     loaded and Emacs may be unusable for the user, even for correcting their
  388.     .emacs file (unless they're smart enough to move it to another name).  A
  389.     possible solution is to initially disable C-s and C-q by setting
  390.     keyboard-translate-table in lisp/site-init.el, either with swap-keys
  391.     (see question 136) or with the following form:
  392.   
  393.       ;; by Roger Crew <crew@cs.stanford.edu>:
  394.       (setq keyboard-translate-table
  395.             "\C-@\C-a\C-b\C-c\C-d\C-e\C-f\C-g\C-h\C-i\C-j\C-k\C-l\C-m\C-n\C-o\C-p\C-^\C-r\C-\\\C-t\C-u\C-v\C-w\C-x\C-y\C-z\C-[\C-s\C-]\C-q\C-_")
  396.   
  397.     This will at least prevent Emacs from being confused by the flow control
  398.     characters, even if lisp/default.el cannot be loaded.  Then, in
  399.     lisp/default.el, enable XON/XOFF flow control with set-input-mode.
  400.   
  401.   For further discussion of this issue, read the file PROBLEMS in the
  402.   Emacs distribution.
  403.   
  404. 132: How do I use commands bound to C-s and C-q (or any key) if these keys
  405.  are filtered out?
  406.   
  407.   I suggest swapping C-s with C-\ and C-q with C-^:
  408.   
  409.     (swap-keys ?\C-s ?\C-\\)
  410.     (swap-keys ?\C-q ?\C-^)
  411.   
  412.   See question 136 for the implementation of swap-keys.  This method
  413.   has the advantage that it simultaneously swaps the characters everywhere
  414.   throughout Emacs, while just switching the keybindings will miss important
  415.   places where the character codes are stored (eg., the search-repeat-char
  416.   variable, major mode keymaps, etc.).
  417.   
  418.   To do this for an entire site, you may want to swap the keys in
  419.   lisp/default.el.  If only some of your users are connecting through
  420.   XON/XOFF flow-controlled connections, you will want to do this
  421.   conditionally.  I suggest pre-swapping them in lisp/site-init.el when
  422.   Emacs is built, and then in lisp/default.el, if it is determined to be
  423.   safe, they can be reenabled (being careful not to screw up any other key
  424.   mappings users might have established using keyboard-translate-table).
  425.   See question 131 for an easy way to pre-swap these keys.
  426.   
  427.   WARNING: If you do this for an entire site, the users will be confused by
  428.   the disparity between what the documentation says and how Emacs actually
  429.   behaves.
  430.   
  431. 133: Why does the `BackSpace' key invoke help?
  432.   
  433.   The BackSpace key (on every keyboard I've used) generates ASCII code 8.
  434.   C-h sends the same code.  In Emacs by default C-h invokes help-command.
  435.   This is intended to be easy to remember since the first letter of "help"
  436.   is "h".  The easiest solution to this problem is to use C-h (and
  437.   BackSpace) for help and DEL (the Delete key) for deleting the previous
  438.   character.
  439.   
  440.   For many people this solution may be problematic:
  441.   
  442.   * They normally use BackSpace outside of Emacs for deleting the previous
  443.     character typed.  This can be solved by making DEL be the command for
  444.     deleting the previous character outside of Emacs.  This command will do
  445.     this on many Unix systems:
  446.   
  447.       stty erase '^?'
  448.   
  449.   * The person may prefer using the BackSpace key for deleting the previous
  450.     character because it is more conveniently located on their keyboard or
  451.     because they don't even have a separate Delete key.  In this case, the
  452.     BackSpace key should be made to behave like Delete.  There are several
  453.     methods.
  454.   
  455.     * Under X Windows, the easiest solution is to change the BackSpace key
  456.       into a Delete key like this:
  457.   
  458.         xmodmap -e "keysym BackSpace = Delete"
  459.   
  460.     * Some terminals (eg., VT3## terminals) allow the character generated by
  461.       the BackSpace key to be changed from a setup menu.
  462.   
  463.     * You may be able to get a keyboard that is completely programmable.
  464.   
  465.     * Under X or on a dumb terminal, it is possible to swap the BackSpace
  466.       and Delete keys inside Emacs:
  467.   
  468.         (swap-keys ?\C-h ?\C-?)
  469.   
  470.       See question 136 for the implementation of swap-keys.
  471.   
  472.     * Another approach is to switch keybindings and put help on "C-x h"
  473.       instead:
  474.   
  475.         (global-set-key "\C-h" 'delete-backward-char)
  476.         (global-set-key "\C-xh" 'help-command) ; override mark-whole-buffer
  477.   
  478.       Other popular key bindings for help are M-? and "C-x ?".
  479.   
  480.       WARNING: Don't try to bind DEL to help-command, because there are many
  481.       modes that have local bindings of DEL that will interfere.
  482.   
  483. 134: Why doesn't Emacs look at the stty settings for Backspace vs. Delete?
  484.   
  485.   Good question!
  486.   
  487. 135: Why don't the arrow keys work?
  488.   
  489.   When Emacs starts up, it doesn't know anything about arrow keys at all
  490.   (except when running under X, see question 128).  During the process of
  491.   starting up, Emacs will load a terminal-specific initialization file for
  492.   your terminal type (as determined by the environment variable TERM), if
  493.   one exists.  This file has the responsibility for enabling the arrow keys.
  494.   
  495.   There are several things that can go wrong:
  496.   
  497.   1. There is no initialization file for your terminal.
  498.   
  499.      You can determine this by looking in the lisp/term directory.  If your
  500.      terminal type (as determined by the TERM environment variable) is
  501.      xxx-yy-z, then the first of these files in the lisp/term directory will
  502.      be loaded as the terminal-specific initialization file: xxx-yy-z.el,
  503.      xxx-yy.el, or xxx.el.
  504.   
  505.      There are two major cases of this problem:
  506.   
  507.      * Your terminal type is very similar to one that has an init file.
  508.   
  509.        In this case, there are several techniques suggested by Colin Jensen
  510.        <cjensen@ampex.com>, Ben Liblit <Liblit@cs.psu.edu>, and Marc
  511.        Auslander <marc@watson.ibm.com>:
  512.   
  513.        A. Add a symbolic link in lisp/term for your terminal type that
  514.           points to the similar type.  For example, you could make VT102
  515.           terminals work with this command:
  516.   
  517.             ln -s vt100.el vt102.el
  518.   
  519.           This fixes things for everyone on the system who uses the terminal
  520.           type.
  521.   
  522.        B. If you can't do the solution in part A, you can add code to your
  523.           term-setup-hook that loads the correct file like this:
  524.   
  525.             (setq term-setup-hook
  526.                   (function
  527.                    (lambda ()
  528.                      (cond ((equal "vt102" (or (getenv "TERM") ""))
  529.                             (load (concat term-file-prefix "vt100")))
  530.                            (;; Code for other terminal types goes here ...
  531.                             )))))
  532.   
  533.        C. If you use `tset' to set your TERM environment variable when you
  534.           login, you can use the `-m' switch to tell tset to use a terminal
  535.           type known by Emacs instead of another similar one.  For example,
  536.           specifying this:
  537.   
  538.             tset ... -m 'dec-vt220:vt220' ...
  539.   
  540.           will make tset say you are on a `vt220' instead of a `dec-vt220'.
  541.   
  542.        D. Interactively, you can type "M-x load-library RET term/vt100" to
  543.           load the terminal-specific initialization files for VT100
  544.           terminals.
  545.   
  546.      * Your terminal type is not similar to one that has an init file.
  547.   
  548.        One can be made for your terminal, or you can just add code to your
  549.        own .emacs to handle this problem for yourself.  For example, if your
  550.        terminal's arrow keys send these character sequences:
  551.   
  552.          Up:    ESC [ A
  553.          Down:  ESC [ B
  554.          Right: ESC [ C
  555.          Left:  ESC [ D
  556.   
  557.        then you can bind these keys to the appropriate commands with code in
  558.        your .emacs like this:
  559.   
  560.          (setq term-setup-hook
  561.                (function
  562.                 (lambda ()
  563.                   (cond ((string-match "\\`xyzzy" (or (getenv "TERM") ""))
  564.                          ;; First, must unmap the binding for left bracket
  565.                          (or (keymapp (lookup-key global-map "\e\["))
  566.                              (define-key global-map "\e\[" nil))
  567.                          ;; Enable terminal type xyzzy's arrow keys:
  568.                          (define-key global-map "\e\[A" 'previous-line)
  569.                          (define-key global-map "\e\[B" 'next-line)
  570.                          (define-key global-map "\e\[C" 'forward-char)
  571.                          (define-key global-map "\e\[D" 'backward-char))
  572.                         ((string-match "\\`abcde" (or (getenv "TERM") ""))
  573.                          ;; Do something different for terminal type abcde
  574.                          ;; .....
  575.                          )))))
  576.   
  577.      NOTE: You may have to restart Emacs to get changes to take effect.
  578.   
  579.      NOTE: Your arrow keys may send sequences beginning with "ESC O" when
  580.      Emacs is running, even if they send sequences beginning with "ESC [" at
  581.      all other times.  This is because Emacs uses any command there may be
  582.      in your terminal's termcap entry for putting the terminal into
  583.      "Application Keypad Mode".  Just map these sequences the same way as
  584.      above.
  585.   
  586.   The next two cases are problems even if there is a initialization file for
  587.   your terminal type.
  588.   
  589.   2. The initialization file for your terminal doesn't bind arrow keys.
  590.   
  591.      If your terminal type is `xterm', you will have to bind the arrow keys
  592.      as in part 1 above, since the xterm.el file doesn't do anything useful.
  593.      There may be other terminal types with the same problem.
  594.   
  595.   3. Your terminal's arrow keys send individual control characters.
  596.   
  597.      For example, the arrow keys on an ADM-3 send C-h, C-j, C-k, and C-l.
  598.   
  599.      There is not much Emacs can do in this situation, since all the control
  600.      characters except for C-^ and C-\ are already used as Emacs commands.
  601.      It may be possible to convince the terminal to send something else when
  602.      you press the arrow keys; it is worth investigating.
  603.   
  604.      You have to make the hard choices of how to rebind keys to commands to
  605.      make things work the way you want.  Another alternative is to start
  606.      learning the standard Emacs keybindings for moving point around: C-b,
  607.      C-f, C-p, and C-n.  Personally, I no longer use the arrow keys when
  608.      editing because I have switched keyboards so many times.
  609.   
  610.   4. Your terminal's arrow keys send sequences beginning with "ESC [".
  611.   
  612.      Due to an extremely poor design decision (ie., these sequences are ANSI
  613.      standard), none of the the terminal-specific initialization files that
  614.      are distributed with Emacs will bind these character sequences to the
  615.      appropriate commands by default.  (This also applies to any other
  616.      function keys which generate character sequences starting with "ESC
  617.      [".)  This is because it was deemed far more important to preserve the
  618.      binding of M-[ to the backward-paragraph command.  It appears that this
  619.      will change in Emacs 19.
  620.   
  621.      Some of the terminal-specific initialization files that come with Emacs
  622.      provide a command enable-arrow-keys that will fix this problem.  To get
  623.      this automatically invoked, put this in your .emacs:
  624.   
  625.        (setq term-setup-hook
  626.          (function
  627.           (lambda ()
  628.         (if (fboundp 'enable-arrow-keys) (enable-arrow-keys)))))
  629.   
  630.      We put this in our lisp/default.el file, so users don't have to worry
  631.      about it:
  632.   
  633.        ;; don't override a user's term-setup-hook
  634.        (or term-setup-hook
  635.        (setq term-setup-hook
  636.          (function
  637.           (lambda ()
  638.             (and (fboundp 'enable-arrow-keys)
  639.              ;; don't override a user key mapping
  640.              (eq 'backward-paragraph (lookup-key esc-map "["))
  641.              (enable-arrow-keys))))))
  642.   
  643.      If your terminal type is `sun', you should put this in your .emacs
  644.      instead (or in addition to the above):
  645.   
  646.        (setq sun-esc-bracket t)
  647.   
  648.      It is possible that the terminal-specific initialization file for your
  649.      terminal type was written locally and does not follow the rule
  650.      mentioned above.  In this case you may need to inspect it to find out
  651.      how to enable the arrow keys.  (Actually, if it was written locally, it
  652.      probably enables the arrow keys by default.)
  653.   
  654. 136: How do I "swap" two keys?
  655.   
  656.   When Emacs receives a character, you can make Emacs behave as though it
  657.   received another character by setting the value of
  658.   keyboard-translate-table.  The following Emacs Lisp will do this for you,
  659.   allowing you to "swap" keys.  After arranging for this Lisp to be
  660.   evaluated by Emacs, you can evaluate `(swap-keys ?A ?B)' to swap A and B.
  661.   
  662.     (defun swap-keys (key1 key2)
  663.       "Swap keys KEY1 and KEY2 using map-key."
  664.       (map-key key1 key2)
  665.       (map-key key2 key1))
  666.   
  667.     (defun map-key (from to)
  668.       "Make key FROM behave as though key TO was typed instead."
  669.       (setq keyboard-translate-table
  670.         (concat keyboard-translate-table
  671.             (let* ((i (length keyboard-translate-table))
  672.                (j from)
  673.                (k i)
  674.                (str (make-string (max 0 (- j (1- i))) ?X)))
  675.               (while (<= k j)
  676.             (aset str (- k i) k)
  677.             (setq k (1+ k)))
  678.               str)))
  679.       (aset keyboard-translate-table from to)
  680.       (let ((i (1- (length keyboard-translate-table))))
  681.     (while (and (>= i 0) (eq (aref keyboard-translate-table i) i))
  682.       (setq i (1- i)))
  683.     (setq keyboard-translate-table
  684.           (if (eq i -1)
  685.           nil
  686.         (substring keyboard-translate-table 0 (1+ i))))))
  687.   
  688.   NOTE: You must evaluate the definition of these functions before calling
  689.   them!  For example, list the function definitions before their use in your
  690.   .emacs file.
  691.   
  692.   NOTE: These functions take two numbers as arguments.  The example above,
  693.   `(swap-keys ?A ?B)' is actually `(swap-keys 65 66)', because `?A' is
  694.   merely notation for 65, the ASCII value of `A'.
  695.   
  696.   NOTE: These functions only work for single characters.  You cannot swap
  697.   two multi-character sequences.
  698.   
  699. 137: How do I produce C-XXX with my keyboard?
  700.   
  701.   For C-@ and C-^, often you can just type Control-2 and Control-6.  For
  702.   C-_, you may have to hold down the shift key, typing Control-Shift-Hyphen.
  703.   C-@ can often be generated by typing Control-Space.  C-@ is often called
  704.   the NUL character, and has ASCII value 0.  C-_ can often be generated by
  705.   typing Control-7 or Control-/.  C-? (aka DEL) may be generated by typing
  706.   Shift-BackSpace or Control-BackSpace or a key labelled Delete or Del.
  707.   
  708.   Try Control with all of the digits on your keyboard to see what gets
  709.   generated.
  710.   
  711. 138: What if I don't have a Meta key?
  712.   
  713.   Instead of typing M-a, you can type "ESC a" instead.  In fact, Emacs
  714.   converts M-a internally into "ESC a" anyway (depending on the value of
  715.   meta-prefix-char).
  716.   
  717. 139: What if I don't have an Escape key?
  718.   
  719.   Type C-[ instead.  This should send ASCII code 27 just like an Escape
  720.   key would.  Try also C-;.
  721.   
  722. 140: How do I type DEL on PC terminal emulators?
  723.   
  724.   Some IBM PC compatibles do not have a key labeled `Del' or `Delete' {is
  725.   this true?}.  Those that do generally have it in an inconvenient location.
  726.   (Also, in some terminal emulators, the `Del' key does not transmit DEL.)
  727.   The result is the standard "BackSpace invoking help" problem (see question
  728.   133).
  729.   
  730.   The usual solution, suggested by Michael Covington
  731.   <mcovingt@aisun1.ai.uga.edu>, is to somehow tell the terminal emulator
  732.   program that BackSpace should transmit DEL.  Read the program's manual.
  733.   Shift-BackSpace or Control-BackSpace may send DEL.  The `Del' key may only
  734.   send DEL if the NumLock key hasn't been pressed.
  735.   
  736. 141: Can I make my `Compose Character' key behave like a Meta key?
  737.   
  738.   On a dumb terminal such as a VT220, no.  It is rumored that certain VT220
  739.   clones could have their Compose key configured this way.  If you're using
  740.   X, you might be able to do this with the `xmodmap' program (this is
  741.   what I do).
  742.   
  743. 142: How do I bind a combination of modifier key and function key?
  744.   
  745.   Unless you're using Emacs under emacstool (or xvetool?), have a working
  746.   version of x-rebind-key (see question 128), or are using Emacs 19 (Lucid
  747.   Emacs), you can't do this with Emacs alone.
  748.   
  749.   If you are using emacstool, Emacs sees different character sequences for
  750.   the combination of a modifier and a function key from what it sees for the
  751.   function key alone.  See etc/emacstool.1 for more information.  Since
  752.   Emacs sees different character sequences, you can bind these different
  753.   sequences to different commands.
  754.   
  755.   If you are running Emacs inside a terminal emulator window like xterm, you
  756.   can modify its translation tables to make it generate different character
  757.   sequences for the combination of a modifier and a function key.  For
  758.   example, this X resource setting:
  759.   
  760.     XTerm.VT100.Translations: #override \
  761.       Shift<KeyPress>F1: string(0x1b) string("[xyzzy")
  762.   
  763.   makes Shift-F1 generate the character sequence "ESC [ xyzzy".  You can
  764.   bind these character sequences in Emacs as normal.  Nick Ruprecht
  765.   <ruprecht@informatik.uni-freiburg.de> has written an extensive X
  766.   translation mapping for xterm that does this.  {Does this have an FTP
  767.   site?}
  768.   
  769.   If you have x-rebind-key, you can have any arbitrary combination of
  770.   modifiers with a key replaced by any sequence of "normal" characters.  For
  771.   example, this makes Shift-Return behave as though you had typed "C-x C-e"
  772.   (example from Jerry Graves):
  773.   
  774.     (x-rebind-key "Return" 'shift "\C-x\C-e")
  775.   
  776.   In Emacs 19 (Lucid Emacs), you can bind Meta-Left-Arrow like this (example
  777.   from Jamie Zawinski):
  778.   
  779.     (global-set-key '(meta left) 'backward-word)
  780.   
  781.   With the last two methods, use `xmodmap' and `xev' to discover the keysym
  782.   and modifier names.
  783.   
  784. 143: Why doesn't my Meta key work in an xterm window?
  785.   
  786.   Try all of these methods before asking for further help:
  787.   
  788.   * You may have big problems using `mwm' as your window manager.  {Does
  789.     anyone know a good generic solution to allow the use of the Meta key in
  790.     Emacs with mwm?}
  791.   
  792.   * For X11R4: Make sure it really is a Meta key.  Use `xev' to find out
  793.     what keysym your Meta key generates.  It should be either Meta_L or
  794.     Meta_R.  If it isn't, use xmodmap to fix the situation.
  795.   
  796.   * Make sure the pty the xterm is using is passing 8 bit characters.
  797.     `stty -a' (or `stty everything') should show `cs8' somewhere.  If it
  798.     shows `cs7' instead, use `stty cs8 -istrip' (or `stty pass8') to fix
  799.     it.
  800.   
  801.   * If there is an rlogin connection between the xterm and the Emacs, the
  802.     `-8' argument may need to be given to rlogin to make it pass all 8
  803.     bits of every character.
  804.   
  805.   * If the Emacs is running under Ultrix, it is reported that evaluating
  806.     (set-input-mode t nil) helps.
  807.   
  808.   * If all else fails, you can make xterm generate "ESC W" when you type
  809.     M-W, which is the same conversion Emacs would make if it got the M-W
  810.     anyway.  In X11R4, the following resource specification will do this:
  811.   
  812.       XTerm.VT100.EightBitInput: false
  813.   
  814.     (This changes the behavior of the insert-eight-bit action.)
  815.   
  816.     With older xterms, you can specify this behavior with a translation:
  817.   
  818.       XTerm.VT100.Translations: #override \
  819.         Meta<KeyPress>: string(0x1b) insert()
  820.   
  821.     You might have to replace `Meta' with `Alt'.
  822.   
  823. 144: Why doesn't my ExtendChar key work as a Meta key under HP-UX 8.0?
  824.   
  825.   This is a result of an internationalization extension in X11R4 and the
  826.   fact that HP is now using this extension.  Emacs assumes that
  827.   XLookupString returns the same result regardless of the Meta key state
  828.   which is no longer necessarily true.  Until Emacs is fixed, the temporary
  829.   kludge is to run this command after each time the X server is started but
  830.   preferably before any xterm clients are:
  831.   
  832.     xmodmap -e 'remove mod1 = Mode_switch'
  833.   
  834.   NOTE:  This will disable the use of the extra keysyms systemwide, which
  835.   may be undesirable if you actually intend to use them.
  836.   
  837. 145: Where can I get key bindings to make Emacs emulate WordStar?
  838.   
  839.   There is a package `wordstar' by Jim Frost <jimf@saber.com> and
  840.   `ws-mode.el' by Juergen Nickelsen <nickel@cs.tu-berlin.de>.  Check in the
  841.   Emacs Lisp Archive (see question 89).
  842.   
  843. 146: Where can I get an XEDIT emulator for Emacs?
  844.   
  845.   This question comes up once every couple of months.  I have never seen a
  846.   positive reply, so I presume no one has ever written one.
  847.   
  848.  
  849.  
  850. Using Emacs with Alternate Character Sets
  851.  
  852. 147: How do I make Emacs display 8-bit characters?
  853.   
  854.   There is a patch called the `8-bit ctl-arrow patch' that allows Emacs to
  855.   display characters with codes from 128 to 255.  {The original appears to
  856.   have been by Kenneth Cline <cline@proof.ergo.cs.cmu.edu>.} Partially based
  857.   on Johan Widen's earlier work, Johan Vromans <jv@mh.nl> has updated this
  858.   patch for Emacs 18.58 along with some other 8-bit improvements.
  859.   
  860.   Anonymous FTP:
  861.     /ftp.eu.net:gnu/emacs/FP-EightBit.Z
  862.     /ftp.urc.tue.nl:/pub/tex/emacs/FP-EightBit
  863.     /cs.purdue.edu:pub/ygz/cemacs.tar.Z:cemacs/8bit-patch-18.57
  864.     /sics.se:archive/emacs-18.55-8bit-diff
  865.     /laas.laas.fr:pub/emacs/patch-8bit-18.55
  866.     /laas.laas.fr:pub/emacs/patch-8bit-18.57
  867.   
  868.   Via e-mail:
  869.     To: mail-server@sics.se
  870.     body: send emacs-18.55-8bit-diff
  871.   
  872.   Anders Edenbrandt <anderse@dna.lth.se> has produced a more comprehensive
  873.   patch for Emacs 18.59 that allows for 8-bit input and output.
  874.   
  875.   Anonymous FTP:
  876.     /ftp.efd.lth.se:pub/gnu/emacs_8-bit.patch
  877.  
  878.   In the words of the author:
  879.  
  880.     With these patches, Emacs becomes fully 8-bit operational.  There is
  881.     support for displaying 8-bit characters, as well as for entering such
  882.     characters from the keyboard.  In addition, upcase/lowcase tranlatsion
  883.     is supported, accented characters are recognized as "letters" (important
  884.     when doing 'forward-word', for example), and text with 8-bit characters
  885.     can be sorted correctly.
  886.  
  887.     A Meta-shift key can still be used, provided that you run in an
  888.     environment where it is possible to distinguish between a character
  889.     entered using the Meta-shift key and one entered directly. The diffs
  890.     include patches to make this work under SunView (with emacstool) as
  891.     well as under X.  If you can't use a Meta-shift key, you have to enter
  892.     Meta-commands with the ESC-prefix.
  893.  
  894.   The most comprehensive patches for 8-bit output are by Howard Gayle
  895.   (originally for Emacs 18.55.  These patches allow displaying any arbitrary
  896.   string for a given 8-bit character (except TAB and C-j).  Also supported
  897.   is defining the sorting order and the uppercase and lowercase
  898.   translations.  It is reported that the 8-bit character support in Emacs 19
  899.   is largely based on these patches.  Thomas Bellman
  900.   <Bellman@lysator.liu.se> has updated these patches for Emacs 18.59.
  901.   
  902.   Anonymous FTP:
  903.     /sics.se:archive/emacs-gayle.tar.Z  (patches for 18.55)
  904.     /ftp.lysator.liu.se:pub/emacs/gayle-18.58.diff.tar.Z  (patches)
  905.     /ftp.lysator.liu.se:pub/emacs/emacs-18.59-gayle.tar.Z  (patched Emacs)
  906.   
  907.   Epoch's 8-bit character support is based on Anders Edenbrandt's patches.
  908.   Lucid Emacs has the ctl-arrow patch installed.  Nemacs displays 8-bit
  909.   characters, and it may be useful for displaying the 8-bit ISO-8859
  910.   alphabet, but I don't know for sure (see question 149).
  911.   
  912. 148: How do I input 8-bit characters?
  913.   
  914.   Minor modes for ISO Latin-1 that allow one to easily input this character
  915.   set have been written by several people.  Such modes have been written by
  916.   Matthieu Herrb <matthieu@laas.fr> (laas.laas.fr:pub/emacs/iso-latin-1.el),
  917.   Johan Vromans <jv@mh.nl> {FTP site??}, and Marc Shapiro
  918.   <shapiro@sor.inria.fr> {FTP site??}.
  919.   
  920.   These approaches differ from the one taken by Anders Edenbrandt in that
  921.   his method uses direct 8-bit input, while these methods use a compose
  922.   sequence for 8-bit characters.  {I have heard conflicting reports on
  923.   whether this results in losing the Meta key.  Perhaps this depends on
  924.   whether Emacs is running under X.  Can someone resolve this?}
  925.   
  926.   Karl Heuer <karl@haddock.ima.isc.com> is said to have a patch to allow
  927.   8-bit input.  Georg-Wilhelm Koltermann <gwk@crmunich0.cray.com> also has a
  928.   patch for either 18.57 or 18.58 that allows 8-bit input.
  929.   
  930.   Epoch comes with a patch that allows it to input 8-bit characters, but it
  931.   is not enabled by default.  {Is this right?}
  932.   
  933.   Jamie Zawinski says:
  934.   
  935.     Lucid GNU Emacs allows the input of any ISO-8859/1 keysyms that your
  936.     keyboard generates (see xmodmap), and contains a package that implements
  937.     a DEC/OpenWindows-like "Compose" key for systems which don't have one.
  938.   
  939. 149: Where can I get an Emacs that can handle kanji characters?
  940.   
  941.   Nemacs 3.3.2 (Nihongo GNU Emacs) is a modified version of GNU Emacs 18.55
  942.   that handles kanji characters.  It is available via anonymous FTP:
  943.   
  944.     /crl.nmsu.edu:pub/misc/nemacs-3.3.2.tar.Z
  945.     /miki.cs.titech.ac.jp:JAPAN/nemacs/nemacs-3.3.2.tar.Z
  946.   
  947.   You might also need files for "wnn", a kanji input method
  948.   (wnn-4.0.3{-README,.tar.Z} {on which machine?}).  You need a terminal (or
  949.   terminal emulator) that can display text encoded in JIS, Shift-JIS, or EUC
  950.   (Extended Unix Code), or the ability to run Nemacs as a direct X Window
  951.   client.
  952.   
  953. 150: Where can I get an Emacs that can handle Chinese?
  954.   
  955.   `cemacs' by Stephen G. Simpson <simpson@math.psu.edu> is a patch to Emacs
  956.   18.57 (the ctl-arrow patch) and some Emacs Lisp code that combined with
  957.   Cxterm allows using Chinese characters.  It is available via anonymous
  958.   FTP:
  959.   
  960.     /crl.nmsu.edu:pub/chinese/cemacs.tar.Z
  961.     /cs.purdue.edu:pub/ygz/cemacs.tar.Z
  962.   
  963.   Cxterm is available from the same place:
  964.   
  965.     /cs.purdue.edu:pub/ygz/cxterm-11.5.1.tar.Z
  966.   
  967. 151: Where is an Emacs that can handle Semitic (right-to-left) alphabets?
  968.   
  969.   Joel M. Hoffman <joel@wam.umd.edu> writes:
  970.   
  971.     A couple of years ago a wrote a hebrew.el file that allows right-to-left
  972.     editing of Hebrew.  I relied on the hardware to display the Hebrew
  973.     letters, given the right codes, but not for any right-to-left support;
  974.     the hardware also doesn't have to send any specific char. codes.  Emacs
  975.     keeps track of when the user is typing Hebrew vs. English.  (The VT-*
  976.     terminals in Israel contain built-in support for Hebrew.)
  977.   
  978.     To get it to work I had to modify only a few lines of GNU Emacs's source
  979.     code --- just enough to make it 8-bit clean.
  980.   
  981.     [and in a separate message:]
  982.   
  983.     It doesn't produce time-order ["sefer" format] (I wouldn't recommend
  984.     trying that with emacs, because converting time-order to screen-order
  985.     with arbitrarily long lines is a bit tricky), but I also concocted a
  986.     quick filter to convert screen-order into time-order.  I'll be happy to
  987.     send you the requisite files if you want them.  If you're using it for
  988.     anything large, however, you'll want something that works better.
  989.   
  990.   Joel Hoffman has also written a "bi-directional bi-lingual Emacs-like"
  991.   editor for MS-DOS named Ibelbe (Itty Bitty Emacs-Like Bidirectional
  992.   Editor).  Ibelbe is written in Turbo Pascal and comes with source code.
  993.   Here is the description:
  994.   
  995.     Ibelbe looks like emacs (it even has a minibuffer and filename
  996.     completion), and fully supports both right-to-left and left-to-right
  997.     editing.  Other than an EGA monitor or better, no special hardware is
  998.     required.  You will need an EGA Hebrew font to use Ibelbe with Hebrew.
  999.   
  1000.   Anonymous FTP:
  1001.     /israel.nysernet.org:israel/msdos/ibelbe.zip
  1002.     /israel.nysernet.org:israel/msdos/hebfont.zip
  1003.   
  1004.   Joseph Friedman <yossi@deshaw.com, yossi@Neon.Stanford.EDU> has written
  1005.   patches for Emacs 18.55 and 18.58 that provide Semitic language support
  1006.   under X Windows.
  1007.   
  1008.   Warren Burstein <warren@itex.jct.ac.il> says he has mapped 7-bit keys by
  1009.   modifying self-insert-command "for Hebrew input on 7-bit keyboards".
  1010.   
  1011.   A good suggestion is to query archie for files named with `hebrew'.
  1012.   
  1013.  
  1014.  
  1015. ----------------------------------------------------------------------
  1016. Copyright (C) 1990, 1991, 1992 Joseph Brian Wells
  1017. Copyright (C) 1992, 1993 Steven Byrnes
  1018.  
  1019. This list of frequently asked questions about GNU Emacs with answers
  1020. ("FAQ") may be translated into other languages, transformed into other
  1021. formats (e.g. Texinfo, Info, WWW, WAIS, etc.), and updated with new
  1022. information.  The same conditions apply to any derivative of the FAQ as
  1023. apply to the FAQ itself.  Every copy of the FAQ must include this notice
  1024. or an approved translation, information on who is currently maintaining
  1025. the FAQ and how to contact them (including their e-mail address), and
  1026. information on where the latest version of the FAQ is archived (including
  1027. FTP information).  The FAQ may be copied and redistributed under these
  1028. conditions, except that the FAQ may not be embedded in a larger literary
  1029. work unless that work itself allows free copying and redistribution.
  1030.