[comp.sys.sun] Arrow keys and Type 4 keyboard

gfr@cobra.mitre.org (Glenn Roberts) (05/25/89)

Here's another gripe related to the new "Type-4" keyboard:  Does anyone
know how to get the arrow keys working properly when accessing an older
machine (i.e. one with a Sun Type-3 keyboard) from a newer machine (i.e.
one with a Sun Type-4 keyboard, e.g. a 386i) over the network?

The problem is that the termcap entries for ku, kr, kd and kl are
different on the two types of machines.  On a system with a Type-3
keyboard we find:

Mu|sun|Sun Microsystems Workstation console:\

	(stuff here ...)

	:ku=\E[A:kd=\E[B:kr=\E[C:kl=\E[D:\

	(more stuff ...)

but on my system with a Type-4 keyboard (a Sun 386i) there are different
definitions for key up, key down, key right, key left:

Mu|sun|Sun Microsystems Workstation console:\

	(stuff here ...)

	:ku=\E[215z:kd=\E[221z:kr=\E[219z:kl=\E[217z:\

	(more stuff ...)


The result is that when I rlogin to our Sun 3's or Sun 4's I can't
use the arrow keys !!!  Is there an obvious workaround for this that
I'm missing?

Thanks!

Glenn Roberts, The MITRE Corp., McLean VA (703) 883-6820
gfr@cobra.mitre.org

maart@uunet.uu.net (Maarten Litmaath) (06/17/89)

gfr@cobra.mitre.org (Glenn Roberts) writes:
\... On a system with a Type-3 keyboard we find:
\
\Mu|sun|Sun Microsystems Workstation console:\
\
\	(stuff here ...)
\
\	:ku=\E[A:kd=\E[B:kr=\E[C:kl=\E[D:\
\
\	(more stuff ...)
\
\but on my system with a Type-4 keyboard (a Sun 386i) there are different
\definitions for key up, key down, key right, key left:
\
\Mu|sun|Sun Microsystems Workstation console:\
\
\	(stuff here ...)
\
\	:ku=\E[215z:kd=\E[221z:kr=\E[219z:kl=\E[217z:\
\
\	(more stuff ...)

Change the Type-4 line to:

	M$|sun-t4|Sun Microsystems Workstation type 4 keyboard:\
	^^ ^^^^^^
	These identifiers aren't used yet.

Set your terminal type accordingly.
-- 
"I HATE arbitrary limits, especially when |Maarten Litmaath @ VU Amsterdam:
   they're small."  (Stephen Savitzky)    |maart@cs.vu.nl, mcvax!botter!maart

gfr@cobra.mitre.org (Glenn Roberts) (06/27/89)

Ref: v8n50

> > ..previous discussion regarded fact that the termcap entries for the
> > type 'sun' differ on the 386i and the Sun-3/4 and the problem this
> > causes (arrow keys don't work) when  rlogged in from the 386i.
> > Suggested fix was to invent a new terminal type:
>
> Change the Type-4 line to:
> 
> 	M$|sun-t4|Sun Microsystems Workstation type 4 keyboard:\
> 	^^ ^^^^^^
> 	These identifiers aren't used yet.
>
> Set your terminal type accordingly.

Yes, but the problem is that I am not the administrator on many (most?) of
the Sun 3/4 systems I deal with.  Inventing a new terminal type means that
I would have to convince everyone I deal with to put that entry into their
termcaps and to do so on all new machines as they are installed.

I have been told that 'setkeys noarrows' is supposed to do what I want,
but the 'setkeys' program is not available on the 386i (no it is not in
/usr/old or the 'old' cluster).  The replacement for 'setkeys' is supposed
to be 'loadkeys', but as far as I can tell, loadkeys would only let me
change which key produces the logical function 'uparrow' - what I need to
do is change the meaning of 'uparrow' from \E[215z to \E[A.  Likewise for
the other arrow key functions.

There's got to be an easy way to do this.  Does anyone out there log into
a Sun 3 or 4 from their 386i?  Do arrow keys work for you?

- Glenn Roberts, MITRE
  groberts@mitre.org

guy@uunet.uu.net (Guy Harris) (06/28/89)

>Here's another gripe related to the new "Type-4" keyboard:

No, it's not.  The keyboard does *NOT* transmit escape sequences on the
serial port on its cable; it transmits "up/down" codes, which are 7 bits
of keystation number (completely unrelated to the character on the key),
and one bit of up/down indication.

Various pieces of software (the keyboard driver software when running on
the bare console or under SunView, and various bits of client and/or
server code when running under X11 or NeWS) translate those up/down codes
into event codes and characters, ultimately into the escape sequences
listed in the "termcap" entries.

There is a SunView preference item settable from "defaultsedit" that
specifies whether the translation table in the keyboard driver should be
set up to make the arrow keys act as arrow keys (i.e., give the ANSI
escape sequences for cursor motion, like <ESC>[A and so on) or function
keys (R8, R10, R12, R14 - which are the <ESC>[215z and the like).  It's
the "Arrow_keys" item in the "Input" category.

The problem you're having appears to be that somebody in Sun East Coast
Division decided to make the 386i SunOS version of "/etc/termcap"
different from the one on the rest of SunOS - SunOS on the West Coast
("big-endian") Sun-[234] machines has "ku" and company defined as arrow
keys, regardless of whether the machine has a Type 3 or Type 4 keyboard. 

What you want to do is:

	1) make sure the Arrow_keys entry says "set up the keys as arrow
	   keys and not Rn function keys";

	2) change the "termcap" and "terminfo" entries on the 386i to
	   match those on the big-endian Suns;

	3) send a message to the people in Sun ECD telling them to put
	   the 386i back the way the rest of the product line is.