📄 g_input.c
字号:
{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 + -