summaryrefslogtreecommitdiff
path: root/src/keys.c
diff options
context:
space:
mode:
authorFrederic Culot <calcurse@culot.org>2008-12-07 09:20:38 +0000
committerFrederic Culot <calcurse@culot.org>2008-12-07 09:20:38 +0000
commit639058740a44c6380258e0152f9916af1e53bb27 (patch)
tree4a011f1eef9f925740c9d0e701258e580ce65b9f /src/keys.c
parentcf5617e3378fc4c6089195c83fac0f8a7acb84fe (diff)
downloadcalcurse-639058740a44c6380258e0152f9916af1e53bb27.zip
Checks added while loading key bindings configuration.
Diffstat (limited to 'src/keys.c')
-rwxr-xr-xsrc/keys.c29
1 files changed, 25 insertions, 4 deletions
diff --git a/src/keys.c b/src/keys.c
index 89f1787..c3fbde4 100755
--- a/src/keys.c
+++ b/src/keys.c
@@ -1,4 +1,4 @@
-/* $calcurse: keys.c,v 1.6 2008/11/30 20:48:10 culot Exp $ */
+/* $calcurse: keys.c,v 1.7 2008/12/07 09:20:38 culot Exp $ */
/*
* Calcurse - text-based organizer
@@ -32,7 +32,7 @@
#include "custom.h"
#include "keys.h"
-#define MAXKEYVAL 256
+#define MAXKEYVAL KEY_MAX /* ncurses defines KEY_MAX as maximum key value */
struct keydef_s {
char *label;
@@ -106,7 +106,8 @@ dump_intro (FILE *fd)
"# To define bindings which use the CONTROL key, prefix the key with "
"'C-'.\n"
"# The escape and horizontal Tab key can be specified using the 'ESC'\n"
- "# and 'TAB' keyword, respectively.\n#\n"
+ "# and 'TAB' keyword, respectively. Arrow keys can also be specified\n"
+ "# with the UP, DWN, LFT, RGT keywords.\n#\n"
"# A description of what each ACTION keyword is used for is available\n"
"# from calcurse online configuration menu.\n");
@@ -252,7 +253,11 @@ keys_str2int (char *key)
{
const string_t CONTROL_KEY = STRING_BUILD ("C-");
const string_t TAB_KEY = STRING_BUILD ("TAB");
- const string_t ESCAPE_KEY = STRING_BUILD ("ESC");
+ const string_t ESCAPE_KEY = STRING_BUILD ("ESC");
+ const string_t CURSES_KEY_UP = STRING_BUILD ("UP");
+ const string_t CURSES_KEY_DOWN = STRING_BUILD ("DWN");
+ const string_t CURSES_KEY_LEFT = STRING_BUILD ("LFT");
+ const string_t CURSES_KEY_RIGHT = STRING_BUILD ("RGT");
if (!key)
return -1;
@@ -268,6 +273,14 @@ keys_str2int (char *key)
return TAB;
else if (!strncmp (key, ESCAPE_KEY.str, ESCAPE_KEY.len))
return ESCAPE;
+ else if (!strncmp (key, CURSES_KEY_UP.str, CURSES_KEY_UP.len))
+ return KEY_UP;
+ else if (!strncmp (key, CURSES_KEY_DOWN.str, CURSES_KEY_DOWN.len))
+ return KEY_DOWN;
+ else if (!strncmp (key, CURSES_KEY_LEFT.str, CURSES_KEY_LEFT.len))
+ return KEY_LEFT;
+ else if (!strncmp (key, CURSES_KEY_RIGHT.str, CURSES_KEY_RIGHT.len))
+ return KEY_RIGHT;
else
return -1;
}
@@ -282,6 +295,14 @@ keys_int2str (int key)
return "TAB";
case ESCAPE:
return "ESC";
+ case KEY_UP:
+ return "UP";
+ case KEY_DOWN:
+ return "DWN";
+ case KEY_LEFT:
+ return "LFT";
+ case KEY_RIGHT:
+ return "RGT";
default:
return (char *)keyname (key);
}