More input adjustments, added new SDL gamepad button mappings

git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5989 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
Eukara 2021-07-23 13:36:18 +00:00
parent 878f9b9d7c
commit 9b38473295
8 changed files with 444 additions and 364 deletions

View file

@ -1441,6 +1441,12 @@ qboolean CG_KeyPress(int key, int unicode, int down)
case K_GP_A: case K_GP_A:
key = K_ENTER; key = K_ENTER;
break; break;
case K_GP_B:
key = K_ESCAPE;
break;
case K_GP_X:
key = K_BACKSPACE;
break;
} }
return VM_Call(cgvm, CG_KEY_EVENT, key, down); return VM_Call(cgvm, CG_KEY_EVENT, key, down);

View file

@ -1818,6 +1818,12 @@ qboolean UI_KeyPress(struct menu_s *m, qboolean isdown, unsigned int devid, int
case K_GP_A: case K_GP_A:
key = K_ENTER; key = K_ENTER;
break; break;
case K_GP_B:
key = K_ESCAPE;
break;
case K_GP_X:
key = K_BACKSPACE;
break;
} }
if (key && key < 1024) if (key && key < 1024)

View file

@ -182,9 +182,9 @@ static void J_ControllerAxis(SDL_JoystickID jid, int axis, int value)
if (joy && axis < sizeof(axismap)/sizeof(axismap[0]) && joy->qdevid != DEVID_UNSET) { if (joy && axis < sizeof(axismap)/sizeof(axismap[0]) && joy->qdevid != DEVID_UNSET) {
/* hack to allow for RTRIGGER and LTRIGGER */ /* hack to allow for RTRIGGER and LTRIGGER */
if (axis == 4) if (axis == 4)
IN_KeyEvent(joy->qdevid, (value > 128) ? 1 : 0, K_GP_LEFT_TRIGGER, 0); IN_KeyEvent(joy->qdevid, (value > 16382) ? 1 : 0, K_GP_LEFT_TRIGGER, 0);
else if (axis == 5) else if (axis == 5)
IN_KeyEvent(joy->qdevid, (value > 128) ? 1 : 0, K_GP_RIGHT_TRIGGER, 0); IN_KeyEvent(joy->qdevid, (value > 16382) ? 1 : 0, K_GP_RIGHT_TRIGGER, 0);
else else
IN_JoystickAxisEvent(joy->qdevid, axismap[axis], value / 32767.0); IN_JoystickAxisEvent(joy->qdevid, axismap[axis], value / 32767.0);
} }
@ -204,21 +204,27 @@ static void J_ControllerButton(SDL_JoystickID jid, int button, qboolean pressed)
//but that doesn't meant that fte has specific k_ names for those buttons, but the mapping should be reliable, at least until they get mapped to proper k_ values. //but that doesn't meant that fte has specific k_ names for those buttons, but the mapping should be reliable, at least until they get mapped to proper k_ values.
int buttonmap[] = int buttonmap[] =
{ {
K_GP_A, /*SDL_CONTROLLER_BUTTON_A*/ K_GP_A,
K_GP_B, /*SDL_CONTROLLER_BUTTON_B*/ K_GP_B,
K_GP_X, /*SDL_CONTROLLER_BUTTON_X*/ K_GP_X,
K_GP_Y, /*SDL_CONTROLLER_BUTTON_Y*/ K_GP_Y,
K_GP_BACK, /*SDL_CONTROLLER_BUTTON_BACK*/ K_GP_BACK,
K_GP_GUIDE, /*SDL_CONTROLLER_BUTTON_GUIDE*/ K_GP_GUIDE,
K_GP_START, /*SDL_CONTROLLER_BUTTON_START*/ K_GP_START,
K_GP_LEFT_THUMB, /*SDL_CONTROLLER_BUTTON_LEFTSTICK*/ K_GP_LEFT_STICK,
K_GP_RIGHT_THUMB, /*SDL_CONTROLLER_BUTTON_RIGHTSTICK*/ K_GP_RIGHT_STICK,
K_GP_LEFT_SHOULDER, /*SDL_CONTROLLER_BUTTON_LEFTSHOULDER*/ K_GP_LEFT_SHOULDER,
K_GP_RIGHT_SHOULDER, /*SDL_CONTROLLER_BUTTON_RIGHTSHOULDER*/ K_GP_RIGHT_SHOULDER,
K_GP_DPAD_UP, /*SDL_CONTROLLER_BUTTON_DPAD_UP*/ K_GP_DPAD_UP,
K_GP_DPAD_DOWN, /*SDL_CONTROLLER_BUTTON_DPAD_DOWN*/ K_GP_DPAD_DOWN,
K_GP_DPAD_LEFT, /*SDL_CONTROLLER_BUTTON_DPAD_LEFT*/ K_GP_DPAD_LEFT,
K_GP_DPAD_RIGHT /*SDL_CONTROLLER_BUTTON_DPAD_RIGHT*/ K_GP_DPAD_RIGHT,
K_GP_MISC1,
K_GP_PADDLE1,
K_GP_PADDLE2,
K_GP_PADDLE3,
K_GP_PADDLE4,
K_GP_TOUCHPAD
}; };
struct sdljoy_s *joy = J_DevId(jid); struct sdljoy_s *joy = J_DevId(jid);
@ -241,6 +247,34 @@ static void J_JoystickButton(SDL_JoystickID jid, int button, qboolean pressed)
K_JOY2, K_JOY2,
K_JOY3, K_JOY3,
K_JOY4, K_JOY4,
K_JOY5,
K_JOY6,
K_JOY7,
K_JOY8,
K_JOY9,
K_JOY10,
K_JOY11,
K_JOY12,
K_JOY13,
K_JOY14,
K_JOY15,
K_JOY16,
K_JOY17,
K_JOY18,
K_JOY19,
K_JOY20,
K_JOY21,
K_JOY22,
K_JOY23,
K_JOY24,
K_JOY25,
K_JOY26,
K_JOY27,
K_JOY28,
K_JOY29,
K_JOY30,
K_JOY31,
K_JOY32,
K_AUX1, K_AUX1,
K_AUX2, K_AUX2,
K_AUX3, K_AUX3,
@ -256,23 +290,7 @@ static void J_JoystickButton(SDL_JoystickID jid, int button, qboolean pressed)
K_AUX13, K_AUX13,
K_AUX14, K_AUX14,
K_AUX15, K_AUX15,
K_AUX16, K_AUX16
K_AUX17,
K_AUX18,
K_AUX19,
K_AUX20,
K_AUX21,
K_AUX22,
K_AUX23,
K_AUX24,
K_AUX25,
K_AUX26,
K_AUX27,
K_AUX28,
K_AUX29,
K_AUX30,
K_AUX31,
K_AUX32
}; };
struct sdljoy_s *joy = J_DevId(jid); struct sdljoy_s *joy = J_DevId(jid);

