[comp.windows.news] Keyboard handling

putnam@thuban.steinmetz (putnam) (07/02/87)

Im more than a little bothered by the keyboard handling in NeWS.  The
keyboard handling that is already in it is ok for most vanilla stuff
and emulates terminal (ie vt100) keyboard handling acceptably (with
one exception) - but im not sure that is enough for major windowing
applications.

The first problem with keyboard handling is the lack of auto-repeat
on keys.  That is, if i hold down the "f" key, i expect to get
"fffffff" until i take it up with some reasonable time between the
"f"'s.  This does not happen and i have looked at the keyboard handling
code and dont see offhand just where to put it.  I thought it might be
nice to put it in the terminal handling at least for psterm - but that
would require even more hackery as there is no provision for handling
"up" events.  Not impossible, just painful.

A more fundamental problem seems to be the handling of
shift-control-meta type keys.  Currently the shift and control keys
are encoded when you get the event (so that "shift-a" becomes "A" and
so forth), the meta key is ignored here.  It is certainly possible to
get the values of the shift, control, meta keys - but is more work
(look for shift_keys_down, and so forth in dictionary UI_private).
But at this point the key has already been encoded for you and it may
be more difficult to get at what you want - that is if you really
want to deal with control-shift-meta-left-overshoe-x.  Again, its
not impossible to get this stuff - but i think the X model is simpler
and easier to deal with - though it does require more work on the part
of the client to handle.

I imagine that one of the reasons for doing things this way is to 
help to unify the user interface - so that most user interfaces look
similar - and this is a laudable goal - but is this the right level
at which to do it?

Any thoughts?


Well, shall we go?  -- jefu (jeff putnam)
Yes, lets go.       -- UUCP: steinmetz!putnam
(They do not move.) -- ARPA: putnam@ge-crd.com

rxb@ascway.UUCP (Rafael Bracho) (07/07/87)

Date: 6 Jul 1987 08:28-PST
From: Rafael Bracho <spar!ascway.UUCP!rxb@decwrl.dec.com>
Subject: Re: keyboard handling
To: uunet!steinmetz!thuban!putnam@seismo.css.gov  (putnam)
Cc: news-makers@brillig.umd.edu

Jeff,

I agree with you in that auto-repeat is an important feature missing
from NeWS 1.0; mind you, it was present in most of the older beta tapes.
Hopefully Sun will re-instate auto-repeat soon.

As for the shift keys, there is a field in the events called KeyState
which is an array of both keywords and numbers, corresponding to the
raw data obtained from the keyboard.  Thus the following event handler
returns a byte encoding the state of the keyboard (recall that the
event is put on the stack by NeWS before calling your handler):

	/HandleMouseClick {	% event => -
	    begin
	    0			% The byte we'll modify
	    KeyState length 0 ne {
		KeyState {
		    dup /Meta eq {
			pop 2#00010000 or
		    } {
			dup /Control eq {
			    pop 2#00001000 or
			} {
			    /Shift eq { 2#00000100 or } if
			} ifelse
		    } ifelse
		} forall
	    } if
	    end
	} def

(Note that I don't use a case statement because I've found it too slow
for inner-loop applications.)

There is one more problem I've found.  Often NeWS misses a shift key
completely, thus you get lowercase when you meant uppercase, or the
string "xs" is inserted in your emacs buffer when you meant to save the
file.  This seems to be a synchronization problem, but I haven't had
time to track it down.

					Rafael Bracho
					RXB@SPAR-20.ARPA

ian@wcwvax.UUCP (Ian Kemmish) (07/11/87)

From: Ian Kemmish <mcvax!wcwvax!ian@seismo.CSS.GOV>
Date: Thu, 9 Jul 87 11:00:23 +0100
To: news-makers@brillig.umd.edu
Subject: Re: Keyboard handling


Hmmm.  We've got NeWS running on machines with cheap IBM clone
keyboards on them. (Well, it's one way to keep costs down!)
These auto-repeat whether you like it or not, so we definitely
don't want the window manager to start repeating keys as well. . .
If Sun re-instate auto-repeat keys in NeWS, I hope they do it
portably!