keyname: better handling of named control characters
authorH. Peter Anvin <hpa@linux.intel.com>
Mon, 11 Apr 2011 22:41:26 +0000 (15:41 -0700)
committerH. Peter Anvin <hpa@linux.intel.com>
Mon, 11 Apr 2011 22:41:26 +0000 (15:41 -0700)
Named control character (Tab, Enter, Backspace etc.) should use those
names rather than caret sequences.

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
com32/libutil/keyname.c

index 6aebbd5..3b9e658 100644 (file)
@@ -110,10 +110,8 @@ const char *key_code_to_name(int key)
     if (key < 0)
        return NULL;
 
-    if (key < 0x100 && key != ' ') {
-       if (key == 0x7f) {
-           return "^?";
-       } else if (key & 0x60) {
+    if (key > ' ' && key < 0x100) {
+       if (key & 0x60) {
            buf[0] = key;
            buf[1] = '\0';
        } else {
@@ -129,5 +127,12 @@ const char *key_code_to_name(int key)
            return name->string;
     }
 
+    if (key < ' ') {
+       buf[0] = '^';
+       buf[1] = key | 0x40;
+       buf[2] = '\0';
+       return buf;
+    }
+
     return NULL;
 }