1*91f76417SBaptiste Daroussin /* $NetBSD: map.c,v 1.54 2021/08/29 09:41:59 christos Exp $ */ 2d0ef721eSBaptiste Daroussin 3d0ef721eSBaptiste Daroussin /*- 4d0ef721eSBaptiste Daroussin * Copyright (c) 1992, 1993 5d0ef721eSBaptiste Daroussin * The Regents of the University of California. All rights reserved. 6d0ef721eSBaptiste Daroussin * 7d0ef721eSBaptiste Daroussin * This code is derived from software contributed to Berkeley by 8d0ef721eSBaptiste Daroussin * Christos Zoulas of Cornell University. 9d0ef721eSBaptiste Daroussin * 10d0ef721eSBaptiste Daroussin * Redistribution and use in source and binary forms, with or without 11d0ef721eSBaptiste Daroussin * modification, are permitted provided that the following conditions 12d0ef721eSBaptiste Daroussin * are met: 13d0ef721eSBaptiste Daroussin * 1. Redistributions of source code must retain the above copyright 14d0ef721eSBaptiste Daroussin * notice, this list of conditions and the following disclaimer. 15d0ef721eSBaptiste Daroussin * 2. Redistributions in binary form must reproduce the above copyright 16d0ef721eSBaptiste Daroussin * notice, this list of conditions and the following disclaimer in the 17d0ef721eSBaptiste Daroussin * documentation and/or other materials provided with the distribution. 18d0ef721eSBaptiste Daroussin * 3. Neither the name of the University nor the names of its contributors 19d0ef721eSBaptiste Daroussin * may be used to endorse or promote products derived from this software 20d0ef721eSBaptiste Daroussin * without specific prior written permission. 21d0ef721eSBaptiste Daroussin * 22d0ef721eSBaptiste Daroussin * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 23d0ef721eSBaptiste Daroussin * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 24d0ef721eSBaptiste Daroussin * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 25d0ef721eSBaptiste Daroussin * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 26d0ef721eSBaptiste Daroussin * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 27d0ef721eSBaptiste Daroussin * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 28d0ef721eSBaptiste Daroussin * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 29d0ef721eSBaptiste Daroussin * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30d0ef721eSBaptiste Daroussin * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 31d0ef721eSBaptiste Daroussin * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 32d0ef721eSBaptiste Daroussin * SUCH DAMAGE. 33d0ef721eSBaptiste Daroussin */ 34d0ef721eSBaptiste Daroussin 35d0ef721eSBaptiste Daroussin #include "config.h" 36d0ef721eSBaptiste Daroussin #if !defined(lint) && !defined(SCCSID) 37d0ef721eSBaptiste Daroussin #if 0 38d0ef721eSBaptiste Daroussin static char sccsid[] = "@(#)map.c 8.1 (Berkeley) 6/4/93"; 39d0ef721eSBaptiste Daroussin #else 40*91f76417SBaptiste Daroussin __RCSID("$NetBSD: map.c,v 1.54 2021/08/29 09:41:59 christos Exp $"); 41d0ef721eSBaptiste Daroussin #endif 42d0ef721eSBaptiste Daroussin #endif /* not lint && not SCCSID */ 43d0ef721eSBaptiste Daroussin 44d0ef721eSBaptiste Daroussin /* 45d0ef721eSBaptiste Daroussin * map.c: Editor function definitions 46d0ef721eSBaptiste Daroussin */ 47d0ef721eSBaptiste Daroussin #include <ctype.h> 48d0ef721eSBaptiste Daroussin #include <stdlib.h> 49d0ef721eSBaptiste Daroussin #include <string.h> 50d0ef721eSBaptiste Daroussin 51d0ef721eSBaptiste Daroussin #include "el.h" 52d0ef721eSBaptiste Daroussin #include "common.h" 53d0ef721eSBaptiste Daroussin #include "emacs.h" 54d0ef721eSBaptiste Daroussin #include "vi.h" 55d0ef721eSBaptiste Daroussin #include "fcns.h" 56d0ef721eSBaptiste Daroussin #include "func.h" 57d0ef721eSBaptiste Daroussin #include "help.h" 58d0ef721eSBaptiste Daroussin #include "parse.h" 59d0ef721eSBaptiste Daroussin 60d0ef721eSBaptiste Daroussin static void map_print_key(EditLine *, el_action_t *, const wchar_t *); 61d0ef721eSBaptiste Daroussin static void map_print_some_keys(EditLine *, el_action_t *, wint_t, wint_t); 62d0ef721eSBaptiste Daroussin static void map_print_all_keys(EditLine *); 63d0ef721eSBaptiste Daroussin static void map_init_nls(EditLine *); 64d0ef721eSBaptiste Daroussin static void map_init_meta(EditLine *); 65d0ef721eSBaptiste Daroussin 66d0ef721eSBaptiste Daroussin /* keymap tables ; should be N_KEYS*sizeof(KEYCMD) bytes long */ 67d0ef721eSBaptiste Daroussin 68d0ef721eSBaptiste Daroussin 69d0ef721eSBaptiste Daroussin static const el_action_t el_map_emacs[] = { 70d0ef721eSBaptiste Daroussin /* 0 */ EM_SET_MARK, /* ^@ */ 71d0ef721eSBaptiste Daroussin /* 1 */ ED_MOVE_TO_BEG, /* ^A */ 72d0ef721eSBaptiste Daroussin /* 2 */ ED_PREV_CHAR, /* ^B */ 73d0ef721eSBaptiste Daroussin /* 3 */ ED_IGNORE, /* ^C */ 74d0ef721eSBaptiste Daroussin /* 4 */ EM_DELETE_OR_LIST, /* ^D */ 75d0ef721eSBaptiste Daroussin /* 5 */ ED_MOVE_TO_END, /* ^E */ 76d0ef721eSBaptiste Daroussin /* 6 */ ED_NEXT_CHAR, /* ^F */ 77d0ef721eSBaptiste Daroussin /* 7 */ ED_UNASSIGNED, /* ^G */ 78d0ef721eSBaptiste Daroussin /* 8 */ EM_DELETE_PREV_CHAR, /* ^H */ 79d0ef721eSBaptiste Daroussin /* 9 */ ED_UNASSIGNED, /* ^I */ 80d0ef721eSBaptiste Daroussin /* 10 */ ED_NEWLINE, /* ^J */ 81d0ef721eSBaptiste Daroussin /* 11 */ ED_KILL_LINE, /* ^K */ 82d0ef721eSBaptiste Daroussin /* 12 */ ED_CLEAR_SCREEN, /* ^L */ 83d0ef721eSBaptiste Daroussin /* 13 */ ED_NEWLINE, /* ^M */ 84d0ef721eSBaptiste Daroussin /* 14 */ ED_NEXT_HISTORY, /* ^N */ 85d0ef721eSBaptiste Daroussin /* 15 */ ED_IGNORE, /* ^O */ 86d0ef721eSBaptiste Daroussin /* 16 */ ED_PREV_HISTORY, /* ^P */ 87d0ef721eSBaptiste Daroussin /* 17 */ ED_IGNORE, /* ^Q */ 88*91f76417SBaptiste Daroussin /* 18 */ EM_INC_SEARCH_PREV, /* ^R */ 89d0ef721eSBaptiste Daroussin /* 19 */ ED_IGNORE, /* ^S */ 90d0ef721eSBaptiste Daroussin /* 20 */ ED_TRANSPOSE_CHARS, /* ^T */ 91d0ef721eSBaptiste Daroussin /* 21 */ EM_KILL_LINE, /* ^U */ 92d0ef721eSBaptiste Daroussin /* 22 */ ED_QUOTED_INSERT, /* ^V */ 93*91f76417SBaptiste Daroussin /* 23 */ ED_DELETE_PREV_WORD, /* ^W */ 94d0ef721eSBaptiste Daroussin /* 24 */ ED_SEQUENCE_LEAD_IN, /* ^X */ 95d0ef721eSBaptiste Daroussin /* 25 */ EM_YANK, /* ^Y */ 96d0ef721eSBaptiste Daroussin /* 26 */ ED_IGNORE, /* ^Z */ 97d0ef721eSBaptiste Daroussin /* 27 */ EM_META_NEXT, /* ^[ */ 98d0ef721eSBaptiste Daroussin /* 28 */ ED_IGNORE, /* ^\ */ 99d0ef721eSBaptiste Daroussin /* 29 */ ED_IGNORE, /* ^] */ 100d0ef721eSBaptiste Daroussin /* 30 */ ED_UNASSIGNED, /* ^^ */ 101d0ef721eSBaptiste Daroussin /* 31 */ ED_UNASSIGNED, /* ^_ */ 102d0ef721eSBaptiste Daroussin /* 32 */ ED_INSERT, /* SPACE */ 103d0ef721eSBaptiste Daroussin /* 33 */ ED_INSERT, /* ! */ 104d0ef721eSBaptiste Daroussin /* 34 */ ED_INSERT, /* " */ 105d0ef721eSBaptiste Daroussin /* 35 */ ED_INSERT, /* # */ 106d0ef721eSBaptiste Daroussin /* 36 */ ED_INSERT, /* $ */ 107d0ef721eSBaptiste Daroussin /* 37 */ ED_INSERT, /* % */ 108d0ef721eSBaptiste Daroussin /* 38 */ ED_INSERT, /* & */ 109d0ef721eSBaptiste Daroussin /* 39 */ ED_INSERT, /* ' */ 110d0ef721eSBaptiste Daroussin /* 40 */ ED_INSERT, /* ( */ 111d0ef721eSBaptiste Daroussin /* 41 */ ED_INSERT, /* ) */ 112d0ef721eSBaptiste Daroussin /* 42 */ ED_INSERT, /* * */ 113d0ef721eSBaptiste Daroussin /* 43 */ ED_INSERT, /* + */ 114d0ef721eSBaptiste Daroussin /* 44 */ ED_INSERT, /* , */ 115d0ef721eSBaptiste Daroussin /* 45 */ ED_INSERT, /* - */ 116d0ef721eSBaptiste Daroussin /* 46 */ ED_INSERT, /* . */ 117d0ef721eSBaptiste Daroussin /* 47 */ ED_INSERT, /* / */ 118d0ef721eSBaptiste Daroussin /* 48 */ ED_DIGIT, /* 0 */ 119d0ef721eSBaptiste Daroussin /* 49 */ ED_DIGIT, /* 1 */ 120d0ef721eSBaptiste Daroussin /* 50 */ ED_DIGIT, /* 2 */ 121d0ef721eSBaptiste Daroussin /* 51 */ ED_DIGIT, /* 3 */ 122d0ef721eSBaptiste Daroussin /* 52 */ ED_DIGIT, /* 4 */ 123d0ef721eSBaptiste Daroussin /* 53 */ ED_DIGIT, /* 5 */ 124d0ef721eSBaptiste Daroussin /* 54 */ ED_DIGIT, /* 6 */ 125d0ef721eSBaptiste Daroussin /* 55 */ ED_DIGIT, /* 7 */ 126d0ef721eSBaptiste Daroussin /* 56 */ ED_DIGIT, /* 8 */ 127d0ef721eSBaptiste Daroussin /* 57 */ ED_DIGIT, /* 9 */ 128d0ef721eSBaptiste Daroussin /* 58 */ ED_INSERT, /* : */ 129d0ef721eSBaptiste Daroussin /* 59 */ ED_INSERT, /* ; */ 130d0ef721eSBaptiste Daroussin /* 60 */ ED_INSERT, /* < */ 131d0ef721eSBaptiste Daroussin /* 61 */ ED_INSERT, /* = */ 132d0ef721eSBaptiste Daroussin /* 62 */ ED_INSERT, /* > */ 133d0ef721eSBaptiste Daroussin /* 63 */ ED_INSERT, /* ? */ 134d0ef721eSBaptiste Daroussin /* 64 */ ED_INSERT, /* @ */ 135d0ef721eSBaptiste Daroussin /* 65 */ ED_INSERT, /* A */ 136d0ef721eSBaptiste Daroussin /* 66 */ ED_INSERT, /* B */ 137d0ef721eSBaptiste Daroussin /* 67 */ ED_INSERT, /* C */ 138d0ef721eSBaptiste Daroussin /* 68 */ ED_INSERT, /* D */ 139d0ef721eSBaptiste Daroussin /* 69 */ ED_INSERT, /* E */ 140d0ef721eSBaptiste Daroussin /* 70 */ ED_INSERT, /* F */ 141d0ef721eSBaptiste Daroussin /* 71 */ ED_INSERT, /* G */ 142d0ef721eSBaptiste Daroussin /* 72 */ ED_INSERT, /* H */ 143d0ef721eSBaptiste Daroussin /* 73 */ ED_INSERT, /* I */ 144d0ef721eSBaptiste Daroussin /* 74 */ ED_INSERT, /* J */ 145d0ef721eSBaptiste Daroussin /* 75 */ ED_INSERT, /* K */ 146d0ef721eSBaptiste Daroussin /* 76 */ ED_INSERT, /* L */ 147d0ef721eSBaptiste Daroussin /* 77 */ ED_INSERT, /* M */ 148d0ef721eSBaptiste Daroussin /* 78 */ ED_INSERT, /* N */ 149d0ef721eSBaptiste Daroussin /* 79 */ ED_INSERT, /* O */ 150d0ef721eSBaptiste Daroussin /* 80 */ ED_INSERT, /* P */ 151d0ef721eSBaptiste Daroussin /* 81 */ ED_INSERT, /* Q */ 152d0ef721eSBaptiste Daroussin /* 82 */ ED_INSERT, /* R */ 153d0ef721eSBaptiste Daroussin /* 83 */ ED_INSERT, /* S */ 154d0ef721eSBaptiste Daroussin /* 84 */ ED_INSERT, /* T */ 155d0ef721eSBaptiste Daroussin /* 85 */ ED_INSERT, /* U */ 156d0ef721eSBaptiste Daroussin /* 86 */ ED_INSERT, /* V */ 157d0ef721eSBaptiste Daroussin /* 87 */ ED_INSERT, /* W */ 158d0ef721eSBaptiste Daroussin /* 88 */ ED_INSERT, /* X */ 159d0ef721eSBaptiste Daroussin /* 89 */ ED_INSERT, /* Y */ 160d0ef721eSBaptiste Daroussin /* 90 */ ED_INSERT, /* Z */ 161d0ef721eSBaptiste Daroussin /* 91 */ ED_INSERT, /* [ */ 162d0ef721eSBaptiste Daroussin /* 92 */ ED_INSERT, /* \ */ 163d0ef721eSBaptiste Daroussin /* 93 */ ED_INSERT, /* ] */ 164d0ef721eSBaptiste Daroussin /* 94 */ ED_INSERT, /* ^ */ 165d0ef721eSBaptiste Daroussin /* 95 */ ED_INSERT, /* _ */ 166d0ef721eSBaptiste Daroussin /* 96 */ ED_INSERT, /* ` */ 167d0ef721eSBaptiste Daroussin /* 97 */ ED_INSERT, /* a */ 168d0ef721eSBaptiste Daroussin /* 98 */ ED_INSERT, /* b */ 169d0ef721eSBaptiste Daroussin /* 99 */ ED_INSERT, /* c */ 170d0ef721eSBaptiste Daroussin /* 100 */ ED_INSERT, /* d */ 171d0ef721eSBaptiste Daroussin /* 101 */ ED_INSERT, /* e */ 172d0ef721eSBaptiste Daroussin /* 102 */ ED_INSERT, /* f */ 173d0ef721eSBaptiste Daroussin /* 103 */ ED_INSERT, /* g */ 174d0ef721eSBaptiste Daroussin /* 104 */ ED_INSERT, /* h */ 175d0ef721eSBaptiste Daroussin /* 105 */ ED_INSERT, /* i */ 176d0ef721eSBaptiste Daroussin /* 106 */ ED_INSERT, /* j */ 177d0ef721eSBaptiste Daroussin /* 107 */ ED_INSERT, /* k */ 178d0ef721eSBaptiste Daroussin /* 108 */ ED_INSERT, /* l */ 179d0ef721eSBaptiste Daroussin /* 109 */ ED_INSERT, /* m */ 180d0ef721eSBaptiste Daroussin /* 110 */ ED_INSERT, /* n */ 181d0ef721eSBaptiste Daroussin /* 111 */ ED_INSERT, /* o */ 182d0ef721eSBaptiste Daroussin /* 112 */ ED_INSERT, /* p */ 183d0ef721eSBaptiste Daroussin /* 113 */ ED_INSERT, /* q */ 184d0ef721eSBaptiste Daroussin /* 114 */ ED_INSERT, /* r */ 185d0ef721eSBaptiste Daroussin /* 115 */ ED_INSERT, /* s */ 186d0ef721eSBaptiste Daroussin /* 116 */ ED_INSERT, /* t */ 187d0ef721eSBaptiste Daroussin /* 117 */ ED_INSERT, /* u */ 188d0ef721eSBaptiste Daroussin /* 118 */ ED_INSERT, /* v */ 189d0ef721eSBaptiste Daroussin /* 119 */ ED_INSERT, /* w */ 190d0ef721eSBaptiste Daroussin /* 120 */ ED_INSERT, /* x */ 191d0ef721eSBaptiste Daroussin /* 121 */ ED_INSERT, /* y */ 192d0ef721eSBaptiste Daroussin /* 122 */ ED_INSERT, /* z */ 193d0ef721eSBaptiste Daroussin /* 123 */ ED_INSERT, /* { */ 194d0ef721eSBaptiste Daroussin /* 124 */ ED_INSERT, /* | */ 195d0ef721eSBaptiste Daroussin /* 125 */ ED_INSERT, /* } */ 196d0ef721eSBaptiste Daroussin /* 126 */ ED_INSERT, /* ~ */ 197d0ef721eSBaptiste Daroussin /* 127 */ EM_DELETE_PREV_CHAR, /* ^? */ 198d0ef721eSBaptiste Daroussin /* 128 */ ED_UNASSIGNED, /* M-^@ */ 199d0ef721eSBaptiste Daroussin /* 129 */ ED_UNASSIGNED, /* M-^A */ 200d0ef721eSBaptiste Daroussin /* 130 */ ED_UNASSIGNED, /* M-^B */ 201d0ef721eSBaptiste Daroussin /* 131 */ ED_UNASSIGNED, /* M-^C */ 202d0ef721eSBaptiste Daroussin /* 132 */ ED_UNASSIGNED, /* M-^D */ 203d0ef721eSBaptiste Daroussin /* 133 */ ED_UNASSIGNED, /* M-^E */ 204d0ef721eSBaptiste Daroussin /* 134 */ ED_UNASSIGNED, /* M-^F */ 205d0ef721eSBaptiste Daroussin /* 135 */ ED_UNASSIGNED, /* M-^G */ 206d0ef721eSBaptiste Daroussin /* 136 */ ED_DELETE_PREV_WORD, /* M-^H */ 207d0ef721eSBaptiste Daroussin /* 137 */ ED_UNASSIGNED, /* M-^I */ 208d0ef721eSBaptiste Daroussin /* 138 */ ED_UNASSIGNED, /* M-^J */ 209d0ef721eSBaptiste Daroussin /* 139 */ ED_UNASSIGNED, /* M-^K */ 210d0ef721eSBaptiste Daroussin /* 140 */ ED_CLEAR_SCREEN, /* M-^L */ 211d0ef721eSBaptiste Daroussin /* 141 */ ED_UNASSIGNED, /* M-^M */ 212d0ef721eSBaptiste Daroussin /* 142 */ ED_UNASSIGNED, /* M-^N */ 213d0ef721eSBaptiste Daroussin /* 143 */ ED_UNASSIGNED, /* M-^O */ 214d0ef721eSBaptiste Daroussin /* 144 */ ED_UNASSIGNED, /* M-^P */ 215d0ef721eSBaptiste Daroussin /* 145 */ ED_UNASSIGNED, /* M-^Q */ 216d0ef721eSBaptiste Daroussin /* 146 */ ED_UNASSIGNED, /* M-^R */ 217d0ef721eSBaptiste Daroussin /* 147 */ ED_UNASSIGNED, /* M-^S */ 218d0ef721eSBaptiste Daroussin /* 148 */ ED_UNASSIGNED, /* M-^T */ 219d0ef721eSBaptiste Daroussin /* 149 */ ED_UNASSIGNED, /* M-^U */ 220d0ef721eSBaptiste Daroussin /* 150 */ ED_UNASSIGNED, /* M-^V */ 221d0ef721eSBaptiste Daroussin /* 151 */ ED_UNASSIGNED, /* M-^W */ 222d0ef721eSBaptiste Daroussin /* 152 */ ED_UNASSIGNED, /* M-^X */ 223d0ef721eSBaptiste Daroussin /* 153 */ ED_UNASSIGNED, /* M-^Y */ 224d0ef721eSBaptiste Daroussin /* 154 */ ED_UNASSIGNED, /* M-^Z */ 225d0ef721eSBaptiste Daroussin /* 155 */ ED_UNASSIGNED, /* M-^[ */ 226d0ef721eSBaptiste Daroussin /* 156 */ ED_UNASSIGNED, /* M-^\ */ 227d0ef721eSBaptiste Daroussin /* 157 */ ED_UNASSIGNED, /* M-^] */ 228d0ef721eSBaptiste Daroussin /* 158 */ ED_UNASSIGNED, /* M-^^ */ 229d0ef721eSBaptiste Daroussin /* 159 */ EM_COPY_PREV_WORD, /* M-^_ */ 230d0ef721eSBaptiste Daroussin /* 160 */ ED_UNASSIGNED, /* M-SPACE */ 231d0ef721eSBaptiste Daroussin /* 161 */ ED_UNASSIGNED, /* M-! */ 232d0ef721eSBaptiste Daroussin /* 162 */ ED_UNASSIGNED, /* M-" */ 233d0ef721eSBaptiste Daroussin /* 163 */ ED_UNASSIGNED, /* M-# */ 234d0ef721eSBaptiste Daroussin /* 164 */ ED_UNASSIGNED, /* M-$ */ 235d0ef721eSBaptiste Daroussin /* 165 */ ED_UNASSIGNED, /* M-% */ 236d0ef721eSBaptiste Daroussin /* 166 */ ED_UNASSIGNED, /* M-& */ 237d0ef721eSBaptiste Daroussin /* 167 */ ED_UNASSIGNED, /* M-' */ 238d0ef721eSBaptiste Daroussin /* 168 */ ED_UNASSIGNED, /* M-( */ 239d0ef721eSBaptiste Daroussin /* 169 */ ED_UNASSIGNED, /* M-) */ 240d0ef721eSBaptiste Daroussin /* 170 */ ED_UNASSIGNED, /* M-* */ 241d0ef721eSBaptiste Daroussin /* 171 */ ED_UNASSIGNED, /* M-+ */ 242d0ef721eSBaptiste Daroussin /* 172 */ ED_UNASSIGNED, /* M-, */ 243d0ef721eSBaptiste Daroussin /* 173 */ ED_UNASSIGNED, /* M-- */ 244d0ef721eSBaptiste Daroussin /* 174 */ ED_UNASSIGNED, /* M-. */ 245d0ef721eSBaptiste Daroussin /* 175 */ ED_UNASSIGNED, /* M-/ */ 246d0ef721eSBaptiste Daroussin /* 176 */ ED_ARGUMENT_DIGIT, /* M-0 */ 247d0ef721eSBaptiste Daroussin /* 177 */ ED_ARGUMENT_DIGIT, /* M-1 */ 248d0ef721eSBaptiste Daroussin /* 178 */ ED_ARGUMENT_DIGIT, /* M-2 */ 249d0ef721eSBaptiste Daroussin /* 179 */ ED_ARGUMENT_DIGIT, /* M-3 */ 250d0ef721eSBaptiste Daroussin /* 180 */ ED_ARGUMENT_DIGIT, /* M-4 */ 251d0ef721eSBaptiste Daroussin /* 181 */ ED_ARGUMENT_DIGIT, /* M-5 */ 252d0ef721eSBaptiste Daroussin /* 182 */ ED_ARGUMENT_DIGIT, /* M-6 */ 253d0ef721eSBaptiste Daroussin /* 183 */ ED_ARGUMENT_DIGIT, /* M-7 */ 254d0ef721eSBaptiste Daroussin /* 184 */ ED_ARGUMENT_DIGIT, /* M-8 */ 255d0ef721eSBaptiste Daroussin /* 185 */ ED_ARGUMENT_DIGIT, /* M-9 */ 256d0ef721eSBaptiste Daroussin /* 186 */ ED_UNASSIGNED, /* M-: */ 257d0ef721eSBaptiste Daroussin /* 187 */ ED_UNASSIGNED, /* M-; */ 258d0ef721eSBaptiste Daroussin /* 188 */ ED_UNASSIGNED, /* M-< */ 259d0ef721eSBaptiste Daroussin /* 189 */ ED_UNASSIGNED, /* M-= */ 260d0ef721eSBaptiste Daroussin /* 190 */ ED_UNASSIGNED, /* M-> */ 261d0ef721eSBaptiste Daroussin /* 191 */ ED_UNASSIGNED, /* M-? */ 262d0ef721eSBaptiste Daroussin /* 192 */ ED_UNASSIGNED, /* M-@ */ 263d0ef721eSBaptiste Daroussin /* 193 */ ED_UNASSIGNED, /* M-A */ 264d0ef721eSBaptiste Daroussin /* 194 */ ED_PREV_WORD, /* M-B */ 265d0ef721eSBaptiste Daroussin /* 195 */ EM_CAPITOL_CASE, /* M-C */ 266d0ef721eSBaptiste Daroussin /* 196 */ EM_DELETE_NEXT_WORD, /* M-D */ 267d0ef721eSBaptiste Daroussin /* 197 */ ED_UNASSIGNED, /* M-E */ 268d0ef721eSBaptiste Daroussin /* 198 */ EM_NEXT_WORD, /* M-F */ 269d0ef721eSBaptiste Daroussin /* 199 */ ED_UNASSIGNED, /* M-G */ 270d0ef721eSBaptiste Daroussin /* 200 */ ED_UNASSIGNED, /* M-H */ 271d0ef721eSBaptiste Daroussin /* 201 */ ED_UNASSIGNED, /* M-I */ 272d0ef721eSBaptiste Daroussin /* 202 */ ED_UNASSIGNED, /* M-J */ 273d0ef721eSBaptiste Daroussin /* 203 */ ED_UNASSIGNED, /* M-K */ 274d0ef721eSBaptiste Daroussin /* 204 */ EM_LOWER_CASE, /* M-L */ 275d0ef721eSBaptiste Daroussin /* 205 */ ED_UNASSIGNED, /* M-M */ 276d0ef721eSBaptiste Daroussin /* 206 */ ED_SEARCH_NEXT_HISTORY, /* M-N */ 277d0ef721eSBaptiste Daroussin /* 207 */ ED_SEQUENCE_LEAD_IN, /* M-O */ 278d0ef721eSBaptiste Daroussin /* 208 */ ED_SEARCH_PREV_HISTORY, /* M-P */ 279d0ef721eSBaptiste Daroussin /* 209 */ ED_UNASSIGNED, /* M-Q */ 280d0ef721eSBaptiste Daroussin /* 210 */ ED_UNASSIGNED, /* M-R */ 281d0ef721eSBaptiste Daroussin /* 211 */ ED_UNASSIGNED, /* M-S */ 282d0ef721eSBaptiste Daroussin /* 212 */ ED_UNASSIGNED, /* M-T */ 283d0ef721eSBaptiste Daroussin /* 213 */ EM_UPPER_CASE, /* M-U */ 284d0ef721eSBaptiste Daroussin /* 214 */ ED_UNASSIGNED, /* M-V */ 285d0ef721eSBaptiste Daroussin /* 215 */ EM_COPY_REGION, /* M-W */ 286d0ef721eSBaptiste Daroussin /* 216 */ ED_COMMAND, /* M-X */ 287d0ef721eSBaptiste Daroussin /* 217 */ ED_UNASSIGNED, /* M-Y */ 288d0ef721eSBaptiste Daroussin /* 218 */ ED_UNASSIGNED, /* M-Z */ 289d0ef721eSBaptiste Daroussin /* 219 */ ED_SEQUENCE_LEAD_IN, /* M-[ */ 290d0ef721eSBaptiste Daroussin /* 220 */ ED_UNASSIGNED, /* M-\ */ 291d0ef721eSBaptiste Daroussin /* 221 */ ED_UNASSIGNED, /* M-] */ 292d0ef721eSBaptiste Daroussin /* 222 */ ED_UNASSIGNED, /* M-^ */ 293d0ef721eSBaptiste Daroussin /* 223 */ ED_UNASSIGNED, /* M-_ */ 294d0ef721eSBaptiste Daroussin /* 223 */ ED_UNASSIGNED, /* M-` */ 295d0ef721eSBaptiste Daroussin /* 224 */ ED_UNASSIGNED, /* M-a */ 296d0ef721eSBaptiste Daroussin /* 225 */ ED_PREV_WORD, /* M-b */ 297d0ef721eSBaptiste Daroussin /* 226 */ EM_CAPITOL_CASE, /* M-c */ 298d0ef721eSBaptiste Daroussin /* 227 */ EM_DELETE_NEXT_WORD, /* M-d */ 299d0ef721eSBaptiste Daroussin /* 228 */ ED_UNASSIGNED, /* M-e */ 300d0ef721eSBaptiste Daroussin /* 229 */ EM_NEXT_WORD, /* M-f */ 301d0ef721eSBaptiste Daroussin /* 230 */ ED_UNASSIGNED, /* M-g */ 302d0ef721eSBaptiste Daroussin /* 231 */ ED_UNASSIGNED, /* M-h */ 303d0ef721eSBaptiste Daroussin /* 232 */ ED_UNASSIGNED, /* M-i */ 304d0ef721eSBaptiste Daroussin /* 233 */ ED_UNASSIGNED, /* M-j */ 305d0ef721eSBaptiste Daroussin /* 234 */ ED_UNASSIGNED, /* M-k */ 306d0ef721eSBaptiste Daroussin /* 235 */ EM_LOWER_CASE, /* M-l */ 307d0ef721eSBaptiste Daroussin /* 236 */ ED_UNASSIGNED, /* M-m */ 308d0ef721eSBaptiste Daroussin /* 237 */ ED_SEARCH_NEXT_HISTORY, /* M-n */ 309d0ef721eSBaptiste Daroussin /* 238 */ ED_UNASSIGNED, /* M-o */ 310d0ef721eSBaptiste Daroussin /* 239 */ ED_SEARCH_PREV_HISTORY, /* M-p */ 311d0ef721eSBaptiste Daroussin /* 240 */ ED_UNASSIGNED, /* M-q */ 312d0ef721eSBaptiste Daroussin /* 241 */ ED_UNASSIGNED, /* M-r */ 313d0ef721eSBaptiste Daroussin /* 242 */ ED_UNASSIGNED, /* M-s */ 314d0ef721eSBaptiste Daroussin /* 243 */ ED_UNASSIGNED, /* M-t */ 315d0ef721eSBaptiste Daroussin /* 244 */ EM_UPPER_CASE, /* M-u */ 316d0ef721eSBaptiste Daroussin /* 245 */ ED_UNASSIGNED, /* M-v */ 317d0ef721eSBaptiste Daroussin /* 246 */ EM_COPY_REGION, /* M-w */ 318d0ef721eSBaptiste Daroussin /* 247 */ ED_COMMAND, /* M-x */ 319d0ef721eSBaptiste Daroussin /* 248 */ ED_UNASSIGNED, /* M-y */ 320d0ef721eSBaptiste Daroussin /* 249 */ ED_UNASSIGNED, /* M-z */ 321d0ef721eSBaptiste Daroussin /* 250 */ ED_UNASSIGNED, /* M-{ */ 322d0ef721eSBaptiste Daroussin /* 251 */ ED_UNASSIGNED, /* M-| */ 323d0ef721eSBaptiste Daroussin /* 252 */ ED_UNASSIGNED, /* M-} */ 324d0ef721eSBaptiste Daroussin /* 253 */ ED_UNASSIGNED, /* M-~ */ 325d0ef721eSBaptiste Daroussin /* 254 */ ED_DELETE_PREV_WORD /* M-^? */ 326d0ef721eSBaptiste Daroussin /* 255 */ 327d0ef721eSBaptiste Daroussin }; 328d0ef721eSBaptiste Daroussin 329d0ef721eSBaptiste Daroussin 330d0ef721eSBaptiste Daroussin /* 331d0ef721eSBaptiste Daroussin * keymap table for vi. Each index into above tbl; should be 332d0ef721eSBaptiste Daroussin * N_KEYS entries long. Vi mode uses a sticky-extend to do command mode: 333d0ef721eSBaptiste Daroussin * insert mode characters are in the normal keymap, and command mode 334d0ef721eSBaptiste Daroussin * in the extended keymap. 335d0ef721eSBaptiste Daroussin */ 336d0ef721eSBaptiste Daroussin static const el_action_t el_map_vi_insert[] = { 337d0ef721eSBaptiste Daroussin #ifdef KSHVI 338d0ef721eSBaptiste Daroussin /* 0 */ ED_UNASSIGNED, /* ^@ */ 339d0ef721eSBaptiste Daroussin /* 1 */ ED_INSERT, /* ^A */ 340d0ef721eSBaptiste Daroussin /* 2 */ ED_INSERT, /* ^B */ 341d0ef721eSBaptiste Daroussin /* 3 */ ED_INSERT, /* ^C */ 342d0ef721eSBaptiste Daroussin /* 4 */ VI_LIST_OR_EOF, /* ^D */ 343d0ef721eSBaptiste Daroussin /* 5 */ ED_INSERT, /* ^E */ 344d0ef721eSBaptiste Daroussin /* 6 */ ED_INSERT, /* ^F */ 345d0ef721eSBaptiste Daroussin /* 7 */ ED_INSERT, /* ^G */ 346d0ef721eSBaptiste Daroussin /* 8 */ VI_DELETE_PREV_CHAR, /* ^H */ /* BackSpace key */ 347d0ef721eSBaptiste Daroussin /* 9 */ ED_INSERT, /* ^I */ /* Tab Key */ 348d0ef721eSBaptiste Daroussin /* 10 */ ED_NEWLINE, /* ^J */ 349d0ef721eSBaptiste Daroussin /* 11 */ ED_INSERT, /* ^K */ 350d0ef721eSBaptiste Daroussin /* 12 */ ED_INSERT, /* ^L */ 351d0ef721eSBaptiste Daroussin /* 13 */ ED_NEWLINE, /* ^M */ 352d0ef721eSBaptiste Daroussin /* 14 */ ED_INSERT, /* ^N */ 353d0ef721eSBaptiste Daroussin /* 15 */ ED_INSERT, /* ^O */ 354d0ef721eSBaptiste Daroussin /* 16 */ ED_INSERT, /* ^P */ 355d0ef721eSBaptiste Daroussin /* 17 */ ED_IGNORE, /* ^Q */ 356d0ef721eSBaptiste Daroussin /* 18 */ ED_INSERT, /* ^R */ 357d0ef721eSBaptiste Daroussin /* 19 */ ED_IGNORE, /* ^S */ 358d0ef721eSBaptiste Daroussin /* 20 */ ED_INSERT, /* ^T */ 359d0ef721eSBaptiste Daroussin /* 21 */ VI_KILL_LINE_PREV, /* ^U */ 360d0ef721eSBaptiste Daroussin /* 22 */ ED_QUOTED_INSERT, /* ^V */ 361d0ef721eSBaptiste Daroussin /* 23 */ ED_DELETE_PREV_WORD, /* ^W */ 362d0ef721eSBaptiste Daroussin /* ED_DELETE_PREV_WORD: Only until strt edit pos */ 363d0ef721eSBaptiste Daroussin /* 24 */ ED_INSERT, /* ^X */ 364d0ef721eSBaptiste Daroussin /* 25 */ ED_INSERT, /* ^Y */ 365d0ef721eSBaptiste Daroussin /* 26 */ ED_INSERT, /* ^Z */ 366d0ef721eSBaptiste Daroussin /* 27 */ VI_COMMAND_MODE, /* ^[ */ /* [ Esc ] key */ 367d0ef721eSBaptiste Daroussin /* 28 */ ED_IGNORE, /* ^\ */ 368d0ef721eSBaptiste Daroussin /* 29 */ ED_INSERT, /* ^] */ 369d0ef721eSBaptiste Daroussin /* 30 */ ED_INSERT, /* ^^ */ 370d0ef721eSBaptiste Daroussin /* 31 */ ED_INSERT, /* ^_ */ 371d0ef721eSBaptiste Daroussin #else /* !KSHVI */ 372d0ef721eSBaptiste Daroussin /* 373d0ef721eSBaptiste Daroussin * NOTE: These mappings do NOT Correspond well 374d0ef721eSBaptiste Daroussin * to the KSH VI editing assignments. 375d0ef721eSBaptiste Daroussin * On the other and they are convenient and 376d0ef721eSBaptiste Daroussin * many people have have gotten used to them. 377d0ef721eSBaptiste Daroussin */ 378d0ef721eSBaptiste Daroussin /* 0 */ ED_UNASSIGNED, /* ^@ */ 379d0ef721eSBaptiste Daroussin /* 1 */ ED_MOVE_TO_BEG, /* ^A */ 380d0ef721eSBaptiste Daroussin /* 2 */ ED_PREV_CHAR, /* ^B */ 381d0ef721eSBaptiste Daroussin /* 3 */ ED_IGNORE, /* ^C */ 382d0ef721eSBaptiste Daroussin /* 4 */ VI_LIST_OR_EOF, /* ^D */ 383d0ef721eSBaptiste Daroussin /* 5 */ ED_MOVE_TO_END, /* ^E */ 384d0ef721eSBaptiste Daroussin /* 6 */ ED_NEXT_CHAR, /* ^F */ 385d0ef721eSBaptiste Daroussin /* 7 */ ED_UNASSIGNED, /* ^G */ 386d0ef721eSBaptiste Daroussin /* 8 */ VI_DELETE_PREV_CHAR, /* ^H */ /* BackSpace key */ 387d0ef721eSBaptiste Daroussin /* 9 */ ED_UNASSIGNED, /* ^I */ /* Tab Key */ 388d0ef721eSBaptiste Daroussin /* 10 */ ED_NEWLINE, /* ^J */ 389d0ef721eSBaptiste Daroussin /* 11 */ ED_KILL_LINE, /* ^K */ 390d0ef721eSBaptiste Daroussin /* 12 */ ED_CLEAR_SCREEN, /* ^L */ 391d0ef721eSBaptiste Daroussin /* 13 */ ED_NEWLINE, /* ^M */ 392d0ef721eSBaptiste Daroussin /* 14 */ ED_NEXT_HISTORY, /* ^N */ 393d0ef721eSBaptiste Daroussin /* 15 */ ED_IGNORE, /* ^O */ 394d0ef721eSBaptiste Daroussin /* 16 */ ED_PREV_HISTORY, /* ^P */ 395d0ef721eSBaptiste Daroussin /* 17 */ ED_IGNORE, /* ^Q */ 396d0ef721eSBaptiste Daroussin /* 18 */ ED_REDISPLAY, /* ^R */ 397d0ef721eSBaptiste Daroussin /* 19 */ ED_IGNORE, /* ^S */ 398d0ef721eSBaptiste Daroussin /* 20 */ ED_TRANSPOSE_CHARS, /* ^T */ 399d0ef721eSBaptiste Daroussin /* 21 */ VI_KILL_LINE_PREV, /* ^U */ 400d0ef721eSBaptiste Daroussin /* 22 */ ED_QUOTED_INSERT, /* ^V */ 401d0ef721eSBaptiste Daroussin /* 23 */ ED_DELETE_PREV_WORD, /* ^W */ 402d0ef721eSBaptiste Daroussin /* 24 */ ED_UNASSIGNED, /* ^X */ 403d0ef721eSBaptiste Daroussin /* 25 */ ED_IGNORE, /* ^Y */ 404d0ef721eSBaptiste Daroussin /* 26 */ ED_IGNORE, /* ^Z */ 405d0ef721eSBaptiste Daroussin /* 27 */ VI_COMMAND_MODE, /* ^[ */ 406d0ef721eSBaptiste Daroussin /* 28 */ ED_IGNORE, /* ^\ */ 407d0ef721eSBaptiste Daroussin /* 29 */ ED_UNASSIGNED, /* ^] */ 408d0ef721eSBaptiste Daroussin /* 30 */ ED_UNASSIGNED, /* ^^ */ 409d0ef721eSBaptiste Daroussin /* 31 */ ED_UNASSIGNED, /* ^_ */ 410d0ef721eSBaptiste Daroussin #endif /* KSHVI */ 411d0ef721eSBaptiste Daroussin /* 32 */ ED_INSERT, /* SPACE */ 412d0ef721eSBaptiste Daroussin /* 33 */ ED_INSERT, /* ! */ 413d0ef721eSBaptiste Daroussin /* 34 */ ED_INSERT, /* " */ 414d0ef721eSBaptiste Daroussin /* 35 */ ED_INSERT, /* # */ 415d0ef721eSBaptiste Daroussin /* 36 */ ED_INSERT, /* $ */ 416d0ef721eSBaptiste Daroussin /* 37 */ ED_INSERT, /* % */ 417d0ef721eSBaptiste Daroussin /* 38 */ ED_INSERT, /* & */ 418d0ef721eSBaptiste Daroussin /* 39 */ ED_INSERT, /* ' */ 419d0ef721eSBaptiste Daroussin /* 40 */ ED_INSERT, /* ( */ 420d0ef721eSBaptiste Daroussin /* 41 */ ED_INSERT, /* ) */ 421d0ef721eSBaptiste Daroussin /* 42 */ ED_INSERT, /* * */ 422d0ef721eSBaptiste Daroussin /* 43 */ ED_INSERT, /* + */ 423d0ef721eSBaptiste Daroussin /* 44 */ ED_INSERT, /* , */ 424d0ef721eSBaptiste Daroussin /* 45 */ ED_INSERT, /* - */ 425d0ef721eSBaptiste Daroussin /* 46 */ ED_INSERT, /* . */ 426d0ef721eSBaptiste Daroussin /* 47 */ ED_INSERT, /* / */ 427d0ef721eSBaptiste Daroussin /* 48 */ ED_INSERT, /* 0 */ 428d0ef721eSBaptiste Daroussin /* 49 */ ED_INSERT, /* 1 */ 429d0ef721eSBaptiste Daroussin /* 50 */ ED_INSERT, /* 2 */ 430d0ef721eSBaptiste Daroussin /* 51 */ ED_INSERT, /* 3 */ 431d0ef721eSBaptiste Daroussin /* 52 */ ED_INSERT, /* 4 */ 432d0ef721eSBaptiste Daroussin /* 53 */ ED_INSERT, /* 5 */ 433d0ef721eSBaptiste Daroussin /* 54 */ ED_INSERT, /* 6 */ 434d0ef721eSBaptiste Daroussin /* 55 */ ED_INSERT, /* 7 */ 435d0ef721eSBaptiste Daroussin /* 56 */ ED_INSERT, /* 8 */ 436d0ef721eSBaptiste Daroussin /* 57 */ ED_INSERT, /* 9 */ 437d0ef721eSBaptiste Daroussin /* 58 */ ED_INSERT, /* : */ 438d0ef721eSBaptiste Daroussin /* 59 */ ED_INSERT, /* ; */ 439d0ef721eSBaptiste Daroussin /* 60 */ ED_INSERT, /* < */ 440d0ef721eSBaptiste Daroussin /* 61 */ ED_INSERT, /* = */ 441d0ef721eSBaptiste Daroussin /* 62 */ ED_INSERT, /* > */ 442d0ef721eSBaptiste Daroussin /* 63 */ ED_INSERT, /* ? */ 443d0ef721eSBaptiste Daroussin /* 64 */ ED_INSERT, /* @ */ 444d0ef721eSBaptiste Daroussin /* 65 */ ED_INSERT, /* A */ 445d0ef721eSBaptiste Daroussin /* 66 */ ED_INSERT, /* B */ 446d0ef721eSBaptiste Daroussin /* 67 */ ED_INSERT, /* C */ 447d0ef721eSBaptiste Daroussin /* 68 */ ED_INSERT, /* D */ 448d0ef721eSBaptiste Daroussin /* 69 */ ED_INSERT, /* E */ 449d0ef721eSBaptiste Daroussin /* 70 */ ED_INSERT, /* F */ 450d0ef721eSBaptiste Daroussin /* 71 */ ED_INSERT, /* G */ 451d0ef721eSBaptiste Daroussin /* 72 */ ED_INSERT, /* H */ 452d0ef721eSBaptiste Daroussin /* 73 */ ED_INSERT, /* I */ 453d0ef721eSBaptiste Daroussin /* 74 */ ED_INSERT, /* J */ 454d0ef721eSBaptiste Daroussin /* 75 */ ED_INSERT, /* K */ 455d0ef721eSBaptiste Daroussin /* 76 */ ED_INSERT, /* L */ 456d0ef721eSBaptiste Daroussin /* 77 */ ED_INSERT, /* M */ 457d0ef721eSBaptiste Daroussin /* 78 */ ED_INSERT, /* N */ 458d0ef721eSBaptiste Daroussin /* 79 */ ED_INSERT, /* O */ 459d0ef721eSBaptiste Daroussin /* 80 */ ED_INSERT, /* P */ 460d0ef721eSBaptiste Daroussin /* 81 */ ED_INSERT, /* Q */ 461d0ef721eSBaptiste Daroussin /* 82 */ ED_INSERT, /* R */ 462d0ef721eSBaptiste Daroussin /* 83 */ ED_INSERT, /* S */ 463d0ef721eSBaptiste Daroussin /* 84 */ ED_INSERT, /* T */ 464d0ef721eSBaptiste Daroussin /* 85 */ ED_INSERT, /* U */ 465d0ef721eSBaptiste Daroussin /* 86 */ ED_INSERT, /* V */ 466d0ef721eSBaptiste Daroussin /* 87 */ ED_INSERT, /* W */ 467d0ef721eSBaptiste Daroussin /* 88 */ ED_INSERT, /* X */ 468d0ef721eSBaptiste Daroussin /* 89 */ ED_INSERT, /* Y */ 469d0ef721eSBaptiste Daroussin /* 90 */ ED_INSERT, /* Z */ 470d0ef721eSBaptiste Daroussin /* 91 */ ED_INSERT, /* [ */ 471d0ef721eSBaptiste Daroussin /* 92 */ ED_INSERT, /* \ */ 472d0ef721eSBaptiste Daroussin /* 93 */ ED_INSERT, /* ] */ 473d0ef721eSBaptiste Daroussin /* 94 */ ED_INSERT, /* ^ */ 474d0ef721eSBaptiste Daroussin /* 95 */ ED_INSERT, /* _ */ 475d0ef721eSBaptiste Daroussin /* 96 */ ED_INSERT, /* ` */ 476d0ef721eSBaptiste Daroussin /* 97 */ ED_INSERT, /* a */ 477d0ef721eSBaptiste Daroussin /* 98 */ ED_INSERT, /* b */ 478d0ef721eSBaptiste Daroussin /* 99 */ ED_INSERT, /* c */ 479d0ef721eSBaptiste Daroussin /* 100 */ ED_INSERT, /* d */ 480d0ef721eSBaptiste Daroussin /* 101 */ ED_INSERT, /* e */ 481d0ef721eSBaptiste Daroussin /* 102 */ ED_INSERT, /* f */ 482d0ef721eSBaptiste Daroussin /* 103 */ ED_INSERT, /* g */ 483d0ef721eSBaptiste Daroussin /* 104 */ ED_INSERT, /* h */ 484d0ef721eSBaptiste Daroussin /* 105 */ ED_INSERT, /* i */ 485d0ef721eSBaptiste Daroussin /* 106 */ ED_INSERT, /* j */ 486d0ef721eSBaptiste Daroussin /* 107 */ ED_INSERT, /* k */ 487d0ef721eSBaptiste Daroussin /* 108 */ ED_INSERT, /* l */ 488d0ef721eSBaptiste Daroussin /* 109 */ ED_INSERT, /* m */ 489d0ef721eSBaptiste Daroussin /* 110 */ ED_INSERT, /* n */ 490d0ef721eSBaptiste Daroussin /* 111 */ ED_INSERT, /* o */ 491d0ef721eSBaptiste Daroussin /* 112 */ ED_INSERT, /* p */ 492d0ef721eSBaptiste Daroussin /* 113 */ ED_INSERT, /* q */ 493d0ef721eSBaptiste Daroussin /* 114 */ ED_INSERT, /* r */ 494d0ef721eSBaptiste Daroussin /* 115 */ ED_INSERT, /* s */ 495d0ef721eSBaptiste Daroussin /* 116 */ ED_INSERT, /* t */ 496d0ef721eSBaptiste Daroussin /* 117 */ ED_INSERT, /* u */ 497d0ef721eSBaptiste Daroussin /* 118 */ ED_INSERT, /* v */ 498d0ef721eSBaptiste Daroussin /* 119 */ ED_INSERT, /* w */ 499d0ef721eSBaptiste Daroussin /* 120 */ ED_INSERT, /* x */ 500d0ef721eSBaptiste Daroussin /* 121 */ ED_INSERT, /* y */ 501d0ef721eSBaptiste Daroussin /* 122 */ ED_INSERT, /* z */ 502d0ef721eSBaptiste Daroussin /* 123 */ ED_INSERT, /* { */ 503d0ef721eSBaptiste Daroussin /* 124 */ ED_INSERT, /* | */ 504d0ef721eSBaptiste Daroussin /* 125 */ ED_INSERT, /* } */ 505d0ef721eSBaptiste Daroussin /* 126 */ ED_INSERT, /* ~ */ 506d0ef721eSBaptiste Daroussin /* 127 */ VI_DELETE_PREV_CHAR, /* ^? */ 507d0ef721eSBaptiste Daroussin /* 128 */ ED_INSERT, /* M-^@ */ 508d0ef721eSBaptiste Daroussin /* 129 */ ED_INSERT, /* M-^A */ 509d0ef721eSBaptiste Daroussin /* 130 */ ED_INSERT, /* M-^B */ 510d0ef721eSBaptiste Daroussin /* 131 */ ED_INSERT, /* M-^C */ 511d0ef721eSBaptiste Daroussin /* 132 */ ED_INSERT, /* M-^D */ 512d0ef721eSBaptiste Daroussin /* 133 */ ED_INSERT, /* M-^E */ 513d0ef721eSBaptiste Daroussin /* 134 */ ED_INSERT, /* M-^F */ 514d0ef721eSBaptiste Daroussin /* 135 */ ED_INSERT, /* M-^G */ 515d0ef721eSBaptiste Daroussin /* 136 */ ED_INSERT, /* M-^H */ 516d0ef721eSBaptiste Daroussin /* 137 */ ED_INSERT, /* M-^I */ 517d0ef721eSBaptiste Daroussin /* 138 */ ED_INSERT, /* M-^J */ 518d0ef721eSBaptiste Daroussin /* 139 */ ED_INSERT, /* M-^K */ 519d0ef721eSBaptiste Daroussin /* 140 */ ED_INSERT, /* M-^L */ 520d0ef721eSBaptiste Daroussin /* 141 */ ED_INSERT, /* M-^M */ 521d0ef721eSBaptiste Daroussin /* 142 */ ED_INSERT, /* M-^N */ 522d0ef721eSBaptiste Daroussin /* 143 */ ED_INSERT, /* M-^O */ 523d0ef721eSBaptiste Daroussin /* 144 */ ED_INSERT, /* M-^P */ 524d0ef721eSBaptiste Daroussin /* 145 */ ED_INSERT, /* M-^Q */ 525d0ef721eSBaptiste Daroussin /* 146 */ ED_INSERT, /* M-^R */ 526d0ef721eSBaptiste Daroussin /* 147 */ ED_INSERT, /* M-^S */ 527d0ef721eSBaptiste Daroussin /* 148 */ ED_INSERT, /* M-^T */ 528d0ef721eSBaptiste Daroussin /* 149 */ ED_INSERT, /* M-^U */ 529d0ef721eSBaptiste Daroussin /* 150 */ ED_INSERT, /* M-^V */ 530d0ef721eSBaptiste Daroussin /* 151 */ ED_INSERT, /* M-^W */ 531d0ef721eSBaptiste Daroussin /* 152 */ ED_INSERT, /* M-^X */ 532d0ef721eSBaptiste Daroussin /* 153 */ ED_INSERT, /* M-^Y */ 533d0ef721eSBaptiste Daroussin /* 154 */ ED_INSERT, /* M-^Z */ 534d0ef721eSBaptiste Daroussin /* 155 */ ED_INSERT, /* M-^[ */ 535d0ef721eSBaptiste Daroussin /* 156 */ ED_INSERT, /* M-^\ */ 536d0ef721eSBaptiste Daroussin /* 157 */ ED_INSERT, /* M-^] */ 537d0ef721eSBaptiste Daroussin /* 158 */ ED_INSERT, /* M-^^ */ 538d0ef721eSBaptiste Daroussin /* 159 */ ED_INSERT, /* M-^_ */ 539d0ef721eSBaptiste Daroussin /* 160 */ ED_INSERT, /* M-SPACE */ 540d0ef721eSBaptiste Daroussin /* 161 */ ED_INSERT, /* M-! */ 541d0ef721eSBaptiste Daroussin /* 162 */ ED_INSERT, /* M-" */ 542d0ef721eSBaptiste Daroussin /* 163 */ ED_INSERT, /* M-# */ 543d0ef721eSBaptiste Daroussin /* 164 */ ED_INSERT, /* M-$ */ 544d0ef721eSBaptiste Daroussin /* 165 */ ED_INSERT, /* M-% */ 545d0ef721eSBaptiste Daroussin /* 166 */ ED_INSERT, /* M-& */ 546d0ef721eSBaptiste Daroussin /* 167 */ ED_INSERT, /* M-' */ 547d0ef721eSBaptiste Daroussin /* 168 */ ED_INSERT, /* M-( */ 548d0ef721eSBaptiste Daroussin /* 169 */ ED_INSERT, /* M-) */ 549d0ef721eSBaptiste Daroussin /* 170 */ ED_INSERT, /* M-* */ 550d0ef721eSBaptiste Daroussin /* 171 */ ED_INSERT, /* M-+ */ 551d0ef721eSBaptiste Daroussin /* 172 */ ED_INSERT, /* M-, */ 552d0ef721eSBaptiste Daroussin /* 173 */ ED_INSERT, /* M-- */ 553d0ef721eSBaptiste Daroussin /* 174 */ ED_INSERT, /* M-. */ 554d0ef721eSBaptiste Daroussin /* 175 */ ED_INSERT, /* M-/ */ 555d0ef721eSBaptiste Daroussin /* 176 */ ED_INSERT, /* M-0 */ 556d0ef721eSBaptiste Daroussin /* 177 */ ED_INSERT, /* M-1 */ 557d0ef721eSBaptiste Daroussin /* 178 */ ED_INSERT, /* M-2 */ 558d0ef721eSBaptiste Daroussin /* 179 */ ED_INSERT, /* M-3 */ 559d0ef721eSBaptiste Daroussin /* 180 */ ED_INSERT, /* M-4 */ 560d0ef721eSBaptiste Daroussin /* 181 */ ED_INSERT, /* M-5 */ 561d0ef721eSBaptiste Daroussin /* 182 */ ED_INSERT, /* M-6 */ 562d0ef721eSBaptiste Daroussin /* 183 */ ED_INSERT, /* M-7 */ 563d0ef721eSBaptiste Daroussin /* 184 */ ED_INSERT, /* M-8 */ 564d0ef721eSBaptiste Daroussin /* 185 */ ED_INSERT, /* M-9 */ 565d0ef721eSBaptiste Daroussin /* 186 */ ED_INSERT, /* M-: */ 566d0ef721eSBaptiste Daroussin /* 187 */ ED_INSERT, /* M-; */ 567d0ef721eSBaptiste Daroussin /* 188 */ ED_INSERT, /* M-< */ 568d0ef721eSBaptiste Daroussin /* 189 */ ED_INSERT, /* M-= */ 569d0ef721eSBaptiste Daroussin /* 190 */ ED_INSERT, /* M-> */ 570d0ef721eSBaptiste Daroussin /* 191 */ ED_INSERT, /* M-? */ 571d0ef721eSBaptiste Daroussin /* 192 */ ED_INSERT, /* M-@ */ 572d0ef721eSBaptiste Daroussin /* 193 */ ED_INSERT, /* M-A */ 573d0ef721eSBaptiste Daroussin /* 194 */ ED_INSERT, /* M-B */ 574d0ef721eSBaptiste Daroussin /* 195 */ ED_INSERT, /* M-C */ 575d0ef721eSBaptiste Daroussin /* 196 */ ED_INSERT, /* M-D */ 576d0ef721eSBaptiste Daroussin /* 197 */ ED_INSERT, /* M-E */ 577d0ef721eSBaptiste Daroussin /* 198 */ ED_INSERT, /* M-F */ 578d0ef721eSBaptiste Daroussin /* 199 */ ED_INSERT, /* M-G */ 579d0ef721eSBaptiste Daroussin /* 200 */ ED_INSERT, /* M-H */ 580d0ef721eSBaptiste Daroussin /* 201 */ ED_INSERT, /* M-I */ 581d0ef721eSBaptiste Daroussin /* 202 */ ED_INSERT, /* M-J */ 582d0ef721eSBaptiste Daroussin /* 203 */ ED_INSERT, /* M-K */ 583d0ef721eSBaptiste Daroussin /* 204 */ ED_INSERT, /* M-L */ 584d0ef721eSBaptiste Daroussin /* 205 */ ED_INSERT, /* M-M */ 585d0ef721eSBaptiste Daroussin /* 206 */ ED_INSERT, /* M-N */ 586d0ef721eSBaptiste Daroussin /* 207 */ ED_INSERT, /* M-O */ 587d0ef721eSBaptiste Daroussin /* 208 */ ED_INSERT, /* M-P */ 588d0ef721eSBaptiste Daroussin /* 209 */ ED_INSERT, /* M-Q */ 589d0ef721eSBaptiste Daroussin /* 210 */ ED_INSERT, /* M-R */ 590d0ef721eSBaptiste Daroussin /* 211 */ ED_INSERT, /* M-S */ 591d0ef721eSBaptiste Daroussin /* 212 */ ED_INSERT, /* M-T */ 592d0ef721eSBaptiste Daroussin /* 213 */ ED_INSERT, /* M-U */ 593d0ef721eSBaptiste Daroussin /* 214 */ ED_INSERT, /* M-V */ 594d0ef721eSBaptiste Daroussin /* 215 */ ED_INSERT, /* M-W */ 595d0ef721eSBaptiste Daroussin /* 216 */ ED_INSERT, /* M-X */ 596d0ef721eSBaptiste Daroussin /* 217 */ ED_INSERT, /* M-Y */ 597d0ef721eSBaptiste Daroussin /* 218 */ ED_INSERT, /* M-Z */ 598d0ef721eSBaptiste Daroussin /* 219 */ ED_INSERT, /* M-[ */ 599d0ef721eSBaptiste Daroussin /* 220 */ ED_INSERT, /* M-\ */ 600d0ef721eSBaptiste Daroussin /* 221 */ ED_INSERT, /* M-] */ 601d0ef721eSBaptiste Daroussin /* 222 */ ED_INSERT, /* M-^ */ 602d0ef721eSBaptiste Daroussin /* 223 */ ED_INSERT, /* M-_ */ 603d0ef721eSBaptiste Daroussin /* 224 */ ED_INSERT, /* M-` */ 604d0ef721eSBaptiste Daroussin /* 225 */ ED_INSERT, /* M-a */ 605d0ef721eSBaptiste Daroussin /* 226 */ ED_INSERT, /* M-b */ 606d0ef721eSBaptiste Daroussin /* 227 */ ED_INSERT, /* M-c */ 607d0ef721eSBaptiste Daroussin /* 228 */ ED_INSERT, /* M-d */ 608d0ef721eSBaptiste Daroussin /* 229 */ ED_INSERT, /* M-e */ 609d0ef721eSBaptiste Daroussin /* 230 */ ED_INSERT, /* M-f */ 610d0ef721eSBaptiste Daroussin /* 231 */ ED_INSERT, /* M-g */ 611d0ef721eSBaptiste Daroussin /* 232 */ ED_INSERT, /* M-h */ 612d0ef721eSBaptiste Daroussin /* 233 */ ED_INSERT, /* M-i */ 613d0ef721eSBaptiste Daroussin /* 234 */ ED_INSERT, /* M-j */ 614d0ef721eSBaptiste Daroussin /* 235 */ ED_INSERT, /* M-k */ 615d0ef721eSBaptiste Daroussin /* 236 */ ED_INSERT, /* M-l */ 616d0ef721eSBaptiste Daroussin /* 237 */ ED_INSERT, /* M-m */ 617d0ef721eSBaptiste Daroussin /* 238 */ ED_INSERT, /* M-n */ 618d0ef721eSBaptiste Daroussin /* 239 */ ED_INSERT, /* M-o */ 619d0ef721eSBaptiste Daroussin /* 240 */ ED_INSERT, /* M-p */ 620d0ef721eSBaptiste Daroussin /* 241 */ ED_INSERT, /* M-q */ 621d0ef721eSBaptiste Daroussin /* 242 */ ED_INSERT, /* M-r */ 622d0ef721eSBaptiste Daroussin /* 243 */ ED_INSERT, /* M-s */ 623d0ef721eSBaptiste Daroussin /* 244 */ ED_INSERT, /* M-t */ 624d0ef721eSBaptiste Daroussin /* 245 */ ED_INSERT, /* M-u */ 625d0ef721eSBaptiste Daroussin /* 246 */ ED_INSERT, /* M-v */ 626d0ef721eSBaptiste Daroussin /* 247 */ ED_INSERT, /* M-w */ 627d0ef721eSBaptiste Daroussin /* 248 */ ED_INSERT, /* M-x */ 628d0ef721eSBaptiste Daroussin /* 249 */ ED_INSERT, /* M-y */ 629d0ef721eSBaptiste Daroussin /* 250 */ ED_INSERT, /* M-z */ 630d0ef721eSBaptiste Daroussin /* 251 */ ED_INSERT, /* M-{ */ 631d0ef721eSBaptiste Daroussin /* 252 */ ED_INSERT, /* M-| */ 632d0ef721eSBaptiste Daroussin /* 253 */ ED_INSERT, /* M-} */ 633d0ef721eSBaptiste Daroussin /* 254 */ ED_INSERT, /* M-~ */ 634d0ef721eSBaptiste Daroussin /* 255 */ ED_INSERT /* M-^? */ 635d0ef721eSBaptiste Daroussin }; 636d0ef721eSBaptiste Daroussin 637d0ef721eSBaptiste Daroussin static const el_action_t el_map_vi_command[] = { 638d0ef721eSBaptiste Daroussin /* 0 */ ED_UNASSIGNED, /* ^@ */ 639d0ef721eSBaptiste Daroussin /* 1 */ ED_MOVE_TO_BEG, /* ^A */ 640d0ef721eSBaptiste Daroussin /* 2 */ ED_UNASSIGNED, /* ^B */ 641d0ef721eSBaptiste Daroussin /* 3 */ ED_IGNORE, /* ^C */ 642d0ef721eSBaptiste Daroussin /* 4 */ ED_UNASSIGNED, /* ^D */ 643d0ef721eSBaptiste Daroussin /* 5 */ ED_MOVE_TO_END, /* ^E */ 644d0ef721eSBaptiste Daroussin /* 6 */ ED_UNASSIGNED, /* ^F */ 645d0ef721eSBaptiste Daroussin /* 7 */ ED_UNASSIGNED, /* ^G */ 646d0ef721eSBaptiste Daroussin /* 8 */ ED_DELETE_PREV_CHAR, /* ^H */ 647d0ef721eSBaptiste Daroussin /* 9 */ ED_UNASSIGNED, /* ^I */ 648d0ef721eSBaptiste Daroussin /* 10 */ ED_NEWLINE, /* ^J */ 649d0ef721eSBaptiste Daroussin /* 11 */ ED_KILL_LINE, /* ^K */ 650d0ef721eSBaptiste Daroussin /* 12 */ ED_CLEAR_SCREEN, /* ^L */ 651d0ef721eSBaptiste Daroussin /* 13 */ ED_NEWLINE, /* ^M */ 652d0ef721eSBaptiste Daroussin /* 14 */ ED_NEXT_HISTORY, /* ^N */ 653d0ef721eSBaptiste Daroussin /* 15 */ ED_IGNORE, /* ^O */ 654d0ef721eSBaptiste Daroussin /* 16 */ ED_PREV_HISTORY, /* ^P */ 655d0ef721eSBaptiste Daroussin /* 17 */ ED_IGNORE, /* ^Q */ 656d0ef721eSBaptiste Daroussin /* 18 */ ED_REDISPLAY, /* ^R */ 657d0ef721eSBaptiste Daroussin /* 19 */ ED_IGNORE, /* ^S */ 658d0ef721eSBaptiste Daroussin /* 20 */ ED_UNASSIGNED, /* ^T */ 659d0ef721eSBaptiste Daroussin /* 21 */ VI_KILL_LINE_PREV, /* ^U */ 660d0ef721eSBaptiste Daroussin /* 22 */ ED_UNASSIGNED, /* ^V */ 661d0ef721eSBaptiste Daroussin /* 23 */ ED_DELETE_PREV_WORD, /* ^W */ 662d0ef721eSBaptiste Daroussin /* 24 */ ED_UNASSIGNED, /* ^X */ 663d0ef721eSBaptiste Daroussin /* 25 */ ED_UNASSIGNED, /* ^Y */ 664d0ef721eSBaptiste Daroussin /* 26 */ ED_UNASSIGNED, /* ^Z */ 665d0ef721eSBaptiste Daroussin /* 27 */ EM_META_NEXT, /* ^[ */ 666d0ef721eSBaptiste Daroussin /* 28 */ ED_IGNORE, /* ^\ */ 667d0ef721eSBaptiste Daroussin /* 29 */ ED_UNASSIGNED, /* ^] */ 668d0ef721eSBaptiste Daroussin /* 30 */ ED_UNASSIGNED, /* ^^ */ 669d0ef721eSBaptiste Daroussin /* 31 */ ED_UNASSIGNED, /* ^_ */ 670d0ef721eSBaptiste Daroussin /* 32 */ ED_NEXT_CHAR, /* SPACE */ 671d0ef721eSBaptiste Daroussin /* 33 */ ED_UNASSIGNED, /* ! */ 672d0ef721eSBaptiste Daroussin /* 34 */ ED_UNASSIGNED, /* " */ 673d0ef721eSBaptiste Daroussin /* 35 */ VI_COMMENT_OUT, /* # */ 674d0ef721eSBaptiste Daroussin /* 36 */ ED_MOVE_TO_END, /* $ */ 675d0ef721eSBaptiste Daroussin /* 37 */ VI_MATCH, /* % */ 676d0ef721eSBaptiste Daroussin /* 38 */ ED_UNASSIGNED, /* & */ 677d0ef721eSBaptiste Daroussin /* 39 */ ED_UNASSIGNED, /* ' */ 678d0ef721eSBaptiste Daroussin /* 40 */ ED_UNASSIGNED, /* ( */ 679d0ef721eSBaptiste Daroussin /* 41 */ ED_UNASSIGNED, /* ) */ 680d0ef721eSBaptiste Daroussin /* 42 */ ED_UNASSIGNED, /* * */ 681d0ef721eSBaptiste Daroussin /* 43 */ ED_NEXT_HISTORY, /* + */ 682d0ef721eSBaptiste Daroussin /* 44 */ VI_REPEAT_PREV_CHAR, /* , */ 683d0ef721eSBaptiste Daroussin /* 45 */ ED_PREV_HISTORY, /* - */ 684d0ef721eSBaptiste Daroussin /* 46 */ VI_REDO, /* . */ 685d0ef721eSBaptiste Daroussin /* 47 */ VI_SEARCH_PREV, /* / */ 686d0ef721eSBaptiste Daroussin /* 48 */ VI_ZERO, /* 0 */ 687d0ef721eSBaptiste Daroussin /* 49 */ ED_ARGUMENT_DIGIT, /* 1 */ 688d0ef721eSBaptiste Daroussin /* 50 */ ED_ARGUMENT_DIGIT, /* 2 */ 689d0ef721eSBaptiste Daroussin /* 51 */ ED_ARGUMENT_DIGIT, /* 3 */ 690d0ef721eSBaptiste Daroussin /* 52 */ ED_ARGUMENT_DIGIT, /* 4 */ 691d0ef721eSBaptiste Daroussin /* 53 */ ED_ARGUMENT_DIGIT, /* 5 */ 692d0ef721eSBaptiste Daroussin /* 54 */ ED_ARGUMENT_DIGIT, /* 6 */ 693d0ef721eSBaptiste Daroussin /* 55 */ ED_ARGUMENT_DIGIT, /* 7 */ 694d0ef721eSBaptiste Daroussin /* 56 */ ED_ARGUMENT_DIGIT, /* 8 */ 695d0ef721eSBaptiste Daroussin /* 57 */ ED_ARGUMENT_DIGIT, /* 9 */ 696d0ef721eSBaptiste Daroussin /* 58 */ ED_COMMAND, /* : */ 697d0ef721eSBaptiste Daroussin /* 59 */ VI_REPEAT_NEXT_CHAR, /* ; */ 698d0ef721eSBaptiste Daroussin /* 60 */ ED_UNASSIGNED, /* < */ 699d0ef721eSBaptiste Daroussin /* 61 */ ED_UNASSIGNED, /* = */ 700d0ef721eSBaptiste Daroussin /* 62 */ ED_UNASSIGNED, /* > */ 701d0ef721eSBaptiste Daroussin /* 63 */ VI_SEARCH_NEXT, /* ? */ 702d0ef721eSBaptiste Daroussin /* 64 */ VI_ALIAS, /* @ */ 703d0ef721eSBaptiste Daroussin /* 65 */ VI_ADD_AT_EOL, /* A */ 704d0ef721eSBaptiste Daroussin /* 66 */ VI_PREV_BIG_WORD, /* B */ 705d0ef721eSBaptiste Daroussin /* 67 */ VI_CHANGE_TO_EOL, /* C */ 706d0ef721eSBaptiste Daroussin /* 68 */ ED_KILL_LINE, /* D */ 707d0ef721eSBaptiste Daroussin /* 69 */ VI_END_BIG_WORD, /* E */ 708d0ef721eSBaptiste Daroussin /* 70 */ VI_PREV_CHAR, /* F */ 709d0ef721eSBaptiste Daroussin /* 71 */ VI_TO_HISTORY_LINE, /* G */ 710d0ef721eSBaptiste Daroussin /* 72 */ ED_UNASSIGNED, /* H */ 711d0ef721eSBaptiste Daroussin /* 73 */ VI_INSERT_AT_BOL, /* I */ 712d0ef721eSBaptiste Daroussin /* 74 */ ED_SEARCH_NEXT_HISTORY, /* J */ 713d0ef721eSBaptiste Daroussin /* 75 */ ED_SEARCH_PREV_HISTORY, /* K */ 714d0ef721eSBaptiste Daroussin /* 76 */ ED_UNASSIGNED, /* L */ 715d0ef721eSBaptiste Daroussin /* 77 */ ED_UNASSIGNED, /* M */ 716d0ef721eSBaptiste Daroussin /* 78 */ VI_REPEAT_SEARCH_PREV, /* N */ 717d0ef721eSBaptiste Daroussin /* 79 */ ED_SEQUENCE_LEAD_IN, /* O */ 718d0ef721eSBaptiste Daroussin /* 80 */ VI_PASTE_PREV, /* P */ 719d0ef721eSBaptiste Daroussin /* 81 */ ED_UNASSIGNED, /* Q */ 720d0ef721eSBaptiste Daroussin /* 82 */ VI_REPLACE_MODE, /* R */ 721d0ef721eSBaptiste Daroussin /* 83 */ VI_SUBSTITUTE_LINE, /* S */ 722d0ef721eSBaptiste Daroussin /* 84 */ VI_TO_PREV_CHAR, /* T */ 723d0ef721eSBaptiste Daroussin /* 85 */ VI_UNDO_LINE, /* U */ 724d0ef721eSBaptiste Daroussin /* 86 */ ED_UNASSIGNED, /* V */ 725d0ef721eSBaptiste Daroussin /* 87 */ VI_NEXT_BIG_WORD, /* W */ 726d0ef721eSBaptiste Daroussin /* 88 */ ED_DELETE_PREV_CHAR, /* X */ 727d0ef721eSBaptiste Daroussin /* 89 */ VI_YANK_END, /* Y */ 728d0ef721eSBaptiste Daroussin /* 90 */ ED_UNASSIGNED, /* Z */ 729d0ef721eSBaptiste Daroussin /* 91 */ ED_SEQUENCE_LEAD_IN, /* [ */ 730d0ef721eSBaptiste Daroussin /* 92 */ ED_UNASSIGNED, /* \ */ 731d0ef721eSBaptiste Daroussin /* 93 */ ED_UNASSIGNED, /* ] */ 732d0ef721eSBaptiste Daroussin /* 94 */ ED_MOVE_TO_BEG, /* ^ */ 733d0ef721eSBaptiste Daroussin /* 95 */ VI_HISTORY_WORD, /* _ */ 734d0ef721eSBaptiste Daroussin /* 96 */ ED_UNASSIGNED, /* ` */ 735d0ef721eSBaptiste Daroussin /* 97 */ VI_ADD, /* a */ 736d0ef721eSBaptiste Daroussin /* 98 */ VI_PREV_WORD, /* b */ 737d0ef721eSBaptiste Daroussin /* 99 */ VI_CHANGE_META, /* c */ 738d0ef721eSBaptiste Daroussin /* 100 */ VI_DELETE_META, /* d */ 739d0ef721eSBaptiste Daroussin /* 101 */ VI_END_WORD, /* e */ 740d0ef721eSBaptiste Daroussin /* 102 */ VI_NEXT_CHAR, /* f */ 741d0ef721eSBaptiste Daroussin /* 103 */ ED_UNASSIGNED, /* g */ 742d0ef721eSBaptiste Daroussin /* 104 */ ED_PREV_CHAR, /* h */ 743d0ef721eSBaptiste Daroussin /* 105 */ VI_INSERT, /* i */ 744d0ef721eSBaptiste Daroussin /* 106 */ ED_NEXT_HISTORY, /* j */ 745d0ef721eSBaptiste Daroussin /* 107 */ ED_PREV_HISTORY, /* k */ 746d0ef721eSBaptiste Daroussin /* 108 */ ED_NEXT_CHAR, /* l */ 747d0ef721eSBaptiste Daroussin /* 109 */ ED_UNASSIGNED, /* m */ 748d0ef721eSBaptiste Daroussin /* 110 */ VI_REPEAT_SEARCH_NEXT, /* n */ 749d0ef721eSBaptiste Daroussin /* 111 */ ED_UNASSIGNED, /* o */ 750d0ef721eSBaptiste Daroussin /* 112 */ VI_PASTE_NEXT, /* p */ 751d0ef721eSBaptiste Daroussin /* 113 */ ED_UNASSIGNED, /* q */ 752d0ef721eSBaptiste Daroussin /* 114 */ VI_REPLACE_CHAR, /* r */ 753d0ef721eSBaptiste Daroussin /* 115 */ VI_SUBSTITUTE_CHAR, /* s */ 754d0ef721eSBaptiste Daroussin /* 116 */ VI_TO_NEXT_CHAR, /* t */ 755d0ef721eSBaptiste Daroussin /* 117 */ VI_UNDO, /* u */ 756d0ef721eSBaptiste Daroussin /* 118 */ VI_HISTEDIT, /* v */ 757d0ef721eSBaptiste Daroussin /* 119 */ VI_NEXT_WORD, /* w */ 758d0ef721eSBaptiste Daroussin /* 120 */ ED_DELETE_NEXT_CHAR, /* x */ 759d0ef721eSBaptiste Daroussin /* 121 */ VI_YANK, /* y */ 760d0ef721eSBaptiste Daroussin /* 122 */ ED_UNASSIGNED, /* z */ 761d0ef721eSBaptiste Daroussin /* 123 */ ED_UNASSIGNED, /* { */ 762d0ef721eSBaptiste Daroussin /* 124 */ VI_TO_COLUMN, /* | */ 763d0ef721eSBaptiste Daroussin /* 125 */ ED_UNASSIGNED, /* } */ 764d0ef721eSBaptiste Daroussin /* 126 */ VI_CHANGE_CASE, /* ~ */ 765d0ef721eSBaptiste Daroussin /* 127 */ ED_DELETE_PREV_CHAR, /* ^? */ 766d0ef721eSBaptiste Daroussin /* 128 */ ED_UNASSIGNED, /* M-^@ */ 767d0ef721eSBaptiste Daroussin /* 129 */ ED_UNASSIGNED, /* M-^A */ 768d0ef721eSBaptiste Daroussin /* 130 */ ED_UNASSIGNED, /* M-^B */ 769d0ef721eSBaptiste Daroussin /* 131 */ ED_UNASSIGNED, /* M-^C */ 770d0ef721eSBaptiste Daroussin /* 132 */ ED_UNASSIGNED, /* M-^D */ 771d0ef721eSBaptiste Daroussin /* 133 */ ED_UNASSIGNED, /* M-^E */ 772d0ef721eSBaptiste Daroussin /* 134 */ ED_UNASSIGNED, /* M-^F */ 773d0ef721eSBaptiste Daroussin /* 135 */ ED_UNASSIGNED, /* M-^G */ 774d0ef721eSBaptiste Daroussin /* 136 */ ED_UNASSIGNED, /* M-^H */ 775d0ef721eSBaptiste Daroussin /* 137 */ ED_UNASSIGNED, /* M-^I */ 776d0ef721eSBaptiste Daroussin /* 138 */ ED_UNASSIGNED, /* M-^J */ 777d0ef721eSBaptiste Daroussin /* 139 */ ED_UNASSIGNED, /* M-^K */ 778d0ef721eSBaptiste Daroussin /* 140 */ ED_UNASSIGNED, /* M-^L */ 779d0ef721eSBaptiste Daroussin /* 141 */ ED_UNASSIGNED, /* M-^M */ 780d0ef721eSBaptiste Daroussin /* 142 */ ED_UNASSIGNED, /* M-^N */ 781d0ef721eSBaptiste Daroussin /* 143 */ ED_UNASSIGNED, /* M-^O */ 782d0ef721eSBaptiste Daroussin /* 144 */ ED_UNASSIGNED, /* M-^P */ 783d0ef721eSBaptiste Daroussin /* 145 */ ED_UNASSIGNED, /* M-^Q */ 784d0ef721eSBaptiste Daroussin /* 146 */ ED_UNASSIGNED, /* M-^R */ 785d0ef721eSBaptiste Daroussin /* 147 */ ED_UNASSIGNED, /* M-^S */ 786d0ef721eSBaptiste Daroussin /* 148 */ ED_UNASSIGNED, /* M-^T */ 787d0ef721eSBaptiste Daroussin /* 149 */ ED_UNASSIGNED, /* M-^U */ 788d0ef721eSBaptiste Daroussin /* 150 */ ED_UNASSIGNED, /* M-^V */ 789d0ef721eSBaptiste Daroussin /* 151 */ ED_UNASSIGNED, /* M-^W */ 790d0ef721eSBaptiste Daroussin /* 152 */ ED_UNASSIGNED, /* M-^X */ 791d0ef721eSBaptiste Daroussin /* 153 */ ED_UNASSIGNED, /* M-^Y */ 792d0ef721eSBaptiste Daroussin /* 154 */ ED_UNASSIGNED, /* M-^Z */ 793d0ef721eSBaptiste Daroussin /* 155 */ ED_UNASSIGNED, /* M-^[ */ 794d0ef721eSBaptiste Daroussin /* 156 */ ED_UNASSIGNED, /* M-^\ */ 795d0ef721eSBaptiste Daroussin /* 157 */ ED_UNASSIGNED, /* M-^] */ 796d0ef721eSBaptiste Daroussin /* 158 */ ED_UNASSIGNED, /* M-^^ */ 797d0ef721eSBaptiste Daroussin /* 159 */ ED_UNASSIGNED, /* M-^_ */ 798d0ef721eSBaptiste Daroussin /* 160 */ ED_UNASSIGNED, /* M-SPACE */ 799d0ef721eSBaptiste Daroussin /* 161 */ ED_UNASSIGNED, /* M-! */ 800d0ef721eSBaptiste Daroussin /* 162 */ ED_UNASSIGNED, /* M-" */ 801d0ef721eSBaptiste Daroussin /* 163 */ ED_UNASSIGNED, /* M-# */ 802d0ef721eSBaptiste Daroussin /* 164 */ ED_UNASSIGNED, /* M-$ */ 803d0ef721eSBaptiste Daroussin /* 165 */ ED_UNASSIGNED, /* M-% */ 804d0ef721eSBaptiste Daroussin /* 166 */ ED_UNASSIGNED, /* M-& */ 805d0ef721eSBaptiste Daroussin /* 167 */ ED_UNASSIGNED, /* M-' */ 806d0ef721eSBaptiste Daroussin /* 168 */ ED_UNASSIGNED, /* M-( */ 807d0ef721eSBaptiste Daroussin /* 169 */ ED_UNASSIGNED, /* M-) */ 808d0ef721eSBaptiste Daroussin /* 170 */ ED_UNASSIGNED, /* M-* */ 809d0ef721eSBaptiste Daroussin /* 171 */ ED_UNASSIGNED, /* M-+ */ 810d0ef721eSBaptiste Daroussin /* 172 */ ED_UNASSIGNED, /* M-, */ 811d0ef721eSBaptiste Daroussin /* 173 */ ED_UNASSIGNED, /* M-- */ 812d0ef721eSBaptiste Daroussin /* 174 */ ED_UNASSIGNED, /* M-. */ 813d0ef721eSBaptiste Daroussin /* 175 */ ED_UNASSIGNED, /* M-/ */ 814d0ef721eSBaptiste Daroussin /* 176 */ ED_UNASSIGNED, /* M-0 */ 815d0ef721eSBaptiste Daroussin /* 177 */ ED_UNASSIGNED, /* M-1 */ 816d0ef721eSBaptiste Daroussin /* 178 */ ED_UNASSIGNED, /* M-2 */ 817d0ef721eSBaptiste Daroussin /* 179 */ ED_UNASSIGNED, /* M-3 */ 818d0ef721eSBaptiste Daroussin /* 180 */ ED_UNASSIGNED, /* M-4 */ 819d0ef721eSBaptiste Daroussin /* 181 */ ED_UNASSIGNED, /* M-5 */ 820d0ef721eSBaptiste Daroussin /* 182 */ ED_UNASSIGNED, /* M-6 */ 821d0ef721eSBaptiste Daroussin /* 183 */ ED_UNASSIGNED, /* M-7 */ 822d0ef721eSBaptiste Daroussin /* 184 */ ED_UNASSIGNED, /* M-8 */ 823d0ef721eSBaptiste Daroussin /* 185 */ ED_UNASSIGNED, /* M-9 */ 824d0ef721eSBaptiste Daroussin /* 186 */ ED_UNASSIGNED, /* M-: */ 825d0ef721eSBaptiste Daroussin /* 187 */ ED_UNASSIGNED, /* M-; */ 826d0ef721eSBaptiste Daroussin /* 188 */ ED_UNASSIGNED, /* M-< */ 827d0ef721eSBaptiste Daroussin /* 189 */ ED_UNASSIGNED, /* M-= */ 828d0ef721eSBaptiste Daroussin /* 190 */ ED_UNASSIGNED, /* M-> */ 829d0ef721eSBaptiste Daroussin /* 191 */ ED_UNASSIGNED, /* M-? */ 830d0ef721eSBaptiste Daroussin /* 192 */ ED_UNASSIGNED, /* M-@ */ 831d0ef721eSBaptiste Daroussin /* 193 */ ED_UNASSIGNED, /* M-A */ 832d0ef721eSBaptiste Daroussin /* 194 */ ED_UNASSIGNED, /* M-B */ 833d0ef721eSBaptiste Daroussin /* 195 */ ED_UNASSIGNED, /* M-C */ 834d0ef721eSBaptiste Daroussin /* 196 */ ED_UNASSIGNED, /* M-D */ 835d0ef721eSBaptiste Daroussin /* 197 */ ED_UNASSIGNED, /* M-E */ 836d0ef721eSBaptiste Daroussin /* 198 */ ED_UNASSIGNED, /* M-F */ 837d0ef721eSBaptiste Daroussin /* 199 */ ED_UNASSIGNED, /* M-G */ 838d0ef721eSBaptiste Daroussin /* 200 */ ED_UNASSIGNED, /* M-H */ 839d0ef721eSBaptiste Daroussin /* 201 */ ED_UNASSIGNED, /* M-I */ 840d0ef721eSBaptiste Daroussin /* 202 */ ED_UNASSIGNED, /* M-J */ 841d0ef721eSBaptiste Daroussin /* 203 */ ED_UNASSIGNED, /* M-K */ 842d0ef721eSBaptiste Daroussin /* 204 */ ED_UNASSIGNED, /* M-L */ 843d0ef721eSBaptiste Daroussin /* 205 */ ED_UNASSIGNED, /* M-M */ 844d0ef721eSBaptiste Daroussin /* 206 */ ED_UNASSIGNED, /* M-N */ 845d0ef721eSBaptiste Daroussin /* 207 */ ED_SEQUENCE_LEAD_IN, /* M-O */ 846d0ef721eSBaptiste Daroussin /* 208 */ ED_UNASSIGNED, /* M-P */ 847d0ef721eSBaptiste Daroussin /* 209 */ ED_UNASSIGNED, /* M-Q */ 848d0ef721eSBaptiste Daroussin /* 210 */ ED_UNASSIGNED, /* M-R */ 849d0ef721eSBaptiste Daroussin /* 211 */ ED_UNASSIGNED, /* M-S */ 850d0ef721eSBaptiste Daroussin /* 212 */ ED_UNASSIGNED, /* M-T */ 851d0ef721eSBaptiste Daroussin /* 213 */ ED_UNASSIGNED, /* M-U */ 852d0ef721eSBaptiste Daroussin /* 214 */ ED_UNASSIGNED, /* M-V */ 853d0ef721eSBaptiste Daroussin /* 215 */ ED_UNASSIGNED, /* M-W */ 854d0ef721eSBaptiste Daroussin /* 216 */ ED_UNASSIGNED, /* M-X */ 855d0ef721eSBaptiste Daroussin /* 217 */ ED_UNASSIGNED, /* M-Y */ 856d0ef721eSBaptiste Daroussin /* 218 */ ED_UNASSIGNED, /* M-Z */ 857d0ef721eSBaptiste Daroussin /* 219 */ ED_SEQUENCE_LEAD_IN, /* M-[ */ 858d0ef721eSBaptiste Daroussin /* 220 */ ED_UNASSIGNED, /* M-\ */ 859d0ef721eSBaptiste Daroussin /* 221 */ ED_UNASSIGNED, /* M-] */ 860d0ef721eSBaptiste Daroussin /* 222 */ ED_UNASSIGNED, /* M-^ */ 861d0ef721eSBaptiste Daroussin /* 223 */ ED_UNASSIGNED, /* M-_ */ 862d0ef721eSBaptiste Daroussin /* 224 */ ED_UNASSIGNED, /* M-` */ 863d0ef721eSBaptiste Daroussin /* 225 */ ED_UNASSIGNED, /* M-a */ 864d0ef721eSBaptiste Daroussin /* 226 */ ED_UNASSIGNED, /* M-b */ 865d0ef721eSBaptiste Daroussin /* 227 */ ED_UNASSIGNED, /* M-c */ 866d0ef721eSBaptiste Daroussin /* 228 */ ED_UNASSIGNED, /* M-d */ 867d0ef721eSBaptiste Daroussin /* 229 */ ED_UNASSIGNED, /* M-e */ 868d0ef721eSBaptiste Daroussin /* 230 */ ED_UNASSIGNED, /* M-f */ 869d0ef721eSBaptiste Daroussin /* 231 */ ED_UNASSIGNED, /* M-g */ 870d0ef721eSBaptiste Daroussin /* 232 */ ED_UNASSIGNED, /* M-h */ 871d0ef721eSBaptiste Daroussin /* 233 */ ED_UNASSIGNED, /* M-i */ 872d0ef721eSBaptiste Daroussin /* 234 */ ED_UNASSIGNED, /* M-j */ 873d0ef721eSBaptiste Daroussin /* 235 */ ED_UNASSIGNED, /* M-k */ 874d0ef721eSBaptiste Daroussin /* 236 */ ED_UNASSIGNED, /* M-l */ 875d0ef721eSBaptiste Daroussin /* 237 */ ED_UNASSIGNED, /* M-m */ 876d0ef721eSBaptiste Daroussin /* 238 */ ED_UNASSIGNED, /* M-n */ 877d0ef721eSBaptiste Daroussin /* 239 */ ED_UNASSIGNED, /* M-o */ 878d0ef721eSBaptiste Daroussin /* 240 */ ED_UNASSIGNED, /* M-p */ 879d0ef721eSBaptiste Daroussin /* 241 */ ED_UNASSIGNED, /* M-q */ 880d0ef721eSBaptiste Daroussin /* 242 */ ED_UNASSIGNED, /* M-r */ 881d0ef721eSBaptiste Daroussin /* 243 */ ED_UNASSIGNED, /* M-s */ 882d0ef721eSBaptiste Daroussin /* 244 */ ED_UNASSIGNED, /* M-t */ 883d0ef721eSBaptiste Daroussin /* 245 */ ED_UNASSIGNED, /* M-u */ 884d0ef721eSBaptiste Daroussin /* 246 */ ED_UNASSIGNED, /* M-v */ 885d0ef721eSBaptiste Daroussin /* 247 */ ED_UNASSIGNED, /* M-w */ 886d0ef721eSBaptiste Daroussin /* 248 */ ED_UNASSIGNED, /* M-x */ 887d0ef721eSBaptiste Daroussin /* 249 */ ED_UNASSIGNED, /* M-y */ 888d0ef721eSBaptiste Daroussin /* 250 */ ED_UNASSIGNED, /* M-z */ 889d0ef721eSBaptiste Daroussin /* 251 */ ED_UNASSIGNED, /* M-{ */ 890d0ef721eSBaptiste Daroussin /* 252 */ ED_UNASSIGNED, /* M-| */ 891d0ef721eSBaptiste Daroussin /* 253 */ ED_UNASSIGNED, /* M-} */ 892d0ef721eSBaptiste Daroussin /* 254 */ ED_UNASSIGNED, /* M-~ */ 893d0ef721eSBaptiste Daroussin /* 255 */ ED_UNASSIGNED /* M-^? */ 894d0ef721eSBaptiste Daroussin }; 895d0ef721eSBaptiste Daroussin 896d0ef721eSBaptiste Daroussin 897d0ef721eSBaptiste Daroussin /* map_init(): 898d0ef721eSBaptiste Daroussin * Initialize and allocate the maps 899d0ef721eSBaptiste Daroussin */ 900d0ef721eSBaptiste Daroussin libedit_private int 901d0ef721eSBaptiste Daroussin map_init(EditLine *el) 902d0ef721eSBaptiste Daroussin { 903d0ef721eSBaptiste Daroussin 904d0ef721eSBaptiste Daroussin /* 905d0ef721eSBaptiste Daroussin * Make sure those are correct before starting. 906d0ef721eSBaptiste Daroussin */ 907d0ef721eSBaptiste Daroussin #ifdef MAP_DEBUG 908d0ef721eSBaptiste Daroussin if (sizeof(el_map_emacs) != N_KEYS * sizeof(el_action_t)) 909f9a159daSBaptiste Daroussin EL_ABORT((el->el_errfile, "Emacs map incorrect\n")); 910d0ef721eSBaptiste Daroussin if (sizeof(el_map_vi_command) != N_KEYS * sizeof(el_action_t)) 911f9a159daSBaptiste Daroussin EL_ABORT((el->el_errfile, "Vi command map incorrect\n")); 912d0ef721eSBaptiste Daroussin if (sizeof(el_map_vi_insert) != N_KEYS * sizeof(el_action_t)) 913f9a159daSBaptiste Daroussin EL_ABORT((el->el_errfile, "Vi insert map incorrect\n")); 914d0ef721eSBaptiste Daroussin #endif 915d0ef721eSBaptiste Daroussin 916d0ef721eSBaptiste Daroussin el->el_map.alt = el_calloc(N_KEYS, sizeof(*el->el_map.alt)); 917d0ef721eSBaptiste Daroussin if (el->el_map.alt == NULL) 918d0ef721eSBaptiste Daroussin return -1; 919d0ef721eSBaptiste Daroussin el->el_map.key = el_calloc(N_KEYS, sizeof(*el->el_map.key)); 920d0ef721eSBaptiste Daroussin if (el->el_map.key == NULL) 921d0ef721eSBaptiste Daroussin return -1; 922d0ef721eSBaptiste Daroussin el->el_map.emacs = el_map_emacs; 923d0ef721eSBaptiste Daroussin el->el_map.vic = el_map_vi_command; 924d0ef721eSBaptiste Daroussin el->el_map.vii = el_map_vi_insert; 925d0ef721eSBaptiste Daroussin el->el_map.help = el_calloc(EL_NUM_FCNS, sizeof(*el->el_map.help)); 926d0ef721eSBaptiste Daroussin if (el->el_map.help == NULL) 927d0ef721eSBaptiste Daroussin return -1; 928d0ef721eSBaptiste Daroussin (void) memcpy(el->el_map.help, el_func_help, 929d0ef721eSBaptiste Daroussin sizeof(*el->el_map.help) * EL_NUM_FCNS); 930d0ef721eSBaptiste Daroussin el->el_map.func = el_calloc(EL_NUM_FCNS, sizeof(*el->el_map.func)); 931d0ef721eSBaptiste Daroussin if (el->el_map.func == NULL) 932d0ef721eSBaptiste Daroussin return -1; 933d0ef721eSBaptiste Daroussin memcpy(el->el_map.func, el_func, sizeof(*el->el_map.func) 934d0ef721eSBaptiste Daroussin * EL_NUM_FCNS); 935d0ef721eSBaptiste Daroussin el->el_map.nfunc = EL_NUM_FCNS; 936d0ef721eSBaptiste Daroussin 937d0ef721eSBaptiste Daroussin #ifdef VIDEFAULT 938d0ef721eSBaptiste Daroussin map_init_vi(el); 939d0ef721eSBaptiste Daroussin #else 940d0ef721eSBaptiste Daroussin map_init_emacs(el); 941d0ef721eSBaptiste Daroussin #endif /* VIDEFAULT */ 942d0ef721eSBaptiste Daroussin return 0; 943d0ef721eSBaptiste Daroussin } 944d0ef721eSBaptiste Daroussin 945d0ef721eSBaptiste Daroussin 946d0ef721eSBaptiste Daroussin /* map_end(): 947d0ef721eSBaptiste Daroussin * Free the space taken by the editor maps 948d0ef721eSBaptiste Daroussin */ 949d0ef721eSBaptiste Daroussin libedit_private void 950d0ef721eSBaptiste Daroussin map_end(EditLine *el) 951d0ef721eSBaptiste Daroussin { 952d0ef721eSBaptiste Daroussin 953d0ef721eSBaptiste Daroussin el_free(el->el_map.alt); 954d0ef721eSBaptiste Daroussin el->el_map.alt = NULL; 955d0ef721eSBaptiste Daroussin el_free(el->el_map.key); 956d0ef721eSBaptiste Daroussin el->el_map.key = NULL; 957d0ef721eSBaptiste Daroussin el->el_map.emacs = NULL; 958d0ef721eSBaptiste Daroussin el->el_map.vic = NULL; 959d0ef721eSBaptiste Daroussin el->el_map.vii = NULL; 960d0ef721eSBaptiste Daroussin el_free(el->el_map.help); 961d0ef721eSBaptiste Daroussin el->el_map.help = NULL; 962d0ef721eSBaptiste Daroussin el_free(el->el_map.func); 963d0ef721eSBaptiste Daroussin el->el_map.func = NULL; 964d0ef721eSBaptiste Daroussin } 965d0ef721eSBaptiste Daroussin 966d0ef721eSBaptiste Daroussin 967d0ef721eSBaptiste Daroussin /* map_init_nls(): 968d0ef721eSBaptiste Daroussin * Find all the printable keys and bind them to self insert 969d0ef721eSBaptiste Daroussin */ 970d0ef721eSBaptiste Daroussin static void 971d0ef721eSBaptiste Daroussin map_init_nls(EditLine *el) 972d0ef721eSBaptiste Daroussin { 973d0ef721eSBaptiste Daroussin int i; 974d0ef721eSBaptiste Daroussin 975d0ef721eSBaptiste Daroussin el_action_t *map = el->el_map.key; 976d0ef721eSBaptiste Daroussin 977d0ef721eSBaptiste Daroussin for (i = 0200; i <= 0377; i++) 978d0ef721eSBaptiste Daroussin if (iswprint(i)) 979d0ef721eSBaptiste Daroussin map[i] = ED_INSERT; 980d0ef721eSBaptiste Daroussin } 981d0ef721eSBaptiste Daroussin 982d0ef721eSBaptiste Daroussin 983d0ef721eSBaptiste Daroussin /* map_init_meta(): 984d0ef721eSBaptiste Daroussin * Bind all the meta keys to the appropriate ESC-<key> sequence 985d0ef721eSBaptiste Daroussin */ 986d0ef721eSBaptiste Daroussin static void 987d0ef721eSBaptiste Daroussin map_init_meta(EditLine *el) 988d0ef721eSBaptiste Daroussin { 989d0ef721eSBaptiste Daroussin wchar_t buf[3]; 990d0ef721eSBaptiste Daroussin int i; 991d0ef721eSBaptiste Daroussin el_action_t *map = el->el_map.key; 992d0ef721eSBaptiste Daroussin el_action_t *alt = el->el_map.alt; 993d0ef721eSBaptiste Daroussin 994d0ef721eSBaptiste Daroussin for (i = 0; i <= 0377 && map[i] != EM_META_NEXT; i++) 995d0ef721eSBaptiste Daroussin continue; 996d0ef721eSBaptiste Daroussin 997d0ef721eSBaptiste Daroussin if (i > 0377) { 998d0ef721eSBaptiste Daroussin for (i = 0; i <= 0377 && alt[i] != EM_META_NEXT; i++) 999d0ef721eSBaptiste Daroussin continue; 1000d0ef721eSBaptiste Daroussin if (i > 0377) { 1001d0ef721eSBaptiste Daroussin i = 033; 1002d0ef721eSBaptiste Daroussin if (el->el_map.type == MAP_VI) 1003d0ef721eSBaptiste Daroussin map = alt; 1004d0ef721eSBaptiste Daroussin } else 1005d0ef721eSBaptiste Daroussin map = alt; 1006d0ef721eSBaptiste Daroussin } 1007d0ef721eSBaptiste Daroussin buf[0] = (wchar_t)i; 1008d0ef721eSBaptiste Daroussin buf[2] = 0; 1009d0ef721eSBaptiste Daroussin for (i = 0200; i <= 0377; i++) 1010d0ef721eSBaptiste Daroussin switch (map[i]) { 1011d0ef721eSBaptiste Daroussin case ED_INSERT: 1012d0ef721eSBaptiste Daroussin case ED_UNASSIGNED: 1013d0ef721eSBaptiste Daroussin case ED_SEQUENCE_LEAD_IN: 1014d0ef721eSBaptiste Daroussin break; 1015d0ef721eSBaptiste Daroussin default: 1016d0ef721eSBaptiste Daroussin buf[1] = i & 0177; 1017d0ef721eSBaptiste Daroussin keymacro_add(el, buf, keymacro_map_cmd(el, (int) map[i]), XK_CMD); 1018d0ef721eSBaptiste Daroussin break; 1019d0ef721eSBaptiste Daroussin } 1020d0ef721eSBaptiste Daroussin map[(int) buf[0]] = ED_SEQUENCE_LEAD_IN; 1021d0ef721eSBaptiste Daroussin } 1022d0ef721eSBaptiste Daroussin 1023d0ef721eSBaptiste Daroussin 1024d0ef721eSBaptiste Daroussin /* map_init_vi(): 1025d0ef721eSBaptiste Daroussin * Initialize the vi bindings 1026d0ef721eSBaptiste Daroussin */ 1027d0ef721eSBaptiste Daroussin libedit_private void 1028d0ef721eSBaptiste Daroussin map_init_vi(EditLine *el) 1029d0ef721eSBaptiste Daroussin { 1030d0ef721eSBaptiste Daroussin int i; 1031d0ef721eSBaptiste Daroussin el_action_t *key = el->el_map.key; 1032d0ef721eSBaptiste Daroussin el_action_t *alt = el->el_map.alt; 1033d0ef721eSBaptiste Daroussin const el_action_t *vii = el->el_map.vii; 1034d0ef721eSBaptiste Daroussin const el_action_t *vic = el->el_map.vic; 1035d0ef721eSBaptiste Daroussin 1036d0ef721eSBaptiste Daroussin el->el_map.type = MAP_VI; 1037d0ef721eSBaptiste Daroussin el->el_map.current = el->el_map.key; 1038d0ef721eSBaptiste Daroussin 1039d0ef721eSBaptiste Daroussin keymacro_reset(el); 1040d0ef721eSBaptiste Daroussin 1041d0ef721eSBaptiste Daroussin for (i = 0; i < N_KEYS; i++) { 1042d0ef721eSBaptiste Daroussin key[i] = vii[i]; 1043d0ef721eSBaptiste Daroussin alt[i] = vic[i]; 1044d0ef721eSBaptiste Daroussin } 1045d0ef721eSBaptiste Daroussin 1046d0ef721eSBaptiste Daroussin map_init_meta(el); 1047d0ef721eSBaptiste Daroussin map_init_nls(el); 1048d0ef721eSBaptiste Daroussin 1049d0ef721eSBaptiste Daroussin tty_bind_char(el, 1); 1050d0ef721eSBaptiste Daroussin terminal_bind_arrow(el); 1051d0ef721eSBaptiste Daroussin } 1052d0ef721eSBaptiste Daroussin 1053d0ef721eSBaptiste Daroussin 1054d0ef721eSBaptiste Daroussin /* map_init_emacs(): 1055d0ef721eSBaptiste Daroussin * Initialize the emacs bindings 1056d0ef721eSBaptiste Daroussin */ 1057d0ef721eSBaptiste Daroussin libedit_private void 1058d0ef721eSBaptiste Daroussin map_init_emacs(EditLine *el) 1059d0ef721eSBaptiste Daroussin { 1060d0ef721eSBaptiste Daroussin int i; 1061d0ef721eSBaptiste Daroussin wchar_t buf[3]; 1062d0ef721eSBaptiste Daroussin el_action_t *key = el->el_map.key; 1063d0ef721eSBaptiste Daroussin el_action_t *alt = el->el_map.alt; 1064d0ef721eSBaptiste Daroussin const el_action_t *emacs = el->el_map.emacs; 1065d0ef721eSBaptiste Daroussin 1066d0ef721eSBaptiste Daroussin el->el_map.type = MAP_EMACS; 1067d0ef721eSBaptiste Daroussin el->el_map.current = el->el_map.key; 1068d0ef721eSBaptiste Daroussin keymacro_reset(el); 1069d0ef721eSBaptiste Daroussin 1070d0ef721eSBaptiste Daroussin for (i = 0; i < N_KEYS; i++) { 1071d0ef721eSBaptiste Daroussin key[i] = emacs[i]; 1072d0ef721eSBaptiste Daroussin alt[i] = ED_UNASSIGNED; 1073d0ef721eSBaptiste Daroussin } 1074d0ef721eSBaptiste Daroussin 1075d0ef721eSBaptiste Daroussin map_init_meta(el); 1076d0ef721eSBaptiste Daroussin map_init_nls(el); 1077d0ef721eSBaptiste Daroussin 1078d0ef721eSBaptiste Daroussin buf[0] = CONTROL('X'); 1079d0ef721eSBaptiste Daroussin buf[1] = CONTROL('X'); 1080d0ef721eSBaptiste Daroussin buf[2] = 0; 1081d0ef721eSBaptiste Daroussin keymacro_add(el, buf, keymacro_map_cmd(el, EM_EXCHANGE_MARK), XK_CMD); 1082d0ef721eSBaptiste Daroussin 1083d0ef721eSBaptiste Daroussin tty_bind_char(el, 1); 1084d0ef721eSBaptiste Daroussin terminal_bind_arrow(el); 1085d0ef721eSBaptiste Daroussin } 1086d0ef721eSBaptiste Daroussin 1087d0ef721eSBaptiste Daroussin 1088d0ef721eSBaptiste Daroussin /* map_set_editor(): 1089d0ef721eSBaptiste Daroussin * Set the editor 1090d0ef721eSBaptiste Daroussin */ 1091d0ef721eSBaptiste Daroussin libedit_private int 1092d0ef721eSBaptiste Daroussin map_set_editor(EditLine *el, wchar_t *editor) 1093d0ef721eSBaptiste Daroussin { 1094d0ef721eSBaptiste Daroussin 1095d0ef721eSBaptiste Daroussin if (wcscmp(editor, L"emacs") == 0) { 1096d0ef721eSBaptiste Daroussin map_init_emacs(el); 1097d0ef721eSBaptiste Daroussin return 0; 1098d0ef721eSBaptiste Daroussin } 1099d0ef721eSBaptiste Daroussin if (wcscmp(editor, L"vi") == 0) { 1100d0ef721eSBaptiste Daroussin map_init_vi(el); 1101d0ef721eSBaptiste Daroussin return 0; 1102d0ef721eSBaptiste Daroussin } 1103d0ef721eSBaptiste Daroussin return -1; 1104d0ef721eSBaptiste Daroussin } 1105d0ef721eSBaptiste Daroussin 1106d0ef721eSBaptiste Daroussin 1107d0ef721eSBaptiste Daroussin /* map_get_editor(): 1108d0ef721eSBaptiste Daroussin * Retrieve the editor 1109d0ef721eSBaptiste Daroussin */ 1110d0ef721eSBaptiste Daroussin libedit_private int 1111d0ef721eSBaptiste Daroussin map_get_editor(EditLine *el, const wchar_t **editor) 1112d0ef721eSBaptiste Daroussin { 1113d0ef721eSBaptiste Daroussin 1114d0ef721eSBaptiste Daroussin if (editor == NULL) 1115d0ef721eSBaptiste Daroussin return -1; 1116d0ef721eSBaptiste Daroussin switch (el->el_map.type) { 1117d0ef721eSBaptiste Daroussin case MAP_EMACS: 1118d0ef721eSBaptiste Daroussin *editor = L"emacs"; 1119d0ef721eSBaptiste Daroussin return 0; 1120d0ef721eSBaptiste Daroussin case MAP_VI: 1121d0ef721eSBaptiste Daroussin *editor = L"vi"; 1122d0ef721eSBaptiste Daroussin return 0; 1123d0ef721eSBaptiste Daroussin } 1124d0ef721eSBaptiste Daroussin return -1; 1125d0ef721eSBaptiste Daroussin } 1126d0ef721eSBaptiste Daroussin 1127d0ef721eSBaptiste Daroussin 1128d0ef721eSBaptiste Daroussin /* map_print_key(): 1129d0ef721eSBaptiste Daroussin * Print the function description for 1 key 1130d0ef721eSBaptiste Daroussin */ 1131d0ef721eSBaptiste Daroussin static void 1132d0ef721eSBaptiste Daroussin map_print_key(EditLine *el, el_action_t *map, const wchar_t *in) 1133d0ef721eSBaptiste Daroussin { 1134d0ef721eSBaptiste Daroussin char outbuf[EL_BUFSIZ]; 1135d0ef721eSBaptiste Daroussin el_bindings_t *bp, *ep; 1136d0ef721eSBaptiste Daroussin 1137d0ef721eSBaptiste Daroussin if (in[0] == '\0' || in[1] == '\0') { 1138d0ef721eSBaptiste Daroussin (void) keymacro__decode_str(in, outbuf, sizeof(outbuf), ""); 1139d0ef721eSBaptiste Daroussin ep = &el->el_map.help[el->el_map.nfunc]; 1140d0ef721eSBaptiste Daroussin for (bp = el->el_map.help; bp < ep; bp++) 1141d0ef721eSBaptiste Daroussin if (bp->func == map[(unsigned char) *in]) { 1142d0ef721eSBaptiste Daroussin (void) fprintf(el->el_outfile, 1143d0ef721eSBaptiste Daroussin "%s\t->\t%ls\n", outbuf, bp->name); 1144d0ef721eSBaptiste Daroussin return; 1145d0ef721eSBaptiste Daroussin } 1146d0ef721eSBaptiste Daroussin } else 1147d0ef721eSBaptiste Daroussin keymacro_print(el, in); 1148d0ef721eSBaptiste Daroussin } 1149d0ef721eSBaptiste Daroussin 1150d0ef721eSBaptiste Daroussin 1151d0ef721eSBaptiste Daroussin /* map_print_some_keys(): 1152d0ef721eSBaptiste Daroussin * Print keys from first to last 1153d0ef721eSBaptiste Daroussin */ 1154d0ef721eSBaptiste Daroussin static void 1155d0ef721eSBaptiste Daroussin map_print_some_keys(EditLine *el, el_action_t *map, wint_t first, wint_t last) 1156d0ef721eSBaptiste Daroussin { 1157d0ef721eSBaptiste Daroussin el_bindings_t *bp, *ep; 1158d0ef721eSBaptiste Daroussin wchar_t firstbuf[2], lastbuf[2]; 1159d0ef721eSBaptiste Daroussin char unparsbuf[EL_BUFSIZ], extrabuf[EL_BUFSIZ]; 1160d0ef721eSBaptiste Daroussin 1161d0ef721eSBaptiste Daroussin firstbuf[0] = first; 1162d0ef721eSBaptiste Daroussin firstbuf[1] = 0; 1163d0ef721eSBaptiste Daroussin lastbuf[0] = last; 1164d0ef721eSBaptiste Daroussin lastbuf[1] = 0; 1165d0ef721eSBaptiste Daroussin if (map[first] == ED_UNASSIGNED) { 1166d0ef721eSBaptiste Daroussin if (first == last) { 1167d0ef721eSBaptiste Daroussin (void) keymacro__decode_str(firstbuf, unparsbuf, 1168d0ef721eSBaptiste Daroussin sizeof(unparsbuf), STRQQ); 1169d0ef721eSBaptiste Daroussin (void) fprintf(el->el_outfile, 1170d0ef721eSBaptiste Daroussin "%-15s-> is undefined\n", unparsbuf); 1171d0ef721eSBaptiste Daroussin } 1172d0ef721eSBaptiste Daroussin return; 1173d0ef721eSBaptiste Daroussin } 1174d0ef721eSBaptiste Daroussin ep = &el->el_map.help[el->el_map.nfunc]; 1175d0ef721eSBaptiste Daroussin for (bp = el->el_map.help; bp < ep; bp++) { 1176d0ef721eSBaptiste Daroussin if (bp->func == map[first]) { 1177d0ef721eSBaptiste Daroussin if (first == last) { 1178d0ef721eSBaptiste Daroussin (void) keymacro__decode_str(firstbuf, unparsbuf, 1179d0ef721eSBaptiste Daroussin sizeof(unparsbuf), STRQQ); 1180d0ef721eSBaptiste Daroussin (void) fprintf(el->el_outfile, "%-15s-> %ls\n", 1181d0ef721eSBaptiste Daroussin unparsbuf, bp->name); 1182d0ef721eSBaptiste Daroussin } else { 1183d0ef721eSBaptiste Daroussin (void) keymacro__decode_str(firstbuf, unparsbuf, 1184d0ef721eSBaptiste Daroussin sizeof(unparsbuf), STRQQ); 1185d0ef721eSBaptiste Daroussin (void) keymacro__decode_str(lastbuf, extrabuf, 1186d0ef721eSBaptiste Daroussin sizeof(extrabuf), STRQQ); 1187d0ef721eSBaptiste Daroussin (void) fprintf(el->el_outfile, 1188d0ef721eSBaptiste Daroussin "%-4s to %-7s-> %ls\n", 1189d0ef721eSBaptiste Daroussin unparsbuf, extrabuf, bp->name); 1190d0ef721eSBaptiste Daroussin } 1191d0ef721eSBaptiste Daroussin return; 1192d0ef721eSBaptiste Daroussin } 1193d0ef721eSBaptiste Daroussin } 1194d0ef721eSBaptiste Daroussin #ifdef MAP_DEBUG 1195d0ef721eSBaptiste Daroussin if (map == el->el_map.key) { 1196d0ef721eSBaptiste Daroussin (void) keymacro__decode_str(firstbuf, unparsbuf, 1197d0ef721eSBaptiste Daroussin sizeof(unparsbuf), STRQQ); 1198d0ef721eSBaptiste Daroussin (void) fprintf(el->el_outfile, 1199d0ef721eSBaptiste Daroussin "BUG!!! %s isn't bound to anything.\n", unparsbuf); 1200d0ef721eSBaptiste Daroussin (void) fprintf(el->el_outfile, "el->el_map.key[%d] == %d\n", 1201d0ef721eSBaptiste Daroussin first, el->el_map.key[first]); 1202d0ef721eSBaptiste Daroussin } else { 1203d0ef721eSBaptiste Daroussin (void) keymacro__decode_str(firstbuf, unparsbuf, 1204d0ef721eSBaptiste Daroussin sizeof(unparsbuf), STRQQ); 1205d0ef721eSBaptiste Daroussin (void) fprintf(el->el_outfile, 1206d0ef721eSBaptiste Daroussin "BUG!!! %s isn't bound to anything.\n", unparsbuf); 1207d0ef721eSBaptiste Daroussin (void) fprintf(el->el_outfile, "el->el_map.alt[%d] == %d\n", 1208d0ef721eSBaptiste Daroussin first, el->el_map.alt[first]); 1209d0ef721eSBaptiste Daroussin } 1210d0ef721eSBaptiste Daroussin #endif 1211d0ef721eSBaptiste Daroussin EL_ABORT((el->el_errfile, "Error printing keys\n")); 1212d0ef721eSBaptiste Daroussin } 1213d0ef721eSBaptiste Daroussin 1214d0ef721eSBaptiste Daroussin 1215d0ef721eSBaptiste Daroussin /* map_print_all_keys(): 1216d0ef721eSBaptiste Daroussin * Print the function description for all keys. 1217d0ef721eSBaptiste Daroussin */ 1218d0ef721eSBaptiste Daroussin static void 1219d0ef721eSBaptiste Daroussin map_print_all_keys(EditLine *el) 1220d0ef721eSBaptiste Daroussin { 1221d0ef721eSBaptiste Daroussin int prev, i; 1222d0ef721eSBaptiste Daroussin 1223d0ef721eSBaptiste Daroussin (void) fprintf(el->el_outfile, "Standard key bindings\n"); 1224d0ef721eSBaptiste Daroussin prev = 0; 1225d0ef721eSBaptiste Daroussin for (i = 0; i < N_KEYS; i++) { 1226d0ef721eSBaptiste Daroussin if (el->el_map.key[prev] == el->el_map.key[i]) 1227d0ef721eSBaptiste Daroussin continue; 1228d0ef721eSBaptiste Daroussin map_print_some_keys(el, el->el_map.key, prev, i - 1); 1229d0ef721eSBaptiste Daroussin prev = i; 1230d0ef721eSBaptiste Daroussin } 1231d0ef721eSBaptiste Daroussin map_print_some_keys(el, el->el_map.key, prev, i - 1); 1232d0ef721eSBaptiste Daroussin 1233d0ef721eSBaptiste Daroussin (void) fprintf(el->el_outfile, "Alternative key bindings\n"); 1234d0ef721eSBaptiste Daroussin prev = 0; 1235d0ef721eSBaptiste Daroussin for (i = 0; i < N_KEYS; i++) { 1236d0ef721eSBaptiste Daroussin if (el->el_map.alt[prev] == el->el_map.alt[i]) 1237d0ef721eSBaptiste Daroussin continue; 1238d0ef721eSBaptiste Daroussin map_print_some_keys(el, el->el_map.alt, prev, i - 1); 1239d0ef721eSBaptiste Daroussin prev = i; 1240d0ef721eSBaptiste Daroussin } 1241d0ef721eSBaptiste Daroussin map_print_some_keys(el, el->el_map.alt, prev, i - 1); 1242d0ef721eSBaptiste Daroussin 1243d0ef721eSBaptiste Daroussin (void) fprintf(el->el_outfile, "Multi-character bindings\n"); 1244d0ef721eSBaptiste Daroussin keymacro_print(el, L""); 1245d0ef721eSBaptiste Daroussin (void) fprintf(el->el_outfile, "Arrow key bindings\n"); 1246d0ef721eSBaptiste Daroussin terminal_print_arrow(el, L""); 1247d0ef721eSBaptiste Daroussin } 1248d0ef721eSBaptiste Daroussin 1249d0ef721eSBaptiste Daroussin 1250d0ef721eSBaptiste Daroussin /* map_bind(): 1251d0ef721eSBaptiste Daroussin * Add/remove/change bindings 1252d0ef721eSBaptiste Daroussin */ 1253d0ef721eSBaptiste Daroussin libedit_private int 1254d0ef721eSBaptiste Daroussin map_bind(EditLine *el, int argc, const wchar_t **argv) 1255d0ef721eSBaptiste Daroussin { 1256d0ef721eSBaptiste Daroussin el_action_t *map; 1257d0ef721eSBaptiste Daroussin int ntype, rem; 1258d0ef721eSBaptiste Daroussin const wchar_t *p; 1259d0ef721eSBaptiste Daroussin wchar_t inbuf[EL_BUFSIZ]; 1260d0ef721eSBaptiste Daroussin wchar_t outbuf[EL_BUFSIZ]; 1261d0ef721eSBaptiste Daroussin const wchar_t *in = NULL; 1262d0ef721eSBaptiste Daroussin wchar_t *out; 1263d0ef721eSBaptiste Daroussin el_bindings_t *bp, *ep; 1264d0ef721eSBaptiste Daroussin int cmd; 1265d0ef721eSBaptiste Daroussin int key; 1266d0ef721eSBaptiste Daroussin 1267d0ef721eSBaptiste Daroussin if (argv == NULL) 1268d0ef721eSBaptiste Daroussin return -1; 1269d0ef721eSBaptiste Daroussin 1270d0ef721eSBaptiste Daroussin map = el->el_map.key; 1271d0ef721eSBaptiste Daroussin ntype = XK_CMD; 1272d0ef721eSBaptiste Daroussin key = rem = 0; 1273d0ef721eSBaptiste Daroussin for (argc = 1; (p = argv[argc]) != NULL; argc++) 1274d0ef721eSBaptiste Daroussin if (p[0] == '-') 1275d0ef721eSBaptiste Daroussin switch (p[1]) { 1276d0ef721eSBaptiste Daroussin case 'a': 1277d0ef721eSBaptiste Daroussin map = el->el_map.alt; 1278d0ef721eSBaptiste Daroussin break; 1279d0ef721eSBaptiste Daroussin 1280d0ef721eSBaptiste Daroussin case 's': 1281d0ef721eSBaptiste Daroussin ntype = XK_STR; 1282d0ef721eSBaptiste Daroussin break; 1283d0ef721eSBaptiste Daroussin case 'k': 1284d0ef721eSBaptiste Daroussin key = 1; 1285d0ef721eSBaptiste Daroussin break; 1286d0ef721eSBaptiste Daroussin 1287d0ef721eSBaptiste Daroussin case 'r': 1288d0ef721eSBaptiste Daroussin rem = 1; 1289d0ef721eSBaptiste Daroussin break; 1290d0ef721eSBaptiste Daroussin 1291d0ef721eSBaptiste Daroussin case 'v': 1292d0ef721eSBaptiste Daroussin map_init_vi(el); 1293d0ef721eSBaptiste Daroussin return 0; 1294d0ef721eSBaptiste Daroussin 1295d0ef721eSBaptiste Daroussin case 'e': 1296d0ef721eSBaptiste Daroussin map_init_emacs(el); 1297d0ef721eSBaptiste Daroussin return 0; 1298d0ef721eSBaptiste Daroussin 1299d0ef721eSBaptiste Daroussin case 'l': 1300d0ef721eSBaptiste Daroussin ep = &el->el_map.help[el->el_map.nfunc]; 1301d0ef721eSBaptiste Daroussin for (bp = el->el_map.help; bp < ep; bp++) 1302d0ef721eSBaptiste Daroussin (void) fprintf(el->el_outfile, 1303d0ef721eSBaptiste Daroussin "%ls\n\t%ls\n", 1304d0ef721eSBaptiste Daroussin bp->name, bp->description); 1305d0ef721eSBaptiste Daroussin return 0; 1306d0ef721eSBaptiste Daroussin default: 1307d0ef721eSBaptiste Daroussin (void) fprintf(el->el_errfile, 1308d0ef721eSBaptiste Daroussin "%ls: Invalid switch `%lc'.\n", 1309d0ef721eSBaptiste Daroussin argv[0], (wint_t)p[1]); 1310d0ef721eSBaptiste Daroussin } 1311d0ef721eSBaptiste Daroussin else 1312d0ef721eSBaptiste Daroussin break; 1313d0ef721eSBaptiste Daroussin 1314d0ef721eSBaptiste Daroussin if (argv[argc] == NULL) { 1315d0ef721eSBaptiste Daroussin map_print_all_keys(el); 1316d0ef721eSBaptiste Daroussin return 0; 1317d0ef721eSBaptiste Daroussin } 1318d0ef721eSBaptiste Daroussin if (key) 1319d0ef721eSBaptiste Daroussin in = argv[argc++]; 1320d0ef721eSBaptiste Daroussin else if ((in = parse__string(inbuf, argv[argc++])) == NULL) { 1321d0ef721eSBaptiste Daroussin (void) fprintf(el->el_errfile, 1322d0ef721eSBaptiste Daroussin "%ls: Invalid \\ or ^ in instring.\n", 1323d0ef721eSBaptiste Daroussin argv[0]); 1324d0ef721eSBaptiste Daroussin return -1; 1325d0ef721eSBaptiste Daroussin } 1326d0ef721eSBaptiste Daroussin if (rem) { 1327d0ef721eSBaptiste Daroussin if (key) { 1328d0ef721eSBaptiste Daroussin (void) terminal_clear_arrow(el, in); 1329d0ef721eSBaptiste Daroussin return -1; 1330d0ef721eSBaptiste Daroussin } 1331d0ef721eSBaptiste Daroussin if (in[1]) 1332d0ef721eSBaptiste Daroussin (void) keymacro_delete(el, in); 1333d0ef721eSBaptiste Daroussin else if (map[(unsigned char) *in] == ED_SEQUENCE_LEAD_IN) 1334d0ef721eSBaptiste Daroussin (void) keymacro_delete(el, in); 1335d0ef721eSBaptiste Daroussin else 1336d0ef721eSBaptiste Daroussin map[(unsigned char) *in] = ED_UNASSIGNED; 1337d0ef721eSBaptiste Daroussin return 0; 1338d0ef721eSBaptiste Daroussin } 1339d0ef721eSBaptiste Daroussin if (argv[argc] == NULL) { 1340d0ef721eSBaptiste Daroussin if (key) 1341d0ef721eSBaptiste Daroussin terminal_print_arrow(el, in); 1342d0ef721eSBaptiste Daroussin else 1343d0ef721eSBaptiste Daroussin map_print_key(el, map, in); 1344d0ef721eSBaptiste Daroussin return 0; 1345d0ef721eSBaptiste Daroussin } 1346d0ef721eSBaptiste Daroussin #ifdef notyet 1347d0ef721eSBaptiste Daroussin if (argv[argc + 1] != NULL) { 1348d0ef721eSBaptiste Daroussin bindkeymacro_usage(); 1349d0ef721eSBaptiste Daroussin return -1; 1350d0ef721eSBaptiste Daroussin } 1351d0ef721eSBaptiste Daroussin #endif 1352d0ef721eSBaptiste Daroussin 1353d0ef721eSBaptiste Daroussin switch (ntype) { 1354d0ef721eSBaptiste Daroussin case XK_STR: 1355d0ef721eSBaptiste Daroussin if ((out = parse__string(outbuf, argv[argc])) == NULL) { 1356d0ef721eSBaptiste Daroussin (void) fprintf(el->el_errfile, 1357d0ef721eSBaptiste Daroussin "%ls: Invalid \\ or ^ in outstring.\n", argv[0]); 1358d0ef721eSBaptiste Daroussin return -1; 1359d0ef721eSBaptiste Daroussin } 1360d0ef721eSBaptiste Daroussin if (key) 1361d0ef721eSBaptiste Daroussin terminal_set_arrow(el, in, keymacro_map_str(el, out), ntype); 1362d0ef721eSBaptiste Daroussin else 1363d0ef721eSBaptiste Daroussin keymacro_add(el, in, keymacro_map_str(el, out), ntype); 1364d0ef721eSBaptiste Daroussin map[(unsigned char) *in] = ED_SEQUENCE_LEAD_IN; 1365d0ef721eSBaptiste Daroussin break; 1366d0ef721eSBaptiste Daroussin 1367d0ef721eSBaptiste Daroussin case XK_CMD: 1368d0ef721eSBaptiste Daroussin if ((cmd = parse_cmd(el, argv[argc])) == -1) { 1369d0ef721eSBaptiste Daroussin (void) fprintf(el->el_errfile, 1370d0ef721eSBaptiste Daroussin "%ls: Invalid command `%ls'.\n", 1371d0ef721eSBaptiste Daroussin argv[0], argv[argc]); 1372d0ef721eSBaptiste Daroussin return -1; 1373d0ef721eSBaptiste Daroussin } 1374d0ef721eSBaptiste Daroussin if (key) 1375d0ef721eSBaptiste Daroussin terminal_set_arrow(el, in, keymacro_map_cmd(el, cmd), ntype); 1376d0ef721eSBaptiste Daroussin else { 1377d0ef721eSBaptiste Daroussin if (in[1]) { 1378d0ef721eSBaptiste Daroussin keymacro_add(el, in, keymacro_map_cmd(el, cmd), ntype); 1379d0ef721eSBaptiste Daroussin map[(unsigned char) *in] = ED_SEQUENCE_LEAD_IN; 1380d0ef721eSBaptiste Daroussin } else { 1381d0ef721eSBaptiste Daroussin keymacro_clear(el, map, in); 1382d0ef721eSBaptiste Daroussin map[(unsigned char) *in] = (el_action_t)cmd; 1383d0ef721eSBaptiste Daroussin } 1384d0ef721eSBaptiste Daroussin } 1385d0ef721eSBaptiste Daroussin break; 1386d0ef721eSBaptiste Daroussin 1387d0ef721eSBaptiste Daroussin /* coverity[dead_error_begin] */ 1388d0ef721eSBaptiste Daroussin default: 1389d0ef721eSBaptiste Daroussin EL_ABORT((el->el_errfile, "Bad XK_ type %d\n", ntype)); 1390d0ef721eSBaptiste Daroussin break; 1391d0ef721eSBaptiste Daroussin } 1392d0ef721eSBaptiste Daroussin return 0; 1393d0ef721eSBaptiste Daroussin } 1394d0ef721eSBaptiste Daroussin 1395d0ef721eSBaptiste Daroussin 1396d0ef721eSBaptiste Daroussin /* map_addfunc(): 1397d0ef721eSBaptiste Daroussin * add a user defined function 1398d0ef721eSBaptiste Daroussin */ 1399d0ef721eSBaptiste Daroussin libedit_private int 1400d0ef721eSBaptiste Daroussin map_addfunc(EditLine *el, const wchar_t *name, const wchar_t *help, 1401d0ef721eSBaptiste Daroussin el_func_t func) 1402d0ef721eSBaptiste Daroussin { 1403d0ef721eSBaptiste Daroussin void *p; 1404d0ef721eSBaptiste Daroussin size_t nf = el->el_map.nfunc + 1; 1405d0ef721eSBaptiste Daroussin 1406d0ef721eSBaptiste Daroussin if (name == NULL || help == NULL || func == NULL) 1407d0ef721eSBaptiste Daroussin return -1; 1408d0ef721eSBaptiste Daroussin 1409d0ef721eSBaptiste Daroussin if ((p = el_realloc(el->el_map.func, nf * 1410d0ef721eSBaptiste Daroussin sizeof(*el->el_map.func))) == NULL) 1411d0ef721eSBaptiste Daroussin return -1; 1412d0ef721eSBaptiste Daroussin el->el_map.func = p; 1413d0ef721eSBaptiste Daroussin if ((p = el_realloc(el->el_map.help, nf * sizeof(*el->el_map.help))) 1414d0ef721eSBaptiste Daroussin == NULL) 1415d0ef721eSBaptiste Daroussin return -1; 1416d0ef721eSBaptiste Daroussin el->el_map.help = p; 1417d0ef721eSBaptiste Daroussin 1418d0ef721eSBaptiste Daroussin nf = (size_t)el->el_map.nfunc; 1419d0ef721eSBaptiste Daroussin el->el_map.func[nf] = func; 1420d0ef721eSBaptiste Daroussin 1421d0ef721eSBaptiste Daroussin el->el_map.help[nf].name = name; 1422d0ef721eSBaptiste Daroussin el->el_map.help[nf].func = (int)nf; 1423d0ef721eSBaptiste Daroussin el->el_map.help[nf].description = help; 1424d0ef721eSBaptiste Daroussin el->el_map.nfunc++; 1425d0ef721eSBaptiste Daroussin 1426d0ef721eSBaptiste Daroussin return 0; 1427d0ef721eSBaptiste Daroussin } 1428