changeset 6394:5dded1a5cfbb

Add support for hex key code in input.conf
author albeu
date Wed, 12 Jun 2002 10:39:04 +0000
parents f9b3d010b35e
children 9b218a01b74b
files input/input.c
diffstat 1 files changed, 13 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/input/input.c	Wed Jun 12 09:31:33 2002 +0000
+++ b/input/input.c	Wed Jun 12 10:39:04 2002 +0000
@@ -11,6 +11,7 @@
 #include <sys/types.h>
 #include <sys/time.h>
 #include <fcntl.h>
+#include <ctype.h>
 
 #include "input.h"
 #include "mouse.h"
@@ -963,7 +964,7 @@
   return ret;
 }
 
-static char key_str[2];
+static char key_str[12];
 
 static char*
 mp_input_get_key_name(int key) {
@@ -974,21 +975,25 @@
       return key_names[i].name;
   }
   
-  if(key >> 8 == 0) {
-    snprintf(key_str,2,"%c",(char)key);
+  if(isascii(key)) {
+    snprintf(key_str,12,"%c",(char)key);
     return key_str;
   }
 
-  return NULL;
+  // Print the hex key code
+  snprintf(key_str,12,"%#-8x",key);
+  return key_str;
+
 }
 
 static int
 mp_input_get_key_from_name(char* name) {
-  int i,ret = 0;
-  if(strlen(name) == 1) { // Direct key code
-    (char)ret = name[0];
+  int i,ret = 0,len = strlen(name);
+  if(len == 1) { // Direct key code
+    ret = (unsigned char)name[0];
     return ret;
-  }
+  } else if(len > 2 && strncasecmp("0x",name,2) == 0)
+    return strtol(name,NULL,16);
 
   for(i = 0; key_names[i].name != NULL; i++) {
     if(strcasecmp(key_names[i].name,name) == 0)