mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2024-11-30 08:00:51 +00:00
f36fa23666
Id's binding of escape to togglemenu interfered with the hard-coding (want escape to togglemenu (or console as a fallback) no matter what). This idea was part of mercury's original design, too.
205 lines
5.1 KiB
C
205 lines
5.1 KiB
C
/*
|
|
old_keys.c
|
|
|
|
translations from old to new keynames
|
|
|
|
Copyright (C) 2001 Bill Currie <bill@tanwiha.org>
|
|
|
|
Author: Bill Currie <bill@tanwiha.org>
|
|
Date: 2001/8/16
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public License
|
|
as published by the Free Software Foundation; either version 2
|
|
of the License, or (at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
|
|
See the GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to:
|
|
|
|
Free Software Foundation, Inc.
|
|
59 Temple Place - Suite 330
|
|
Boston, MA 02111-1307, USA
|
|
|
|
*/
|
|
#ifdef HAVE_CONFIG_H
|
|
# include "config.h"
|
|
#endif
|
|
|
|
#ifdef HAVE_STRING_H
|
|
# include <string.h>
|
|
#endif
|
|
#ifdef HAVE_STRINGS_H
|
|
# include <strings.h>
|
|
#endif
|
|
|
|
#if defined(_WIN32) && defined(HAVE_MALLOC_H)
|
|
#include <malloc.h>
|
|
#endif
|
|
|
|
#include <ctype.h>
|
|
#include <stdlib.h>
|
|
|
|
#include "qfalloca.h"
|
|
|
|
#include "QF/hash.h"
|
|
#include "QF/qtypes.h"
|
|
#include "QF/sys.h"
|
|
|
|
#include "old_keys.h"
|
|
|
|
typedef struct {
|
|
const char *old_name;
|
|
const char *new_name;
|
|
} old_keyname_t;
|
|
|
|
old_keyname_t old_keynames[] = {
|
|
//{"ESCAPE", "key button 0x01"}, binding not allowed
|
|
{"1", "key button 0x02"},
|
|
{"2", "key button 0x03"},
|
|
{"3", "key button 0x04"},
|
|
{"4", "key button 0x05"},
|
|
{"5", "key button 0x06"},
|
|
{"6", "key button 0x07"},
|
|
{"7", "key button 0x08"},
|
|
{"8", "key button 0x09"},
|
|
{"9", "key button 0x0a"},
|
|
{"0", "key button 0x0b"},
|
|
{"-", "key button 0x0c"},
|
|
{"=", "key button 0x0d"},
|
|
{"BACKSPACE", "key button 0x0e"},
|
|
{"TAB", "key button 0x0f"},
|
|
|
|
{"Q", "key button 0x10"},
|
|
{"W", "key button 0x11"},
|
|
{"E", "key button 0x12"},
|
|
{"R", "key button 0x13"},
|
|
{"T", "key button 0x14"},
|
|
{"Y", "key button 0x15"},
|
|
{"U", "key button 0x16"},
|
|
{"I", "key button 0x17"},
|
|
{"O", "key button 0x18"},
|
|
{"P", "key button 0x19"},
|
|
{"[", "key button 0x1a"},
|
|
{"]", "key button 0x1b"},
|
|
{"ENTER", "key button 0x1c"},
|
|
{"CTRL", "key button 0x1d"},
|
|
{"A", "key button 0x1e"},
|
|
{"S", "key button 0x1f"},
|
|
|
|
{"D", "key button 0x20"},
|
|
{"F", "key button 0x21"},
|
|
{"G", "key button 0x22"},
|
|
{"H", "key button 0x23"},
|
|
{"J", "key button 0x24"},
|
|
{"K", "key button 0x25"},
|
|
{"L", "key button 0x26"},
|
|
{"SEMICOLON", "key button 0x27"},
|
|
{"'", "key button 0x28"},
|
|
{"`", "key button 0x29"},
|
|
{"SHIFT", "key button 0x2a"},
|
|
{"\\", "key button 0x2b"},
|
|
{"Z", "key button 0x2c"},
|
|
{"X", "key button 0x2d"},
|
|
{"C", "key button 0x2e"},
|
|
{"V", "key button 0x2f"},
|
|
|
|
{"B", "key button 0x30"},
|
|
{"N", "key button 0x31"},
|
|
{"M", "key button 0x32"},
|
|
{",", "key button 0x33"},
|
|
{".", "key button 0x34"},
|
|
{"/", "key button 0x35"},
|
|
// quake had no right shift
|
|
{"*", "key button 0x37"},
|
|
{"ALT", "key button 0x38"},
|
|
{"SPACE", "key button 0x39"},
|
|
//{"CAPSLOCK", "key button 0x3a"}, quake had no way of binding capslock
|
|
{"F1", "key button 0x3b"},
|
|
{"F2", "key button 0x3c"},
|
|
{"F3", "key button 0x3d"},
|
|
{"F4", "key button 0x3e"},
|
|
{"F5", "key button 0x3f"},
|
|
|
|
{"F6", "key button 0x40"},
|
|
{"F7", "key button 0x41"},
|
|
{"F8", "key button 0x42"},
|
|
{"F9", "key button 0x43"},
|
|
{"F10", "key button 0x44"},
|
|
{"PAUSE", "key button 0x45"},
|
|
{"SCRLCK", "key button 0x46"},
|
|
{"HOME", "key button 0x47"},
|
|
{"UPARROW", "key button 0x48"},
|
|
{"PGUP", "key button 0x49"},
|
|
//{"-", "key button 0x4a"}, quake had no way of binding kp -
|
|
{"LEFTARROW", "key button 0x4b"},
|
|
//{"5", "key button 0x4c"}, quake had no way of binding kp 5
|
|
{"RIGHTARROW", "key button 0x4d"},
|
|
{"+", "key button 0x4e"},
|
|
{"END", "key button 0x4f"},
|
|
{"DOWNARROW", "key button 0x50"},
|
|
{"PGDN", "key button 0x51"},
|
|
{"INS", "key button 0x52"},
|
|
{"DEL", "key button 0x53"},
|
|
// nothing 0x54
|
|
// nothing 0x55
|
|
// nothing 0x56
|
|
{"F11", "key button 0x57"},
|
|
{"F12", "key button 0x58"},
|
|
|
|
{";", "key button 0x27"},
|
|
{":", "key button 0x27"},
|
|
|
|
{"MOUSE1", "mouse button 0"},
|
|
{"MOUSE2", "mouse button 2"},
|
|
{"MOUSE3", "mouse button 1"},
|
|
{"MOUSE6", "mouse button 5"},
|
|
{"MOUSE7", "mouse button 6"},
|
|
|
|
{"MWHEELUP", "mouse button 3"},
|
|
{"MWHEELDOWN", "mouse button 4"},
|
|
|
|
{0, 0}
|
|
};
|
|
|
|
hashtab_t *old_key_table;
|
|
|
|
static const char *
|
|
ok_get_key (const void *_ok, void *unused)
|
|
{
|
|
old_keyname_t *ok = (old_keyname_t *)_ok;
|
|
return ok->old_name;
|
|
}
|
|
|
|
void
|
|
OK_Init (void)
|
|
{
|
|
old_keyname_t *ok;
|
|
|
|
old_key_table = Hash_NewTable (1021, ok_get_key, 0, 0, 0);
|
|
for (ok = old_keynames; ok->old_name; ok++)
|
|
Hash_Add (old_key_table, ok);
|
|
}
|
|
|
|
const char *
|
|
OK_TranslateKeyName (const char *name)
|
|
{
|
|
old_keyname_t *ok;
|
|
char *uname = alloca (strlen (name) + 1);
|
|
const char *s = name;
|
|
char *d = uname;
|
|
|
|
while ((*d++ = toupper ((byte) *s)))
|
|
s++;
|
|
ok = Hash_Find (old_key_table, uname);
|
|
if (!ok) {
|
|
Sys_Printf ("unknown old keyname: %s\n", uname);
|
|
return 0;
|
|
}
|
|
return ok->new_name;
|
|
}
|