summaryrefslogtreecommitdiffstats
path: root/key-string.c
diff options
context:
space:
mode:
authorNicholas Marriott <nicholas.marriott@gmail.com>2007-10-03 11:26:34 +0000
committerNicholas Marriott <nicholas.marriott@gmail.com>2007-10-03 11:26:34 +0000
commitdadc56d754f2e86dec96bcf3bed54090538ce336 (patch)
tree77f6aab210106a251b3516bca4ba8ddc92973c86 /key-string.c
parenta68b1e58db8b970f82cd17a74a18d30a0c77424e (diff)
Key binding, unbinding.
Diffstat (limited to 'key-string.c')
-rw-r--r--key-string.c223
1 files changed, 223 insertions, 0 deletions
diff --git a/key-string.c b/key-string.c
new file mode 100644
index 00000000..5740ef6b
--- /dev/null
+++ b/key-string.c
@@ -0,0 +1,223 @@
+/* $Id: key-string.c,v 1.1 2007-10-03 11:26:34 nicm Exp $ */
+
+/*
+ * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
+ * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
+ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <sys/types.h>
+
+#include <string.h>
+
+#include "tmux.h"
+
+struct {
+ const char *string;
+ int key;
+} key_string_table[] = {
+ { "A1", KEYC_A1 },
+ { "A3", KEYC_A3 },
+ { "B2", KEYC_B2 },
+ { "BACKSPACE", KEYC_BACKSPACE },
+ { "BEG", KEYC_BEG },
+ { "BTAB", KEYC_BTAB },
+ { "C1", KEYC_C1 },
+ { "C3", KEYC_C3 },
+ { "CANCEL", KEYC_CANCEL },
+ { "CATAB", KEYC_CATAB },
+ { "CLEAR", KEYC_CLEAR },
+ { "CLOSE", KEYC_CLOSE },
+ { "COMMAND", KEYC_COMMAND },
+ { "COPY", KEYC_COPY },
+ { "CREATE", KEYC_CREATE },
+ { "CTAB", KEYC_CTAB },
+ { "DC", KEYC_DC },
+ { "DL", KEYC_DL },
+ { "DOWN", KEYC_DOWN},
+ { "EIC", KEYC_EIC },
+ { "END", KEYC_END },
+ { "ENTER", KEYC_ENTER },
+ { "EOL", KEYC_EOL },
+ { "EOS", KEYC_EOS },
+ { "EXIT", KEYC_EXIT },
+ { "F0", KEYC_F0 },
+ { "F1", KEYC_F1 },
+ { "F10", KEYC_F10 },
+ { "F11", KEYC_F11 },
+ { "F12", KEYC_F12 },
+ { "F13", KEYC_F13 },
+ { "F14", KEYC_F14 },
+ { "F15", KEYC_F15 },
+ { "F16", KEYC_F16 },
+ { "F17", KEYC_F17 },
+ { "F18", KEYC_F18 },
+ { "F19", KEYC_F19 },
+ { "F2", KEYC_F2 },
+ { "F20", KEYC_F20 },
+ { "F21", KEYC_F21 },
+ { "F22", KEYC_F22 },
+ { "F23", KEYC_F23 },
+ { "F24", KEYC_F24 },
+ { "F25", KEYC_F25 },
+ { "F26", KEYC_F26 },
+ { "F27", KEYC_F27 },
+ { "F28", KEYC_F28 },
+ { "F29", KEYC_F29 },
+ { "F3", KEYC_F3 },
+ { "F30", KEYC_F30 },
+ { "F31", KEYC_F31 },
+ { "F32", KEYC_F32 },
+ { "F33", KEYC_F33 },
+ { "F34", KEYC_F34 },
+ { "F35", KEYC_F35 },
+ { "F36", KEYC_F36 },
+ { "F37", KEYC_F37 },
+ { "F38", KEYC_F38 },
+ { "F39", KEYC_F39 },
+ { "F4", KEYC_F4 },
+ { "F40", KEYC_F40 },
+ { "F41", KEYC_F41 },
+ { "F42", KEYC_F42 },
+ { "F43", KEYC_F43 },
+ { "F44", KEYC_F44 },
+ { "F45", KEYC_F45 },
+ { "F46", KEYC_F46 },
+ { "F47", KEYC_F47 },
+ { "F48", KEYC_F48 },
+ { "F49", KEYC_F49 },
+ { "F5", KEYC_F5 },
+ { "F50", KEYC_F50 },
+ { "F51", KEYC_F51 },
+ { "F52", KEYC_F52 },
+ { "F53", KEYC_F53 },
+ { "F54", KEYC_F54 },
+ { "F55", KEYC_F55 },
+ { "F56", KEYC_F56 },
+ { "F57", KEYC_F57 },
+ { "F58", KEYC_F58 },
+ { "F59", KEYC_F59 },
+ { "F6", KEYC_F6 },
+ { "F60", KEYC_F60 },
+ { "F61", KEYC_F61 },
+ { "F62", KEYC_F62 },
+ { "F63", KEYC_F63 },
+ { "F7", KEYC_F7 },
+ { "F8", KEYC_F8 },
+ { "F9", KEYC_F9 },
+ { "FIND", KEYC_FIND },
+ { "HELP", KEYC_HELP },
+ { "HOME", KEYC_HOME },
+ { "IC", KEYC_IC },
+ { "IL", KEYC_IL },
+ { "LEFT", KEYC_LEFT },
+ { "LL", KEYC_LL },
+ { "MARK", KEYC_MARK },
+ { "MESSAGE", KEYC_MESSAGE },
+ { "MOVE", KEYC_MOVE },
+ { "NEXT", KEYC_NEXT },
+ { "NPAGE", KEYC_NPAGE },
+ { "OPEN", KEYC_OPEN },
+ { "OPTIONS", KEYC_OPTIONS },
+ { "PPAGE", KEYC_PPAGE },
+ { "PREVIOUS", KEYC_PREVIOUS },
+ { "PRINT", KEYC_PRINT },
+ { "REDO", KEYC_REDO },
+ { "REFERENCE", KEYC_REFERENCE },
+ { "REFRESH", KEYC_REFRESH },
+ { "REPLACE", KEYC_REPLACE },
+ { "RESTART", KEYC_RESTART },
+ { "RESUME", KEYC_RESUME },
+ { "RIGHT", KEYC_RIGHT },
+ { "SAVE", KEYC_SAVE },
+ { "SBEG", KEYC_SBEG },
+ { "SCANCEL", KEYC_SCANCEL },
+ { "SCOMMAND", KEYC_SCOMMAND },
+ { "SCOPY", KEYC_SCOPY },
+ { "SCREATE", KEYC_SCREATE },
+ { "SDC", KEYC_SDC },
+ { "SDL", KEYC_SDL },
+ { "SELECT", KEYC_SELECT },
+ { "SEND", KEYC_SEND },
+ { "SEOL", KEYC_SEOL },
+ { "SEXIT", KEYC_SEXIT },
+ { "SF", KEYC_SF },
+ { "SFIND", KEYC_SFIND },
+ { "SHELP", KEYC_SHELP },
+ { "SHOME", KEYC_SHOME },
+ { "SIC", KEYC_SIC },
+ { "SLEFT", KEYC_SLEFT },
+ { "SMESSAGE", KEYC_SMESSAGE },
+ { "SMOVE", KEYC_SMOVE },
+ { "SNEXT", KEYC_SNEXT },
+ { "SOPTIONS", KEYC_SOPTIONS },
+ { "SPREVIOUS", KEYC_SPREVIOUS },
+ { "SPRINT", KEYC_SPRINT },
+ { "SR", KEYC_SR },
+ { "SREDO", KEYC_SREDO },
+ { "SREPLACE", KEYC_SREPLACE },
+ { "SRIGHT", KEYC_SRIGHT },
+ { "SRSUME", KEYC_SRSUME },
+ { "SSAVE", KEYC_SSAVE },
+ { "SSUSPEND", KEYC_SSUSPEND },
+ { "STAB", KEYC_STAB },
+ { "SUNDO", KEYC_SUNDO },
+ { "SUSPEND", KEYC_SUSPEND },
+ { "UNDO", KEYC_UNDO },
+ { "UP", KEYC_UP },
+ { "^@", 0 },
+ { "^A", 1 },
+ { "^B", 2 },
+ { "^C", 3 },
+ { "^D", 4 },
+ { "^E", 5 },
+ { "^F", 6 },
+ { "^G", 7 },
+ { "^H", 8 },
+ { "^I", 9 },
+ { "^J", 10 },
+ { "^K", 11 },
+ { "^L", 12 },
+ { "^M", 13 },
+ { "^N", 14 },
+ { "^O", 15 },
+ { "^P", 16 },
+ { "^Q", 17 },
+ { "^R", 18 },
+ { "^S", 19 },
+ { "^T", 20 },
+ { "^U", 21 },
+ { "^V", 22 },
+ { "^W", 23 },
+ { "^X", 24 },
+ { "^Y", 25 },
+ { "^Z", 26 },
+};
+#define NKEYSTRINGS (sizeof key_string_table / sizeof key_string_table[0])
+
+int
+key_string_lookup(const char *string)
+{
+ u_int i;
+
+ if (string[0] == '\0')
+ return (KEYC_NONE);
+ if (string[1] == '\0')
+ return (string[0]);
+
+ for (i = 0; i < NKEYSTRINGS; i++) {
+ if (strcasecmp(string, key_string_table[i].string) == 0)
+ return (key_string_table[i].key);
+ }
+ return (KEYC_NONE);
+}