[comp.emacs] gnumacs bindings

bd@hpsemc.UUCP (Bob Desinger) (09/10/87)

Rob Snyder asks:
> I wanted to get back-space to do
> delete as well, and was able to do that just fine by inserting
>	(define-key global-map "\C-h" 'delete-backward-char)
> in my .emacs file.  But how do I bind another character (control-I for
> instance) to the help prefix?

Beware of rebinding C-I; it's more popularly known as tab or backtab
depending on the state of your Shift key.  Better to rebind help to
something else.

Richard Stallman wants the DEL key to delete because it really means
"delete", and he thinks that backspace doesn't mean delete.  The
dissenting opinion is that most people, through usage, have learned to
associate the backspace key with deletion; it's hard to unlearn this.
Another problem with DEL is that it's nearly impossible to type on HP
keyboards.  Richard's opinion is that such keyboards are worthless and
shouldn't be bought, but my employer doesn't consult with me before
putting terminals in our building.  Not surprisingly, I happen to like
HP terminals, the 2392 in particular because it's fast enough to run
Gnu Emacs at 9600 baud without garbaging up the screen.  (Set your
RecvPace and XmitPace datacomm configuration to `None' instead of
`Xon/Xoff'.)  But Richard made it easy to change the definition of DEL
and C-h to suit our fancies.

If you don't mind rebinding help to the DEL key, you can get quick
relief with the .emacs line:

	(load "term/bobcat")

(The HP Series 300 monitor was known as a Bobcat.)  This swaps the
bindings for C-h [backspace] and DEL on a level so low that the help
facilities don't know about it.  In fact, the help stuff thinks you
still typed C-h to get to it, and prints something to that effect.
The advantage is speed; the disadvantage is that the online
documentation still talks about DEL and C-h as if you never swapped
them, which can be misleading during quick reading.  Another advantage
of "term/bobcat" is that it causes C-h to delete everywhere, like in
the minibuffer and other places that you'd ordinarily need to handle
on a case-by-case basis.

Some HP versions have "term/hp" which maps arrow keys, the Insert-line
key, Delete-char, and all of those guys to their Emacs functions.  Jack
Repenning has a great one that maps more of those special keys to their
Gnu bindings than any other version, and his breaks fewer functions.
(Jack, how about posting your hp.el?  And sending it to FSF?)

The appropriate library in "term/" gets loaded if your $TERM is set to
the value of the basename.  F'rinstance, if TERM=hp you get "term/hp"
loaded.  The libraries are really called lisp/term/<value-of-TERM>.el,
and most HP Series 800 implementations keep the lisp/ directory under
/usr/local/lib/emacs/.

bob desinger

jack@hpindda.HP.COM (Jack Repenning) (09/11/87)

> Some HP versions have "term/hp" which maps arrow keys, the Insert-line
> key, Delete-char, and all of those guys to their Emacs functions.  Jack
> Repenning has a great one that maps more of those special keys to their
> Gnu bindings than any other version, and his breaks fewer functions.
> (Jack, how about posting your hp.el?  And sending it to FSF?)

This is hardly a one-man show (what is, when you're dealing with
Emacs?), but I did touch it last, so here it is.

Give it to FSF?  I've no objections (nor, I imagine, would any of the
other contributers) - just no time.  I'll try to get around to it...

Besides, I'm sure someone will improve it the minute they see it, so
let *them* give it to FSF:-)

Jack Repenning		      (jack@hpda.hp.com, (408) 447-3380)

******************************** cut here ********************************
;;; term/hp.el - Makes HP terminal function keys work, interchanges
;;; DEL and BACKSPACE, and breaks as few other things as possible.

;;;  Copyright (C) 1985, 1986, 1987 Free Software Foundation

;; GNU Emacs is distributed in the hope that it will be useful, but
;; without any warranty.  No author or distributor accepts
;; responsibility to anyone for the consequences of using it or for
;; whether it serves any particular purpose or works at all, unless he
;; says so in writing.

;; Everyone is granted permission to copy, modify and redistribute GNU
;; Emacs, but only under the conditions described in the document "GNU
;; Emacs copying permission notice".  An exact copy of the document is
;; supposed to have been given to you along with GNU Emacs so that you
;; can know how you may redistribute it all.  It should be in a file
;; named COPYING.  Among other things, the copyright notice and this
;; notice must be preserved on all copies.

;;; HP terminals usually encourage using ^H as the rubout character.

;;; Map HP function key escape sequences into the standard slots in
;;; function-keymap.

