keys_command_config.h (10354B)
1 /* 2 * These are the keys used by special commands that require a special key 3 * handler. This includes keys used to edit the line entry at the bottom 4 * and keys used for confirmation (e.g. when substituting). 5 */ 6 7 static int substitute_yes(ledit_view *view, char *key_text, size_t len); 8 static int substitute_yes_all(ledit_view *view, char *key_text, size_t len); 9 static int substitute_no(ledit_view *view, char *key_text, size_t len); 10 static int substitute_no_all(ledit_view *view, char *key_text, size_t len); 11 static int edit_insert_text(ledit_view *view, char *key_text, size_t len); 12 static int edit_cursor_left(ledit_view *view, char *key_text, size_t len); 13 static int edit_cursor_right(ledit_view *view, char *key_text, size_t len); 14 static int edit_cursor_to_end(ledit_view *view, char *key_text, size_t len); 15 static int edit_cursor_to_beginning(ledit_view *view, char *key_text, size_t len); 16 static int edit_backspace(ledit_view *view, char *key_text, size_t len); 17 static int edit_delete(ledit_view *view, char *key_text, size_t len); 18 static int edit_submit(ledit_view *view, char *key_text, size_t len); 19 static int edit_prevcommand(ledit_view *view, char *key_text, size_t len); 20 static int edit_nextcommand(ledit_view *view, char *key_text, size_t len); 21 static int edit_prevsearch(ledit_view *view, char *key_text, size_t len); 22 static int edit_nextsearch(ledit_view *view, char *key_text, size_t len); 23 static int editsearch_submit(ledit_view *view, char *key_text, size_t len); 24 static int editsearchb_submit(ledit_view *view, char *key_text, size_t len); 25 static int edit_discard(ledit_view *view, char *key_text, size_t len); 26 27 struct key { 28 char *text; /* for keys that correspond with text */ 29 unsigned int mods; /* modifier mask */ 30 KeySym keysym; /* for other keys, e.g. arrow keys */ 31 enum ledit_command_type type; /* substitute, etc. */ 32 int (*func)(ledit_view *, char *, size_t); /* callback function */ 33 }; 34 35 /* "" means catch-all, i.e. all keys with text are given to that callback */ 36 static struct key keys_en[] = { 37 {"y", 0, 0, CMD_SUBSTITUTE, &substitute_yes}, 38 {"Y", 0, 0, CMD_SUBSTITUTE, &substitute_yes_all}, 39 {"n", 0, 0, CMD_SUBSTITUTE, &substitute_no}, 40 {"N", 0, 0, CMD_SUBSTITUTE, &substitute_no_all}, 41 {NULL, XK_ANY_MOD, XK_Return, CMD_EDIT, &edit_submit}, 42 {NULL, XK_ANY_MOD, XK_Return, CMD_EDITSEARCH, &editsearch_submit}, 43 {NULL, XK_ANY_MOD, XK_Return, CMD_EDITSEARCHB, &editsearchb_submit}, 44 {NULL, 0, XK_Left, CMD_EDIT, &edit_cursor_left}, 45 {NULL, 0, XK_Left, CMD_EDITSEARCH, &edit_cursor_left}, 46 {NULL, 0, XK_Left, CMD_EDITSEARCHB, &edit_cursor_left}, 47 {NULL, 0, XK_Right, CMD_EDIT, &edit_cursor_right}, 48 {NULL, 0, XK_Right, CMD_EDITSEARCH, &edit_cursor_right}, 49 {NULL, 0, XK_Right, CMD_EDITSEARCHB, &edit_cursor_right}, 50 {NULL, 0, XK_Up, CMD_EDIT, &edit_prevcommand}, 51 {NULL, 0, XK_Up, CMD_EDITSEARCH, &edit_prevsearch}, 52 {NULL, 0, XK_Up, CMD_EDITSEARCHB, &edit_prevsearch}, 53 {NULL, 0, XK_Down, CMD_EDIT, &edit_nextcommand}, 54 {NULL, 0, XK_Down, CMD_EDITSEARCH, &edit_nextsearch}, 55 {NULL, 0, XK_Down, CMD_EDITSEARCHB, &edit_nextsearch}, 56 {NULL, 0, XK_BackSpace, CMD_EDIT, &edit_backspace}, 57 {NULL, 0, XK_BackSpace, CMD_EDITSEARCH, &edit_backspace}, 58 {NULL, 0, XK_BackSpace, CMD_EDITSEARCHB, &edit_backspace}, 59 {NULL, 0, XK_Delete, CMD_EDIT, &edit_delete}, 60 {NULL, 0, XK_Delete, CMD_EDITSEARCH, &edit_delete}, 61 {NULL, 0, XK_Delete, CMD_EDITSEARCHB, &edit_delete}, 62 {NULL, 0, XK_End, CMD_EDIT, &edit_cursor_to_end}, 63 {NULL, 0, XK_End, CMD_EDITSEARCH, &edit_cursor_to_end}, 64 {NULL, 0, XK_End, CMD_EDITSEARCHB, &edit_cursor_to_end}, 65 {NULL, 0, XK_Home, CMD_EDIT, &edit_cursor_to_beginning}, 66 {NULL, 0, XK_Home, CMD_EDITSEARCH, &edit_cursor_to_beginning}, 67 {NULL, 0, XK_Home, CMD_EDITSEARCHB, &edit_cursor_to_beginning}, 68 {NULL, 0, XK_Escape, CMD_EDIT, &edit_discard}, 69 {NULL, 0, XK_Escape, CMD_EDITSEARCH, &edit_discard}, 70 {NULL, 0, XK_Escape, CMD_EDITSEARCHB, &edit_discard}, 71 {"", 0, 0, CMD_EDIT, &edit_insert_text}, 72 {"", 0, 0, CMD_EDITSEARCH, &edit_insert_text}, 73 {"", 0, 0, CMD_EDITSEARCHB, &edit_insert_text} 74 }; 75 76 static struct key keys_de[] = { 77 {"z", 0, 0, CMD_SUBSTITUTE, &substitute_yes}, 78 {"Z", 0, 0, CMD_SUBSTITUTE, &substitute_yes_all}, 79 {"n", 0, 0, CMD_SUBSTITUTE, &substitute_no}, 80 {"N", 0, 0, CMD_SUBSTITUTE, &substitute_no_all}, 81 {NULL, XK_ANY_MOD, XK_Return, CMD_EDIT, &edit_submit}, 82 {NULL, XK_ANY_MOD, XK_Return, CMD_EDITSEARCH, &editsearch_submit}, 83 {NULL, XK_ANY_MOD, XK_Return, CMD_EDITSEARCHB, &editsearchb_submit}, 84 {NULL, 0, XK_Left, CMD_EDIT, &edit_cursor_left}, 85 {NULL, 0, XK_Left, CMD_EDITSEARCH, &edit_cursor_left}, 86 {NULL, 0, XK_Left, CMD_EDITSEARCHB, &edit_cursor_left}, 87 {NULL, 0, XK_Right, CMD_EDIT, &edit_cursor_right}, 88 {NULL, 0, XK_Right, CMD_EDITSEARCH, &edit_cursor_right}, 89 {NULL, 0, XK_Right, CMD_EDITSEARCHB, &edit_cursor_right}, 90 {NULL, 0, XK_Up, CMD_EDIT, &edit_prevcommand}, 91 {NULL, 0, XK_Up, CMD_EDITSEARCH, &edit_prevsearch}, 92 {NULL, 0, XK_Up, CMD_EDITSEARCHB, &edit_prevsearch}, 93 {NULL, 0, XK_Down, CMD_EDIT, &edit_nextcommand}, 94 {NULL, 0, XK_Down, CMD_EDITSEARCH, &edit_nextsearch}, 95 {NULL, 0, XK_Down, CMD_EDITSEARCHB, &edit_nextsearch}, 96 {NULL, 0, XK_BackSpace, CMD_EDIT, &edit_backspace}, 97 {NULL, 0, XK_BackSpace, CMD_EDITSEARCH, &edit_backspace}, 98 {NULL, 0, XK_BackSpace, CMD_EDITSEARCHB, &edit_backspace}, 99 {NULL, 0, XK_Delete, CMD_EDIT, &edit_delete}, 100 {NULL, 0, XK_Delete, CMD_EDITSEARCH, &edit_delete}, 101 {NULL, 0, XK_Delete, CMD_EDITSEARCHB, &edit_delete}, 102 {NULL, 0, XK_End, CMD_EDIT, &edit_cursor_to_end}, 103 {NULL, 0, XK_End, CMD_EDITSEARCH, &edit_cursor_to_end}, 104 {NULL, 0, XK_End, CMD_EDITSEARCHB, &edit_cursor_to_end}, 105 {NULL, 0, XK_Home, CMD_EDIT, &edit_cursor_to_beginning}, 106 {NULL, 0, XK_Home, CMD_EDITSEARCH, &edit_cursor_to_beginning}, 107 {NULL, 0, XK_Home, CMD_EDITSEARCHB, &edit_cursor_to_beginning}, 108 {NULL, 0, XK_Escape, CMD_EDIT, &edit_discard}, 109 {NULL, 0, XK_Escape, CMD_EDITSEARCH, &edit_discard}, 110 {NULL, 0, XK_Escape, CMD_EDITSEARCHB, &edit_discard}, 111 {"", 0, 0, CMD_EDIT, &edit_insert_text}, 112 {"", 0, 0, CMD_EDITSEARCH, &edit_insert_text}, 113 {"", 0, 0, CMD_EDITSEARCHB, &edit_insert_text} 114 }; 115 116 static struct key keys_ur[] = { 117 {"ے", 0, 0, CMD_SUBSTITUTE, &substitute_yes}, 118 {"َ", 0, 0, CMD_SUBSTITUTE, &substitute_yes_all}, 119 {"ن", 0, 0, CMD_SUBSTITUTE, &substitute_no}, 120 {"ں", 0, 0, CMD_SUBSTITUTE, &substitute_no_all}, 121 {NULL, XK_ANY_MOD, XK_Return, CMD_EDIT, &edit_submit}, 122 {NULL, XK_ANY_MOD, XK_Return, CMD_EDITSEARCH, &editsearch_submit}, 123 {NULL, XK_ANY_MOD, XK_Return, CMD_EDITSEARCHB, &editsearchb_submit}, 124 {NULL, 0, XK_Left, CMD_EDIT, &edit_cursor_left}, 125 {NULL, 0, XK_Left, CMD_EDITSEARCH, &edit_cursor_left}, 126 {NULL, 0, XK_Left, CMD_EDITSEARCHB, &edit_cursor_left}, 127 {NULL, 0, XK_Right, CMD_EDIT, &edit_cursor_right}, 128 {NULL, 0, XK_Right, CMD_EDITSEARCH, &edit_cursor_right}, 129 {NULL, 0, XK_Right, CMD_EDITSEARCHB, &edit_cursor_right}, 130 {NULL, 0, XK_Up, CMD_EDIT, &edit_prevcommand}, 131 {NULL, 0, XK_Up, CMD_EDITSEARCH, &edit_prevsearch}, 132 {NULL, 0, XK_Up, CMD_EDITSEARCHB, &edit_prevsearch}, 133 {NULL, 0, XK_Down, CMD_EDIT, &edit_nextcommand}, 134 {NULL, 0, XK_Down, CMD_EDITSEARCH, &edit_nextsearch}, 135 {NULL, 0, XK_Down, CMD_EDITSEARCHB, &edit_nextsearch}, 136 {NULL, 0, XK_BackSpace, CMD_EDIT, &edit_backspace}, 137 {NULL, 0, XK_BackSpace, CMD_EDITSEARCH, &edit_backspace}, 138 {NULL, 0, XK_BackSpace, CMD_EDITSEARCHB, &edit_backspace}, 139 {NULL, 0, XK_Delete, CMD_EDIT, &edit_delete}, 140 {NULL, 0, XK_Delete, CMD_EDITSEARCH, &edit_delete}, 141 {NULL, 0, XK_Delete, CMD_EDITSEARCHB, &edit_delete}, 142 {NULL, 0, XK_End, CMD_EDIT, &edit_cursor_to_end}, 143 {NULL, 0, XK_End, CMD_EDITSEARCH, &edit_cursor_to_end}, 144 {NULL, 0, XK_End, CMD_EDITSEARCHB, &edit_cursor_to_end}, 145 {NULL, 0, XK_Home, CMD_EDIT, &edit_cursor_to_beginning}, 146 {NULL, 0, XK_Home, CMD_EDITSEARCH, &edit_cursor_to_beginning}, 147 {NULL, 0, XK_Home, CMD_EDITSEARCHB, &edit_cursor_to_beginning}, 148 {NULL, 0, XK_Escape, CMD_EDIT, &edit_discard}, 149 {NULL, 0, XK_Escape, CMD_EDITSEARCH, &edit_discard}, 150 {NULL, 0, XK_Escape, CMD_EDITSEARCHB, &edit_discard}, 151 {"", 0, 0, CMD_EDIT, &edit_insert_text}, 152 {"", 0, 0, CMD_EDITSEARCH, &edit_insert_text}, 153 {"", 0, 0, CMD_EDITSEARCHB, &edit_insert_text} 154 }; 155 156 static struct key keys_hi[] = { 157 {"य", 0, 0, CMD_SUBSTITUTE, &substitute_yes}, 158 {"ञ", 0, 0, CMD_SUBSTITUTE, &substitute_yes_all}, 159 {"न", 0, 0, CMD_SUBSTITUTE, &substitute_no}, 160 {"ण", 0, 0, CMD_SUBSTITUTE, &substitute_no_all}, 161 {NULL, XK_ANY_MOD, XK_Return, CMD_EDIT, &edit_submit}, 162 {NULL, XK_ANY_MOD, XK_Return, CMD_EDITSEARCH, &editsearch_submit}, 163 {NULL, XK_ANY_MOD, XK_Return, CMD_EDITSEARCHB, &editsearchb_submit}, 164 {NULL, 0, XK_Left, CMD_EDIT, &edit_cursor_left}, 165 {NULL, 0, XK_Left, CMD_EDITSEARCH, &edit_cursor_left}, 166 {NULL, 0, XK_Left, CMD_EDITSEARCHB, &edit_cursor_left}, 167 {NULL, 0, XK_Right, CMD_EDIT, &edit_cursor_right}, 168 {NULL, 0, XK_Right, CMD_EDITSEARCH, &edit_cursor_right}, 169 {NULL, 0, XK_Right, CMD_EDITSEARCHB, &edit_cursor_right}, 170 {NULL, 0, XK_Up, CMD_EDIT, &edit_prevcommand}, 171 {NULL, 0, XK_Up, CMD_EDITSEARCH, &edit_prevsearch}, 172 {NULL, 0, XK_Up, CMD_EDITSEARCHB, &edit_prevsearch}, 173 {NULL, 0, XK_Down, CMD_EDIT, &edit_nextcommand}, 174 {NULL, 0, XK_Down, CMD_EDITSEARCH, &edit_nextsearch}, 175 {NULL, 0, XK_Down, CMD_EDITSEARCHB, &edit_nextsearch}, 176 {NULL, 0, XK_BackSpace, CMD_EDIT, &edit_backspace}, 177 {NULL, 0, XK_BackSpace, CMD_EDITSEARCH, &edit_backspace}, 178 {NULL, 0, XK_BackSpace, CMD_EDITSEARCHB, &edit_backspace}, 179 {NULL, 0, XK_Delete, CMD_EDIT, &edit_delete}, 180 {NULL, 0, XK_Delete, CMD_EDITSEARCH, &edit_delete}, 181 {NULL, 0, XK_Delete, CMD_EDITSEARCHB, &edit_delete}, 182 {NULL, 0, XK_End, CMD_EDIT, &edit_cursor_to_end}, 183 {NULL, 0, XK_End, CMD_EDITSEARCH, &edit_cursor_to_end}, 184 {NULL, 0, XK_End, CMD_EDITSEARCHB, &edit_cursor_to_end}, 185 {NULL, 0, XK_Home, CMD_EDIT, &edit_cursor_to_beginning}, 186 {NULL, 0, XK_Home, CMD_EDITSEARCH, &edit_cursor_to_beginning}, 187 {NULL, 0, XK_Home, CMD_EDITSEARCHB, &edit_cursor_to_beginning}, 188 {NULL, 0, XK_Escape, CMD_EDIT, &edit_discard}, 189 {NULL, 0, XK_Escape, CMD_EDITSEARCH, &edit_discard}, 190 {NULL, 0, XK_Escape, CMD_EDITSEARCHB, &edit_discard}, 191 {"", 0, 0, CMD_EDIT, &edit_insert_text}, 192 {"", 0, 0, CMD_EDITSEARCH, &edit_insert_text}, 193 {"", 0, 0, CMD_EDITSEARCHB, &edit_insert_text} 194 }; 195 196 GEN_KEY_ARRAY(struct key, keys_en, keys_de, keys_hi, keys_ur);