conrad@jupiter.ucsc.edu (Al Conrad) (01/31/89)
Well, my NeWS1.1 port is very close to complete. All the mouse interaction
works, all of the server/client socket stuff works, but only half of the
keyboard stuff works (specifically: upper and lower case A through Z, the
digits 0 through 9, back space, and carriage return).
I started with lk201keys.ps and, since I've only got access to the ASCII
values generated by the keyboard in my KbEventsHaveSelected() service
routine, I just used those values for the postion field of each keyboard
character. For example,
(A) toChar [65 /keystation unshifted] def
My KbEventsHaveSelected() code just does an up and down transition for most
characters with a faked shift key for upper case alpha (see attached C code).
So, for some reason punctation and most control characters don't work, despite
all of my experiments with /anydown, /controlled, etc. Admittedly, I am
hacking here and not taking the time to thoroughly understand UI.ps. Possibly
there is some documentation I am missing?
Help me, oh UI.ps guru(s). Only two weeks to connectathon!
Al Conrad
conrad@saturn.ucsc.edu
------------------------------------------------------------------------------
void
make_events_for_ascii( eventp, ascii, _nevents )
struct inputevent *eventp;
unsigned char ascii;
int *_nevents;
{
if ( isalpha( ascii ) )
if ( islower( ascii ) ) {
mkevent( eventp, toupper( ascii ),
0, 0, (int) x, (int) y,
(*_nevents) );
eventp->ie_shiftmask = 0;
mkevent( eventp, toupper( ascii ),
IE_NEGEVENT, 0, (int) x, (int) y,
(*_nevents) );
}
else {
mkevent( eventp, SHIFTCHAR,
0, 0, (int) x, (int) y,
(*_nevents) );
eventp->ie_shiftmask = 0;
mkevent( eventp, ascii & 0x7F,
0, 0, (int) x, (int) y,
(*_nevents) );
eventp->ie_shiftmask = 0;
mkevent( eventp, ascii & 0x7F,
IE_NEGEVENT, 0, (int) x, (int) y,
(*_nevents) );
eventp->ie_shiftmask = 0;
mkevent( eventp, SHIFTCHAR,
IE_NEGEVENT, 0, (int) x, (int) y,
(*_nevents) );
}
else {
mkevent( eventp, ascii & 0x7F,
0, 0, (int) x, (int) y,
(*_nevents) );
eventp->ie_shiftmask = 0;
mkevent( eventp, ascii & 0x7F,
IE_NEGEVENT, 0, (int) x, (int) y,
(*_nevents) );
}
}