(require 'keypad)

(let ((the-table (make-string 128 0)))
  (let ((i 0))
    (while (< i 128)
      (aset the-table i i)
      (setq i (1+ i))))
  (aset the-table ?\177 ?\^h)	;; Swap ^H and DEL
  (aset the-table ?\^h ?\177)	;; Swap ^H and DEL
  (setq keyboard-translate-table the-table))

;;; Define some functions used by the arrow keys --

;;; A popular use for "clear display" (although this file binds it to
;;; delete-other-windows). 
;;; Another popular use is recenter.
(defun kill-to-end-of-file ()
  "Kill from point to end-of-file."
  (interactive)
  (kill-region (point) (point-max)))

(defun scroll-down-by-lines (arg)
  "Scroll down the screen ARG lines (default: 1)."
  (interactive "p")
  (scroll-down arg))

(defun scroll-up-by-lines (arg)
  "Scroll up the screen ARG lines (default: 1)."
  (interactive "p")
  (scroll-up arg))

(defun 	delete-line() 
  "Delete the current line into the kill-buffer.
Set the point at the start of the line following the deleted one."
  (interactive "*")
  (beginning-of-line)
  (kill-line 1))

(defun insert-line ()
  "Insert blank line before current line and place cursor at beginning."
  (interactive)
  (beginning-of-line)
  (open-line 1))

;;; -- Local preferences to the Gnu versions --
(define-key function-keymap "A" 'insert-line)
(define-key function-keymap "C" 'delete-other-windows)
(define-key function-keymap "D" 'delete-char)
(define-key function-keymap "E" 'kill-line)
(define-key function-keymap "F" 'scroll-down-by-lines)
(define-key function-keymap "I" 'overwrite-mode)
(define-key function-keymap "L" 'delete-line)
(define-key function-keymap "R" 'scroll-up-by-lines)
(define-key function-keymap "" 'beginning-of-buffer)
(define-key function-keymap "" 'end-of-buffer)

(defun enable-arrow-keys () 
  "Enable the use of the HP arrow keys for cursor motion.  Defeats
bindings of mark-paragraph and transpose-words"
  (interactive)
  (setup-terminal-keymap
   esc-map
   '(
     ( "A". ?u)				; up-arrow
     ( "B". ?d)				; down-arrow
     ( "C". ?r)				; right-arrow
     ( "D". ?l)				; left-arrow
     ( "F". ?)			; <SHIFT>-<HOME>
     ( "J". ?C)				; <CLEAR DISPLAY>
     ( "K". ?E)				; <CLEAR LINE>
     ( "L". ?A)				; <INS LINE>
     ( "M". ?L)				; <DEL LINE>
     ( "N". ?I)				; <SHIFT>-<INS CHAR>
     ( "O". ?D)				; <SHIFT>-<DEL CHAR>
     ( "P". ?D)				; <DEL CHAR>
     ( "Q". ?I)				; <INS CHAR>
     ( "R". ding)			; ???
     ( "S". ?R)				; <ROLL UP>
     ( "T". ?F)				; <ROLL DOWN>
     ( "U". ?N)				; <NEXT PAGE>
     ( "V". ?P)				; <PREV PAGE>
     ( "h". ?)			;; WAS mark-paragraph
     )
   ))

(enable-arrow-keys) 
******************************** end ********************************

ron@topaz.rutgers.edu (Ron Natalie) (09/11/87)

> Richard Stallman wants the DEL key to delete because it really means
> "delete", and he thinks that backspace doesn't mean delete. 

Of course, it is stretching it to think that BACKSPACE means help.
If it isn't going to mean backward-delete-char, it ought to be
backward-char.  Such is life.

The main problem with changing either these or ^S and ^Q is that
most of the el code in EMACS assumes they know what the user's
keys were when they do local bindings.

-Ron

gaynor@topaz.rutgers.edu (Silver) (09/11/87)

>> = Dunno (follow the references)
> = Ron Natalie (ron@topaz.rutgers.edu)

>> Richard Stallman wants the DEL key to delete because it really means
>> "delete", and he thinks that backspace doesn't mean delete. 
>
> Of course, it is stretching it to think that BACKSPACE means help.
> If it isn't going to mean backward-delete-char, it ought to be
> backward-char.  Such is life.

I think you are both approaching the issue from the wrong perspective.
This is my impression of how rms would likely justify these bindings.

  I feel very strongly that help-command be bound to a mnemonic key
  sequence, so that it will be remembered.  This key sequence must be
  easy to type, so that it will be used as a first recourse.  C-h best
  satisfies both these requirements.  Dang, the backspace key also
  generates C-h.  This key's name implies that the sequence it
  generates might better be bound to backward-char or, argueably,
  backward-delete-char.  Well, since a delete key is present on most
  terminals, there's your backward-delete-char.  Because I feel so
  strongly about C-h being bound to help and because backward-char is
  already bound to one easily-typed key sequence C-b, I choose to bind
  C-h to help.  Luckily, almost all resulting problems and personal
  preferences can easily be redefined.

> The main problem with changing either these or ^S and ^Q is that
> most of the el code in EMACS assumes they know what the user's
> keys were when they do local bindings.

True enough.

Silver.

gaynor@topaz.rutgers.edu or ...!rutgers!topaz.rutgers.edu!gaynor
("Cute" signature files /u2/gaynor/.*.signature are available via
anonymous ftp to topaz.rutgers.edu.)

jr@LF-SERVER-2.BBN.COM (John Robinson) (09/14/87)

[Putting words into RMS' mouth:]

>>   I feel very strongly that help-command be bound to a mnemonic key
>>   sequence, so that it will be remembered.  This key sequence must be
>>   easy to type, so that it will be used as a first recourse.

The key used in ITS/Tops20 EMACS was control-underscore (C-_), which
is decidedly neither easy to type nor mnemonic.  In fact, on the
VT100, if you typed underscore, then typed the same thing with the
control key also depressed, you didn't get C-_ at all!  So the
introductory message that suggested what key to type for help had to
be changed depending on the terminal type!

As has been pointed out, RMS changed a few things in going from ITS to
GNU.  I'd say this one was an improvement.

/jr
jr@bbn.com or jr@bbn.uucp

rich@oxtrap.UUCP (K. Richard Magill) (09/14/87)

In article <14653@topaz.rutgers.edu> ron@topaz.rutgers.edu (Ron Natalie) writes:
>Of course, it is stretching it to think that BACKSPACE means help.

The BACKSPACE key is a terrible misnomer.  It is really a C-h key and
of course this stands for HELP. ;-)

rich.

gamiddleton@orchid.UUCP (09/14/87)

Having key binding depend on the terminal type (as with "load term/myterm")
is a good idea, but it doesn't go far enough.  There are many different
kinds of terminals here, all of them already adequately described in our
/etc/termcap file.  I would like to have the deletion character be ^H on
some, and DEL on others, as described in the termcap file.  The best way
to do this would be to read from the stty settings in effect before Emacs
runs.  Is this possible?  It (almost) works in VI.
__
 -Guy Middleton, University of Waterloo Institute for Computer Research
  gamiddleton@math.waterloo.edu, watmath!gamiddleton, gamiddleton@water.bitnet

jack@hpindda.HP.COM (Jack Repenning) (09/15/87)

> This is my impression of how rms would likely justify these
> bindings.

Well, yes, that's pretty likely what he was thinking.  The problem
faced by anyone using an HP keyboard (aren't many other keyboards like
this, too?) is that the BACKSPACE key is big, friendly, easy to hit,
and used by every other program commonly run to mean (what in emacs we
call) backward-delete-character.

I do NOT use emacs as my log-in shell; I do spend a great deal of my
time typing to other programs who (let the driver) expect this meaning
for BACKSPACE, I even frequently borrow other folks' terminals, or
extend mine to others, from this same culture.  We have an
overwhelming conditioning in favor of 

	       BACKSPACE == backward-delete-character,

and don't want to restrap our fingers every time we enter an Emacs
window.

If this tremendous cultural river against which Emacs swims is a local
phenomenon, then I'm fairly happy with monkeying with the keyboard
translate table.  It just seemed a little odd that anyone would want
to swim against that current in the first place.

Well, maybe not.  RMS seems to be an excellent and fearless swimmer,
especially against the current :-)

For which I must admit I'm on the whole quite grateful!

Jack Repenning

wombat@ccvaxa.UUCP (09/16/87)

There is some logic behind C-_. On some terminals (like, fer instance,
the Datamedia DT80/1 I use during the day) you hold the control key down
and hit / (which is the same key ? is on). I think C-? is a fine
mnemonic for a help key. (I like to use both C-H and the backspace key
for erasing; sometimes one is easier to hit than the other and I make
lots of typos.)


"My words say what you hear them say, but the movements of my mouth
indicate that I am telling a series of humorous stories in Yiddish."
R.A. Lafferty, *The Devil Is Dead*		Wombat
					ihnp4!uiucdcs!ccvaxa!wombat

matt@oddjob.UChicago.EDU (%{NEWSNAME}) (09/16/87)

gamiddleton@orchid.waterloo.edu (Guy Middleton) writes:

) There are many different kinds of terminals here, all of them
) already adequately described in our /etc/termcap file.
          ----------
I think you are wrong about this.

Termcap does not say that my terminal has a key which can be held
down to make other keys send their codes sandwiched between C-A and
C-M, nor how I would like that kludge around into a fake meta key.
It does not tell what my 64 programmable keys send by default, nor
how to program them to send something different.  Termcap does not
mention my "back tab" key or the two extra lines above and below the
24 line screen.
				Matt Crawford

karl@haddock.ISC.COM (Karl Heuer) (09/17/87)

In article <3590005@hpindda.HP.COM> jack@hpindda.HP.COM (Jack Repenning) writes:
>Well, yes, that's pretty likely what [RMS] was thinking.  The problem
>faced by anyone using an HP keyboard (aren't many other keyboards like
>this, too?) is that the BACKSPACE key is big, friendly, easy to hit,
>and used by every other program commonly run to mean (what in emacs we
>call) backward-delete-character.

The other side of the coin is that the DEL key is awkward to hit.  To
paraphrase RMS, "such terminals are inferior merchandise and should not be
purchased".  Any decent terminal manufacturer should realize that some
operating systems use DEL as the erase character, and the obvious thing to do
is to make a key with a neutral label (ERASE, or some flavor of left arrow)
which can be programmed to transmit either C-h or DEL (or other).

Karl W. Z. Heuer (ima!haddock!karl or karl@haddock.isc.com), The Walking Lint

jthomas@nmsu.CSNET (09/17/87)

   At 15 Sep 87 16:50:26 GMT, Jack Repenning said:
   ...
   If this tremendous cultural river against which Emacs swims is a local
   phenomenon, then I'm fairly happy with monkeying with the keyboard
   translate table.  It just seemed a little odd that anyone would want
   to swim against that current in the first place.
   ...
It seems to me that this "cultural river" is relative.  Emacs started on a
system which used DELete to mean just that (and most of the terminals had a
nice DELete key!).  Some(how,when) Unix(tm) picked (first "#" and then)
BACKspace to mean delete.  (I assume some Unix guru's keyboard didn't have
a decent DELete key?)  Now Emacs runs on Unix systems, and Unix users are
used to BACKspace.  (But in:
   ...    The problem
   faced by anyone using an HP keyboard (aren't many other keyboards like
   this, too?) is that the BACKSPACE key is big, friendly, easy to hit,
   and used by every other program commonly run to mean (what in emacs we
               ~~~~~~~~~~~~~~~~~~~
   call) backward-delete-character.
he said that programs use BACKspace to mean delete - isn't he really saying
that most users have stty'ed BACKspace for del ??????)

Unfortunately the keyboard world seems to have divided between ones with
decent DELete keys and ones with decent BACKspace keys.  We can discuss the
philosophical ideas of C-h, but for many the non-existence of a DELete key
forces the use of BACKspace to mean delete.  (And I'm about to buy one of
those turkeys!?!?)

Jim Thomas		jthomas@nmsu.csnet	formerly JNTCS@UNO.BITNET

aglew@ccvaxa.UUCP (09/18/87)

>/* Written  2:35 pm  Sep 14, 1987 by rich@oxtrap.UUCP in ccvaxa:comp.emacs */
>In article <14653@topaz.rutgers.edu> ron@topaz.rutgers.edu (Ron Natalie) writes:
>>Of course, it is stretching it to think that BACKSPACE means help.
>
>The BACKSPACE key is a terrible misnomer.  It is really a C-h key and
>of course this stands for HELP. ;-)
>
>rich.

Help remove language dependent biases!

^H doesn't have any mnemonic value for help, if you are French.

jr@LF-SERVER-2.BBN.COM (John Robinson) (09/18/87)

>> It seems to me that this "cultural river" is relative.  Emacs started on a
>> system which used DELete to mean just that (and most of the terminals had a
>> nice DELete key!).

Before ASCII, DELETE was called RUBOUT (I'm talking about the teletype
model 33, folks), which seems even better of a description.  DELETE
sems to have no directionality to it (to me), whereas rubout seems
more to refer to something that was just typed.

>>  Some(how,when) Unix(tm) picked (first "#" and then)
>> BACKspace to mean delete.  (I assume some Unix guru's keyboard didn't have
>> a decent DELete key?)  Now Emacs runs on Unix systems, and Unix users are
>> used to BACKspace.

Well, Unix history is even more arcane than this.

In V7 (my history only goes that far), # meant delete-char and DEL
meant interrupt (really!).  This was a problem, because DEL was often
a nice big fat key - too easy to hit - and also users coming from
other worlds (i.e. DEC-10 and -11) were fond of hitting it to mean
delete-char, and had awful trouble when learning to use Unix.
Fortunately, it was possible to remap this function to something they
were used to, like ^C, but many people kept delete for it anyway.

At about this time (early-mid-70s), people still largely used
teletypes and other printing terminals for timesharing systems.  The #
as an erase character was okay, since you could see how many you had
typed on the print line.  Unix was still too small (i.e. ran on too
small machines) to consider the fancy sort of line editing it now
supports.

Also, about this time, people began to use CRT terminals.  On a crt,
it was handy to be able to have the line contining the cursor look
like what the program was going to get.  This was never possible for a
printing terminal (without going to a new line), but almost any crt
could do it roughly this way: use BACKSPCE (BS) as your delete-char!
As you delete typed-in characters, the cursor moves backwards over
them.  As you retype over your mistakes, the new echos overwrite on
the same line the deleted characters.  What you see is *mostly* what
you get (exceptions - the new line is shorter than the original, or
else some characters cause no cursor movement when echoed, but are
still deleted by BACKSPACE, so you get confused about where you are
versus what's in the type-in bufer).  Note that this also can be used
for printing terminals, but you won't necessarily be able to read the
result.  And, most important, the Unix terminal driver didn't need to
change at all; it just happened magically since the delete-char was
always simply echoed back to the terminal when typed.

Next came kernel support for crts.  The simplest version is to echo
the sequence BS-SPC-BS whenever the delete character (whatever its
value) is typed.  Now the deleted characters are removed from the
screen as they are deleted (overwritten by spaces - no help for
printing temrinals of course).  With more cleverness, the terminal
handler can cope with characters that don't take up space, or take up
two spaces (control characters echoed with ^ first).  Now, the user
has no particular *cute* mapping to be preferred for delete-char, but
BS may have persisted anyway.  I realize that 90% of the audience may
have met Unix since it grew reasonable terminal-handling, but try to
imagine that it used not to be able to afford the memory for it.

Note that this kernel support was often added as a local enhancement
before it found its way into the supported Unix versions.  As such,
there were probably a lot of other variations on what I described
(which matches what happened at BBN), some of which may have become
quite popular before being supplanted by a "standard" implementation
from Bell or Berkeley.  By now, the standard version is powerful
enough to emulate just about any local variant, which of course also
fosters a lot of diversity.  So there is no single most-common choice
for how the delete-char function is mapped in the Unix world today,
and the standards in other worlds add even more diversity that people
can opt for by customizing their terminal parameters.  And then there
are the shells with built-in comand line editors (tcsh or bsh, if you
have heard of them), but that's another story.

... those that fail to learn from history are ... etc.

/jr
jr@bbn.com or jr@bbn.uucp

brisco@caip.rutgers.edu (Thomas Paul Brisco) (09/19/87)

In article <28500016@ccvaxa> aglew@ccvaxa.UUCP writes:

>>/* Written  2:35 pm  Sep 14, 1987 by rich@oxtrap.UUCP in ccvaxa:comp.emacs *
>>In article <14653@topaz.rutgers.edu> ron@topaz.rutgers.edu (Ron Natalie) writes:
>>>Of course, it is stretching it to think that BACKSPACE means help.
>>
>>The BACKSPACE key is a terrible misnomer.  It is really a C-h key and
>>of course this stands for HELP. ;-)
>>
>>rich.
>
>Help remove language dependent biases!
> 
>^H doesn't have any mnemonic value for help, if you are French.

	If we were French, we wouldn't be reading this (;->).

	After years of using different flavors of Emacs(tm tm tm tm),
I've found the best help key to be "M-X help<CRLF>" - it is mnemonic,
and easy to understand.
-- 
                  ----------------------------------------------------------
                  -                  ARPA: Brisco@rutgers                  -
                  -  UUCP: (ihnp4!ut-sally, allegra!packard) !caip!brisco  -
                  ----------------------------------------------------------

karl@haddock.UUCP (09/19/87)

In article <28500016@ccvaxa> aglew@ccvaxa.UUCP writes:
>Help remove language dependent biases!
>^H doesn't have any mnemonic value for help, if you are French.

If you remove the language-dependent mnemonics, what sort of mnemonics do you
have left?

Karl W. Z. Heuer (ima!haddock!karl or karl@haddock.isc.com), The Walking Lint

exodus@uop.UUCP (Freddy Kreuger) (09/19/87)

In article <1173@haddock.ISC.COM>, karl@haddock.ISC.COM (Karl Heuer) writes:
> 
> The other side of the coin is that the DEL key is awkward to hit.  To
> paraphrase RMS, "such terminals are inferior merchandise and should not be
> purchased".  Any decent terminal manufacturer should realize that some

We have a few Convergent Technologies terminals here and the DELete key
is off on the left hand side of the keyboard, sort of where function keys
on certain IBM keyboards are.  It's far too difficult to use that key.
The escape key is on the far right of the keyboard on the numeric keypad.
That is one keyboard no EMACS user could live with!

G. Onufer
University of the Pacific

rich@oxtrap.UUCP (K. Richard Magill) (09/19/87)

In article <3590005@hpindda.HP.COM> jack@hpindda.HP.COM (Jack Repenning) writes:
>I do NOT use emacs as my log-in shell...

Why not?

mkhaw@teknowledge-vaxc.ARPA (Mike Khaw) (09/19/87)

> I've found the best help key to be "M-X help<CRLF>" - it is mnemonic,
> and easy to understand.

Yeah, but it's 6 whole keystrokes more than C-H (5 if you have a real
meta key)		:-)

Mike Khaw
-- 
internet:  mkhaw@teknowledge-vaxc.arpa
usenet:	   {uunet|sun|ucbvax|decwrl|uw-beaver}!mkhaw%teknowledge-vaxc.arpa
USnail:	   Teknowledge Inc, 1850 Embarcadero Rd, POB 10119, Palo Alto, CA 94303

mike@turing.unm.edu.unm.edu (Michael I. Bushnell) (09/19/87)

In article <8709181153.AA08300@ucbvax.Berkeley.EDU> jthomas@nmsu.CSNET writes:
>
>   At 15 Sep 87 16:50:26 GMT, Jack Repenning said:
>   ...
>   If this tremendous cultural river against which Emacs swims is a local
>   phenomenon, then I'm fairly happy with monkeying with the keyboard
>   translate table.  It just seemed a little odd that anyone would want
>   to swim against that current in the first place.
>   ...
>It seems to me that this "cultural river" is relative.  Emacs started on a
>system which used DELete to mean just that (and most of the terminals had a
>nice DELete key!).  Some(how,when) Unix(tm) picked (first "#" and then)
>BACKspace to mean delete.  (I assume some Unix guru's keyboard didn't have
>a decent DELete key?)  Now Emacs runs on Unix systems, and Unix users are
>used to BACKspace.  (But in:

ACK!  NO!  NOT TRUE!!!!!!!!


BOGUS!!! Do Not Listen To This Garbage!!!!!#Q@#%@#!^@$%!%$


Go to your login prompt.  GUESS WHAT???? DEL works!!!!!! So does
^H!!!!!

THEY BOTH WORK.

UGH!!!!!

There is NO predisposition in UNIX for BS instead of DEL!!!!


>   ...    The problem
>   faced by anyone using an HP keyboard (aren't many other keyboards like
>   this, too?) is that the BACKSPACE key is big, friendly, easy to hit,
>   and used by every other program commonly run to mean (what in emacs we
>               ~~~~~~~~~~~~~~~~~~~
>   call) backward-delete-character.
>he said that programs use BACKspace to mean delete - isn't he really saying
>that most users have stty'ed BACKspace for del ??????)

That IS what he is saying!!! Vi has no preference.  Nothing does.  But
Emacs is strapped for keys.  So it has to use only one key per
function, and the most logical choice is DEL.  Look at the ASCII
specification!!!!  It quite plainly states that DEL means "ignore last
character," while BS means "move print head back and overstrike."  My
seventh grade typing instructor was quite adamant about the differece
between overstriking and erasing.

>Unfortunately the keyboard world seems to have divided between ones with
>decent DELete keys and ones with decent BACKspace keys.  We can discuss the
>philosophical ideas of C-h, but for many the non-existence of a DELete key
>forces the use of BACKspace to mean delete.  (And I'm about to buy one of
>those turkeys!?!?)
>
>Jim Thomas		jthomas@nmsu.csnet	formerly JNTCS@UNO.BITNET


Ugh.  Most terminals now being produced (with the notable exception of
HP's) have an easily locatable DEL key.  On a VT-240, etc., it is the
key with a <- and an 'x' on it.  The BS key is hidden up on the
function key row.  Every terminal has a decent BS key, the one most
people I have seen is ^H.  But they don't have a decent DEL key, ^?
just doesn't quite hack it.

ACK!  UNIX could care less what you use.  Really.  It is quite up to
you.  Fortunately, EMACS lets you pick.

					Michael I. Bushnell
					a/k/a Bach II
					mike@turing.UNM.EDU
---
Hold the MAYO & pass the COSMIC AWARENESS...
				-- Zippy the Pinhead

aglew@ccvaxa.UUCP (09/20/87)

>/* Written  7:23 pm  Sep 18, 1987 by karl@haddock.ISC.COM in ccvaxa:comp.emacs */
>In article <28500016@ccvaxa> aglew@ccvaxa.UUCP writes:
>>Help remove language dependent biases!
>>^H doesn't have any mnemonic value for help, if you are French.
>
>If you remove the language-dependent mnemonics, what sort of mnemonics do you
>have left?
>
>Karl W. Z. Heuer (ima!haddock!karl or karl@haddock.isc.com), The Walking Lint
>/* End of text from ccvaxa:comp.emacs */
>

There are a large number of symbols that are pretty well shared by all people
who speak European languages, or languages that employ a Roman script.
Moreover, most East Asians understand them too.

Question mark, "?", is pretty universal.
	? is a much better choice than ^H for help. Consider: I come too
a program that displays stuff on my screen, and I'm not quite sure what
language it's in. Eg. I may be editing a French file with an English
editor. Do I cry "Au secours!" or "help!". I'm frazzled, so I use my
native language. Oops, deleted the whole file.
	? is a much better choice. As someone who has played with
international software a lot, fiddling with ? is my first reflex when
looking for a help command.
	Unfortunately, for EMACS, "\e?" is a prefix for many function keys.
But "\^x?" isn't taken. That's my help key. As is "\^_" on my tvi9220
keyboard, which is generated by the key control-question mark.

Writing software for an international audience, you don't have to remove
all native-language mnemonic value. But if you put the most basic function,
help, that conveniently takes you to a help system that (1) tells you what
language the system is using, and (2) lets you change that language,
if possible, on a language independent key like ? you're well away.

Other language independent symbols:
- arrows are usually understood the same way by most cultures.
- take a look at the upper row of a QWERTY keyboard - it has a lot
  of good choices, although some are remapped in alternate character sets:
-- ! will be understood by most peoples to be CAUTION
-- $ is a fairly universally understood currency symbol.
   Even if it is remapped, it is usually remapped to another currency symbol.
   Currency => money => cost, can be used as a metaphor for time
   (but that's stretching it, and imposing Calvinistic morality)
- the word STOP is becoming an international standard. Many non-English
  countries use it on their stop signs.

And, of course, graphics provides a whole slew of possibilities.

As I said, most don't apply to a character based editor like EMACS
(and I don't have X on my home machine yet), but the first, most basic
rule - put help on the ? key - is something that we could do.


Andy "Krazy" Glew. Gould CSD-Urbana.    USEnet:  ihnp4!uiucdcs!ccvaxa!aglew
1101 E. University, Urbana, IL 61801    ARPAnet: aglew@gswd-vms.arpa

I always felt that disclaimers were silly and affected, but there are people
who let themselves be affected by silly things, so: my opinions are my own,
and not the opinions of my employer, or any other organisation with which I am
affiliated. I indicate my employer only so that other people may account for
any possible bias I may have towards my employer's products or ss
(ibibi

dan@rna.UUCP (Dan Ts'o) (09/21/87)

In article <636@unmvax.unm.edu> mike@turing.unm.edu (Michael I. Bushnell) writes:
>>It seems to me that this "cultural river" is relative.  Emacs started on a
>>system which used DELete to mean just that (and most of the terminals had a
>>nice DELete key!).  Some(how,when) Unix(tm) picked (first "#" and then)
>>BACKspace to mean delete.  (I assume some Unix guru's keyboard didn't have
>>a decent DELete key?)  Now Emacs runs on Unix systems, and Unix users are
>>used to BACKspace.  (But in:
>
>ACK!  NO!  NOT TRUE!!!!!!!!

	Not true, indeed. Remember that UNIX started as a very simple OS,
with a very simple TTY driver, back in the days of TTY's, like the TTY33.
Teletype was/is a part of the Bell System (Western Electric ?).
	The tty driver simply echoed incoming characters, with very few
exceptions, like mapping CR to LF and outputting CRLF. So echoing DEL
won't have been very useful: no feedback as to whether or how many characters
to delete. Thus # was not unreasonable. The same goes for the line kill
character: @. The DEL was (and is still used in SysV) as the interrupt
(like ^C), where echoing was irrelevant.
	Now, BS would also have been (and is) reasonable on CRT's, but
UNIX started on printing tty's, where the result is a mess. A more
complicated tty driver would have handled DEL like DEC did in OS's like
TOPS10 and RT11, by echoing the deleted character, in some cases surrounded
by \/:
	misteak\eak/ake

	But remember the UNIX kernel used to fit in under 16kbyte (8kwords).
Many early university UNIX systems hacked the UNIX tty driver to "bits",
adding all sorts of stuff like TENEX mode, and better DEL handling for CRT's.
So the original reason why BS got popular as the erase char in UNIX,
especially with standard non-BSD UNIX, is that the CRT terminal would handle
the cleaning up of the displayed line "automatically", without any help or
special code in the tty driver.

pedz@bobkat.UUCP (09/21/87)

In article <1173@haddock.ISC.COM> karl@haddock.ima.isc.com (Karl Heuer) writes:
 >In article <3590005@hpindda.HP.COM> jack@hpindda.HP.COM (Jack Repenning) writes:
 >>Well, yes, that's pretty likely what [RMS] was thinking.  The problem
 >>...
 >
 >The other side of the coin is that the DEL key is awkward to hit.  To
 >paraphrase RMS, "such terminals are inferior merchandise and should not be
 >purchased".  Any decent terminal manufacturer should realize that some
 >operating systems use DEL as the erase character, and the obvious thing to do
 >is to make a key with a neutral label (ERASE, or some flavor of left arrow)
 >which can be programmed to transmit either C-h or DEL (or other).
 >

Yea, the Wyse 60 terminal I have has a soft key with just an arrow on
it.  It comes programmed as a back space.  Unfortunately, the sequence
which programs the key can not contain the delete character so you can
not remotely program it to send a delete.  (You can do it locally from
the keyboard but that kinda sucks.)
-- 
Cute signature line employing many literary allusions and puns.
Standard disclaimer concerning my mental incompetance.
Perry Smith a.k.a. (Pedz Thing)
pedz@bobkat or {ti-csl,infotel}!pollux!bobkat!pedz

kyle@xanth.UUCP (Kyle Jones) (09/21/87)

In <636@unmvax.unm.edu>, mike@turing.unm.edu.unm.edu (Michael I. Bushnell) sez:
> Emacs is strapped for keys.

Stallman uses this argument as well but I don't buy it.  Here at ODU
we have both DEL and BS bound to delete-backward-char, and we still
have a help key: C-\.  C-\ is not normally bound to anything, so we
lose no "functionally".  Also C-\ is typed the same way on all our
terminals: you hold down the CONTROL key and type a '\'.  The Emacs
lisp code does have C-h hard coded into in a few places but those were
easily ferreted out.  Most of the problem was solved by modifying
help.el and the changing the value of help-char.  Finding and changing
all references to C-h into the User's Manual a tiny bit more
challenging.

C-h may be mnemonic but I simply could not tolerate hitting a key
labelled BACKSPACE three times in succession and getting a screenful
of text in return.  God knows I tried.  RMS points out that, "Deletion
of text is not the same thing as backspacing followed by failure to
overprint."  I agree, but having the BACKSPACE key erase text is a lot
closer to it's proper function than printing a help screen!

kyle jones  <kyle@odu.edu>  old dominion university, norfolk, va  usa

steven@cwi.nl (Steven Pemberton) (09/22/87)

In article <636@unmvax.unm.edu> mike@turing.unm.edu (Michael I. Bushnell) yells:
> Go to your login prompt.  GUESS WHAT???? DEL works!!!!!! So does ^H!!!!!
> THEY BOTH WORK. UGH!!!!!
> There is NO predisposition in UNIX for BS instead of DEL!!!!
[...]
> But Emacs is strapped for keys.  So it has to use only one key per
> function, and the most logical choice is DEL.  
Not true. You can use two keys for the same function with no trouble.

> Look at the ASCII specification!!!!  It quite plainly states that
> DEL means "ignore last character,"
The ISO specification that I have in front of me says thet DEL is used
to erase or obliterate an erroneous or unwanted character in punched
tape. This would suggest (if we were trying to retain compatibility
with the original definitions of these characters) that delete-char
would be a better binding for DEL. But we ain't, so we can choose to
use them how we like.

> ACK!  UNIX could care less what you use.  Really.  It is quite up to
> you.  Fortunately, EMACS lets you pick.

The Unix behaviour, I contend, is the better. There are two equally
used standard keys, and Emacs should accept both of them *as default*
if we want to encourage new users to try emacs.

Here where I work, there are a dozen departments. Three of these are
computer departments where most of the members are competent enough to
deal with bindings and the like. However, the other nine departments are
non-computer people who do however do a lot of editing. I think the
^H=help binding is the biggest obstacle to them using gnumacs. If they
should go and try emacs, and then find that they can't use backspace
(which IS the default stty setting here), they are not going to bother
to find out how to rebind. They're just going to go back and use
whatever they're used to, declaring emacs to be "unusable". I'm sorry,
but that is just how it is. I really do know people who do not use
gnumacs because backspace means help; they use computers for their
work, and they can't be bothered to find out how to rebind keys just
in order to see if they want to use emacs.

I might say that ^S also causes a problem in this respect. We have
terminals here that send ^S/^Q. If we went to management and said "we
want new terminals, so we can use emacs", they will say "use a
different editor".  Besides, people like the terminals we have, and
couldn't care less whether they send ^S/^Q or not.

The point I'm trying to make is this: the default bindings affect the
user acceptance of Gnumacs. We have to face up to the fact that
potential users are being frightened away from using it simply because
the default bindings do not encourage them to try it.

I might also remark that I only started using gnumacs because I was
forced to: the emacs we used to use didn't compile on our new machine.
It was one hell of a job trying to work out from the manual how you
changed the binding of ^H to backspace. It is quite clear that ^H is a
prefix key bound to a keymap, but how to bind another key or
key-combination to that keymap? I would like to suggest that something
be said under "customization" in some future version of the manual.

Steven Pemberton, CWI, Amsterdam; steven@cwi.nl

steven@cwi.nl (Steven Pemberton) (09/22/87)

In article <2506@xanth.UUCP> kyle@xanth.UUCP (Kyle Jones) writes:
> Here at ODU we have both DEL and BS bound to delete-backward-char,
> and we still have a help key: C-\.
> The Emacs lisp code does have C-h hard coded into in a few places
> but those were easily ferreted out.  Most of the problem was solved by
> modifying help.el and the changing the value of help-char. Finding
> and changing all references to C-h into the User's Manual a tiny bit more
> challenging.
Considering how configurable emacs is and is supposed to be, it is
really surprising how hardwired the C-h decision is (which is a real
pity, considering how fundamental it is). Just try for instance now to
bind help to a *two-key* sequence, like ESC-?, and then to get help
when using incremental search, for instance.

Steven Pemberton, CWI, Amsterdam; steven@cwi.nl

bzs@bu-cs.BU.EDU (Barry Shein) (09/23/87)

Posting-Front-End: GNU Emacs 18.41.4 of Mon Mar 23 1987 on bu-cs (berkeley-unix)



Perhaps the wrong forum, but I've always had a slightly different
(possibly wrong) theory on the origin of some of the early Unix
terminal driver.

It's behavior was not entirely due to space limitations I don't think,
so many of us back in the V6 days sat down and implemented essentially
what you see today in BSD systems ourselves (if I remember right Dan
T'so, who wrote the note I am sort of responding to, and my group
exchanged quite a few versions of these things around the Harvard
Medical School some 10+ years ago.) Ahh, the conversations that would
be energized trying to find the ultimate tab delete routine (can we do
it w/o a stack of col nums?)

It was certainly not due to the times, such things were already in
other O/S's, even tiny ones like RT-11 (tho not terribly sophisticated
versions, it was obvious what was needed and how it should work.)

So why? Well, my theory is that there was an interest in not venturing
too far from IBM half-duplex behavior so there was some hope (and,
just possibly, internal PR opportunities) that it would all seem
natural enough to an IBM/TSO user (wasn't #/@ the erase/kill chars in
IBM's TSO?) Remember, one of the earliest uses of Unix was preparing
jobs for submission over an IBM/RJE link from an '11.

This can't be coincidence, tho I've never seen it in print.

	-Barry Shein, Boston University

msf@amelia (Michael S. Fischbein) (09/23/87)

In article <69@piring.cwi.nl> steven@cwi.nl (Steven Pemberton) writes:
>The ISO specification that I have in front of me says thet DEL is used
>to erase or obliterate an erroneous or unwanted character in punched
>tape. This would suggest (if we were trying to retain compatibility
>with the original definitions of these characters) that delete-char
>would be a better binding for DEL. But we ain't, so we can choose to
>use them how we like.

That's good, because the paper tape DEL is a delete-FORWARD-character.
That would really confuse many users, and it still leaves open the question
of what to use for a delete-BACKWARD-character.  I find RMS's argument
in favor of ^H to be reasonable, but it should be easier to change in
the flexible, extensible editor thatn it is currently.  Same for the
^S for search: it makes sense, but conflicts with many installations.
Fortunately, that one is very easy to change.

		mike

Michael Fischbein                 msf@prandtl.nas.nasa.gov
                                  ...!seismo!decuac!csmunix!icase!msf
These are my opinions and not necessarily official views of any
organization.

karl@haddock.UUCP (09/25/87)

In article <28500018@ccvaxa> aglew@ccvaxa.UUCP writes:
>[haddock!karl writes:]
>>If you remove the language-dependent mnemonics, what sort of mnemonics do you
>>have left?
>
>Question mark, "?", is pretty universal.

True.  But I believe RMS stated that he wanted a single-character HELP key,
which rules out your suggested C-x ? and ESC ?.  C-? would be great, if such a
character really existed.  (Some terminals do generate C-_ when you hit
CTRL-?, but not all -- and emacs shouldn't depend on it%.  The convention of
denoting DEL by ^? is irrelevant, even if DEL were not otherwise taken, since
the mnemonic value is lost on someone who doesn't know that convention.)

I'd have no objections to ESC ?, except that it's a bit hard to type%% and
it's annoying if you have to use it very often.  There's also the problem that
help-char has to be a single byte; this is part of a more general problem%%%.

>Unfortunately, for EMACS, "\e?" is a prefix for many function keys.

If you're worried about function keys, you shouldn't use ESC at all!

Karl W. Z. Heuer (ima!haddock!karl or karl@haddock.isc.com), The Walking Lint
________
%Actually, emacs should also quit assuming that CTRL-SPC generates C-@.
________
%%I was once part of a project that used that sequence for HELP -- we
discovered that since "?" had to be shifted, users would often shift
prematurely and get a shifted ESC, which on the HP terminals would generate
DEL, halting the program.
________
%%%One of the main reasons I didn't bind a function key to isearch-forward,
back when I was having trouble getting C-s to pass through, was that I
couldn't use the same function key for search-repeat-char.  This suggests that
either emacs should use strings instead of chars for certain objects, or that
emacs should read function keys as out-of-band integer values (a la curses).
I prefer the second approach, which would also let me bind my ANSI function
keys without disturbing backward-paragraph.

karl@haddock.UUCP (09/25/87)

In article <2506@xanth.UUCP> kyle@xanth.UUCP (Kyle Jones) writes:
>Here at ODU we have both DEL and BS bound to delete-backward-char, and we
>still have a help key: C-\.

I dislike having things bound to any of the non-alphabetic control characters,
because terminal manufacturers can't agree on where those keys belong, or what
keys you have to press to get the control characters.  The terminal I'm using
now has backslash between Left-Shift and Z; I've gotten used to it, but I have
problems when I try to use a normal terminal.  It's not even universal that
CTRL-\ generates C-\, but exceptions are rare these days.  (C-@, C-^, and C-_
are more troublesome.)

>C-h may be mnemonic but I simply could not tolerate hitting a key labelled
>BACKSPACE three times in succession and getting a screenful of text

My solution to this problem was to rebind the BACKSPACE key in the terminal
itself.  (This terminal isn't a total loss.)  So for me, the only way to
generate C-h is to hit CTRL-H, and of course when I do so I mean "help".

Karl W. Z. Heuer (ima!haddock!karl or karl@haddock.isc.com), The Walking Lint

allbery@ncoast.UUCP (09/27/87)

As quoted from <636@unmvax.unm.edu> by mike@turing.unm.edu.unm.edu (Michael I. Bushnell):
+---------------
| Go to your login prompt.  GUESS WHAT???? DEL works!!!!!! So does
| ^H!!!!!
| 
| THEY BOTH WORK.
+---------------

To quote your earlier comment:

+---------------
| ACK!  NO!  NOT TRUE!!!!!!!!
| 
| 
| BOGUS!!! Do Not Listen To This Garbage!!!!!#Q@#%@#!^@$%!%$
+---------------

What you say works for BSD UNIX.  For Xenix, only ^H works.  For some System
V's, ^H and # both work.  For other System V's and for System III, only #
works.  "UNIX" is obviously schizoid about the whole matter...

With DEC terminals, I use DEL as a backspace under System III/V.  On any other
machine, I use BS.  On ALL Unixes, with ALL terminals, I use ^C as interrupt.
This is because on the majority of terminals I use, the backspace key is
larger but the DEL key is right beside it, so I usually ended up aborting
a program to which I had mistyped if I was typing fast.

Then again, # has its place too.  I once had to access ncoast off an LA36...

AND WILL YOU BSD'ERS STOP ACTING AS IF THE WHOLE WORLD RAN 4.xBSD ON A VAX???
-- 
	    Brandon S. Allbery, moderator of comp.sources.misc
  {{harvard,mit-eddie}!necntc,well!hoptoad,sun!mandrill!hal}!ncoast!allbery
ARPA: necntc!ncoast!allbery@harvard.harvard.edu  Fido: 157/502  MCI: BALLBERY
   <<ncoast Public Access UNIX: +1 216 781 6201 24hrs. 300/1200/2400 baud>>
			"Mummy, what's an opinion?"

jeffl@berick.UUCP (Jeff Lawhorn) (09/29/87)

Posting-Front-End: GNU Emacs 18.41.4 of Thu Sep 10 1987 on berick (usg-unix-v)


In article <4755@ncoast.UUCP> allbery@ncoast.UUCP (Brandon Allbery) writes:
+----------
|   As quoted from <636@unmvax.unm.edu> by mike@turing.unm.edu.unm.edu (Michael I. Bushnell):
|   +---------------
|   | Go to your login prompt.  GUESS WHAT???? DEL works!!!!!! So does
|   | ^H!!!!!
|   | 
|   | THEY BOTH WORK.
|   +---------------
|
|   To quote your earlier comment:
|
|   +---------------
|   | ACK!  NO!  NOT TRUE!!!!!!!!
|   | 
|   | 
|   | BOGUS!!! Do Not Listen To This Garbage!!!!!#Q@#%@#!^@$%!%$
|   +---------------
|
|   What you say works for BSD UNIX.  For Xenix, only ^H works.  For some System
|   V's, ^H and # both work.  For other System V's and for System III, only #
|   works.  "UNIX" is obviously schizoid about the whole matter...
|
|   With DEC terminals, I use DEL as a backspace under System III/V.  On any other
|   machine, I use BS.  On ALL Unixes, with ALL terminals, I use ^C as interrupt.
|   This is because on the majority of terminals I use, the backspace key is
|   larger but the DEL key is right beside it, so I usually ended up aborting
|   a program to which I had mistyped if I was typing fast.
|
|   Then again, # has its place too.  I once had to access ncoast off an LA36...
|
|   AND WILL YOU BSD'ERS STOP ACTING AS IF THE WHOLE WORLD RAN 4.xBSD ON A VAX???
|   -- 
|	       Brandon S. Allbery, moderator of comp.sources.misc
|     {{harvard,mit-eddie}!necntc,well!hoptoad,sun!mandrill!hal}!ncoast!allbery
|   ARPA: necntc!ncoast!allbery@harvard.harvard.edu  Fido: 157/502  MCI: BALLBERY
|      <<ncoast Public Access UNIX: +1 216 781 6201 24hrs. 300/1200/2400 baud>>
|			   "Mummy, what's an opinion?"
+----------

Hasn't anyone heard of 'stty erase "anychar"'?  At least on every unix
(SysV, BSD4.?, Xenix, Version 7) this will set your erase character to
whatever you want it to be.  Unless the program you're running mucks
with the tty settings (most screen oriented programs) this should
change your erase character for whatever programs are running on your
tty.

No this doesn't work for emacs, but like I said it works for most
non-screen oriented programs.
-- 
=======================================================================
| Everything should be made as simple || Jeff Lawhorn                 |
|   as possible, but no simpler.      || ...!crash!berick!jeffl       |
=======================================================================

jaym@nuchat.UUCP (09/30/87)

In article <4755@ncoast.UUCP>, allbery@ncoast.UUCP (Brandon Allbery) writes:
> What you say works for BSD UNIX.  For Xenix, only ^H works.  For some System
> V's, ^H and # both work.  For other System V's and for System III, only #
> works.  "UNIX" is obviously schizoid about the whole matter...
>
> AND WILL YOU BSD'ERS STOP ACTING AS IF THE WHOLE WORLD RAN 4.xBSD ON A VAX???

Please??! Us poor folks who can't afford the necessary licensing to run
4.xBSD, as well as those who can't run it at all on our machines, don't get
helped much by BSD-specific comments. If you're going to be BSD-specific,
PLEASE label it somehow...I'm (usually) careful to label my SysV-specific
comments...

-- 
Jay Maynard, K5ZC (@WB5BBW)...>splut!< | temporarily at uunet!nuchat!jaym
Never ascribe to malice that which can | while splut is down (@#*(&$% ST4051!!)
adequately be explained by stupidity.  | GEnie: JAYMAYNARD  CI$: 71036,1603
The opinions herein are shared by neither of my cats, much less anyone else.

aaa@mtuni.UUCP (10/02/87)

Well...I figured not enough has been said about GNU key bindings...so
I better post some news.

Just to further complicate the issue, look at the thousands of
applications that run on MS-DOS machines.  They all seem to agree on
what DEL should be used for.  It is used to delete the character
underneath the blinking cursor; in other words, it is equivalent to
C-d!!  They also all agree that Backspace (sometimes the key is
labeled "Backspace" and sometimes "<-") deletes the previous character.

When I hit DEL on DOS it deletes the next character; on UNIX/GNU it
deletes the previous one.  When I hit Backspace on DOS it deletes back
one; on UNIX/GNU it brings up Help (and if I hit ? it shows me the
alphabet!).

Life is complicated.
-- 

Aaron, mtuni!aaa, 201-957-2751

dennis@uw-warp.UUCP (Dennis Gentry) (10/02/87)

>We have a few Convergent Technologies terminals here and the DELete key
>is off on the left hand side of the keyboard, sort of where function keys
>on certain IBM keyboards are.  It's far too difficult to use that key.
>The escape key is on the far right of the keyboard on the numeric keypad.
>That is one keyboard no EMACS user could live with!
>
>G. Onufer
>University of the Pacific

This is just a short plug (and reminder) for keyboard rebinding at the
keyboard-translate-table level.  I frequently have to use a vt220,
which has the backquote key where my fingers say ESC belongs, and has
ESC up above the main keyboard in a row of function keys.  With the
following kind of lisp line in my .emacs, I can use backquote as ESC
and ESC as backquote (since I rarely use backquote, except in typing
TeX documents, where TeX-mode automatically turns my double-quotes (")
into backquotes for me).

(setq keyboard-translate-table "\001\002\003...\032'\034...XYZ[\]^_\033abc..."
                                                   ^bq goes here    ^ESC here

Of course, this precludes using the arrow keys, but since I have to
use many different terminals, some of which don't even have arrow
keys, I don't miss them.

Happy Emacsing,
-- 
Dennis.
-------
arpa:   uw-nsr!uw-warp!dennis@beaver.cs.washington.edu
usenet: {ihnp4|decvax|...}uw-beaver!uw-nsr!uw-warp!dennis

allbery@ncoast.UUCP (10/03/87)

As quoted from <8@berick.UUCP> by jeffl@berick.UUCP (Jeff Lawhorn):
+---------------
| Hasn't anyone heard of 'stty erase "anychar"'?  At least on every unix
| (SysV, BSD4.?, Xenix, Version 7) this will set your erase character to
| whatever you want it to be.
+---------------

I have yet to see a getty that lets you issue an stty command.  (Go look at
the beginning of my previous message on this subject, the one you quoted.)
-- 
	    Brandon S. Allbery, moderator of comp.sources.misc
  {{harvard,mit-eddie}!necntc,well!hoptoad,sun!mandrill!hal}!ncoast!allbery
ARPA: necntc!ncoast!allbery@harvard.harvard.edu  Fido: 157/502  MCI: BALLBERY
   <<ncoast Public Access UNIX: +1 216 781 6201 24hrs. 300/1200/2400 baud>>
	 "...he calls _that_ a `little adventure'?!"  - Cmdr. Ryker

rbj@ICST-CMR.ARPA (Root Boy Jim) (10/09/87)

   From: Dennis Gentry

   This is just a short plug (and reminder) for keyboard rebinding at the
   keyboard-translate-table level.  I frequently have to use a vt220,
   which has the backquote key where my fingers say ESC belongs, and has
   ESC up above the main keyboard in a row of function keys.  With the
   following kind of lisp line in my .emacs, I can use backquote as ESC
   and ESC as backquote (since I rarely use backquote, except in typing
   TeX documents, where TeX-mode automatically turns my double-quotes (")
   into backquotes for me).

Hmmm. I don't know why I didn't think of this, probably because I solved
the problem differently before I found about `keyboard-translate-table'.

What I did was:

(global-set-key "`" 'ESC-prefix)
(global-set-key "\e`" 'self-insert-command)

Note that there is no command bound to M-`. Typed twice, it self inserts.
Of course, this doesn't do a thing for local keymaps, and "`" will not
terminate searches, query replaces, etc.

   Of course, this precludes using the arrow keys, but since I have to
   use many different terminals, some of which don't even have arrow
   keys, I don't miss them.

Just because you translated "`" to escape doesn't mean you have to do the
reverse. Find an empty key and bind it to 'insert-tick (the writing of
which is left as an exercise).

I will probably remap tick to escape myself.

	National Bureau of Standards
	Flamer's Hotline: (301) 975-5688
Yow!  Did something bad happen or am I in a drive-in movie??

mkhaw@teknowledge-vaxc.ARPA (Mike Khaw) (10/09/87)

A good trick on a vt220 keyboard (LK201?) would be to rebind the
#$%^&* COMPOSE CHAR key to be the meta key.  X-Windows on the
Ultrix GPX manages to do this for the mouse (X likes to default
to metafied mouse buttons) -- how dey do dat?  This would particularly
be useful on a microVMS GPX in emacs, because (1) although at the
DCL level the F11 key transmits ESC like a good vt220 emulation,
(2) inside emacs, F11 transmits ESC-[23~ or some such (because
of raw mode?) forcing C-[ as meta -- and (3) neither F11 nor C-[
is particularly easy to type, wheras the COMPOSE CHAR is
always getting in the way.

Mike Khaw
-- 
internet:  mkhaw@teknowledge-vaxc.arpa
usenet:	   {uunet|sun|ucbvax|decwrl|uw-beaver}!mkhaw%teknowledge-vaxc.arpa
USnail:	   Teknowledge Inc, 1850 Embarcadero Rd, POB 10119, Palo Alto, CA 94303

karl@haddock.ISC.COM (Karl Heuer) (10/09/87)

In article <8710082121.AA02323@icst-cmr.arpa.ARPA> rbj@ICST-CMR.ARPA (Root Boy Jim) writes:
>What I did [on a terminal with a hard-to-reach ESC key] was:
>
>(global-set-key "`" 'ESC-prefix)
>(global-set-key "\e`" 'self-insert-command)
>
>Note that there is no command bound to M-`. Typed twice, it self inserts.

This also doesn't solve the problem of ESC as a secondary character: C-x ESC
and  M-ESC  still require the real ESC key in your model.

I had a similar problem on a certain braindamaged terminal that I probably
shouldn't mention by name because it bears our company's logo.  The ESC key is
hidden below the RETURN key!  (Its predecessor, the INtext I, had the same
problem.)  I hacked something using unread-command-char to make "\eE\r" (sent
by the key in the position where ESC belongs) look like ESC, and grudgingly
rebound repeat-complex-command to "\C-x\eE\r" and eval-expression to
"\e\eE\r", but kept getting bitten by things like the argument to C-h c.

I decided that the solution had to be at a lower level, and considered
redefining the read-char function.  But before I had a chance to try this, I
got myself a better terminal.

(All this was before I knew about keyboard-translate-table, and that wouldn't
have let me remap multi-character keys anyway.)

Karl W. Z. Heuer (ima!haddock!karl or karl@haddock.isc.com), The Walking Lint

elg@usl (Eric Lee Green) (10/09/87)

in article <347@nuchat.UUCP>, jaym@nuchat.UUCP (Jay Maynard) says:
> In article <4755@ncoast.UUCP>, allbery@ncoast.UUCP (Brandon Allbery) writes:
>> What you say works for BSD UNIX.  For Xenix, only ^H works.  For some System
>> V's, ^H and # both work.  For other System V's and for System III, only #
>> works.  "UNIX" is obviously schizoid about the whole matter...
>> AND WILL YOU BSD'ERS STOP ACTING AS IF THE WHOLE WORLD RAN 4.xBSD ON A VAX???

I use a Sys V machine regularly. I use the DEL key. It's easy. You
just put "stty erase ^?" in your .profile or .login (for those who
have a cshell for their Sys V machine). The reason is also easy. I
have a DEL key on my keyboard. I don't have a BACKSPACE key on my
keyboard. Wow. Now, since it's now painfully obvious that you can make
your Unix use whatever key you want for your backspace, can we cease
that part of the discussion, and just discuss how to make GNU Emacs
more respectful of the BACKSPACE key? I would suggest adding a
"emacs-help-character" variable, but I don't know of any spare control
codes left (maybe use the sequence M-? instead???).
--
Eric Green  elg@usl.CSNET       from BEYOND nowhere:
{ihnp4,cbosgd}!killer!elg,      P.O. Box 92191, Lafayette, LA 70509
{ut-sally,killer}!usl!elg     "there's someone in my head, but it's not me..."

gaynor@topaz.rutgers.edu (Silver) (10/10/87)

Posting-Front-End: GNU Emacs 18.47.22 of Tue Aug 25 1987 on topaz.rutgers.edu (berkeley-unix)


Can a key be arbitrarily redefined to be a true Meta-shift key in GNU
Emacs (rather than simply specifying it as a Meta-prefix, like
ESCAPE), and/or can ESCAPE be taught how to function as a true
Meta-shift?

I haven't done any homework, but thought the topic obscure enough to
consult the net first before possibly hours of labor.

Thanks,				 Look!
Silver.				   |
				  \|/
				   V
#######################################################################
# LOOKING FOR ENTRY-LEVELISH C/LISP PROGRAMMING, SOFTWARE ENGINEERING #
#######################################################################
  Andy Gaynor   201-545-0458   81 Hassart St, New Brunswick, NJ 08901
    gaynor@topaz.rutgers.edu   ...!rutgers!topaz.rutgers.edu!gaynor
       "There is no Editor but Emacs, and Lisp is its Prophet."

moore@UTKCS2.CS.UTK.EDU (Keith Moore) (10/10/87)

Chances are that the key you use for 'stty erase' is the same key you'd
like to use in gnumacs for 'delete-backward-char'.

I'd like to see a hook in gnumacs that makes it easy to bind the 
delete-backward-char function to the 'stty erase' key, whatever it is
when you enter gnumacs.  

Keith Moore
UT Computer Science Dept.	Internet: moore@utkcs2.cs.utk.edu
107 Ayres Hall, UT Campus	CSnet: moore@tennessee
Knoxville Tennessee		BITNET: moore@utkcs1

jpn@teddy.UUCP (John P. Nelson) (10/12/87)

>Just to further complicate the issue, look at the thousands of
>applications that run on MS-DOS machines.  They all seem to agree on
>what DEL should be used for.  It is used to delete the character
>underneath the blinking cursor; in other words, it is equivalent to
>C-d!!  They also all agree that Backspace (sometimes the key is
>labeled "Backspace" and sometimes "<-") deletes the previous character.

Well, this is not really true.  The "DELETE" key on a PC is NOT the
same as the "DEL" key on most terminals.  It does not generate the same
key value when struck (It generates an "extended keyboard code", not
the DEL value of 0x7F), and was obviously intended to be paired with
the INSERT key (just as the Page Up and Page Dn keys are paired also).

Actually, DEL IS available on the PC keyboard:  It is mapped as SHIFT "<-"
(SHIFT "Backspace").

aaa@mtuni.ATT.COM (Aaron Akman) (10/20/87)

Posting-Front-End: GNU Emacs 18.37.4 of Wed Mar  4 1987 on mtuni (usg-unix-v)



*Well, this is not really true.  The "DELETE" key on a PC is NOT the
*same as the "DEL" key on most terminals.  It does not generate the same
*key value when struck (It generates an "extended keyboard code", not
*the DEL value of 0x7F), and was obviously intended to be paired with
*the INSERT key (just as the Page Up and Page Dn keys are paired
*also).

The PC's "Delete" key is the same in the sense that it is (according
to those English experts who explained the difference between
Backspace and Delete) the *supposed* proper mnemonic for
delete-backward-char.  My point is that if you look at the 100 best
selling software packages in America (I'm afraid they're not mostly
for UNIX) they almost all use the mnemonic "Delete" to mean "delete
the character under the cursor" which is analogous to C-d in GNU.

I'm sure that the keyboard codes are exactly as you have explained.
Nevertheless, I still jump from GNU to DOS daily, and, heck, am I
confused.


-- 

Aaron, mtuni!aaa, 201-957-2751

bzs@bu-cs.BU.EDU (Barry Shein) (10/23/87)

Posting-Front-End: GNU Emacs 18.41.4 of Mon Mar 23 1987 on bu-cs (berkeley-unix)



>they almost all use the mnemonic "Delete" to mean "delete
>the character under the cursor" which is analogous to C-d in GNU.

Oh no, like the 3278...prescient delete, it only deletes what you were
*about* to type. I guess it just goes to prove that no one ever went
broke underestimating the taste of the American public...

	-Barry Shein, Boston University