File:
[ELWIX - Embedded LightWeight unIX -] /
libaitcli /
example /
keys.h
Revision
1.2:
download - view:
text,
annotated -
select for diffs -
revision graph
Wed Mar 16 17:24:03 2011 UTC (13 years, 6 months ago) by
misho
Branches:
MAIN
CVS tags:
cli4_6,
cli4_5,
cli4_4,
cli4_3,
cli4_2,
cli4_1,
cli4_0,
cli3_9,
cli3_8,
cli3_7,
cli3_6,
cli3_5,
cli3_4,
cli3_3,
cli3_2,
cli3_1,
cli3_0,
cli2_3,
cli2_2,
cli2_1,
HEAD,
CLI4_5,
CLI4_4,
CLI4_3,
CLI4_2,
CLI4_1,
CLI4_0,
CLI3_9,
CLI3_8,
CLI3_7,
CLI3_6,
CLI3_5,
CLI3_4,
CLI3_3,
CLI3_2,
CLI3_1,
CLI3_0,
CLI2_3,
CLI2_2,
CLI2_1,
CLI2_0
2.0
#ifndef __AITCLI_H
#define __AITCLI_H
#define K_F1 "\x1b\x4f\x50"
#define K_F2 "\x1b\x4f\x51"
#define K_F3 "\x1b\x4f\x52"
#define K_F4 "\x1b\x4f\x53"
#define K_F5 "\x1b\x5b\x31\x35\x7e"
#define K_F6 "\x1b\x5b\x31\x37\x7e"
#define K_F7 "\x1b\x5b\x31\x38\x7e"
#define K_F8 "\x1b\x5b\x31\x39\x7e"
#define K_F9 "\x1b\x5b\x32\x30\x7e"
#define K_F10 "\x1b\x5b\x32\x31\x7e"
#define K_F11 "\x1b\x5b\x32\x33\x7e"
#define K_F12 "\x1b\x5b\x32\x34\x7e"
#define K_CTRL_F1 "\x1b\x5b\x6b"
#define K_CTRL_F2 "\x1b\x5b\x6c"
#define K_CTRL_F3 "\x1b\x5b\x6d"
#define K_CTRL_F4 "\x1b\x5b\x6e"
#define K_CTRL_F5 "\x1b\x5b\x6f"
#define K_CTRL_F6 "\x1b\x5b\x70"
#define K_CTRL_F7 "\x1b\x5b\x71"
#define K_CTRL_F8 "\x1b\x5b\x72"
#define K_CTRL_F9 "\x1b\x5b\x73"
#define K_CTRL_F10 "\x1b\x5b\x74"
#define K_CTRL_F11 "\x1b\x5b\x75"
#define K_CTRL_F12 "\x1b\x5b\x76"
#define K_CTRL_SH_F1 "\x1b\x5b\x77"
#define K_CTRL_SH_F2 "\x1b\x5b\x78"
#define K_CTRL_SH_F3 "\x1b\x5b\x79"
#define K_CTRL_SH_F4 "\x1b\x5b\x7a"
#define K_CTRL_SH_F5 "\x1b\x5b\x40"
#define K_CTRL_SH_F6 "\x1b\x5b\x5b"
#define K_CTRL_SH_F7 "\x1b\x5b\x5c"
#define K_CTRL_SH_F8 "\x1b\x5b\x5d"
#define K_CTRL_SH_F9 "\x1b\x5b\x5e"
#define K_CTRL_SH_F10 "\x1b\x5b\x5f"
#define K_CTRL_SH_F11 "\x1b\x5b\x60"
#define K_CTRL_SH_F12 "\x1b\x5b\x7b"
#define K_INS "\x1b\x5b\x32\x7e"
#define K_DEL "\x1b\x5b\x33\x7e"
#define K_PGUP "\x1b\x5b\x35\x7e"
#define K_PGDN "\x1b\x5b\x36\x7e"
#define K_HOME "\x1b\x5b\x48"
#define K_END "\x1b\x5b\x46"
#define K_UP "\x1b\x5b\x41"
#define K_DOWN "\x1b\x5b\x42"
#define K_RIGHT "\x1b\x5b\x43"
#define K_LEFT "\x1b\x5b\x44"
#define K_NULL "\x0"
#define K_CR "\xd"
#define K_BTAB "\x1b\x5b\x5a"
#define K_TAB "\x9"
#define K_ENTER "\xa"
#define K_ESC "\x1b"
#define K_BACKSPACE "\x7f"
#define K_SPACE "\x20"
#define K_CTRL_SPACE K_NULL
#define K_CTRL_2 K_NULL
#define K_CTRL_A "\x1"
#define K_CTRL_B "\x2"
#define K_CTRL_C "\x3"
#define K_CTRL_D "\x4"
#define K_CTRL_E "\x5"
#define K_CTRL_F "\x6"
#define K_CTRL_G "\x7"
#define K_CTRL_H "\x8"
#define K_CTRL_I K_TAB
#define K_CTRL_J K_ENTER
#define K_CTRL_K "\xb"
#define K_CTRL_L "\xc"
#define K_CTRL_M K_ENTER // K_CR
#define K_CTRL_N "\xe"
#define K_CTRL_O "\xf"
#define K_CTRL_P "\x10"
#define K_CTRL_Q "\x11"
#define K_CTRL_R "\x12"
#define K_CTRL_S "\x13"
#define K_CTRL_T "\x14"
#define K_CTRL_U "\x15"
#define K_CTRL_V "\x16"
#define K_CTRL_W "\x17"
#define K_CTRL_X "\x18"
#define K_CTRL_Y "\x19"
#define K_CTRL_Z "\x1a"
#define K_CTRL_LBRACE "\x1b"
#define K_CTRL_PIPE "\x1c"
#define K_CTRL_RBRACE "\x1d"
#define K_CTRL_6 "\x1e"
#define K_CTRL__ "\x1f"
#define K_X_CTRL_INS "\x1b\x5b\x32\x3b\x35\x7e"
#define K_X_CTRL_DEL "\x1b\x5b\x33\x3b\x35\x7e"
#define K_X_CTRL_PGUP "\x1b\x5b\x35\x3b\x35\x7e"
#define K_X_CTRL_PGDN "\x1b\x5b\x36\x3b\x35\x7e"
#define K_X_CTRL_HOME "\x1b\x5b\x31\x3b\x35\x48"
#define K_X_CTRL_END "\x1b\x5b\x31\x3b\x35\x46"
#define K_X_CTRL_UP "\x1b\x5b\x31\x3b\x35\x41"
#define K_X_CTRL_DOWN "\x1b\x5b\x31\x3b\x35\x42"
#define K_X_CTRL_RIGHT "\x1b\x5b\x31\x3b\x35\x43"
#define K_X_CTRL_LEFT "\x1b\x5b\x31\x3b\x35\x44"
#define K_X_ALT_INS "\x1b\x5b\x32\x3b\x33\x7e"
#define K_X_ALT_DEL "\x1b\x5b\x33\x3b\x33\x7e"
#define K_X_ALT_PGUP "\x1b\x5b\x35\x3b\x33\x7e"
#define K_X_ALT_PGDN "\x1b\x5b\x36\x3b\x33\x7e"
#define K_X_ALT_HOME "\x1b\x5b\x31\x3b\x33\x48"
#define K_X_ALT_END "\x1b\x5b\x31\x3b\x33\x46"
#define K_X_ALT_UP "\x1b\x5b\x31\x3b\x33\x41"
#define K_X_ALT_DOWN "\x1b\x5b\x31\x3b\x33\x42"
#define K_X_ALT_RIGHT "\x1b\x5b\x31\x3b\x33\x43"
#define K_X_ALT_LEFT "\x1b\x5b\x31\x3b\x33\x44"
#define K_X_CTL_A_INS "\x1b\x5b\x32\x3b\x37\x7e"
#define K_X_CTL_A_DEL "\x1b\x5b\x33\x3b\x37\x7e"
#define K_X_CTL_A_PGUP "\x1b\x5b\x35\x3b\x37\x7e"
#define K_X_CTL_A_PGDN "\x1b\x5b\x36\x3b\x37\x7e"
#define K_X_CTL_A_HOME "\x1b\x5b\x31\x3b\x37\x48"
#define K_X_CTL_A_END "\x1b\x5b\x31\x3b\x37\x46"
#define K_X_CTL_A_UP "\x1b\x5b\x31\x3b\x37\x41"
#define K_X_CTL_A_DOWN "\x1b\x5b\x31\x3b\x37\x42"
#define K_X_CTL_A_RIGHT "\x1b\x5b\x31\x3b\x37\x43"
#define K_X_CTL_A_LEFT "\x1b\x5b\x31\x3b\x37\x44"
#define STRSIZ 256
#define MAX_BINDKEY 559
#define HISTORY_LINES 100
#define HISTORY_FILE "/tmp/.CLI.history"
#define CLI_PROMPT "test> "
#define LINEMODE_RAW -1
#define LINEMODE_INS 0
#define LINEMODE_OVER 1
#define RETCODE_ERR -1
#define RETCODE_OK 0
#define RETCODE_EOL 1
#define RETCODE_EOF 2
typedef int (*bindkey_func_t)(int idx, /*linebuffer_t **/ void * __restrict buffer);
typedef struct {
int key_len;
unsigned char key_ch[8];
bindkey_func_t key_func;
} bindkey_t;
struct tagHistory {
int hist_len;
char hist_line[BUFSIZ];
TAILQ_ENTRY(tagHistory) hist_next;
};
typedef TAILQ_HEAD(tqHistoryHead, tagHistory) history_t;
typedef struct {
char line_mode;
char *line_prompt;
int line_bol;
int line_eol;
int line_len;
char *line_buf;
const struct tagHistory *line_h;
history_t line_history;
bindkey_t *line_keys;
int line_in;
int line_out;
} linebuffer_t;
typedef int (*cmd_func_t)(linebuffer_t * __restrict buffer, int argc, char ** __restrict argv);
typedef struct {
int cmd_level;
int cmd_min;
int cmd_len;
char cmd_name[STRSIZ];
char cmd_info[STRSIZ];
char cmd_help[STRSIZ];
cmd_func_t *cmd_func;
} command_t;
#endif
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>