View file

@ -351,35 +351,35 @@ static const int mmjbuttons[32] =
K_JOY3, K_JOY3,
K_JOY4, K_JOY4,
//yes, aux1-4 skipped for compat with other quake engines. //yes, aux1-4 skipped for compat with other quake engines.
K_AUX5, K_JOY9,
K_AUX6, K_JOY10,
K_AUX7, K_JOY11,
K_AUX8, K_JOY12,
K_AUX9, K_JOY13,
K_AUX10, K_JOY14,
K_AUX11, K_JOY15,
K_AUX12, K_JOY16,
K_AUX13, K_JOY17,
K_AUX14, K_JOY18,
K_AUX15, K_JOY19,
K_AUX16, K_JOY20,
K_AUX17, K_JOY21,
K_AUX18, K_JOY22,
K_AUX19, K_JOY23,
K_AUX20, K_JOY24,
K_AUX21, K_JOY25,
K_AUX22, K_JOY26,
K_AUX23, K_JOY27,
K_AUX24, K_JOY28,
K_AUX25, K_JOY29,
K_AUX26, K_JOY30,
K_AUX27, K_JOY31,
K_AUX28, K_JOY32,
//29-32 used for the pov stuff, so lets switch back to aux1-4 to avoid wastage //29-32 used for the pov stuff, so lets switch back to aux1-4 to avoid wastage
K_AUX1, K_JOY5,
K_AUX2, K_JOY6,
K_AUX3, K_JOY7,
K_AUX4 K_JOY8
}; };
// forward-referenced functions // forward-referenced functions
@ -2018,12 +2018,12 @@ void INS_Commands (void)
{ {
if ( (povstate & (1<<i)) && !(joy->oldpovstate & (1<<i)) ) if ( (povstate & (1<<i)) && !(joy->oldpovstate & (1<<i)) )
{ {
Key_Event (joy->devid, K_AUX29 + i, 0, true); Key_Event (joy->devid, K_AUX13 + i, 0, true);
} }
if ( !(povstate & (1<<i)) && (joy->oldpovstate & (1<<i)) ) if ( !(povstate & (1<<i)) && (joy->oldpovstate & (1<<i)) )
{ {
Key_Event (joy->devid, K_AUX29 + i, 0, false); Key_Event (joy->devid, K_AUX13 + i, 0, false);
} }
} }
joy->oldpovstate = povstate; joy->oldpovstate = povstate;

View file

