=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/key-string.c,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- src/usr.bin/tmux/key-string.c 2010/05/03 09:38:03 1.16 +++ src/usr.bin/tmux/key-string.c 2010/06/05 15:51:53 1.17 @@ -1,4 +1,4 @@ -/* $OpenBSD: key-string.c,v 1.16 2010/05/03 09:38:03 mcbride Exp $ */ +/* $OpenBSD: key-string.c,v 1.17 2010/06/05 15:51:53 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -149,29 +149,28 @@ key = (u_char) string[0]; if (key < 32 || key > 126) return (KEYC_NONE); + } else { + /* Otherwise look the key up in the table. */ + key = key_string_search_table(string); + if (key == KEYC_NONE) + return (KEYC_NONE); + } - /* Convert the standard control keys. */ - if (modifiers & KEYC_CTRL) { - if (key >= 97 && key <= 122) - key -= 96; - else if (key >= 64 && key <= 95) - key -= 64; - else if (key == 32) - key = 0; - else if (key == 63) - key = KEYC_BSPACE; - else - return (KEYC_NONE); - modifiers &= ~KEYC_CTRL; - } - - return (key | modifiers); + /* Convert the standard control keys. */ + if (key < KEYC_BASE && (modifiers & KEYC_CTRL)) { + if (key >= 97 && key <= 122) + key -= 96; + else if (key >= 64 && key <= 95) + key -= 64; + else if (key == 32) + key = 0; + else if (key == 63) + key = KEYC_BSPACE; + else + return (KEYC_NONE); + modifiers &= ~KEYC_CTRL; } - /* Otherwise look the key up in the table. */ - key = key_string_search_table(string); - if (key == KEYC_NONE) - return (KEYC_NONE); return (key | modifiers); }