* Copyright (c) 1988 Regents of the University of California.
* Redistribution and use in source and binary forms are permitted
* provided that the above copyright notice and this paragraph are
* duplicated in all such forms and that any documentation,
* advertising materials, and other materials related to such
* distribution and use acknowledge that the software was developed
* by the University of California, Berkeley. The name of the
* University may not be used to endorse or promote products derived
* from this software without specific prior written permission.
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
"@(#) Copyright (c) 1988 Regents of the University of California.\n\
static char sccsid
[] = "@(#)mkhits.c 4.1 (Berkeley) 12/4/88";
* 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
]);