@ -217,6 +217,34 @@ keyname_t keynames[] =
{"JOY2", K_JOY2}, {"JOY2", K_JOY2},
{"JOY3", K_JOY3}, {"JOY3", K_JOY3},
{"JOY4", K_JOY4}, {"JOY4", K_JOY4},
{"JOY5", K_JOY5},
{"JOY6", K_JOY6},
{"JOY7", K_JOY7},
{"JOY8", K_JOY8},
{"JOY9", K_JOY9},
{"JOY10", K_JOY10},
{"JOY11", K_JOY11},
{"JOY12", K_JOY12},
{"JOY13", K_JOY13},
{"JOY14", K_JOY14},
{"JOY15", K_JOY15},
{"JOY16", K_JOY16},
{"JOY17", K_JOY17},
{"JOY18", K_JOY18},
{"JOY19", K_JOY19},
{"JOY20", K_JOY20},
{"JOY21", K_JOY21},
{"JOY22", K_JOY22},
{"JOY23", K_JOY23},
{"JOY24", K_JOY24},
{"JOY25", K_JOY25},
{"JOY26", K_JOY26},
{"JOY27", K_JOY27},
{"JOY28", K_JOY28},
{"JOY29", K_JOY29},
{"JOY30", K_JOY30},
{"JOY31", K_JOY31},
{"JOY32", K_JOY32},
{"AUX1", K_AUX1}, {"AUX1", K_AUX1},
{"AUX2", K_AUX2}, {"AUX2", K_AUX2},
@ -234,22 +262,6 @@ keyname_t keynames[] =
{"AUX14", K_AUX14}, {"AUX14", K_AUX14},
{"AUX15", K_AUX15}, {"AUX15", K_AUX15},
{"AUX16", K_AUX16}, {"AUX16", K_AUX16},
{"AUX17", K_AUX17},
{"AUX18", K_AUX18},
{"AUX19", K_AUX19},
{"AUX20", K_AUX20},
{"AUX21", K_AUX21},
{"AUX22", K_AUX22},
{"AUX23", K_AUX23},
{"AUX24", K_AUX24},
{"AUX25", K_AUX25},
{"AUX26", K_AUX26},
{"AUX27", K_AUX27},
{"AUX28", K_AUX28},
{"AUX29", K_AUX29},
{"AUX30", K_AUX30},
{"AUX31", K_AUX31},
{"AUX32", K_AUX32},
{"PAUSE", K_PAUSE}, {"PAUSE", K_PAUSE},
@ -275,13 +287,19 @@ keyname_t keynames[] =
{"GP_RTRIGGER", K_GP_RIGHT_TRIGGER}, {"GP_RTRIGGER", K_GP_RIGHT_TRIGGER},
{"GP_BACK", K_GP_BACK}, {"GP_BACK", K_GP_BACK},
{"GP_START", K_GP_START}, {"GP_START", K_GP_START},
{"GP_LTHUMB", K_GP_LEFT_THUMB}, {"GP_LTHUMB", K_GP_LEFT_STICK},
{"GP_RTHUMB", K_GP_RIGHT_THUMB}, {"GP_RTHUMB", K_GP_RIGHT_STICK},
{"GP_DPAD_UP", K_GP_DPAD_UP}, {"GP_DPAD_UP", K_GP_DPAD_UP},
{"GP_DPAD_DOWN", K_GP_DPAD_DOWN}, {"GP_DPAD_DOWN", K_GP_DPAD_DOWN},
{"GP_DPAD_LEFT", K_GP_DPAD_LEFT}, {"GP_DPAD_LEFT", K_GP_DPAD_LEFT},
{"GP_DPAD_RIGHT", K_GP_DPAD_RIGHT}, {"GP_DPAD_RIGHT", K_GP_DPAD_RIGHT},
{"GP_GUIDE", K_GP_GUIDE}, {"GP_GUIDE", K_GP_GUIDE},
{"GP_SHARE", K_GP_MISC1},
{"GP_PADDLE1", K_GP_PADDLE1},
{"GP_PADDLE2", K_GP_PADDLE2},
{"GP_PADDLE3", K_GP_PADDLE3},
{"GP_PADDLE4", K_GP_PADDLE4},
{"GP_TOUCHPAD", K_GP_TOUCHPAD},
{"GP_UNKNOWN", K_GP_UNKNOWN}, {"GP_UNKNOWN", K_GP_UNKNOWN},
//names for playstation controllers //names for playstation controllers
@ -289,6 +307,7 @@ keyname_t keynames[] =
{"GP_CIRCLE", K_GP_B}, {"GP_CIRCLE", K_GP_B},
{"GP_SQUARE", K_GP_X}, {"GP_SQUARE", K_GP_X},
{"GP_TRIANGLE", K_GP_Y}, {"GP_TRIANGLE", K_GP_Y},
{"GP_MIC", K_GP_MISC1},
//axis->button emulation //axis->button emulation
{"GP_LTHUMB_UP", K_GP_LEFT_THUMB_UP}, {"GP_LTHUMB_UP", K_GP_LEFT_THUMB_UP},
@ -308,8 +327,8 @@ keyname_t keynames[] =
{"X360_DPAD_RIGHT", K_GP_DPAD_RIGHT}, {"X360_DPAD_RIGHT", K_GP_DPAD_RIGHT},
{"X360_START", K_GP_START}, {"X360_START", K_GP_START},
{"X360_BACK", K_GP_BACK}, {"X360_BACK", K_GP_BACK},
{"X360_LEFT_THUMB", K_GP_LEFT_THUMB}, {"X360_LEFT_THUMB", K_GP_LEFT_STICK},
{"X360_RIGHT_THUMB", K_GP_RIGHT_THUMB}, {"X360_RIGHT_THUMB", K_GP_RIGHT_STICK},
{"X360_LEFT_SHOULDER", K_GP_LEFT_SHOULDER}, {"X360_LEFT_SHOULDER", K_GP_LEFT_SHOULDER},
{"X360_RIGHT_SHOULDER", K_GP_RIGHT_SHOULDER}, {"X360_RIGHT_SHOULDER", K_GP_RIGHT_SHOULDER},
{"X360_A", K_GP_A}, {"X360_A", K_GP_A},
@ -328,8 +347,8 @@ keyname_t keynames[] =
{"X360_RIGHT_THUMB_RIGHT", K_GP_RIGHT_THUMB_RIGHT}, {"X360_RIGHT_THUMB_RIGHT", K_GP_RIGHT_THUMB_RIGHT},
//quakespasm compat //quakespasm compat
{"LTHUMB", K_GP_LEFT_THUMB}, {"LTHUMB", K_GP_LEFT_STICK},
{"RTHUMB", K_GP_RIGHT_THUMB}, {"RTHUMB", K_GP_RIGHT_STICK},
{"LSHOULDER", K_GP_LEFT_SHOULDER}, {"LSHOULDER", K_GP_LEFT_SHOULDER},
{"RSHOULDER", K_GP_RIGHT_SHOULDER}, {"RSHOULDER", K_GP_RIGHT_SHOULDER},
{"ABUTTON", K_GP_A}, {"ABUTTON", K_GP_A},
@ -341,14 +360,14 @@ keyname_t keynames[] =
#endif #endif
/* Steam Controller */ /* Steam Controller */
{"SC_LPADDLE", K_AUX12}, {"SC_LPADDLE", K_JOY16},
{"SC_RPADDLE", K_AUX13}, {"SC_RPADDLE", K_JOY17},
{NULL, 0} {NULL, 0}
}; };
#if defined(CSQC_DAT) || defined(MENU_DAT) #if defined(CSQC_DAT) || defined(MENU_DAT)
int MP_TranslateFTEtoQCCodes(int code); int MP_TranslateFTEtoQCCodes(keynum_t code);
void Key_PrintQCDefines(vfsfile_t *f, qboolean defines) void Key_PrintQCDefines(vfsfile_t *f, qboolean defines)
{ {
int i, j; int i, j;
@ -3212,8 +3231,8 @@ void Key_Event (unsigned int devid, int key, unsigned int unicode, qboolean down
case K_GP_DPAD_RIGHT: dc = "+moveright"; goto defaultedbind; case K_GP_DPAD_RIGHT: dc = "+moveright"; goto defaultedbind;
case K_GP_GUIDE: dc = "togglemenu"; goto defaultedbind; case K_GP_GUIDE: dc = "togglemenu"; goto defaultedbind;
case K_GP_LEFT_THUMB: dc = "+movedown"; goto defaultedbind; case K_GP_LEFT_STICK: dc = "+movedown"; goto defaultedbind;
case K_GP_RIGHT_THUMB: case K_GP_RIGHT_STICK:
default: default:
break; break;
} }

View file

@ -39,197 +39,209 @@ enum
// //
// these are the key numbers that should be passed to Key_Event // these are the key numbers that should be passed to Key_Event
// //
enum { typedef enum {
K_TAB = 9, K_TAB = 9,
K_ENTER = 13, K_ENTER = 13,
K_ESCAPE = 27, K_ESCAPE = 27,
K_SPACE = 32, K_SPACE = 32,
// normal keys should be passed as lowercased ascii // normal keys should be passed as lowercased ascii
K_BACKSPACE = 127,
K_BACKSPACE = 127,
K_SCRLCK, K_SCRLCK,
K_CAPSLOCK, K_CAPSLOCK,
K_POWER, K_POWER,
K_PAUSE, K_PAUSE,
K_UPARROW, K_UPARROW,
K_DOWNARROW, K_DOWNARROW,
K_LEFTARROW, K_LEFTARROW,
K_RIGHTARROW, K_RIGHTARROW,
K_LALT, K_LALT,
K_LCTRL, K_LCTRL,
K_LSHIFT, K_LSHIFT,
K_INS, K_INS,
K_DEL, K_DEL,
K_PGDN, K_PGDN,
K_PGUP, K_PGUP,
K_HOME, K_HOME,
K_END, K_END,
K_F1, K_F1,
K_F2, K_F2,
K_F3, K_F3,
K_F4, K_F4,
K_F5, K_F5,
K_F6, K_F6,
K_F7, K_F7,
K_F8, K_F8,
K_F9, K_F9,
K_F10, K_F10,
K_F11, K_F11,
K_F12, K_F12,
K_F13, K_F13,
K_F14, K_F14,
K_F15, K_F15,
K_KP_HOME, K_KP_HOME,
K_KP_UPARROW, K_KP_UPARROW,
K_KP_PGUP, K_KP_PGUP,
K_KP_LEFTARROW, K_KP_LEFTARROW,
K_KP_5, K_KP_5,
K_KP_RIGHTARROW, K_KP_RIGHTARROW,
K_KP_END, K_KP_END,
K_KP_DOWNARROW, K_KP_DOWNARROW,
K_KP_PGDN, K_KP_PGDN,
K_KP_ENTER, K_KP_ENTER,
K_KP_INS, K_KP_INS,
K_KP_DEL, K_KP_DEL,
K_KP_SLASH, K_KP_SLASH,
K_KP_MINUS, K_KP_MINUS,
K_KP_PLUS, K_KP_PLUS,
K_KP_NUMLOCK, K_KP_NUMLOCK,
K_KP_STAR, K_KP_STAR,
K_KP_EQUALS, K_KP_EQUALS,
// K_MOUSE1,
// mouse buttons generate virtual keys K_MOUSE2,
// K_MOUSE3,
K_MOUSE1, K_MOUSE4,
K_MOUSE2, K_MOUSE5,
K_MOUSE3,
K_MOUSE4,
K_MOUSE5,
K_MOUSE6,
K_MOUSE7,
K_MOUSE8,
K_MOUSE9,
K_MOUSE10,
// JACK: Intellimouse(c) Mouse Wheel Support K_MWHEELDOWN,
K_MWHEELUP, K_MWHEELUP,
K_MWHEELDOWN, // 189
K_GP_A = 190, K_JOY1,
K_GP_B = 191, K_JOY2,
K_GP_X = 192, K_JOY3,
K_GP_Y = 193, K_JOY4,
K_GP_LEFT_SHOULDER = 194, K_JOY5,
K_GP_RIGHT_SHOULDER = 195, K_JOY6,
K_GP_LEFT_TRIGGER = 196, K_JOY7,
K_GP_RIGHT_TRIGGER = 197, K_JOY8,
K_GP_BACK = 198, K_JOY9,
K_GP_START = 199, K_JOY10,
K_GP_LEFT_THUMB = 200, K_JOY11,
K_GP_RIGHT_THUMB = 201, K_JOY12,
K_GP_GUIDE = 202, K_JOY13,
K_JOY14,
K_JOY15,
K_JOY16,
K_JOY17,
K_JOY18,
K_JOY19,
K_JOY20,
K_JOY21,
K_JOY22,
K_JOY23,
K_JOY24,
K_JOY25,
K_JOY26,
K_JOY27,
K_JOY28,
K_JOY29,
K_JOY30,
K_JOY31,
K_JOY32,
// K_AUX1,
// joystick buttons K_AUX2,
// K_AUX3,
K_JOY1 = 203, K_AUX4,
K_JOY2 = 204, K_AUX5,
K_JOY3 = 205, K_AUX6,
K_JOY4 = 206, K_AUX7,
K_AUX8,
K_AUX9,
K_AUX10,
K_AUX11,
K_AUX12,
K_AUX13,
K_AUX14,
K_AUX15,
K_AUX16,
// /* if you change the above order, you _will_ break Trinity!
// aux keys are for multi-buttoned joysticks to generate so they can use * only make modifcations below, unless you want to start
// the normal binding process * remapping keys for that too */
//
K_AUX1 = 207,
K_AUX2 = 208,
K_AUX3 = 209,
K_AUX4 = 210,
K_AUX5 = 211,
K_AUX6 = 212,
K_AUX7 = 213,
K_AUX8 = 214,
K_AUX9 = 215,
K_AUX10 = 216,
K_AUX11 = 217,
K_AUX12 = 218,
K_AUX13 = 219,
K_AUX14 = 220,
K_AUX15 = 221,
K_AUX16 = 222,
K_AUX17 = 223,
K_AUX18 = 224,
K_AUX19 = 225,
K_AUX20 = 226,
K_AUX21 = 227,
K_AUX22 = 228,
K_AUX23 = 229,
K_AUX24 = 230,
K_AUX25 = 231,
K_AUX26 = 232,
K_AUX27 = 233,
K_AUX28 = 234,
K_AUX29 = 235,
K_AUX30 = 236,
K_AUX31 = 237,
K_AUX32 = 238,
K_LWIN = 239, /* Section dedicated to SDL controller definitions */
K_RWIN = 240, K_GP_A,
K_APP = 241, K_GP_B,
K_SEARCH = 242, K_GP_X,
K_VOLUP = 243, K_GP_Y,
K_VOLDOWN = 244, K_GP_BACK,
K_RALT = 245, K_GP_GUIDE,
K_RCTRL = 246, K_GP_START,
K_RSHIFT = 247, K_GP_LEFT_STICK,
K_PRINTSCREEN = 248, K_GP_RIGHT_STICK,
K_GP_LEFT_SHOULDER,
K_GP_RIGHT_SHOULDER,
K_GP_DPAD_UP,
K_GP_DPAD_DOWN,
K_GP_DPAD_LEFT,
K_GP_DPAD_RIGHT,
K_GP_MISC1, /* share/mic-mute button */
K_GP_PADDLE1,
K_GP_PADDLE2,
K_GP_PADDLE3,
K_GP_PADDLE4,
K_GP_TOUCHPAD, /* when pressed */
//K_UNUSED = 249, /* emulated, we'll trigger these 'buttons' when we reach 50% pressed */
//K_UNUSED = 250, K_GP_LEFT_TRIGGER,
K_GP_RIGHT_TRIGGER,
K_GP_LEFT_THUMB_UP,
K_GP_LEFT_THUMB_DOWN,
K_GP_LEFT_THUMB_LEFT,
K_GP_LEFT_THUMB_RIGHT,
K_GP_RIGHT_THUMB_UP,
K_GP_RIGHT_THUMB_DOWN,
K_GP_RIGHT_THUMB_LEFT,
K_GP_RIGHT_THUMB_RIGHT,
K_GP_UNKNOWN,
K_GP_DPAD_UP = 251, /* extra dinput mouse buttons */
K_GP_DPAD_DOWN = 252, K_MOUSE6,
K_GP_DPAD_LEFT = 253, K_MOUSE7,
K_GP_DPAD_RIGHT = 254, K_MOUSE8,
K_GP_UNKNOWN = 255, K_MOUSE9,
K_MOUSE10,
//axis->button emulation. for weird people. /* spare joystick button presses */
K_GP_LEFT_THUMB_UP, K_JOY_UP,
K_GP_LEFT_THUMB_DOWN, K_JOY_DOWN,
K_GP_LEFT_THUMB_LEFT, K_JOY_LEFT,
K_GP_LEFT_THUMB_RIGHT, K_JOY_RIGHT,
K_GP_RIGHT_THUMB_UP,
K_GP_RIGHT_THUMB_DOWN,
K_GP_RIGHT_THUMB_LEFT,
K_GP_RIGHT_THUMB_RIGHT,
K_JOY_UP,
K_JOY_DOWN,
K_JOY_LEFT,
K_JOY_RIGHT,
K_MM_BROWSER_BACK, /* extra keys */
K_MM_BROWSER_FAVORITES, K_LWIN,
K_MM_BROWSER_FORWARD, K_RWIN,
K_MM_BROWSER_HOME, K_APP,
K_MM_BROWSER_REFRESH, K_SEARCH,
K_MM_BROWSER_STOP, K_VOLUP,
K_MM_VOLUME_MUTE, K_VOLDOWN,
K_MM_TRACK_NEXT, K_RALT,
K_MM_TRACK_PREV, K_RCTRL,
K_MM_TRACK_STOP, K_RSHIFT,
K_MM_TRACK_PLAYPAUSE, K_PRINTSCREEN,
K_MAX /* multimedia keyboard */
}; K_MM_BROWSER_BACK,
K_MM_BROWSER_FAVORITES,
K_MM_BROWSER_FORWARD,
K_MM_BROWSER_HOME,
K_MM_BROWSER_REFRESH,
K_MM_BROWSER_STOP,
K_MM_VOLUME_MUTE,
K_MM_TRACK_NEXT,
K_MM_TRACK_PREV,
K_MM_TRACK_STOP,
K_MM_TRACK_PLAYPAUSE,
K_MAX
} keynum_t;
#define KEY_MODIFIER_SHIFT (1<<0) #define KEY_MODIFIER_SHIFT (1<<0)
#define KEY_MODIFIER_ALT (1<<1) #define KEY_MODIFIER_ALT (1<<1)

View file

@ -11,11 +11,11 @@ int qcinput_scan;
int qcinput_unicode; int qcinput_unicode;
//QC key codes are based upon DP's keycode constants. This is on account of menu.dat coming first. //QC key codes are based upon DP's keycode constants. This is on account of menu.dat coming first.
int MP_TranslateFTEtoQCCodes(int code) int MP_TranslateFTEtoQCCodes(keynum_t code)
{ {
switch(code) safeswitch(code)
{ {
case K_TAB: return 9; case K_TAB: return 9;
case K_ENTER: return 13; case K_ENTER: return 13;
case K_ESCAPE: return 27; case K_ESCAPE: return 27;
case K_SPACE: return 32; case K_SPACE: return 32;
@ -94,51 +94,51 @@ int MP_TranslateFTEtoQCCodes(int code)
case K_JOY2: return 769; case K_JOY2: return 769;
case K_JOY3: return 770; case K_JOY3: return 770;
case K_JOY4: return 771; case K_JOY4: return 771;
// case K_JOY5: return 772; case K_JOY5: return 772;
// case K_JOY6: return 773; case K_JOY6: return 773;
// case K_JOY7: return 774; case K_JOY7: return 774;
// case K_JOY8: return 775; case K_JOY8: return 775;
// case K_JOY9: return 776; case K_JOY9: return 776;
// case K_JOY10: return 777; case K_JOY10: return 777;
// case K_JOY11: return 778; case K_JOY11: return 778;
// case K_JOY12: return 779; case K_JOY12: return 779;
// case K_JOY13: return 780; case K_JOY13: return 780;
// case K_JOY14: return 781; case K_JOY14: return 781;
// case K_JOY15: return 782; case K_JOY15: return 782;
// case K_JOY16: return 783; case K_JOY16: return 783;
case K_JOY17: return 784;
case K_JOY18: return 785;
case K_JOY19: return 786;
case K_JOY20: return 787;
case K_JOY21: return 788;
case K_JOY22: return 789;
case K_JOY23: return 790;
case K_JOY24: return 791;
case K_JOY25: return 792;
case K_JOY26: return 793;
case K_JOY27: return 794;
case K_JOY28: return 795;
case K_JOY29: return 796;
case K_JOY30: return 797;
case K_JOY31: return 798;
case K_JOY32: return 799;
case K_AUX1: return 784; case K_AUX1: return 800;
case K_AUX2: return 785; case K_AUX2: return 801;
case K_AUX3: return 786; case K_AUX3: return 802;
case K_AUX4: return 787; case K_AUX4: return 803;
case K_AUX5: return 788; case K_AUX5: return 804;
case K_AUX6: return 789; case K_AUX6: return 805;
case K_AUX7: return 790; case K_AUX7: return 806;
case K_AUX8: return 791; case K_AUX8: return 807;
case K_AUX9: return 792; case K_AUX9: return 808;
case K_AUX10: return 793; case K_AUX10: return 809;
case K_AUX11: return 794; case K_AUX11: return 810;
case K_AUX12: return 795; case K_AUX12: return 811;
case K_AUX13: return 796; case K_AUX13: return 812;
case K_AUX14: return 797; case K_AUX14: return 813;
case K_AUX15: return 798; case K_AUX15: return 814;
case K_AUX16: return 799; case K_AUX16: return 815;
case K_AUX17: return 800;
case K_AUX18: return 801;
case K_AUX19: return 802;
case K_AUX20: return 803;
case K_AUX21: return 804;
case K_AUX22: return 805;
case K_AUX23: return 806;
case K_AUX24: return 807;
case K_AUX25: return 808;
case K_AUX26: return 809;
case K_AUX27: return 810;
case K_AUX28: return 811;
case K_AUX29: return 812;
case K_AUX30: return 813;
case K_AUX31: return 814;
case K_AUX32: return 815;
case K_GP_DPAD_UP: return 816; case K_GP_DPAD_UP: return 816;
case K_GP_DPAD_DOWN: return 817; case K_GP_DPAD_DOWN: return 817;
@ -146,8 +146,8 @@ int MP_TranslateFTEtoQCCodes(int code)
case K_GP_DPAD_RIGHT: return 819; case K_GP_DPAD_RIGHT: return 819;
case K_GP_START: return 820; case K_GP_START: return 820;
case K_GP_BACK: return 821; case K_GP_BACK: return 821;
case K_GP_LEFT_THUMB: return 822; case K_GP_LEFT_STICK: return 822;
case K_GP_RIGHT_THUMB: return 823; case K_GP_RIGHT_STICK: return 823;
case K_GP_LEFT_SHOULDER: return 824; case K_GP_LEFT_SHOULDER: return 824;
case K_GP_RIGHT_SHOULDER: return 825; case K_GP_RIGHT_SHOULDER: return 825;
case K_GP_A: return 826; case K_GP_A: return 826;
@ -169,7 +169,26 @@ int MP_TranslateFTEtoQCCodes(int code)
case K_JOY_LEFT: return 842; case K_JOY_LEFT: return 842;
case K_JOY_RIGHT: return 843; case K_JOY_RIGHT: return 843;
case K_GP_MISC1:
case K_GP_PADDLE1:
case K_GP_PADDLE2:
case K_GP_PADDLE3:
case K_GP_PADDLE4:
case K_GP_TOUCHPAD:
case K_GP_GUIDE:
case K_GP_UNKNOWN:
case K_MM_BROWSER_FAVORITES:
case K_MM_BROWSER_FORWARD:
case K_MM_BROWSER_BACK:
case K_MM_BROWSER_HOME:
case K_MM_BROWSER_REFRESH:
case K_MM_BROWSER_STOP:
case K_MM_VOLUME_MUTE:
case K_MM_TRACK_NEXT:
case K_MM_TRACK_PREV:
case K_MM_TRACK_STOP:
case K_MAX:
case K_MM_TRACK_PLAYPAUSE:
case K_F13: case K_F13:
case K_F14: case K_F14:
case K_F15: case K_F15:
@ -181,7 +200,7 @@ int MP_TranslateFTEtoQCCodes(int code)
case K_APP: case K_APP:
case K_SEARCH: return -code; case K_SEARCH: return -code;
default: safedefault:
if (code == -1) //mod bug if (code == -1) //mod bug
return code; return code;
if (code < 0) //negative values are 'qc-native' keys, for stuff that the api lacks. if (code < 0) //negative values are 'qc-native' keys, for stuff that the api lacks.
@ -192,7 +211,7 @@ int MP_TranslateFTEtoQCCodes(int code)
} }
} }
int MP_TranslateQCtoFTECodes(int code) keynum_t MP_TranslateQCtoFTECodes(int code)
{ {
switch(code) switch(code)
{ {
@ -272,51 +291,51 @@ int MP_TranslateQCtoFTECodes(int code)
case 769: return K_JOY2; case 769: return K_JOY2;
case 770: return K_JOY3; case 770: return K_JOY3;
case 771: return K_JOY4; case 771: return K_JOY4;
// case 772: return K_JOY5; case 772: return K_JOY5;
// case 773: return K_JOY6; case 773: return K_JOY6;
// case 774: return K_JOY7; case 774: return K_JOY7;
// case 775: return K_JOY8; case 775: return K_JOY8;
// case 776: return K_JOY9; case 776: return K_JOY9;
// case 777: return K_JOY10; case 777: return K_JOY10;
// case 778: return K_JOY11; case 778: return K_JOY11;
// case 779: return K_JOY12; case 779: return K_JOY12;
// case 780: return K_JOY13; case 780: return K_JOY13;
// case 781: return K_JOY14; case 781: return K_JOY14;
// case 782: return K_JOY15; case 782: return K_JOY15;
// case 783: return K_JOY16; case 783: return K_JOY16;
case 784: return K_JOY17;
case 785: return K_JOY18;
case 786: return K_JOY19;
case 787: return K_JOY20;
case 788: return K_JOY21;
case 789: return K_JOY22;
case 790: return K_JOY23;
case 791: return K_JOY24;
case 792: return K_JOY25;
case 793: return K_JOY26;
case 794: return K_JOY27;
case 795: return K_JOY28;
case 796: return K_JOY29;
case 797: return K_JOY30;
case 798: return K_JOY31;
case 799: return K_JOY32;
case 784: return K_AUX1; case 800: return K_AUX1;
case 785: return K_AUX2; case 801: return K_AUX2;
case 786: return K_AUX3; case 802: return K_AUX3;
case 787: return K_AUX4; case 803: return K_AUX4;
case 788: return K_AUX5; case 804: return K_AUX5;
case 789: return K_AUX6; case 805: return K_AUX6;
case 790: return K_AUX7; case 806: return K_AUX7;
case 791: return K_AUX8; case 807: return K_AUX8;
case 792: return K_AUX9; case 808: return K_AUX9;
case 793: return K_AUX10; case 809: return K_AUX10;
case 794: return K_AUX11; case 810: return K_AUX11;
case 795: return K_AUX12; case 811: return K_AUX12;
case 796: return K_AUX13; case 812: return K_AUX13;
case 797: return K_AUX14; case 813: return K_AUX14;
case 798: return K_AUX15; case 814: return K_AUX15;
case 799: return K_AUX16; case 815: return K_AUX16;
case 800: return K_AUX17;
case 801: return K_AUX18;
case 802: return K_AUX19;
case 803: return K_AUX20;
case 804: return K_AUX21;
case 805: return K_AUX22;
case 806: return K_AUX23;
case 807: return K_AUX24;
case 808: return K_AUX25;
case 809: return K_AUX26;
case 810: return K_AUX27;
case 811: return K_AUX28;
case 812: return K_AUX29;
case 813: return K_AUX30;
case 814: return K_AUX31;
case 815: return K_AUX32;
case 816: return K_GP_DPAD_UP; case 816: return K_GP_DPAD_UP;
case 817: return K_GP_DPAD_DOWN; case 817: return K_GP_DPAD_DOWN;
@ -324,8 +343,8 @@ int MP_TranslateQCtoFTECodes(int code)
case 819: return K_GP_DPAD_RIGHT; case 819: return K_GP_DPAD_RIGHT;
case 820: return K_GP_START; case 820: return K_GP_START;
case 821: return K_GP_BACK; case 821: return K_GP_BACK;
case 822: return K_GP_LEFT_THUMB; case 822: return K_GP_LEFT_STICK;
case 823: return K_GP_RIGHT_THUMB; case 823: return K_GP_RIGHT_STICK;
case 824: return K_GP_LEFT_SHOULDER; case 824: return K_GP_LEFT_SHOULDER;
case 825: return K_GP_RIGHT_SHOULDER; case 825: return K_GP_RIGHT_SHOULDER;
case 826: return K_GP_A; case 826: return K_GP_A;

View file

@ -85,8 +85,8 @@ extern cvar_t pr_gc_threaded;
extern int qcinput_scan; extern int qcinput_scan;
extern int qcinput_unicode; extern int qcinput_unicode;
int MP_TranslateFTEtoQCCodes(int code); int MP_TranslateFTEtoQCCodes(keynum_t code);
int MP_TranslateQCtoFTECodes(int code); keynum_t MP_TranslateQCtoFTECodes(int code);
qboolean WPhys_Push (world_t *w, wedict_t *pusher, vec3_t move, vec3_t amove); qboolean WPhys_Push (world_t *w, wedict_t *pusher, vec3_t move, vec3_t amove);
#ifdef ENGINE_ROUTING #ifdef ENGINE_ROUTING