mirror of
https://github.com/DrBeef/ioq3quest.git
synced 2024-11-23 04:12:39 +00:00
* (bug 2741) replace K_LAST_KEY with MAX_KEYS. K_LAST_KEY is now defined
at 256 for mod compatability reasons. ioq3-only mods may chose to use MAX_KEYS for checking binds in order to get full key support, but at the cost of breaking compatability with older clients. * (bug 2741) remove some lingering 256-key hardcoding * properly check bounds of keynum in Key_IsDown(), Key_SetBinding(), and Key_GetBinding()
This commit is contained in:
parent
dce62fbcb4
commit
f9bb47d9af
3 changed files with 10 additions and 8 deletions
|
@ -782,7 +782,7 @@ Key_IsDown
|
||||||
===================
|
===================
|
||||||
*/
|
*/
|
||||||
qboolean Key_IsDown( int keynum ) {
|
qboolean Key_IsDown( int keynum ) {
|
||||||
if ( keynum == -1 ) {
|
if ( keynum < 0 || keynum >= MAX_KEYS ) {
|
||||||
return qfalse;
|
return qfalse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -902,7 +902,7 @@ Key_SetBinding
|
||||||
===================
|
===================
|
||||||
*/
|
*/
|
||||||
void Key_SetBinding( int keynum, const char *binding ) {
|
void Key_SetBinding( int keynum, const char *binding ) {
|
||||||
if ( keynum == -1 ) {
|
if ( keynum < 0 || keynum >= MAX_KEYS ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -926,7 +926,7 @@ Key_GetBinding
|
||||||
===================
|
===================
|
||||||
*/
|
*/
|
||||||
char *Key_GetBinding( int keynum ) {
|
char *Key_GetBinding( int keynum ) {
|
||||||
if ( keynum == -1 ) {
|
if ( keynum < 0 || keynum >= MAX_KEYS ) {
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -943,7 +943,7 @@ int Key_GetKey(const char *binding) {
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (binding) {
|
if (binding) {
|
||||||
for (i=0 ; i<256 ; i++) {
|
for (i=0 ; i < MAX_KEYS ; i++) {
|
||||||
if (keys[i].binding && Q_stricmp(binding, keys[i].binding) == 0) {
|
if (keys[i].binding && Q_stricmp(binding, keys[i].binding) == 0) {
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
@ -986,7 +986,7 @@ void Key_Unbindall_f (void)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i=0 ; i<256 ; i++)
|
for (i=0 ; i < MAX_KEYS; i++)
|
||||||
if (keys[i].binding)
|
if (keys[i].binding)
|
||||||
Key_SetBinding (i, "");
|
Key_SetBinding (i, "");
|
||||||
}
|
}
|
||||||
|
|
|
@ -260,9 +260,13 @@ typedef enum {
|
||||||
K_EURO,
|
K_EURO,
|
||||||
K_UNDO,
|
K_UNDO,
|
||||||
|
|
||||||
K_LAST_KEY // this had better be < MAX_KEYS!
|
MAX_KEYS
|
||||||
} keyNum_t;
|
} keyNum_t;
|
||||||
|
|
||||||
|
// MAX_KEYS replaces K_LAST_KEY, however some mods may have used K_LAST_KEY
|
||||||
|
// in detecting binds, so we leave it defined to the old hardcoded value
|
||||||
|
// of maxiumum keys to prevent mods from crashing older versions of the engine
|
||||||
|
#define K_LAST_KEY 256
|
||||||
|
|
||||||
// The menu code needs to get both key and char events, but
|
// The menu code needs to get both key and char events, but
|
||||||
// to avoid duplicating the paths, the char events are just
|
// to avoid duplicating the paths, the char events are just
|
||||||
|
|
|
@ -21,8 +21,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
*/
|
*/
|
||||||
#include "keycodes.h"
|
#include "keycodes.h"
|
||||||
|
|
||||||
#define MAX_KEYS 384
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
qboolean down;
|
qboolean down;
|
||||||
int repeats; // if > 1, it is autorepeating
|
int repeats; // if > 1, it is autorepeating
|
||||||
|
|
Loading…
Reference in a new issue