⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 g_input.c

📁 The source code of Doom legacy for windows
💻 C
📖 第 1 页 / 共 2 页
字号:
    {KEY_2MOUSE1,  "SEC_MOUSE2"},    //BP: sorry my mouse handler swap button 1 and 2    {KEY_2MOUSE1+1,"SEC_MOUSE1"},    {KEY_2MOUSE1+2,"SEC_MOUSE3"},    {KEY_2MOUSE1+3,"SEC_MOUSE4"},    {KEY_MOUSEWHEELUP,"Wheel 1 UP"},    {KEY_MOUSEWHEELDOWN,"Wheel 1 Down"},    {KEY_2MOUSEWHEELUP,"Wheel 2 UP"},    {KEY_2MOUSEWHEELDOWN,"Wheel 2 Down"},    {KEY_JOY1,  "JOY1"},    {KEY_JOY1+1,"JOY2"},    {KEY_JOY1+2,"JOY3"},    {KEY_JOY1+3,"JOY4"},    {KEY_JOY1+4,"JOY5"},    {KEY_JOY1+5,"JOY6"},    // we use up to 10 buttons in DirectInput    {KEY_JOY1+6,"JOY7"},    {KEY_JOY1+7,"JOY8"},    {KEY_JOY1+8,"JOY9"},    {KEY_JOY1+9,"JOY10"},    // the DOS version uses Allegro's joystick support    // the Hat is reported as extra buttons    {KEY_JOY1+10,"HATUP"},    {KEY_JOY1+11,"HATDOWN"},    {KEY_JOY1+12,"HATLEFT"},    {KEY_JOY1+13,"HATRIGHT"},    {KEY_DBLMOUSE1,   "DBLMOUSE1"},    {KEY_DBLMOUSE1+1, "DBLMOUSE2"},    {KEY_DBLMOUSE1+2, "DBLMOUSE3"},    {KEY_DBLMOUSE1+3, "DBLMOUSE4"},    {KEY_DBL2MOUSE1,  "DBLSEC_MOUSE2"},  //BP: sorry my mouse handler swap button 1 and 2    {KEY_DBL2MOUSE1+1,"DBLSEC_MOUSE1"},    {KEY_DBL2MOUSE1+2,"DBLSEC_MOUSE3"},    {KEY_DBL2MOUSE1+3,"DBLSEC_MOUSE4"},    {KEY_DBLJOY1,  "DBLJOY1"},    {KEY_DBLJOY1+1,"DBLJOY2"},    {KEY_DBLJOY1+2,"DBLJOY3"},    {KEY_DBLJOY1+3,"DBLJOY4"},    {KEY_DBLJOY1+4,"DBLJOY5"},    {KEY_DBLJOY1+5,"DBLJOY6"},};char *gamecontrolname[num_gamecontrols] ={    "nothing",        //a key/button mapped to gc_null has no effect    "forward",    "backward",    "strafe",    "straferight",    "strafeleft",    "speed",    "turnleft",    "turnright",    "fire",    "use",    "lookup",    "lookdown",    "centerview",    "mouseaiming",    "weapon1",    "weapon2",    "weapon3",    "weapon4",    "weapon5",    "weapon6",    "weapon7",    "weapon8",    "talkkey",    "scores",    "jump",    "console",    "nextweapon",    "prevweapon",    "inventorynext",    "inventoryprev",    "inventoryuse",    "down"};#define NUMKEYNAMES (sizeof(keynames)/sizeof(keyname_t))////  Detach any keys associated to the given game control//  - pass the pointer to the gamecontrol table for the player being editedvoid  G_ClearControlKeys (int (*setupcontrols)[2], int control){    setupcontrols[control][0] = KEY_NULL;    setupcontrols[control][1] = KEY_NULL;}////  Returns the name of a key (or virtual key for mouse and joy)//  the input value being an keynum//char* G_KeynumToString (int keynum){static char keynamestr[8];    int    j;    // return a string with the ascii char if displayable    if (keynum>' ' && keynum<='z' && keynum!=KEY_CONSOLE)    {        keynamestr[0] = keynum;        keynamestr[1] = '\0';        return keynamestr;    }    // find a description for special keys    for (j=0;j<NUMKEYNAMES;j++)        if (keynames[j].keynum==keynum)            return keynames[j].name;    // create a name for Unknown key    sprintf (keynamestr,"KEY%d",keynum);    return keynamestr;}int G_KeyStringtoNum(char *keystr){    int j;//    strupr(keystr);    if(keystr[1]==0 && keystr[0]>' ' && keystr[0]<='z')        return keystr[0];    for (j=0;j<NUMKEYNAMES;j++)        if (stricmp(keynames[j].name,keystr)==0)            return keynames[j].keynum;    if(strlen(keystr)>3)        return atoi(&keystr[3]);    return 0;}void G_Controldefault(void){    gamecontrol[gc_forward    ][0]=KEY_UPARROW;    gamecontrol[gc_forward    ][1]=KEY_MOUSE1+2;    gamecontrol[gc_backward   ][0]=KEY_DOWNARROW;    gamecontrol[gc_strafe     ][0]=KEY_ALT;    gamecontrol[gc_strafe     ][1]=KEY_MOUSE1+1;    gamecontrol[gc_straferight][0]='.';    gamecontrol[gc_strafeleft ][0]=',';    gamecontrol[gc_speed      ][0]=KEY_SHIFT;    gamecontrol[gc_turnleft   ][0]=KEY_LEFTARROW;    gamecontrol[gc_turnright  ][0]=KEY_RIGHTARROW;    gamecontrol[gc_fire       ][0]=KEY_CTRL;    gamecontrol[gc_fire       ][1]=KEY_MOUSE1;    gamecontrol[gc_use        ][0]=KEY_SPACE;    gamecontrol[gc_lookup     ][0]=KEY_PGUP;    gamecontrol[gc_lookdown   ][0]=KEY_PGDN;    gamecontrol[gc_centerview ][0]=KEY_END;    gamecontrol[gc_mouseaiming][0]='s';    gamecontrol[gc_weapon1    ][0]='1';    gamecontrol[gc_weapon2    ][0]='2';    gamecontrol[gc_weapon3    ][0]='3';    gamecontrol[gc_weapon4    ][0]='4';    gamecontrol[gc_weapon5    ][0]='5';    gamecontrol[gc_weapon6    ][0]='6';    gamecontrol[gc_weapon7    ][0]='7';    gamecontrol[gc_weapon8    ][0]='8';    gamecontrol[gc_talkkey    ][0]='t';    gamecontrol[gc_scores     ][0]='f';    gamecontrol[gc_jump       ][0]='/';    gamecontrol[gc_console    ][0]=KEY_CONSOLE;    gamecontrol[gc_nextweapon ][1]=KEY_JOY1+4;    gamecontrol[gc_prevweapon ][1]=KEY_JOY1+5;    if( gamemode == heretic )    {        gamecontrol[gc_invnext    ][0] = ']';        gamecontrol[gc_invprev    ][0] = '[';        gamecontrol[gc_invuse     ][0] = KEY_ENTER;        gamecontrol[gc_jump       ][0] = KEY_INS;        gamecontrol[gc_flydown    ][0] = KEY_DEL;    }    else    {        gamecontrol[gc_nextweapon ][0]=']';        gamecontrol[gc_prevweapon ][0]='[';    }}void G_SaveKeySetting(FILE *f){    int i;    for(i=1;i<num_gamecontrols;i++)       {           fprintf(f,"setcontrol \"%s\" \"%s\""                    ,gamecontrolname[i]                    ,G_KeynumToString(gamecontrol[i][0]));           if(gamecontrol[i][1])               fprintf(f," \"%s\"\n"                        ,G_KeynumToString(gamecontrol[i][1]));           else               fprintf(f,"\n");       }    for(i=1;i<num_gamecontrols;i++)       {           fprintf(f,"setcontrol2 \"%s\" \"%s\""                    ,gamecontrolname[i]                    ,G_KeynumToString(gamecontrolbis[i][0]));           if(gamecontrolbis[i][1])               fprintf(f," \"%s\"\n"                        ,G_KeynumToString(gamecontrolbis[i][1]));           else               fprintf(f,"\n");       }}void G_CheckDoubleUsage(int keynum){    if( cv_controlperkey.value==1 )    {        int i;        for(i=0;i<num_gamecontrols;i++)        {            if( gamecontrol[i][0]==keynum )                gamecontrol[i][0]= KEY_NULL;            if( gamecontrol[i][1]==keynum )                gamecontrol[i][1]= KEY_NULL;            if( gamecontrolbis[i][0]==keynum )                gamecontrolbis[i][0]= KEY_NULL;            if( gamecontrolbis[i][1]==keynum )                gamecontrolbis[i][1]= KEY_NULL;        }    }}void setcontrol(int (*gc)[2],int na){    int numctrl;    char *namectrl;    int keynum;    namectrl=COM_Argv(1);    for(numctrl=0;numctrl<num_gamecontrols                  && stricmp(namectrl,gamecontrolname[numctrl])                 ;numctrl++);    if(numctrl==num_gamecontrols)    {        CONS_Printf("Control '%s' unknown\n",namectrl);        return;    }    keynum=G_KeyStringtoNum(COM_Argv(2));    G_CheckDoubleUsage(keynum);    gc[numctrl][0]=keynum;    if(na==4)        gc[numctrl][1]=G_KeyStringtoNum(COM_Argv(3));    else        gc[numctrl][1]=0;}void Command_Setcontrol_f(void){    int na;    na= COM_Argc();    if ( na!= 3 && na!=4)    {        CONS_Printf ("setcontrol <controlname> <keyname> [<2nd keyname>]\n");        return;    }    setcontrol(gamecontrol,na);}void Command_Setcontrol2_f(void){    int na;    na= COM_Argc();    if ( na!= 3 && na!=4)    {        CONS_Printf ("setcontrol2 <controlname> <keyname> [<2nd keyname>]\n");        return;    }    setcontrol(gamecontrolbis,na);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -