summaryrefslogtreecommitdiff
path: root/source/cl_keys.c
diff options
context:
space:
mode:
Diffstat (limited to 'source/cl_keys.c')
-rw-r--r--source/cl_keys.c32
1 files changed, 23 insertions, 9 deletions
diff --git a/source/cl_keys.c b/source/cl_keys.c
index 166146b..4539bb6 100644
--- a/source/cl_keys.c
+++ b/source/cl_keys.c
@@ -56,7 +56,7 @@ typedef struct keyname_s {
int keynum;
} keyname_t;
-static keyname_t keynames[] = {
+static const keyname_t keynames[] = {
{"TAB", K_TAB},
{"ENTER", K_ENTER},
{"ESCAPE", K_ESCAPE},
@@ -273,7 +273,7 @@ the K_* names are matched up.
===================
*/
int Key_StringToKeynum( const char *str ) {
- keyname_t *kn;
+ const keyname_t *kn;
if( !str || !str[0] )
return -1;
@@ -297,8 +297,8 @@ FIXME: handle quote special (general escape sequence?)
===================
*/
char *Key_KeynumToString( int keynum ) {
- keyname_t *kn;
- static char tinystr[2];
+ const keyname_t *kn;
+ static char tinystr[2];
if( keynum == -1 )
return "<KEY NOT FOUND>";
@@ -309,7 +309,7 @@ char *Key_KeynumToString( int keynum ) {
return tinystr;
}
- for( kn=keynames ; kn->name ; kn++ )
+ for( kn = keynames; kn->name; kn++ )
if( keynum == kn->keynum )
return kn->name;
@@ -366,7 +366,7 @@ void Key_SetBinding( int keynum, const char *binding ) {
if( keynum < 0 || keynum > 255 )
return;
-// free old bindings
+// free old binding
if( keybindings[keynum] ) {
Z_Free( keybindings[keynum] );
}
@@ -376,15 +376,29 @@ void Key_SetBinding( int keynum, const char *binding ) {
}
static void Key_Name_g( genctx_t *ctx ) {
- keyname_t *k;
+ const keyname_t *k;
+ ctx->ignorecase = qtrue;
for( k = keynames; k->name; k++ ) {
- if( !Prompt_AddMatchCase( ctx, k->name ) ) {
+ if( !Prompt_AddMatch( ctx, k->name ) ) {
break;
}
}
}
+static void Key_Bound_g( genctx_t *ctx ) {
+ int i;
+
+ ctx->ignorecase = qtrue;
+ for( i = 0; i < 256; i++ ) {
+ if( keybindings[i] ) {
+ if( !Prompt_AddMatch( ctx, Key_KeynumToString( i ) ) ) {
+ break;
+ }
+ }
+ }
+}
+
static void Key_Bind_c( genctx_t *ctx, int argnum ) {
if( argnum == 1 ) {
Key_Name_g( ctx );
@@ -395,7 +409,7 @@ static void Key_Bind_c( genctx_t *ctx, int argnum ) {
static void Key_Unbind_c( genctx_t *ctx, int argnum ) {
if( argnum == 1 ) {
- Key_Name_g( ctx );
+ Key_Bound_g( ctx );
}
}