From 3872e2484741d5b7e9b7facc0d364408ee548f9e Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Sun, 23 Jan 2011 11:04:25 +0000 Subject: [PATCH] Allow top-bit-set characters to be used for key bindings, from Tiago Cunha. --- key-string.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/key-string.c b/key-string.c index 2d768aef..ad7d4edd 100644 --- a/key-string.c +++ b/key-string.c @@ -147,7 +147,7 @@ key_string_lookup_string(const char *string) /* Is this a standard ASCII key? */ if (string[1] == '\0') { key = (u_char) string[0]; - if (key < 32 || key > 126) + if (key < 32 || key == 127 || key > 255) return (KEYC_NONE); } else { /* Otherwise look the key up in the table. */ @@ -213,7 +213,7 @@ key_string_lookup_key(int key) } /* Invalid keys are errors. */ - if (key >= 127) + if (key == 127 || key > 255) return (NULL); /* Check for standard or control key. */ @@ -225,7 +225,9 @@ key_string_lookup_key(int key) } else if (key >= 32 && key <= 126) { tmp[0] = key; tmp[1] = '\0'; - } + } else if (key >= 128) + xsnprintf(tmp, sizeof tmp, "\\%o", key); + strlcat(out, tmp, sizeof out); return (out); }