mirror of
https://git.code.sf.net/p/quake/quakeforge-old
synced 2024-11-10 06:31:56 +00:00
Support for a few more keys, and more importantly real support for the
wheel!!! Some more tweaks to the speed cheat prevention..
This commit is contained in:
parent
a09bf9b081
commit
a227f53163
4 changed files with 200 additions and 174 deletions
|
@ -44,6 +44,8 @@ static float mouse_x, mouse_y;
|
|||
static float old_mouse_x, old_mouse_y;
|
||||
static int mx, my;
|
||||
|
||||
static void IN_init_kb();
|
||||
static void IN_init_mouse();
|
||||
|
||||
cvar_t _windowed_mouse = {"_windowed_mouse", "1", true};
|
||||
cvar_t m_filter = {"m_filter","0"};
|
||||
|
@ -97,12 +99,18 @@ keyhandler(int scancode, int state)
|
|||
}
|
||||
|
||||
|
||||
static void
|
||||
mousehandler(int buttonstate, int dx, int dy)
|
||||
static void mousehandler(int buttonstate, int dx, int dy, int dz, int drx, int dry, int drz)
|
||||
{
|
||||
mouse_buttonstate = buttonstate;
|
||||
mx += dx;
|
||||
my += dy;
|
||||
if (drx > 0) {
|
||||
Key_Event(K_MWHEELUP, 1);
|
||||
Key_Event(K_MWHEELUP, 0);
|
||||
} else if (drx < 0) {
|
||||
Key_Event(K_MWHEELDOWN, 1);
|
||||
Key_Event(K_MWHEELDOWN, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -113,171 +121,177 @@ Force_CenterView_f(void)
|
|||
}
|
||||
|
||||
|
||||
void
|
||||
IN_Init(void)
|
||||
void IN_Init(void)
|
||||
{
|
||||
int i;
|
||||
int mtype;
|
||||
char *mousedev;
|
||||
int mouserate = MOUSE_DEFAULTSAMPLERATE;
|
||||
|
||||
if (COM_CheckParm("-nokbd")) UseKeyboard = 0;
|
||||
if (COM_CheckParm("-nomouse")) UseMouse = 0;
|
||||
|
||||
if (UseKeyboard) {
|
||||
for (i=0 ; i<128 ; i++) {
|
||||
scantokey[i] = ' ';
|
||||
}
|
||||
|
||||
scantokey[ 1] = K_ESCAPE;
|
||||
scantokey[ 2] = '1';
|
||||
scantokey[ 3] = '2';
|
||||
scantokey[ 4] = '3';
|
||||
scantokey[ 5] = '4';
|
||||
scantokey[ 6] = '5';
|
||||
scantokey[ 7] = '6';
|
||||
scantokey[ 8] = '7';
|
||||
scantokey[ 9] = '8';
|
||||
scantokey[ 10] = '9';
|
||||
scantokey[ 11] = '0';
|
||||
scantokey[ 12] = '-';
|
||||
scantokey[ 13] = '=';
|
||||
scantokey[ 14] = K_BACKSPACE;
|
||||
scantokey[ 15] = K_TAB;
|
||||
scantokey[ 16] = 'q';
|
||||
scantokey[ 17] = 'w';
|
||||
scantokey[ 18] = 'e';
|
||||
scantokey[ 19] = 'r';
|
||||
scantokey[ 20] = 't';
|
||||
scantokey[ 21] = 'y';
|
||||
scantokey[ 22] = 'u';
|
||||
scantokey[ 23] = 'i';
|
||||
scantokey[ 24] = 'o';
|
||||
scantokey[ 25] = 'p';
|
||||
scantokey[ 26] = '[';
|
||||
scantokey[ 27] = ']';
|
||||
scantokey[ 28] = K_ENTER;
|
||||
scantokey[ 29] = K_CTRL; /*left */
|
||||
scantokey[ 30] = 'a';
|
||||
scantokey[ 31] = 's';
|
||||
scantokey[ 32] = 'd';
|
||||
scantokey[ 33] = 'f';
|
||||
scantokey[ 34] = 'g';
|
||||
scantokey[ 35] = 'h';
|
||||
scantokey[ 36] = 'j';
|
||||
scantokey[ 37] = 'k';
|
||||
scantokey[ 38] = 'l';
|
||||
scantokey[ 39] = ';';
|
||||
scantokey[ 40] = '\'';
|
||||
scantokey[ 41] = '`';
|
||||
scantokey[ 42] = K_SHIFT; /*left */
|
||||
scantokey[ 43] = '\\';
|
||||
scantokey[ 44] = 'z';
|
||||
scantokey[ 45] = 'x';
|
||||
scantokey[ 46] = 'c';
|
||||
scantokey[ 47] = 'v';
|
||||
scantokey[ 48] = 'b';
|
||||
scantokey[ 49] = 'n';
|
||||
scantokey[ 50] = 'm';
|
||||
scantokey[ 51] = ',';
|
||||
scantokey[ 52] = '.';
|
||||
scantokey[ 53] = '/';
|
||||
scantokey[ 54] = K_SHIFT; /*right */
|
||||
scantokey[ 55] = KP_MULTIPLY; /*keypad */
|
||||
scantokey[ 56] = K_ALT; /*left */
|
||||
scantokey[ 57] = ' ';
|
||||
/* 58 caps lock */
|
||||
scantokey[ 59] = K_F1;
|
||||
scantokey[ 60] = K_F2;
|
||||
scantokey[ 61] = K_F3;
|
||||
scantokey[ 62] = K_F4;
|
||||
scantokey[ 63] = K_F5;
|
||||
scantokey[ 64] = K_F6;
|
||||
scantokey[ 65] = K_F7;
|
||||
scantokey[ 66] = K_F8;
|
||||
scantokey[ 67] = K_F9;
|
||||
scantokey[ 68] = K_F10;
|
||||
/* 69 numlock */
|
||||
/* 70 scrollock */
|
||||
scantokey[ 71] = KP_HOME;
|
||||
scantokey[ 72] = KP_UPARROW;
|
||||
scantokey[ 73] = KP_PGUP;
|
||||
scantokey[ 74] = KP_MINUS;
|
||||
scantokey[ 75] = KP_LEFTARROW;
|
||||
scantokey[ 76] = KP_5;
|
||||
scantokey[ 77] = KP_RIGHTARROW;
|
||||
scantokey[ 79] = KP_END;
|
||||
scantokey[ 78] = KP_PLUS;
|
||||
scantokey[ 80] = KP_DOWNARROW;
|
||||
scantokey[ 81] = KP_PGDN;
|
||||
scantokey[ 82] = KP_INS;
|
||||
scantokey[ 83] = KP_DEL;
|
||||
/* 84 to 86 not used */
|
||||
scantokey[ 87] = K_F11;
|
||||
scantokey[ 88] = K_F12;
|
||||
/* 89 to 95 not used */
|
||||
scantokey[ 96] = KP_ENTER; /* keypad enter */
|
||||
scantokey[ 97] = K_CTRL; /* right */
|
||||
scantokey[ 98] = KP_DIVIDE;
|
||||
scantokey[ 99] = K_F12; /* print screen, bind to screenshot by default */
|
||||
scantokey[100] = K_ALT; /* right */
|
||||
|
||||
scantokey[101] = K_PAUSE; /* break */
|
||||
scantokey[102] = K_HOME;
|
||||
scantokey[103] = K_UPARROW;
|
||||
scantokey[104] = K_PGUP;
|
||||
scantokey[105] = K_LEFTARROW;
|
||||
scantokey[106] = K_RIGHTARROW;
|
||||
scantokey[107] = K_END;
|
||||
scantokey[108] = K_DOWNARROW;
|
||||
scantokey[109] = K_PGDN;
|
||||
scantokey[110] = K_INS;
|
||||
scantokey[111] = K_DEL;
|
||||
scantokey[119] = K_PAUSE;
|
||||
|
||||
if (keyboard_init()) {
|
||||
Sys_Error("keyboard_init() failed");
|
||||
}
|
||||
keyboard_seteventhandler(keyhandler);
|
||||
}
|
||||
|
||||
if (UseMouse) {
|
||||
Cvar_RegisterVariable(&mouse_button_commands[0]);
|
||||
Cvar_RegisterVariable(&mouse_button_commands[1]);
|
||||
Cvar_RegisterVariable(&mouse_button_commands[2]);
|
||||
Cvar_RegisterVariable(&m_filter);
|
||||
Cmd_AddCommand("force_centerview", Force_CenterView_f);
|
||||
|
||||
mouse_buttons = 3;
|
||||
|
||||
mtype = vga_getmousetype();
|
||||
|
||||
mousedev = "/dev/mouse";
|
||||
if (getenv("MOUSEDEV")) mousedev = getenv("MOUSEDEV");
|
||||
if (COM_CheckParm("-mdev")) {
|
||||
mousedev = com_argv[COM_CheckParm("-mdev")+1];
|
||||
}
|
||||
|
||||
if (getenv("MOUSERATE")) mouserate = atoi(getenv("MOUSERATE"));
|
||||
if (COM_CheckParm("-mrate")) {
|
||||
mouserate = atoi(com_argv[COM_CheckParm("-mrate")+1]);
|
||||
}
|
||||
|
||||
#if 0
|
||||
printf("Mouse: dev=%s,type=%s,speed=%d\n",
|
||||
mousedev, mice[mtype].name, mouserate);
|
||||
#endif
|
||||
if (mouse_init(mousedev, mtype, mouserate)) {
|
||||
Con_Printf("No mouse found\n");
|
||||
UseMouse = 0;
|
||||
} else{
|
||||
mouse_seteventhandler((void*)mousehandler);
|
||||
}
|
||||
}
|
||||
if (UseKeyboard)
|
||||
IN_init_kb();
|
||||
if (UseMouse)
|
||||
IN_init_mouse();
|
||||
|
||||
in_svgalib_inited = 1;
|
||||
}
|
||||
|
||||
static void IN_init_kb()
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i=0 ; i<128 ; i++) {
|
||||
scantokey[i] = ' ';
|
||||
}
|
||||
|
||||
scantokey[ 1] = K_ESCAPE;
|
||||
scantokey[ 2] = '1';
|
||||
scantokey[ 3] = '2';
|
||||
scantokey[ 4] = '3';
|
||||
scantokey[ 5] = '4';
|
||||
scantokey[ 6] = '5';
|
||||
scantokey[ 7] = '6';
|
||||
scantokey[ 8] = '7';
|
||||
scantokey[ 9] = '8';
|
||||
scantokey[ 10] = '9';
|
||||
scantokey[ 11] = '0';
|
||||
scantokey[ 12] = '-';
|
||||
scantokey[ 13] = '=';
|
||||
scantokey[ 14] = K_BACKSPACE;
|
||||
scantokey[ 15] = K_TAB;
|
||||
scantokey[ 16] = 'q';
|
||||
scantokey[ 17] = 'w';
|
||||
scantokey[ 18] = 'e';
|
||||
scantokey[ 19] = 'r';
|
||||
scantokey[ 20] = 't';
|
||||
scantokey[ 21] = 'y';
|
||||
scantokey[ 22] = 'u';
|
||||
scantokey[ 23] = 'i';
|
||||
scantokey[ 24] = 'o';
|
||||
scantokey[ 25] = 'p';
|
||||
scantokey[ 26] = '[';
|
||||
scantokey[ 27] = ']';
|
||||
scantokey[ 28] = K_ENTER;
|
||||
scantokey[ 29] = K_CTRL; /*left */
|
||||
scantokey[ 30] = 'a';
|
||||
scantokey[ 31] = 's';
|
||||
scantokey[ 32] = 'd';
|
||||
scantokey[ 33] = 'f';
|
||||
scantokey[ 34] = 'g';
|
||||
scantokey[ 35] = 'h';
|
||||
scantokey[ 36] = 'j';
|
||||
scantokey[ 37] = 'k';
|
||||
scantokey[ 38] = 'l';
|
||||
scantokey[ 39] = ';';
|
||||
scantokey[ 40] = '\'';
|
||||
scantokey[ 41] = '`';
|
||||
scantokey[ 42] = K_SHIFT; /*left */
|
||||
scantokey[ 43] = '\\';
|
||||
scantokey[ 44] = 'z';
|
||||
scantokey[ 45] = 'x';
|
||||
scantokey[ 46] = 'c';
|
||||
scantokey[ 47] = 'v';
|
||||
scantokey[ 48] = 'b';
|
||||
scantokey[ 49] = 'n';
|
||||
scantokey[ 50] = 'm';
|
||||
scantokey[ 51] = ',';
|
||||
scantokey[ 52] = '.';
|
||||
scantokey[ 53] = '/';
|
||||
scantokey[ 54] = K_SHIFT; /*right */
|
||||
scantokey[ 55] = KP_MULTIPLY;
|
||||
scantokey[ 56] = K_ALT; /*left */
|
||||
scantokey[ 57] = ' ';
|
||||
/* 58 caps lock */
|
||||
scantokey[ 59] = K_F1;
|
||||
scantokey[ 60] = K_F2;
|
||||
scantokey[ 61] = K_F3;
|
||||
scantokey[ 62] = K_F4;
|
||||
scantokey[ 63] = K_F5;
|
||||
scantokey[ 64] = K_F6;
|
||||
scantokey[ 65] = K_F7;
|
||||
scantokey[ 66] = K_F8;
|
||||
scantokey[ 67] = K_F9;
|
||||
scantokey[ 68] = K_F10;
|
||||
scantokey[ 69] = KP_NUMLCK;
|
||||
scantokey[ 70] = K_SCRLCK;
|
||||
scantokey[ 71] = KP_HOME;
|
||||
scantokey[ 72] = KP_UPARROW;
|
||||
scantokey[ 73] = KP_PGUP;
|
||||
scantokey[ 74] = KP_MINUS;
|
||||
scantokey[ 75] = KP_LEFTARROW;
|
||||
scantokey[ 76] = KP_5;
|
||||
scantokey[ 77] = KP_RIGHTARROW;
|
||||
scantokey[ 79] = KP_END;
|
||||
scantokey[ 78] = KP_PLUS;
|
||||
scantokey[ 80] = KP_DOWNARROW;
|
||||
scantokey[ 81] = KP_PGDN;
|
||||
scantokey[ 82] = KP_INS;
|
||||
scantokey[ 83] = KP_DEL;
|
||||
/* 84 to 86 not used */
|
||||
scantokey[ 87] = K_F11;
|
||||
scantokey[ 88] = K_F12;
|
||||
/* 89 to 95 not used */
|
||||
scantokey[ 96] = KP_ENTER; /* keypad enter */
|
||||
scantokey[ 97] = K_CTRL; /* right */
|
||||
scantokey[ 98] = KP_DIVIDE;
|
||||
scantokey[ 99] = K_PRNTSCR; /* print screen */
|
||||
scantokey[100] = K_ALT; /* right */
|
||||
|
||||
scantokey[101] = K_PAUSE; /* break */
|
||||
scantokey[102] = K_HOME;
|
||||
scantokey[103] = K_UPARROW;
|
||||
scantokey[104] = K_PGUP;
|
||||
scantokey[105] = K_LEFTARROW;
|
||||
scantokey[106] = K_RIGHTARROW;
|
||||
scantokey[107] = K_END;
|
||||
scantokey[108] = K_DOWNARROW;
|
||||
scantokey[109] = K_PGDN;
|
||||
scantokey[110] = K_INS;
|
||||
scantokey[111] = K_DEL;
|
||||
scantokey[119] = K_PAUSE;
|
||||
|
||||
if (keyboard_init()) {
|
||||
Sys_Error("keyboard_init() failed");
|
||||
}
|
||||
keyboard_seteventhandler(keyhandler);
|
||||
}
|
||||
|
||||
static void IN_init_mouse()
|
||||
{
|
||||
int mtype;
|
||||
char *mousedev;
|
||||
int mouserate = MOUSE_DEFAULTSAMPLERATE;
|
||||
|
||||
Cvar_RegisterVariable(&mouse_button_commands[0]);
|
||||
Cvar_RegisterVariable(&mouse_button_commands[1]);
|
||||
Cvar_RegisterVariable(&mouse_button_commands[2]);
|
||||
Cvar_RegisterVariable(&m_filter);
|
||||
Cmd_AddCommand("force_centerview", Force_CenterView_f);
|
||||
|
||||
mouse_buttons = 3;
|
||||
|
||||
mtype = vga_getmousetype();
|
||||
|
||||
mousedev = "/dev/mouse";
|
||||
if (getenv("MOUSEDEV")) mousedev = getenv("MOUSEDEV");
|
||||
if (COM_CheckParm("-mdev")) {
|
||||
mousedev = com_argv[COM_CheckParm("-mdev")+1];
|
||||
}
|
||||
|
||||
if (getenv("MOUSERATE")) mouserate = atoi(getenv("MOUSERATE"));
|
||||
if (COM_CheckParm("-mrate")) {
|
||||
mouserate = atoi(com_argv[COM_CheckParm("-mrate")+1]);
|
||||
}
|
||||
|
||||
#if 0
|
||||
printf("Mouse: dev=%s,type=%s,speed=%d\n",
|
||||
mousedev, mice[mtype].name, mouserate);
|
||||
#endif
|
||||
if (mouse_init(mousedev, mtype, mouserate)) {
|
||||
Con_Printf("No mouse found\n");
|
||||
UseMouse = 0;
|
||||
} else{
|
||||
mouse_seteventhandler((void*)mousehandler);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
IN_Shutdown(void)
|
||||
|
|
|
@ -74,7 +74,7 @@ keyname_t keynames[] =
|
|||
{"SHIFT", K_SHIFT},
|
||||
|
||||
// Keypad stuff..
|
||||
{"KP_NUM", KP_NUM},
|
||||
{"KP_NUMLCK", KP_NUMLCK},
|
||||
{"KP_DIVIDE", KP_DIVIDE},
|
||||
{"KP_MULTIPLY", KP_MULTIPLY},
|
||||
{"KP_MINUS", KP_MINUS},
|
||||
|
@ -159,6 +159,8 @@ keyname_t keynames[] =
|
|||
{"AUX31", K_AUX31},
|
||||
{"AUX32", K_AUX32},
|
||||
|
||||
{"PRNTSCR", K_PRNTSCR},
|
||||
{"SCRLCK", K_SCRLCK},
|
||||
{"PAUSE", K_PAUSE},
|
||||
|
||||
{"MWHEELUP", K_MWHEELUP},
|
||||
|
|
|
@ -62,7 +62,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
// Keypad stuff..
|
||||
//
|
||||
|
||||
#define KP_NUM 153
|
||||
#define KP_NUMLCK 153
|
||||
#define KP_DIVIDE 154
|
||||
#define KP_MULTIPLY 155
|
||||
|
||||
|
@ -84,6 +84,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
#define KP_DEL 168
|
||||
#define KP_ENTER 169
|
||||
|
||||
#define K_PRNTSCR 253
|
||||
#define K_SCRLCK 254
|
||||
#define K_PAUSE 255
|
||||
|
||||
//
|
||||
|
@ -141,7 +143,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
// JACK: Intellimouse(c) Mouse Wheel Support
|
||||
|
||||
#define K_MWHEELUP 239
|
||||
#define K_MWHEELDOWN 240
|
||||
#define K_MWHEELDOWN 240
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1373,14 +1373,20 @@ void SV_RunCmd (usercmd_t *ucmd, qboolean inside)
|
|||
int oldmsec;
|
||||
double tmp_time;
|
||||
|
||||
// To prevent a infinate loop
|
||||
if (!inside) {
|
||||
oldmsec = ucmd->msec;
|
||||
// Calculate the real msec.
|
||||
tmp_time = realtime - host_client->frame_time_2;
|
||||
tmp_time /= 2;
|
||||
ucmd->msec = tmp_time * 1000;
|
||||
// Cap it at a max of 250 msec though..
|
||||
ucmd->msec = max(tmp_time * 1000, 250);
|
||||
/*
|
||||
if (ucmd->msec > oldmsec)
|
||||
ucmd->msec = oldmsec;
|
||||
*/
|
||||
|
||||
// If were more then 10 msecs off what the client tells us, report it.
|
||||
if (abs(oldmsec - ucmd->msec) > 10) {
|
||||
printf("tmp_time: %f, realtime: %f, frame_time_1: %f\n",
|
||||
tmp_time, realtime, host_client->frame_time_1);
|
||||
|
@ -1389,19 +1395,19 @@ void SV_RunCmd (usercmd_t *ucmd, qboolean inside)
|
|||
}
|
||||
host_client->frame_time_2 = host_client->frame_time_1;
|
||||
host_client->frame_time_1 = realtime;
|
||||
}
|
||||
|
||||
cmd = *ucmd;
|
||||
cmd = *ucmd;
|
||||
|
||||
// chop up very long commands
|
||||
if (cmd.msec > 50) {
|
||||
oldmsec = ucmd->msec;
|
||||
cmd.msec = oldmsec/2;
|
||||
SV_RunCmd (&cmd, 1);
|
||||
cmd.msec = oldmsec/2;
|
||||
cmd.impulse = 0;
|
||||
SV_RunCmd (&cmd, 1);
|
||||
return;
|
||||
}
|
||||
// chop up very long commands
|
||||
if (cmd.msec > 50) {
|
||||
oldmsec = ucmd->msec;
|
||||
cmd.msec = oldmsec/2;
|
||||
SV_RunCmd (&cmd, 1);
|
||||
cmd.msec = oldmsec/2;
|
||||
cmd.impulse = 0;
|
||||
SV_RunCmd (&cmd, 1);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!sv_player->v.fixangle)
|
||||
|
@ -1656,6 +1662,7 @@ void SV_ExecuteClientMessage (client_t *cl)
|
|||
if (!sv.paused) {
|
||||
SV_PreRunCmd();
|
||||
|
||||
/*
|
||||
if (net_drop < 20)
|
||||
{
|
||||
while (net_drop > 2)
|
||||
|
@ -1668,6 +1675,7 @@ void SV_ExecuteClientMessage (client_t *cl)
|
|||
if (net_drop > 0)
|
||||
SV_RunCmd (&oldcmd, 0);
|
||||
}
|
||||
*/
|
||||
SV_RunCmd (&newcmd, 0);
|
||||
|
||||
SV_PostRunCmd();
|
||||
|
|
Loading…
Reference in a new issue