* 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 "../ascii/ascebc.h"
#include "../ctlr/ebc_disp.h"
#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
]);