* Copyright (c) 1984-1987 by the Regents of the
* University of California and by Gregory Glenn Minshall.
* Permission to use, copy, modify, and distribute these
* programs and their documentation for any purpose and
* without fee is hereby granted, provided that this
* copyright and permission appear on all copies and
* supporting documentation, the name of the Regents of
* the University of California not be used in advertising
* or publicity pertaining to distribution of the programs
* without specific prior permission, and notice be given in
* supporting documentation that copying and distribution is
* by permission of the Regents of the University of California
* and by Gregory Glenn Minshall. Neither the Regents of the
* University of California nor Gregory Glenn Minshall make
* representations about the suitability of this software
* for any purpose. It is provided "as is" without
* express or implied warranty.
static char sccsid
[] = "@(#)mkhits.c 1.7 (Berkeley) %G%";
* This program scans a file which describes a keyboard. The output
* of the program is a series of 'C' declarations which describe a
* mapping between (scancode, shiftstate, altstate) and 3270 functions,
* The format of the input file is as follows:
* keynumber [ scancode [ unshifted [ shifted [ alted [ shiftalted ] ] ] ] ]
* keynumber is in decimal, and starts in column 1.
* scancode is hexadecimal.
* unshifted, etc. - these are either a single ascii character,
* or the name of a function or an AID-generating key.
* all fields are separated by a single space.
#else /* defined(unix) */
#endif /* defined(unix) */
#include "../ctlr/function.h"
char *aidfile
= 0, *fcnfile
= 0;
dohits(aidfile
, fcnfile
); /* Set up "Hits" */
printf("struct hits hits[] = {\n");
for (Ph
= Hits
; Ph
< Hits
+(sizeof Hits
/sizeof Hits
[0]); Ph
++) {
if ((ph
->hit
[0].ctlrfcn
== undefined
)
&& (ph
->hit
[1].ctlrfcn
== undefined
)
&& (ph
->hit
[2].ctlrfcn
== undefined
)
&& (ph
->hit
[3].ctlrfcn
== undefined
)) {
printf("\t{ 0, { {undefined}, {undefined}");
printf(", {undefined}, {undefined} } },\n");
printf("\t{ %d, {\t/* 0x%02x */\n\t", ph
->keynumber
, scancode
);
for (i
= 0; i
< 4; i
++) {
switch (ph
->hit
[i
].ctlrfcn
) {
printf("FCN_CHARACTER, 0x%02x", ph
->hit
[i
].code
);
printf("FCN_AID, %s", Ph
->name
[i
]);
&& (strcmp(Ph
->name
[i
], "FCN_NULL") != 0)) {
printf("%s", Ph
->name
[i
]);