From 2a2e24a17769b5b33b809d01122cc9a0cd465263 Mon Sep 17 00:00:00 2001 From: Tiago Cunha Date: Sun, 17 Jan 2010 19:01:27 +0000 Subject: [PATCH] Sync OpenBSD patchset 608: Permit S- prefix on keys for shift. Relatively few terminals support this (basically xterm only) and even fewer have them in terminfo (kLFT2 and kRIT2). --- key-string.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/key-string.c b/key-string.c index 4ee1d509..e8f20ec4 100644 --- a/key-string.c +++ b/key-string.c @@ -1,4 +1,4 @@ -/* $Id: key-string.c,v 1.28 2009-12-04 22:14:47 tcunha Exp $ */ +/* $Id: key-string.c,v 1.29 2010-01-17 19:01:27 tcunha Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -170,6 +170,25 @@ key_string_lookup_string(const char *string) return (KEYC_NONE); } + if ((string[0] == 'S' || string[0] == 's') && string[1] == '-') { + ptr = string + 2; + if (ptr[0] == '\0') + return (KEYC_NONE); + key = key_string_lookup_string(ptr); + if (key != KEYC_NONE) { + if (key >= KEYC_BASE) + return (key | KEYC_SHIFT); + } else { + if (ptr[1] == '\0') + return (KEYC_NONE); + key = (u_char) ptr[0]; + } + + if (key >= 32 && key <= 127) + return (key | KEYC_SHIFT); + return (KEYC_NONE); + } + return (key_string_search_table(string)); }