URI: 
       tkeys_command_config.h - ledit - Text editor (WIP)
  HTML git clone git://lumidify.org/ledit.git (fast, but not encrypted)
  HTML git clone https://lumidify.org/git/ledit.git (encrypted, but very slow)
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       tkeys_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);