[comp.sys.mac] Keyboard

chris@mimsy.UUCP (Chris Torek) (06/15/88)

In article <5042@sdcsvax.UCSD.EDU> hutch@net1.ucsd.edu (Jim Hutchison) writes:
[spelling edited :-)]
>By the way, is there a fix for the parallelogram keyboard problem?
>I mean the one where I type nice too fast, and pick up the comma to go with
>the "ice".  I am not sure what this is.

Whether and how this happens depends on the keyboard arrangement.
Many keyboard scanners make a matrix from the keyboard:

	   d0    d1    d2    d3    d4    d5    d6    d7
	    |     |     |     |     |     |     |     |
      a0---[ ]---[ ]---[ ]---[ ]---[ ]---[ ]---[ ]---[ ]---
	    |     |     |     |     |     |     |     |
      a1---[ ]---[ ]---[ ]---[ ]---[ ]---[ ]---[ ]---[ ]---
	    |     |     |     |     |     |     |     |
      a2---[@]---[A]---[B]---[C]---[D]---[E]---[F]---[G]---
	    |     |     |     |     |     |     |     |
      a3---[H]---[I]---[J]---[K]---[L]---[M]---[N]---[O]---
	    |     |     |     |     |     |     |     |
      a4---[P]---[Q]---[R]---[S]---[T]---[U]---[V]---[W]---
	    |     |     |     |     |     |     |     |
      a5---[X]---[Y]---[Z]---[ ]---[ ]---[ ]---[ ]---[ ]---
	    |     |     |     |     |     |     |     |
      a6---[ ]---[ ]---[ ]---[ ]---[ ]---[ ]---[ ]---[ ]---
	    |     |     |     |     |     |     |     |
      a7---[ ]---[ ]---[ ]---[ ]---[ ]---[ ]---[ ]---[ ]---
	    |     |     |     |     |     |     |     |

(The exact placement of the keys varies.)  This conveniently produces
64 keys (enough for 56 key keyboards) arranged on an eight(-data)-bit
by eight(-address)-bit grid.  If each keyswitch simply shorts the
address line to the data line, the keyboard can be scanned with a loop
like the following:

	#define KEYBOARD ((char *)0x3800) /* on a TRS-80, eg */
	for (r = 0; r < 8; r++)
		for (c = 0; c < 8; c++)
			if (KEYBOARD[1 << r] & (1 << c))
				/* the key at (r,c) is down */;

(Of course, the scan loop must account for keys that are held down for
some time, and possibly do debouncing, and all sorts of other grungy
work.  But none of that matters in regard to the `parallelogram
problem'.)

Now, given the keyboard arrangement shown above, if push down A, I, and
M to type `aim', I have shorted the following pairs:  (a2,d1) [A]
(a3,d1) [I] (a3,d5) [M].  By so doing I have effectively also shorted
(a2,d5): current can flow from a2 via d1 to a3 ([A] then [I]), then
from a3 to d5 ([M]).  Even though I only put current directly on a2, it
`leaks' to a3 and from there it gets to d5, so my scanner sees [E]
down and I wind up typing `aiem'.

There are two ways to fix it.  As usual, it can be done in either
software or hardware.  The software solution is uglier: scan the whole
keyboard before deciding that any given key is down.  If keys are down
in a parallelogram (as defined by the actual arrangement, which is
often not alphabetical), wait for enough of those keys to be released
to be sure as to which ones are really down.  (An easy variation
is to wait whenever more than two keys are down.)  The hardware
solution is more expensive: add diodes at the keyswitches, so that
current cannot flow across the parallelogram.
-- 
In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (+1 301 454 7163)
Domain:	chris@mimsy.umd.edu	Path:	uunet!mimsy!chris

ccasths@pyr.gatech.EDU (Scott Hinckley) (06/18/88)

In article <11972@mimsy.UUCP> chris@mimsy.UUCP (Chris Torek) writes:
>In article <5042@sdcsvax.UCSD.EDU> hutch@net1.ucsd.edu (Jim Hutchison) writes:
>[spelling edited :-)]
>>By the way, is there a fix for the parallelogram keyboard problem?
>>I mean the one where I type nice too fast, and pick up the comma to go with
>>the "ice".  I am not sure what this is.
>Whether and how this happens depends on the keyboard arrangement.
>In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (+1 301 454 7163)
>Domain:	chris@mimsy.umd.edu	Path:	uunet!mimsy!chris

I also like (on my Laser 128) getting lisqt instead of list if I type it in
too fast.

+=======================================================================+
|Scott Hinckley - OCS User Assistant    AKA - Galaxy's End              |
|Georgia Insitute of Technology, Atlanta Georgia, 30332                 |
|uucp: ...!gatech!pyr!ccasths                                           |
|ARPA: ccasths@pyr.gatech.edu                                           |
+=======================================================================+

jm7e+@andrew.cmu.edu (Jeremy G. Mereness) (06/19/88)

Now that all the rumors about the GS+ have exhausted themselves, I amn
beginning wonder if Apple has ever considered redesigning the gs Keyboard?

I'd like some input to this, as everyone has their own tasted for their
fingers, but comparing sizes, the GS keyboard has a smaller surface area per
key and a smaller and less-damped throw than the keyboard on the //c.

I know Mac keyboards can be hooked up via ADB, but they seem to have all the
problems that the GS board doesn't; i.e. "mushy" keys (they wiggle back and
forth, too, raising the chance of pressing two keys at once). Worst of all,
none of them from what I have seen are reconfigurable.

The best keybaord I have ever used (apart from a selectric) is on the IBM-RT.
It takes a little while, and feels mushy at first, but each key is well defined
from its neighbors, doesn't wobble, has a click that can't be heard but can
easily be felt (turn the speaker off though, it'll drive you nuts), and can be
completely reconfigured to anything, function keys included, inclusing a swap
feature. Too bad IBM isn't putting these things on their PS/2's; must be a
completely different bunch of people from the old RT folks....

I would like this fall to bring some really Great keyboards to the Apple world.
Up till now, the only thing Apple has produced that ever impressed my fingers
was the old Mac Plus keyboard, and it was pretty stiff.


Capt. Albatross
jm7e+@andrew.cmu.edu

============
disclaimer: These opinions are mine and will remain so until more intelligent
or insightful or informed people are kind enough to show me the error of my
ways.
Remember: A mind is a terrible thing to baste.