version 1.1, 2010/06/02 17:17:56
|
version 1.1.2.1, 2010/06/02 17:17:56
|
Line 0
|
Line 1
|
|
#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_FILE "/tmp/.CLI.history" |
|
|
|
#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 { |
|
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 char history[STRSIZ]; |
|
|
|
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 |