/*************************************************************************
 ***                        cmdmap.c                     (JJB TEMPLAR) ***
 *** Date begun: 26/8/89.                                              ***
 *** Last modified: 26/8/89.                                           ***
 *************************************************************************/

#include <exec/types.h>

#include "cmd.h"
#include "gadg.h"

struct cmdmap   uraw[] = {              /* SHIFT and RAWKEY */
    {0x10,C_QUIT},                      /* Q */
    {0x32,C_QUIT},                      /* X */
    {0x45,C_QUIT},                      /* ESC */
    {0x13,C_SEARCH_B},                  /* R */
    {0x38,C_TOP},                       /* < */
    {0x14,C_TOP},                       /* T */
    {0x39,C_BOTTOM},                    /* > */
    {0x35,C_BOTTOM},                    /* B */
    {0x4c,C_BACK_PAGE},                 /* UP */
    {0x41,C_BACK_PAGE},                 /* <BS> */
    {0x4d,C_FORW_PAGE},                 /* DOWN */
    {0x40,C_FORW_PAGE},                 /* <SPC> */
    {0x4e,C_SRIGHT},                    /* RIGHT */
    {0x4f,C_SLEFT},                     /* LEFT */
    {0x3a,C_SEARCH_BNC},                /* ? */
    {0x25,C_ABOUT},                     /* H */
    {0x5f,C_ABOUT},                     /* <HLP> */
    {0x21,C_SEARCH_F},                  /* S */
    {0x36,C_FORW_FILE},                 /* N */
    {0x19,C_BACK_FILE},                 /* P */
    {0x34,C_VERSION},                   /* V */
    {0x44,C_FORW_LINE},                 /* CR */
    {0x37,C_SET_MARK},                  /* M */
    {0x24,C_GO_MARK},                   /* G */
    {0x05,C_PERCENT},                   /* % */
    {0x17,C_ICONIFY},                   /* I */
    {0x50,C_PRINT},                     /* F1 */
    {0x0c,C_MODE_ON},                   /* + */
    {0x5e,C_MODE_ON},                   /* + NK */
    {0x4a,C_MODE_OFF},                  /* - NK */
    {0x33,C_NEWCLI},                    /* C */
    {0x5d,C_NEWCLI},                    /* * NK */
    {0x12,C_EDITOR},                    /* E */
    {0x20,C_ADDFILE},                   /* A */
    {0xff,C_UNKNOWN}                 /* Terminator element. MUST be last */
};

struct cmdmap   lraw[] = {              /* Not SHIFT and RAWKEY */
    {0x10,C_QUIT},                      /* q */
    {0x32,C_QUIT},                      /* x */
    {0x45,C_QUIT},                      /* esc */
    {0x14,C_TOP},                       /* t */
    {0x35,C_BOTTOM},                    /* b */
    {0x13,C_SEARCH_B},                  /* r */
    {0x38,C_SEARCH_B},                  /* , */
    {0x3a,C_SEARCH_FNC},                /* / */
    {0x21,C_SEARCH_F},                  /* s */
    {0x39,C_SEARCH_F},                  /* . */
    {0x41,C_BACK_PAGE},                 /* <bsp> */
    {0x40,C_FORW_PAGE},                 /* <spc> */
    {0x4c,C_BACK_LINE},                 /* up */
    {0x44,C_FORW_LINE},                 /* CR */
    {0x4d,C_FORW_LINE},                 /* down */
    {0x4e,C_RIGHT},                     /* right */
    {0x4f,C_LEFT},                      /* left */
    {0x25,C_HELP},                      /* h */
    {0x5f,C_HELP},                      /* help */
    {0x36,C_FORW_FILE},                 /* n */
    {0x19,C_BACK_FILE},                 /* p */
    {0x34,C_VERSION},                   /* v */
    {0x0c,C_INFO},                      /* = */
    {0x37,C_SET_MARK},                  /* m */
    {0x24,C_GO_MARK},                   /* g */
    {0x00,C_GO_MARK},                   /* ` */
    {0x17,C_ICONIFY},                   /* i */
    {0x50,C_PRINT},                     /* f1 */
    {0x5e,C_MODE_ON},                   /* + NK */
    {0x0b,C_MODE_OFF},                  /* - */
    {0x4a,C_MODE_OFF},                  /* - NK */
    {0x33,C_NEWCLI},                    /* c */
    {0x5d,C_NEWCLI},                    /* * NK */
    {0x12,C_EDITOR},                    /* e */
    {0x20,C_ADDFILE},                   /* a */
    {0xff,C_UNKNOWN}                /* Terminator element. MUST be last */
};

struct cmdmap lgad[] = {
    {G_UP,C_BACK_LINE},
    {G_DOWN,C_FORW_LINE},
    {G_LEFT,C_LEFT},
    {G_RIGHT,C_RIGHT},
    {G_HELP,C_HELP},
    {G_BOOM,C_BOOM},
    {G_SEARCH,C_SEARCH_FNC},
    {G_MARK,C_SET_MARK},
    {G_MODE,C_MODE_ON},
    {G_SCROLL,C_SCROLL},

    {G_PERCENT,C_PERCENT},
    {G_VERSION,C_VERSION},
    {G_REPAINT,C_REPAINT},
    {G_PRINT,C_PRINT},
    {G_TOP,C_TOP},
    {G_BOTTOM,C_BOTTOM},
    {G_PREV,C_BACK_FILE},
    {G_FILE,C_INFO},
    {G_NEXT,C_FORW_FILE},
    {G_HSCROLL,C_HSCROLL},
    {0xff,C_UNKNOWN}
};

struct cmdmap rgad[] = {
    {G_UP,C_BACK_PAGE},
    {G_DOWN,C_FORW_PAGE},
    {G_LEFT,C_SLEFT},
    {G_RIGHT,C_SRIGHT},
    {G_HELP,C_ABOUT},
    {G_SEARCH,C_SEARCH_BNC},
    {G_MARK,C_GO_MARK},
    {G_MODE,C_MODE_OFF},
    {G_BOOM,C_ICONIFY},
    {0xff,C_UNKNOWN}
};

int     mapcmd(code,cmd) /*==============================================*/
register UBYTE  code;
register struct cmdmap  *cmd;
{
    while (cmd->command != C_UNKNOWN) {
        if (code == (UWORD)cmd->code) break;
        cmd++;
    }
    return((int)(cmd->command));
}
