config.def.h (3177B)
1/* <green color> "> " <reset>, like mksh you can use '\x01' to stop counting 2 * the characters for the prompt length. */ 3static const char *prompt = "\x01\x1b[32m\x01> \x01\x1b[0m"; 4static const char *completenickcmd[] = { "/bin/sh", "-c", "$HOME/.sob/scripts/complete_nick 2> /dev/null", NULL }; 5static const char *historycmd[] = { "/bin/sh", "-c", "$HOME/.sob/scripts/history 2> /dev/null", NULL }; 6static const char *yankcmd[] = { "/bin/sh", "-c", "/bin/xsel -i -p 2> /dev/null", NULL }; 7static const char *resizecmd[] = { "/bin/sh", "-c", "$HOME/.sob/scripts/resize 2> /dev/null", NULL }; 8 9static void 10line_yank(void) 11{ 12 line_pipeto((char**)yankcmd, NULL); 13} 14 15static void 16history_menu(void) 17{ 18 line_pipeto((char**)historycmd, cb_pipe_insert); 19} 20 21static void 22complete_nick(void) 23{ 24 line_wordpipeto((char**)completenickcmd, cb_pipe_replaceword); 25} 26 27#define CONTROL(ch) ((ch)^0x40) 28#define ALT(ch) '\x1b',ch,'\0' 29 30#define KEY_HOME "\x1b\x5b\x31\x7e" 31#define KEY_END "\x1b\x5b\x34\x7e" 32#define KEY_CTRL_LEFT "\x1b\x5b\x31\x3b\x35\x44" 33#define KEY_CTRL_RIGHT "\x1b\x5b\x31\x3b\x35\x43" 34/* Del */ 35#define KEY_DC "\x1b\x5b\x33\x7e" 36/* SS3 DECCKM keys */ 37#define KEY_UP "\x1b\x4f\x41" 38#define KEY_DOWN "\x1b\x4f\x42" 39#define KEY_RIGHT "\x1b\x4f\x43" 40#define KEY_LEFT "\x1b\x4f\x44" 41/* CSI keys */ 42#define KEY_CSI_UP "\x1b\x5b\x41" 43#define KEY_CSI_DOWN "\x1b\x5b\x42" 44#define KEY_CSI_RIGHT "\x1b\x5b\x43" 45#define KEY_CSI_LEFT "\x1b\x5b\x44" 46 47static struct keybind { 48 unsigned char key[16]; 49 void (*func)(void); 50} keybinds[] = { 51 { { CONTROL('A') }, line_cursor_begin }, 52 { { CONTROL('E') }, line_cursor_end }, 53 { { KEY_HOME }, line_cursor_begin }, 54 { { KEY_END }, line_cursor_end }, 55 { { CONTROL('B') }, line_cursor_prev }, 56 { { KEY_LEFT }, line_cursor_prev }, 57 { { KEY_CSI_LEFT }, line_cursor_prev }, 58 { { CONTROL('F') }, line_cursor_next }, 59 { { KEY_RIGHT }, line_cursor_next }, 60 { { KEY_CSI_RIGHT }, line_cursor_next }, 61 { { ALT('b') }, line_cursor_wordprev }, 62 { { ALT('f') }, line_cursor_wordnext }, 63 { { KEY_CTRL_LEFT }, line_cursor_wordprev }, 64 { { KEY_CTRL_RIGHT }, line_cursor_wordnext }, 65 { { CONTROL('W') }, line_delwordprev }, 66 { { CONTROL('H') }, line_delcharprev }, 67 { { 127 }, line_delcharprev }, 68 { { '\b' }, line_delcharprev }, 69 { { CONTROL('U') }, line_clear }, 70 { { CONTROL('K') }, line_deltoend }, 71 { { KEY_DC }, line_delcharnext }, 72 { { CONTROL('H') }, line_delcharprev }, 73 { { CONTROL('M') }, line_newline }, 74 { { CONTROL('J') }, line_newline }, 75 { { '\r' }, line_newline }, 76 { { '\n' }, line_newline }, 77 { { CONTROL('Y') }, line_yank }, 78 { { CONTROL('D') }, line_exit }, 79 { { CONTROL('E') }, line_deltoend }, 80 { { KEY_UP }, history_menu }, 81 { { KEY_CSI_UP }, history_menu }, 82 { { KEY_DOWN }, history_menu }, 83 { { KEY_CSI_DOWN }, history_menu }, 84 { { CONTROL('P') }, history_menu }, 85 { { CONTROL('N') }, history_menu }, 86 { { '\t' }, complete_nick }, 87};