1 /* 2 * ed.defns.c: Editor function definitions and initialization 3 */ 4 /*- 5 * Copyright (c) 1980, 1991 The Regents of the University of California. 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without 9 * modification, are permitted provided that the following conditions 10 * are met: 11 * 1. Redistributions of source code must retain the above copyright 12 * notice, this list of conditions and the following disclaimer. 13 * 2. Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in the 15 * documentation and/or other materials provided with the distribution. 16 * 3. Neither the name of the University nor the names of its contributors 17 * may be used to endorse or promote products derived from this software 18 * without specific prior written permission. 19 * 20 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 21 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 24 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 26 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 27 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 28 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 29 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 30 * SUCH DAMAGE. 31 */ 32 #include "sh.h" 33 #include "ed.h" 34 35 static void ed_InitMetaBindings (void); 36 37 PFCmd CcFuncTbl[] = { /* table of available commands */ 38 e_unassigned, 39 /* no #define here -- this is a dummy to detect initing of the key map */ 40 e_unassigned, 41 #define F_UNASSIGNED 1 42 e_insert, 43 #define F_INSERT 2 44 e_newline, 45 #define F_NEWLINE 3 46 e_delprev, 47 #define F_DELPREV 4 48 e_delnext, 49 #define F_DELNEXT 5 50 e_toend, 51 #define F_TOEND 6 52 e_tobeg, 53 #define F_TOBEG 7 54 e_charback, 55 #define F_CHARBACK 8 56 e_charfwd, 57 #define F_CHARFWD 9 58 e_quote, 59 #define F_QUOTE 10 60 e_startover, 61 #define F_STARTOVER 11 62 e_redisp, 63 #define F_REDISP 12 64 e_tty_int, 65 #define F_TTY_INT 13 66 e_wordback, 67 #define F_WORDBACK 14 68 e_wordfwd, 69 #define F_WORDFWD 15 70 e_cleardisp, 71 #define F_CLEARDISP 16 72 e_complete, 73 #define F_COMPLETE 17 74 e_correct, 75 #define F_CORRECT 18 76 e_up_hist, 77 #define F_UP_HIST 19 78 e_down_hist, 79 #define F_DOWN_HIST 20 80 e_up_search_hist, 81 #define F_UP_SEARCH_HIST 21 82 e_down_search_hist, 83 #define F_DOWN_SEARCH_HIST 22 84 e_helpme, 85 #define F_HELPME 23 86 e_list_choices, 87 #define F_LIST_CHOICES 24 88 e_delwordprev, 89 #define F_DELWORDPREV 25 90 e_delwordnext, 91 #define F_DELWORDNEXT 26 92 e_digit, 93 #define F_DIGIT 27 94 e_killend, 95 #define F_KILLEND 28 96 e_killbeg, 97 #define F_KILLBEG 29 98 e_metanext, 99 #define F_METANEXT 30 100 e_send_eof, 101 #define F_SEND_EOF 31 102 e_charswitch, 103 #define F_CHARSWITCH 32 104 e_which, 105 #define F_WHICH 33 106 e_yank_kill, 107 #define F_YANK_KILL 34 108 e_tty_dsusp, 109 #define F_TTY_DSUSP 35 110 e_tty_flusho, 111 #define F_TTY_FLUSHO 36 112 e_tty_quit, 113 #define F_TTY_QUIT 37 114 e_tty_tsusp, 115 #define F_TTY_TSUSP 38 116 e_tty_stopo, 117 #define F_TTY_STOPO 39 118 e_tty_starto, 119 #define F_TTY_STARTO 40 120 e_argfour, 121 #define F_ARGFOUR 41 122 e_set_mark, 123 #define F_SET_MARK 42 124 e_exchange_mark, 125 #define F_EXCHANGE_MARK 43 126 e_last_item, 127 #define F_LAST_ITEM 44 128 e_delnext_list_eof, 129 #define F_DELNEXT_LIST_EOF 45 130 v_cmd_mode, 131 #define V_CMD_MODE 46 132 v_insert, 133 #define V_INSERT 47 134 e_argdigit, 135 #define F_ARGDIGIT 48 136 e_killregion, 137 #define F_KILLREGION 49 138 e_copyregion, 139 #define F_COPYREGION 50 140 e_gcharswitch, 141 #define F_GCHARSWITCH 51 142 e_run_fg_editor, 143 #define F_RUN_FG_EDITOR 52 144 e_unassigned, /* place holder for sequence lead in character */ 145 #define F_XKEY 53 146 e_uppercase, 147 #define F_CASEUPPER 54 148 e_lowercase, 149 #define F_CASELOWER 55 150 e_capitalcase, 151 #define F_CASECAPITAL 56 152 v_zero, 153 #define V_ZERO 57 154 v_add, 155 #define V_ADD 58 156 v_addend, 157 #define V_ADDEND 59 158 v_wordbegnext, 159 #define V_WORDBEGNEXT 60 160 e_killall, 161 #define F_KILLALL 61 162 e_unassigned, 163 /* F_EXTENDNEXT removed */ 164 v_insbeg, 165 #define V_INSBEG 63 166 v_replmode, 167 #define V_REPLMODE 64 168 v_replone, 169 #define V_REPLONE 65 170 v_substline, 171 #define V_SUBSTLINE 66 172 v_substchar, 173 #define V_SUBSTCHAR 67 174 v_chgtoend, 175 #define V_CHGTOEND 68 176 e_list_eof, 177 #define F_LIST_EOF 69 178 e_list_glob, 179 #define F_LIST_GLOB 70 180 e_expand_history, 181 #define F_EXPAND_HISTORY 71 182 e_magic_space, 183 #define F_MAGIC_SPACE 72 184 e_insovr, 185 #define F_INSOVR 73 186 v_cm_complete, 187 #define V_CM_COMPLETE 74 188 e_copyprev, 189 #define F_COPYPREV 75 190 e_correctl, 191 #define F_CORRECT_L 76 192 e_expand_glob, 193 #define F_EXPAND_GLOB 77 194 e_expand_vars, 195 #define F_EXPAND_VARS 78 196 e_toggle_hist, 197 #define F_TOGGLE_HIST 79 198 v_change_case, 199 #define V_CHGCASE 80 200 e_expand, 201 #define F_EXPAND 81 202 e_load_average, 203 #define F_LOAD_AVERAGE 82 204 v_delprev, 205 #define V_DELPREV 83 206 v_delmeta, 207 #define V_DELMETA 84 208 v_wordfwd, 209 #define V_WORDFWD 85 210 v_wordback, 211 #define V_WORDBACK 86 212 v_endword, 213 #define V_ENDWORD 87 214 v_eword, 215 #define V_EWORD 88 216 v_undo, 217 #define V_UNDO 89 218 v_ush_meta, 219 #define V_USH_META 90 220 v_dsh_meta, 221 #define V_DSH_META 91 222 v_rsrch_fwd, 223 #define V_RSRCH_FWD 92 224 v_rsrch_back, 225 #define V_RSRCH_BACK 93 226 v_char_fwd, 227 #define V_CHAR_FWD 94 228 v_char_back, 229 #define V_CHAR_BACK 95 230 v_chgmeta, 231 #define V_CHGMETA 96 232 e_inc_fwd, 233 #define F_INC_FWD 97 234 e_inc_back, 235 #define F_INC_BACK 98 236 v_rchar_fwd, 237 #define V_RCHAR_FWD 99 238 v_rchar_back, 239 #define V_RCHAR_BACK 100 240 v_charto_fwd, 241 #define V_CHARTO_FWD 101 242 v_charto_back, 243 #define V_CHARTO_BACK 102 244 e_normalize_path, 245 #define F_PATH_NORM 103 246 e_delnext_eof, /* added by mtk@ari.ncl.omron.co.jp (920818) */ 247 #define F_DELNEXT_EOF 104 248 e_stuff_char, 249 #define F_STUFF_CHAR 105 250 e_complete_all, 251 #define F_COMPLETE_ALL 106 252 e_list_all, 253 #define F_LIST_ALL 107 254 e_complete_fwd, 255 #define F_COMPLETE_FWD 108 256 e_complete_back, 257 #define F_COMPLETE_BACK 109 258 e_delnext_list, 259 #define F_DELNEXT_LIST 110 260 e_normalize_command, 261 #define F_COMMAND_NORM 111 262 e_dabbrev_expand, 263 #define F_DABBREV_EXPAND 112 264 e_dosify_next, 265 #define F_DOSIFY_NEXT 113 266 e_dosify_prev, 267 #define F_DOSIFY_PREV 114 268 e_page_up, 269 #define F_PAGE_UP 115 270 e_page_down, 271 #define F_PAGE_DOWN 116 272 e_yank_pop, 273 #define F_YANK_POP 117 274 e_newline_hold, 275 #define F_NEWLINE_HOLD 118 276 e_newline_down_hist, 277 #define F_NEWLINE_DOWN_HIST 119 278 0 /* DUMMY VALUE */ 279 #define F_NUM_FNS 120 280 281 }; 282 283 KEYCMD NumFuns = F_NUM_FNS; 284 285 KEYCMD CcKeyMap[NT_NUM_KEYS]; /* the real key map */ 286 KEYCMD CcAltMap[NT_NUM_KEYS]; /* the alternative key map */ 287 #define F_NUM_FUNCNAMES (F_NUM_FNS + 2) 288 struct KeyFuncs FuncNames[F_NUM_FUNCNAMES]; 289 290 #ifdef WINNT_NATIVE 291 extern KEYCMD CcEmacsMap[]; 292 extern KEYCMD CcViMap[]; 293 extern KEYCMD CcViCmdMap[]; 294 #else /* !WINNT_NATIVE*/ 295 KEYCMD CcEmacsMap[] = { 296 /* keymap table, each index into above tbl; should be 256*sizeof(KEYCMD) 297 bytes long */ 298 299 F_SET_MARK, /* ^@ */ 300 F_TOBEG, /* ^A */ 301 F_CHARBACK, /* ^B */ 302 F_TTY_INT, /* ^C */ 303 F_DELNEXT_LIST_EOF, /* ^D */ 304 F_TOEND, /* ^E */ 305 F_CHARFWD, /* ^F */ 306 F_UNASSIGNED, /* ^G */ 307 F_DELPREV, /* ^H */ 308 F_COMPLETE, /* ^I */ 309 F_NEWLINE, /* ^J */ 310 F_KILLEND, /* ^K */ 311 F_CLEARDISP, /* ^L */ 312 F_NEWLINE, /* ^M */ 313 F_DOWN_HIST, /* ^N */ 314 F_TTY_FLUSHO, /* ^O */ 315 F_UP_HIST, /* ^P */ 316 F_TTY_STARTO, /* ^Q */ 317 F_REDISP, /* ^R */ 318 F_TTY_STOPO, /* ^S */ 319 F_CHARSWITCH, /* ^T */ 320 F_KILLALL, /* ^U */ 321 F_QUOTE, /* ^V */ 322 F_KILLREGION, /* ^W */ 323 F_XKEY, /* ^X */ 324 F_YANK_KILL, /* ^Y */ 325 F_TTY_TSUSP, /* ^Z */ 326 F_METANEXT, /* ^[ */ 327 F_TTY_QUIT, /* ^\ */ 328 F_TTY_DSUSP, /* ^] */ 329 F_UNASSIGNED, /* ^^ */ 330 F_UNASSIGNED, /* ^_ */ 331 F_INSERT, /* SPACE */ 332 F_INSERT, /* ! */ 333 F_INSERT, /* " */ 334 F_INSERT, /* # */ 335 F_INSERT, /* $ */ 336 F_INSERT, /* % */ 337 F_INSERT, /* & */ 338 F_INSERT, /* ' */ 339 F_INSERT, /* ( */ 340 F_INSERT, /* ) */ 341 F_INSERT, /* * */ 342 F_INSERT, /* + */ 343 F_INSERT, /* , */ 344 F_INSERT, /* - */ 345 F_INSERT, /* . */ 346 F_INSERT, /* / */ 347 F_DIGIT, /* 0 */ 348 F_DIGIT, /* 1 */ 349 F_DIGIT, /* 2 */ 350 F_DIGIT, /* 3 */ 351 F_DIGIT, /* 4 */ 352 F_DIGIT, /* 5 */ 353 F_DIGIT, /* 6 */ 354 F_DIGIT, /* 7 */ 355 F_DIGIT, /* 8 */ 356 F_DIGIT, /* 9 */ 357 F_INSERT, /* : */ 358 F_INSERT, /* ; */ 359 F_INSERT, /* < */ 360 F_INSERT, /* = */ 361 F_INSERT, /* > */ 362 F_INSERT, /* ? */ 363 F_INSERT, /* @ */ 364 F_INSERT, /* A */ 365 F_INSERT, /* B */ 366 F_INSERT, /* C */ 367 F_INSERT, /* D */ 368 F_INSERT, /* E */ 369 F_INSERT, /* F */ 370 F_INSERT, /* G */ 371 F_INSERT, /* H */ 372 F_INSERT, /* I */ 373 F_INSERT, /* J */ 374 F_INSERT, /* K */ 375 F_INSERT, /* L */ 376 F_INSERT, /* M */ 377 F_INSERT, /* N */ 378 F_INSERT, /* O */ 379 F_INSERT, /* P */ 380 F_INSERT, /* Q */ 381 F_INSERT, /* R */ 382 F_INSERT, /* S */ 383 F_INSERT, /* T */ 384 F_INSERT, /* U */ 385 F_INSERT, /* V */ 386 F_INSERT, /* W */ 387 F_INSERT, /* X */ 388 F_INSERT, /* Y */ 389 F_INSERT, /* Z */ 390 F_INSERT, /* [ */ 391 F_INSERT, /* \ */ 392 F_INSERT, /* ] */ 393 F_INSERT, /* ^ */ 394 F_INSERT, /* _ */ 395 F_INSERT, /* ` */ 396 F_INSERT, /* a */ 397 F_INSERT, /* b */ 398 F_INSERT, /* c */ 399 F_INSERT, /* d */ 400 F_INSERT, /* e */ 401 F_INSERT, /* f */ 402 F_INSERT, /* g */ 403 F_INSERT, /* h */ 404 F_INSERT, /* i */ 405 F_INSERT, /* j */ 406 F_INSERT, /* k */ 407 F_INSERT, /* l */ 408 F_INSERT, /* m */ 409 F_INSERT, /* n */ 410 F_INSERT, /* o */ 411 F_INSERT, /* p */ 412 F_INSERT, /* q */ 413 F_INSERT, /* r */ 414 F_INSERT, /* s */ 415 F_INSERT, /* t */ 416 F_INSERT, /* u */ 417 F_INSERT, /* v */ 418 F_INSERT, /* w */ 419 F_INSERT, /* x */ 420 F_INSERT, /* y */ 421 F_INSERT, /* z */ 422 F_INSERT, /* { */ 423 F_INSERT, /* | */ 424 F_INSERT, /* } */ 425 F_INSERT, /* ~ */ 426 F_DELPREV, /* ^? */ 427 F_UNASSIGNED, /* M-^@ */ 428 F_UNASSIGNED, /* M-^A */ 429 F_UNASSIGNED, /* M-^B */ 430 F_UNASSIGNED, /* M-^C */ 431 F_LIST_CHOICES, /* M-^D */ 432 F_UNASSIGNED, /* M-^E */ 433 F_UNASSIGNED, /* M-^F */ 434 F_UNASSIGNED, /* M-^G */ 435 F_DELWORDPREV, /* M-^H */ 436 F_COMPLETE, /* M-^I */ 437 F_UNASSIGNED, /* M-^J */ 438 F_UNASSIGNED, /* M-^K */ 439 F_CLEARDISP, /* M-^L */ 440 F_UNASSIGNED, /* M-^M */ 441 F_UNASSIGNED, /* M-^N */ 442 F_UNASSIGNED, /* M-^O */ 443 F_UNASSIGNED, /* M-^P */ 444 F_UNASSIGNED, /* M-^Q */ 445 F_UNASSIGNED, /* M-^R */ 446 F_UNASSIGNED, /* M-^S */ 447 F_UNASSIGNED, /* M-^T */ 448 F_UNASSIGNED, /* M-^U */ 449 F_UNASSIGNED, /* M-^V */ 450 F_UNASSIGNED, /* M-^W */ 451 F_UNASSIGNED, /* M-^X */ 452 F_UNASSIGNED, /* M-^Y */ 453 F_RUN_FG_EDITOR, /* M-^Z */ 454 F_COMPLETE, /* M-^[ */ 455 F_UNASSIGNED, /* M-^\ */ 456 F_UNASSIGNED, /* M-^] */ 457 F_UNASSIGNED, /* M-^^ */ 458 F_COPYPREV, /* M-^_ */ 459 F_EXPAND_HISTORY, /* M-SPACE */ 460 F_EXPAND_HISTORY, /* M-! */ 461 F_UNASSIGNED, /* M-" */ 462 F_UNASSIGNED, /* M-# */ 463 F_CORRECT_L, /* M-$ */ 464 F_UNASSIGNED, /* M-% */ 465 F_UNASSIGNED, /* M-& */ 466 F_UNASSIGNED, /* M-' */ 467 F_UNASSIGNED, /* M-( */ 468 F_UNASSIGNED, /* M-) */ 469 F_UNASSIGNED, /* M-* */ 470 F_UNASSIGNED, /* M-+ */ 471 F_UNASSIGNED, /* M-, */ 472 F_UNASSIGNED, /* M-- */ 473 F_UNASSIGNED, /* M-. */ 474 F_DABBREV_EXPAND, /* M-/ */ 475 F_ARGDIGIT, /* M-0 */ 476 F_ARGDIGIT, /* M-1 */ 477 F_ARGDIGIT, /* M-2 */ 478 F_ARGDIGIT, /* M-3 */ 479 F_ARGDIGIT, /* M-4 */ 480 F_ARGDIGIT, /* M-5 */ 481 F_ARGDIGIT, /* M-6 */ 482 F_ARGDIGIT, /* M-7 */ 483 F_ARGDIGIT, /* M-8 */ 484 F_ARGDIGIT, /* M-9 */ 485 F_UNASSIGNED, /* M-: */ 486 F_UNASSIGNED, /* M-; */ 487 F_UNASSIGNED, /* M-< */ 488 F_UNASSIGNED, /* M-= */ 489 F_UNASSIGNED, /* M-> */ 490 F_WHICH, /* M-? */ 491 F_UNASSIGNED, /* M-@ */ 492 F_NEWLINE_HOLD, /* M-A */ 493 F_WORDBACK, /* M-B */ 494 F_CASECAPITAL, /* M-C */ 495 F_DELWORDNEXT, /* M-D */ 496 F_UNASSIGNED, /* M-E */ 497 F_WORDFWD, /* M-F */ 498 F_UNASSIGNED, /* M-G */ 499 F_HELPME, /* M-H */ 500 F_UNASSIGNED, /* M-I */ 501 F_UNASSIGNED, /* M-J */ 502 F_UNASSIGNED, /* M-K */ 503 F_CASELOWER, /* M-L */ 504 F_UNASSIGNED, /* M-M */ 505 F_DOWN_SEARCH_HIST, /* M-N */ 506 F_XKEY, /* M-O *//* extended key esc PWP Mar 88 */ 507 F_UP_SEARCH_HIST, /* M-P */ 508 F_UNASSIGNED, /* M-Q */ 509 F_TOGGLE_HIST, /* M-R */ 510 F_CORRECT, /* M-S */ 511 F_UNASSIGNED, /* M-T */ 512 F_CASEUPPER, /* M-U */ 513 F_UNASSIGNED, /* M-V */ 514 F_COPYREGION, /* M-W */ 515 F_UNASSIGNED, /* M-X */ 516 F_YANK_POP, /* M-Y */ 517 F_UNASSIGNED, /* M-Z */ 518 F_XKEY, /* M-[ *//* extended key esc -mf Oct 87 */ 519 F_UNASSIGNED, /* M-\ */ 520 F_UNASSIGNED, /* M-] */ 521 F_UNASSIGNED, /* M-^ */ 522 F_LAST_ITEM, /* M-_ */ 523 F_UNASSIGNED, /* M-` */ 524 F_NEWLINE_HOLD, /* M-a */ 525 F_WORDBACK, /* M-b */ 526 F_CASECAPITAL, /* M-c */ 527 F_DELWORDNEXT, /* M-d */ 528 F_UNASSIGNED, /* M-e */ 529 F_WORDFWD, /* M-f */ 530 F_UNASSIGNED, /* M-g */ 531 F_HELPME, /* M-h */ 532 F_UNASSIGNED, /* M-i */ 533 F_UNASSIGNED, /* M-j */ 534 F_UNASSIGNED, /* M-k */ 535 F_CASELOWER, /* M-l */ 536 F_UNASSIGNED, /* M-m */ 537 F_DOWN_SEARCH_HIST, /* M-n */ 538 F_UNASSIGNED, /* M-o */ 539 F_UP_SEARCH_HIST, /* M-p */ 540 F_UNASSIGNED, /* M-q */ 541 F_TOGGLE_HIST, /* M-r */ 542 F_CORRECT, /* M-s */ 543 F_UNASSIGNED, /* M-t */ 544 F_CASEUPPER, /* M-u */ 545 F_UNASSIGNED, /* M-v */ 546 F_COPYREGION, /* M-w */ 547 F_UNASSIGNED, /* M-x */ 548 F_YANK_POP, /* M-y */ 549 F_UNASSIGNED, /* M-z */ 550 F_UNASSIGNED, /* M-{ */ 551 F_UNASSIGNED, /* M-| */ 552 F_UNASSIGNED, /* M-} */ 553 F_UNASSIGNED, /* M-~ */ 554 F_DELWORDPREV /* M-^? */ 555 }; 556 557 /* 558 * keymap table for vi. Each index into above tbl; should be 559 * 256 entries long. Vi mode uses a sticky-extend to do command mode: 560 * insert mode characters are in the normal keymap, and command mode 561 * in the extended keymap. 562 */ 563 static KEYCMD CcViMap[] = { 564 #ifdef KSHVI 565 F_UNASSIGNED, /* ^@ */ 566 F_INSERT, /* ^A */ 567 F_INSERT, /* ^B */ 568 F_INSERT, /* ^C */ 569 F_INSERT, /* ^D */ 570 F_INSERT, /* ^E */ 571 F_INSERT, /* ^F */ 572 F_INSERT, /* ^G */ 573 V_DELPREV, /* ^H */ /* BackSpace key */ 574 F_COMPLETE, /* ^I */ /* Tab Key */ 575 F_NEWLINE, /* ^J */ 576 F_INSERT, /* ^K */ 577 F_INSERT, /* ^L */ 578 F_NEWLINE, /* ^M */ 579 F_INSERT, /* ^N */ 580 F_INSERT, /* ^O */ 581 F_INSERT, /* ^P */ 582 F_TTY_STARTO, /* ^Q */ 583 F_INSERT, /* ^R */ 584 F_INSERT, /* ^S */ 585 F_INSERT, /* ^T */ 586 F_INSERT, /* ^U */ 587 F_QUOTE, /* ^V */ 588 F_DELWORDPREV, /* ^W */ /* Only until start edit pos */ 589 F_INSERT, /* ^X */ 590 F_INSERT, /* ^Y */ 591 F_INSERT, /* ^Z */ 592 V_CMD_MODE, /* ^[ */ /* [ Esc ] key */ 593 F_TTY_QUIT, /* ^\ */ 594 F_INSERT, /* ^] */ 595 F_INSERT, /* ^^ */ 596 F_INSERT, /* ^_ */ 597 #else /* !KSHVI */ 598 F_UNASSIGNED, /* ^@ */ /* NOTE: These mapping do NOT */ 599 F_TOBEG, /* ^A */ /* Correspond well to the KSH */ 600 F_CHARBACK, /* ^B */ /* VI editting assignments */ 601 F_TTY_INT, /* ^C */ /* On the other hand they are */ 602 F_LIST_EOF, /* ^D */ /* convenient any many people */ 603 F_TOEND, /* ^E */ /* have gotten used to them */ 604 F_CHARFWD, /* ^F */ 605 F_LIST_GLOB, /* ^G */ 606 F_DELPREV, /* ^H */ /* BackSpace key */ 607 F_COMPLETE, /* ^I */ /* Tab Key */ 608 F_NEWLINE, /* ^J */ 609 F_KILLEND, /* ^K */ 610 F_CLEARDISP, /* ^L */ 611 F_NEWLINE, /* ^M */ 612 F_DOWN_HIST, /* ^N */ 613 F_TTY_FLUSHO, /* ^O */ 614 F_UP_HIST, /* ^P */ 615 F_TTY_STARTO, /* ^Q */ 616 F_REDISP, /* ^R */ 617 F_TTY_STOPO, /* ^S */ 618 F_CHARSWITCH, /* ^T */ 619 F_KILLBEG, /* ^U */ 620 F_QUOTE, /* ^V */ 621 F_DELWORDPREV, /* ^W */ 622 F_EXPAND, /* ^X */ 623 F_TTY_DSUSP, /* ^Y */ 624 F_TTY_TSUSP, /* ^Z */ 625 V_CMD_MODE, /* ^[ */ 626 F_TTY_QUIT, /* ^\ */ 627 F_UNASSIGNED, /* ^] */ 628 F_UNASSIGNED, /* ^^ */ 629 F_UNASSIGNED, /* ^_ */ 630 #endif /* KSHVI */ 631 F_INSERT, /* SPACE */ 632 F_INSERT, /* ! */ 633 F_INSERT, /* " */ 634 F_INSERT, /* # */ 635 F_INSERT, /* $ */ 636 F_INSERT, /* % */ 637 F_INSERT, /* & */ 638 F_INSERT, /* ' */ 639 F_INSERT, /* ( */ 640 F_INSERT, /* ) */ 641 F_INSERT, /* * */ 642 F_INSERT, /* + */ 643 F_INSERT, /* , */ 644 F_INSERT, /* - */ 645 F_INSERT, /* . */ 646 F_INSERT, /* / */ 647 F_INSERT, /* 0 */ 648 F_INSERT, /* 1 */ 649 F_INSERT, /* 2 */ 650 F_INSERT, /* 3 */ 651 F_INSERT, /* 4 */ 652 F_INSERT, /* 5 */ 653 F_INSERT, /* 6 */ 654 F_INSERT, /* 7 */ 655 F_INSERT, /* 8 */ 656 F_INSERT, /* 9 */ 657 F_INSERT, /* : */ 658 F_INSERT, /* ; */ 659 F_INSERT, /* < */ 660 F_INSERT, /* = */ 661 F_INSERT, /* > */ 662 F_INSERT, /* ? */ 663 F_INSERT, /* @ */ 664 F_INSERT, /* A */ 665 F_INSERT, /* B */ 666 F_INSERT, /* C */ 667 F_INSERT, /* D */ 668 F_INSERT, /* E */ 669 F_INSERT, /* F */ 670 F_INSERT, /* G */ 671 F_INSERT, /* H */ 672 F_INSERT, /* I */ 673 F_INSERT, /* J */ 674 F_INSERT, /* K */ 675 F_INSERT, /* L */ 676 F_INSERT, /* M */ 677 F_INSERT, /* N */ 678 F_INSERT, /* O */ 679 F_INSERT, /* P */ 680 F_INSERT, /* Q */ 681 F_INSERT, /* R */ 682 F_INSERT, /* S */ 683 F_INSERT, /* T */ 684 F_INSERT, /* U */ 685 F_INSERT, /* V */ 686 F_INSERT, /* W */ 687 F_INSERT, /* X */ 688 F_INSERT, /* Y */ 689 F_INSERT, /* Z */ 690 F_INSERT, /* [ */ 691 F_INSERT, /* \ */ 692 F_INSERT, /* ] */ 693 F_INSERT, /* ^ */ 694 F_INSERT, /* _ */ 695 F_INSERT, /* ` */ 696 F_INSERT, /* a */ 697 F_INSERT, /* b */ 698 F_INSERT, /* c */ 699 F_INSERT, /* d */ 700 F_INSERT, /* e */ 701 F_INSERT, /* f */ 702 F_INSERT, /* g */ 703 F_INSERT, /* h */ 704 F_INSERT, /* i */ 705 F_INSERT, /* j */ 706 F_INSERT, /* k */ 707 F_INSERT, /* l */ 708 F_INSERT, /* m */ 709 F_INSERT, /* n */ 710 F_INSERT, /* o */ 711 F_INSERT, /* p */ 712 F_INSERT, /* q */ 713 F_INSERT, /* r */ 714 F_INSERT, /* s */ 715 F_INSERT, /* t */ 716 F_INSERT, /* u */ 717 F_INSERT, /* v */ 718 F_INSERT, /* w */ 719 F_INSERT, /* x */ 720 F_INSERT, /* y */ 721 F_INSERT, /* z */ 722 F_INSERT, /* { */ 723 F_INSERT, /* | */ 724 F_INSERT, /* } */ 725 F_INSERT, /* ~ */ 726 F_DELPREV, /* ^? */ 727 F_UNASSIGNED, /* M-^@ */ 728 F_UNASSIGNED, /* M-^A */ 729 F_UNASSIGNED, /* M-^B */ 730 F_UNASSIGNED, /* M-^C */ 731 F_UNASSIGNED, /* M-^D */ 732 F_UNASSIGNED, /* M-^E */ 733 F_UNASSIGNED, /* M-^F */ 734 F_UNASSIGNED, /* M-^G */ 735 F_UNASSIGNED, /* M-^H */ 736 F_UNASSIGNED, /* M-^I */ 737 F_UNASSIGNED, /* M-^J */ 738 F_UNASSIGNED, /* M-^K */ 739 F_UNASSIGNED, /* M-^L */ 740 F_UNASSIGNED, /* M-^M */ 741 F_UNASSIGNED, /* M-^N */ 742 F_UNASSIGNED, /* M-^O */ 743 F_UNASSIGNED, /* M-^P */ 744 F_UNASSIGNED, /* M-^Q */ 745 F_UNASSIGNED, /* M-^R */ 746 F_UNASSIGNED, /* M-^S */ 747 F_UNASSIGNED, /* M-^T */ 748 F_UNASSIGNED, /* M-^U */ 749 F_UNASSIGNED, /* M-^V */ 750 F_UNASSIGNED, /* M-^W */ 751 F_UNASSIGNED, /* M-^X */ 752 F_UNASSIGNED, /* M-^Y */ 753 F_UNASSIGNED, /* M-^Z */ 754 F_UNASSIGNED, /* M-^[ */ 755 F_UNASSIGNED, /* M-^\ */ 756 F_UNASSIGNED, /* M-^] */ 757 F_UNASSIGNED, /* M-^^ */ 758 F_UNASSIGNED, /* M-^_ */ 759 F_UNASSIGNED, /* M-SPACE */ 760 F_UNASSIGNED, /* M-! */ 761 F_UNASSIGNED, /* M-" */ 762 F_UNASSIGNED, /* M-# */ 763 F_UNASSIGNED, /* M-$ */ 764 F_UNASSIGNED, /* M-% */ 765 F_UNASSIGNED, /* M-& */ 766 F_UNASSIGNED, /* M-' */ 767 F_UNASSIGNED, /* M-( */ 768 F_UNASSIGNED, /* M-) */ 769 F_UNASSIGNED, /* M-* */ 770 F_UNASSIGNED, /* M-+ */ 771 F_UNASSIGNED, /* M-, */ 772 F_UNASSIGNED, /* M-- */ 773 F_UNASSIGNED, /* M-. */ 774 F_UNASSIGNED, /* M-/ */ 775 F_UNASSIGNED, /* M-0 */ 776 F_UNASSIGNED, /* M-1 */ 777 F_UNASSIGNED, /* M-2 */ 778 F_UNASSIGNED, /* M-3 */ 779 F_UNASSIGNED, /* M-4 */ 780 F_UNASSIGNED, /* M-5 */ 781 F_UNASSIGNED, /* M-6 */ 782 F_UNASSIGNED, /* M-7 */ 783 F_UNASSIGNED, /* M-8 */ 784 F_UNASSIGNED, /* M-9 */ 785 F_UNASSIGNED, /* M-: */ 786 F_UNASSIGNED, /* M-; */ 787 F_UNASSIGNED, /* M-< */ 788 F_UNASSIGNED, /* M-= */ 789 F_UNASSIGNED, /* M-> */ 790 F_UNASSIGNED, /* M-? */ 791 F_UNASSIGNED, /* M-@ */ 792 F_UNASSIGNED, /* M-A */ 793 F_UNASSIGNED, /* M-B */ 794 F_UNASSIGNED, /* M-C */ 795 F_UNASSIGNED, /* M-D */ 796 F_UNASSIGNED, /* M-E */ 797 F_UNASSIGNED, /* M-F */ 798 F_UNASSIGNED, /* M-G */ 799 F_UNASSIGNED, /* M-H */ 800 F_UNASSIGNED, /* M-I */ 801 F_UNASSIGNED, /* M-J */ 802 F_UNASSIGNED, /* M-K */ 803 F_UNASSIGNED, /* M-L */ 804 F_UNASSIGNED, /* M-M */ 805 F_UNASSIGNED, /* M-N */ 806 F_UNASSIGNED, /* M-O */ 807 F_UNASSIGNED, /* M-P */ 808 F_UNASSIGNED, /* M-Q */ 809 F_UNASSIGNED, /* M-R */ 810 F_UNASSIGNED, /* M-S */ 811 F_UNASSIGNED, /* M-T */ 812 F_UNASSIGNED, /* M-U */ 813 F_UNASSIGNED, /* M-V */ 814 F_UNASSIGNED, /* M-W */ 815 F_UNASSIGNED, /* M-X */ 816 F_UNASSIGNED, /* M-Y */ 817 F_UNASSIGNED, /* M-Z */ 818 F_UNASSIGNED, /* M-[ */ 819 F_UNASSIGNED, /* M-\ */ 820 F_UNASSIGNED, /* M-] */ 821 F_UNASSIGNED, /* M-^ */ 822 F_UNASSIGNED, /* M-_ */ 823 F_UNASSIGNED, /* M-` */ 824 F_UNASSIGNED, /* M-a */ 825 F_UNASSIGNED, /* M-b */ 826 F_UNASSIGNED, /* M-c */ 827 F_UNASSIGNED, /* M-d */ 828 F_UNASSIGNED, /* M-e */ 829 F_UNASSIGNED, /* M-f */ 830 F_UNASSIGNED, /* M-g */ 831 F_UNASSIGNED, /* M-h */ 832 F_UNASSIGNED, /* M-i */ 833 F_UNASSIGNED, /* M-j */ 834 F_UNASSIGNED, /* M-k */ 835 F_UNASSIGNED, /* M-l */ 836 F_UNASSIGNED, /* M-m */ 837 F_UNASSIGNED, /* M-n */ 838 F_UNASSIGNED, /* M-o */ 839 F_UNASSIGNED, /* M-p */ 840 F_UNASSIGNED, /* M-q */ 841 F_UNASSIGNED, /* M-r */ 842 F_UNASSIGNED, /* M-s */ 843 F_UNASSIGNED, /* M-t */ 844 F_UNASSIGNED, /* M-u */ 845 F_UNASSIGNED, /* M-v */ 846 F_UNASSIGNED, /* M-w */ 847 F_UNASSIGNED, /* M-x */ 848 F_UNASSIGNED, /* M-y */ 849 F_UNASSIGNED, /* M-z */ 850 F_UNASSIGNED, /* M-{ */ 851 F_UNASSIGNED, /* M-| */ 852 F_UNASSIGNED, /* M-} */ 853 F_UNASSIGNED, /* M-~ */ 854 F_UNASSIGNED /* M-^? */ 855 }; 856 857 KEYCMD CcViCmdMap[] = { 858 F_UNASSIGNED, /* ^@ */ 859 F_TOBEG, /* ^A */ 860 F_UNASSIGNED, /* ^B */ 861 F_TTY_INT, /* ^C */ 862 F_LIST_CHOICES, /* ^D */ 863 F_TOEND, /* ^E */ 864 F_UNASSIGNED, /* ^F */ 865 F_LIST_GLOB, /* ^G */ 866 F_CHARBACK, /* ^H */ 867 V_CM_COMPLETE, /* ^I */ 868 F_NEWLINE, /* ^J */ 869 F_KILLEND, /* ^K */ 870 F_CLEARDISP, /* ^L */ 871 F_NEWLINE, /* ^M */ 872 F_DOWN_HIST, /* ^N */ 873 F_TTY_FLUSHO, /* ^O */ 874 F_UP_HIST, /* ^P */ 875 F_TTY_STARTO, /* ^Q */ 876 F_REDISP, /* ^R */ 877 F_TTY_STOPO, /* ^S */ 878 F_UNASSIGNED, /* ^T */ 879 F_KILLBEG, /* ^U */ 880 F_UNASSIGNED, /* ^V */ 881 F_DELWORDPREV, /* ^W */ 882 F_EXPAND, /* ^X */ 883 F_UNASSIGNED, /* ^Y */ 884 F_UNASSIGNED, /* ^Z */ 885 F_METANEXT, /* ^[ */ 886 F_TTY_QUIT, /* ^\ */ 887 F_UNASSIGNED, /* ^] */ 888 F_UNASSIGNED, /* ^^ */ 889 F_UNASSIGNED, /* ^_ */ 890 F_CHARFWD, /* SPACE */ 891 F_EXPAND_HISTORY, /* ! */ 892 F_UNASSIGNED, /* " */ 893 F_UNASSIGNED, /* # */ 894 F_TOEND, /* $ */ 895 F_UNASSIGNED, /* % */ 896 F_UNASSIGNED, /* & */ 897 F_UNASSIGNED, /* ' */ 898 F_UNASSIGNED, /* ( */ 899 F_UNASSIGNED, /* ) */ 900 F_EXPAND_GLOB, /* * */ 901 F_DOWN_HIST, /* + */ 902 V_RCHAR_BACK, /* , */ 903 F_UP_HIST, /* - */ 904 F_UNASSIGNED, /* . */ 905 V_DSH_META, /* / */ 906 V_ZERO, /* 0 */ 907 F_ARGDIGIT, /* 1 */ 908 F_ARGDIGIT, /* 2 */ 909 F_ARGDIGIT, /* 3 */ 910 F_ARGDIGIT, /* 4 */ 911 F_ARGDIGIT, /* 5 */ 912 F_ARGDIGIT, /* 6 */ 913 F_ARGDIGIT, /* 7 */ 914 F_ARGDIGIT, /* 8 */ 915 F_ARGDIGIT, /* 9 */ 916 F_UNASSIGNED, /* : */ 917 V_RCHAR_FWD, /* ; */ 918 F_UNASSIGNED, /* < */ 919 F_UNASSIGNED, /* = */ 920 F_UNASSIGNED, /* > */ 921 V_USH_META, /* ? */ 922 F_UNASSIGNED, /* @ */ 923 V_ADDEND, /* A */ 924 V_WORDBACK, /* B */ 925 V_CHGTOEND, /* C */ 926 F_KILLEND, /* D */ 927 V_ENDWORD, /* E */ 928 V_CHAR_BACK, /* F */ 929 F_UNASSIGNED, /* G */ 930 F_UNASSIGNED, /* H */ 931 V_INSBEG, /* I */ 932 F_DOWN_SEARCH_HIST, /* J */ 933 F_UP_SEARCH_HIST, /* K */ 934 F_UNASSIGNED, /* L */ 935 F_UNASSIGNED, /* M */ 936 V_RSRCH_BACK, /* N */ 937 F_XKEY, /* O */ 938 F_UNASSIGNED, /* P */ 939 F_UNASSIGNED, /* Q */ 940 V_REPLMODE, /* R */ 941 V_SUBSTLINE, /* S */ 942 V_CHARTO_BACK, /* T */ 943 F_UNASSIGNED, /* U */ 944 F_EXPAND_VARS, /* V */ 945 V_WORDFWD, /* W */ 946 F_DELPREV, /* X */ 947 F_UNASSIGNED, /* Y */ 948 F_UNASSIGNED, /* Z */ 949 F_XKEY, /* [ */ 950 F_UNASSIGNED, /* \ */ 951 F_UNASSIGNED, /* ] */ 952 F_TOBEG, /* ^ */ 953 F_UNASSIGNED, /* _ */ 954 F_UNASSIGNED, /* ` */ 955 V_ADD, /* a */ 956 F_WORDBACK, /* b */ 957 V_CHGMETA, /* c */ 958 V_DELMETA, /* d */ 959 V_EWORD, /* e */ 960 V_CHAR_FWD, /* f */ 961 F_UNASSIGNED, /* g */ 962 F_CHARBACK, /* h */ 963 V_INSERT, /* i */ 964 F_DOWN_HIST, /* j */ 965 F_UP_HIST, /* k */ 966 F_CHARFWD, /* l */ 967 F_UNASSIGNED, /* m */ 968 V_RSRCH_FWD, /* n */ 969 F_UNASSIGNED, /* o */ 970 F_UNASSIGNED, /* p */ 971 F_UNASSIGNED, /* q */ 972 V_REPLONE, /* r */ 973 V_SUBSTCHAR, /* s */ 974 V_CHARTO_FWD, /* t */ 975 V_UNDO, /* u */ 976 F_EXPAND_VARS, /* v */ 977 V_WORDBEGNEXT, /* w */ 978 F_DELNEXT_EOF, /* x */ 979 F_UNASSIGNED, /* y */ 980 F_UNASSIGNED, /* z */ 981 F_UNASSIGNED, /* { */ 982 F_UNASSIGNED, /* | */ 983 F_UNASSIGNED, /* } */ 984 V_CHGCASE, /* ~ */ 985 F_DELPREV, /* ^? */ 986 F_UNASSIGNED, /* M-^@ */ 987 F_UNASSIGNED, /* M-^A */ 988 F_UNASSIGNED, /* M-^B */ 989 F_UNASSIGNED, /* M-^C */ 990 F_UNASSIGNED, /* M-^D */ 991 F_UNASSIGNED, /* M-^E */ 992 F_UNASSIGNED, /* M-^F */ 993 F_UNASSIGNED, /* M-^G */ 994 F_UNASSIGNED, /* M-^H */ 995 F_UNASSIGNED, /* M-^I */ 996 F_UNASSIGNED, /* M-^J */ 997 F_UNASSIGNED, /* M-^K */ 998 F_UNASSIGNED, /* M-^L */ 999 F_UNASSIGNED, /* M-^M */ 1000 F_UNASSIGNED, /* M-^N */ 1001 F_UNASSIGNED, /* M-^O */ 1002 F_UNASSIGNED, /* M-^P */ 1003 F_UNASSIGNED, /* M-^Q */ 1004 F_UNASSIGNED, /* M-^R */ 1005 F_UNASSIGNED, /* M-^S */ 1006 F_UNASSIGNED, /* M-^T */ 1007 F_UNASSIGNED, /* M-^U */ 1008 F_UNASSIGNED, /* M-^V */ 1009 F_UNASSIGNED, /* M-^W */ 1010 F_UNASSIGNED, /* M-^X */ 1011 F_UNASSIGNED, /* M-^Y */ 1012 F_UNASSIGNED, /* M-^Z */ 1013 F_UNASSIGNED, /* M-^[ */ 1014 F_UNASSIGNED, /* M-^\ */ 1015 F_UNASSIGNED, /* M-^] */ 1016 F_UNASSIGNED, /* M-^^ */ 1017 F_UNASSIGNED, /* M-^_ */ 1018 F_UNASSIGNED, /* M-SPACE */ 1019 F_UNASSIGNED, /* M-! */ 1020 F_UNASSIGNED, /* M-" */ 1021 F_UNASSIGNED, /* M-# */ 1022 F_UNASSIGNED, /* M-$ */ 1023 F_UNASSIGNED, /* M-% */ 1024 F_UNASSIGNED, /* M-& */ 1025 F_UNASSIGNED, /* M-' */ 1026 F_UNASSIGNED, /* M-( */ 1027 F_UNASSIGNED, /* M-) */ 1028 F_UNASSIGNED, /* M-* */ 1029 F_UNASSIGNED, /* M-+ */ 1030 F_UNASSIGNED, /* M-, */ 1031 F_UNASSIGNED, /* M-- */ 1032 F_UNASSIGNED, /* M-. */ 1033 F_UNASSIGNED, /* M-/ */ 1034 F_UNASSIGNED, /* M-0 */ 1035 F_UNASSIGNED, /* M-1 */ 1036 F_UNASSIGNED, /* M-2 */ 1037 F_UNASSIGNED, /* M-3 */ 1038 F_UNASSIGNED, /* M-4 */ 1039 F_UNASSIGNED, /* M-5 */ 1040 F_UNASSIGNED, /* M-6 */ 1041 F_UNASSIGNED, /* M-7 */ 1042 F_UNASSIGNED, /* M-8 */ 1043 F_UNASSIGNED, /* M-9 */ 1044 F_UNASSIGNED, /* M-: */ 1045 F_UNASSIGNED, /* M-; */ 1046 F_UNASSIGNED, /* M-< */ 1047 F_UNASSIGNED, /* M-= */ 1048 F_UNASSIGNED, /* M-> */ 1049 F_HELPME, /* M-? */ 1050 F_UNASSIGNED, /* M-@ */ 1051 F_UNASSIGNED, /* M-A */ 1052 F_UNASSIGNED, /* M-B */ 1053 F_UNASSIGNED, /* M-C */ 1054 F_UNASSIGNED, /* M-D */ 1055 F_UNASSIGNED, /* M-E */ 1056 F_UNASSIGNED, /* M-F */ 1057 F_UNASSIGNED, /* M-G */ 1058 F_UNASSIGNED, /* M-H */ 1059 F_UNASSIGNED, /* M-I */ 1060 F_UNASSIGNED, /* M-J */ 1061 F_UNASSIGNED, /* M-K */ 1062 F_UNASSIGNED, /* M-L */ 1063 F_UNASSIGNED, /* M-M */ 1064 F_UNASSIGNED, /* M-N */ 1065 F_XKEY, /* M-O *//* extended key esc PWP Mar 88 */ 1066 F_UNASSIGNED, /* M-P */ 1067 F_UNASSIGNED, /* M-Q */ 1068 F_UNASSIGNED, /* M-R */ 1069 F_UNASSIGNED, /* M-S */ 1070 F_UNASSIGNED, /* M-T */ 1071 F_UNASSIGNED, /* M-U */ 1072 F_UNASSIGNED, /* M-V */ 1073 F_UNASSIGNED, /* M-W */ 1074 F_UNASSIGNED, /* M-X */ 1075 F_UNASSIGNED, /* M-Y */ 1076 F_UNASSIGNED, /* M-Z */ 1077 F_XKEY, /* M-[ *//* extended key esc -mf Oct 87 */ 1078 F_UNASSIGNED, /* M-\ */ 1079 F_UNASSIGNED, /* M-] */ 1080 F_UNASSIGNED, /* M-^ */ 1081 F_UNASSIGNED, /* M-_ */ 1082 F_UNASSIGNED, /* M-` */ 1083 F_UNASSIGNED, /* M-a */ 1084 F_UNASSIGNED, /* M-b */ 1085 F_UNASSIGNED, /* M-c */ 1086 F_UNASSIGNED, /* M-d */ 1087 F_UNASSIGNED, /* M-e */ 1088 F_UNASSIGNED, /* M-f */ 1089 F_UNASSIGNED, /* M-g */ 1090 F_UNASSIGNED, /* M-h */ 1091 F_UNASSIGNED, /* M-i */ 1092 F_UNASSIGNED, /* M-j */ 1093 F_UNASSIGNED, /* M-k */ 1094 F_UNASSIGNED, /* M-l */ 1095 F_UNASSIGNED, /* M-m */ 1096 F_UNASSIGNED, /* M-n */ 1097 F_UNASSIGNED, /* M-o */ 1098 F_UNASSIGNED, /* M-p */ 1099 F_UNASSIGNED, /* M-q */ 1100 F_UNASSIGNED, /* M-r */ 1101 F_UNASSIGNED, /* M-s */ 1102 F_UNASSIGNED, /* M-t */ 1103 F_UNASSIGNED, /* M-u */ 1104 F_UNASSIGNED, /* M-v */ 1105 F_UNASSIGNED, /* M-w */ 1106 F_UNASSIGNED, /* M-x */ 1107 F_UNASSIGNED, /* M-y */ 1108 F_UNASSIGNED, /* M-z */ 1109 F_UNASSIGNED, /* M-{ */ 1110 F_UNASSIGNED, /* M-| */ 1111 F_UNASSIGNED, /* M-} */ 1112 F_UNASSIGNED, /* M-~ */ 1113 F_UNASSIGNED /* M-^? */ 1114 }; 1115 #endif /* WINNT_NATIVE */ 1116 1117 1118 void 1119 editinit(void) 1120 { 1121 struct KeyFuncs *f; 1122 1123 #if defined(NLS_CATALOGS) || defined(WINNT_NATIVE) 1124 int i; 1125 1126 for (i = 0; i < F_NUM_FUNCNAMES; i++) 1127 xfree((ptr_t)(intptr_t)FuncNames[i].desc); 1128 #endif 1129 1130 f = FuncNames; 1131 f->name = "backward-char"; 1132 f->func = F_CHARBACK; 1133 f->desc = CSAVS(3, 1, "Move back a character"); 1134 1135 f++; 1136 f->name = "backward-delete-char"; 1137 f->func = F_DELPREV; 1138 f->desc = CSAVS(3, 2, "Delete the character behind cursor"); 1139 1140 f++; 1141 f->name = "backward-delete-word"; 1142 f->func = F_DELWORDPREV; 1143 f->desc = CSAVS(3, 3, 1144 "Cut from beginning of current word to cursor - saved in cut buffer"); 1145 1146 f++; 1147 f->name = "backward-kill-line"; 1148 f->func = F_KILLBEG; 1149 f->desc = CSAVS(3, 4, 1150 "Cut from beginning of line to cursor - save in cut buffer"); 1151 1152 f++; 1153 f->name = "backward-word"; 1154 f->func = F_WORDBACK; 1155 f->desc = CSAVS(3, 5, "Move to beginning of current word"); 1156 1157 f++; 1158 f->name = "beginning-of-line"; 1159 f->func = F_TOBEG; 1160 f->desc = CSAVS(3, 6, "Move to beginning of line"); 1161 1162 f++; 1163 f->name = "capitalize-word"; 1164 f->func = F_CASECAPITAL; 1165 f->desc = CSAVS(3, 7, 1166 "Capitalize the characters from cursor to end of current word"); 1167 1168 f++; 1169 f->name = "change-case"; 1170 f->func = V_CHGCASE; 1171 f->desc = CSAVS(3, 8, 1172 "Vi change case of character under cursor and advance one character"); 1173 1174 f++; 1175 f->name = "change-till-end-of-line"; 1176 f->func = V_CHGTOEND; /* backward compat. */ 1177 f->desc = CSAVS(3, 9, "Vi change to end of line"); 1178 1179 f++; 1180 f->name = "clear-screen"; 1181 f->func = F_CLEARDISP; 1182 f->desc = CSAVS(3, 10, "Clear screen leaving current line on top"); 1183 1184 f++; 1185 f->name = "complete-word"; 1186 f->func = F_COMPLETE; 1187 f->desc = CSAVS(3, 11, "Complete current word"); 1188 1189 f++; 1190 f->name = "complete-word-fwd"; 1191 f->func = F_COMPLETE_FWD; 1192 f->desc = CSAVS(3, 12, "Tab forward through files"); 1193 1194 f++; 1195 f->name = "complete-word-back"; 1196 f->func = F_COMPLETE_BACK; 1197 f->desc = CSAVS(3, 13, "Tab backward through files"); 1198 1199 f++; 1200 f->name = "complete-word-raw"; 1201 f->func = F_COMPLETE_ALL; 1202 f->desc = CSAVS(3, 14, 1203 "Complete current word ignoring programmable completions"); 1204 1205 f++; 1206 f->name = "copy-prev-word"; 1207 f->func = F_COPYPREV; 1208 f->desc = CSAVS(3, 15, "Copy current word to cursor"); 1209 1210 f++; 1211 f->name = "copy-region-as-kill"; 1212 f->func = F_COPYREGION; 1213 f->desc = CSAVS(3, 16, "Copy area between mark and cursor to cut buffer"); 1214 1215 f++; 1216 f->name = "dabbrev-expand"; 1217 f->func = F_DABBREV_EXPAND; 1218 f->desc = CSAVS(3, 17, 1219 "Expand to preceding word for which this is a prefix"); 1220 1221 f++; 1222 f->name = "delete-char"; 1223 f->func = F_DELNEXT; 1224 f->desc = CSAVS(3, 18, "Delete character under cursor"); 1225 1226 f++; 1227 f->name = "delete-char-or-eof"; 1228 f->func = F_DELNEXT_EOF; 1229 f->desc = CSAVS(3, 19, 1230 "Delete character under cursor or signal end of file on an empty line"); 1231 1232 f++; 1233 f->name = "delete-char-or-list"; 1234 f->func = F_DELNEXT_LIST; 1235 f->desc = CSAVS(3, 20, 1236 "Delete character under cursor or list completions if at end of line"); 1237 1238 f++; 1239 f->name = "delete-char-or-list-or-eof"; 1240 f->func = F_DELNEXT_LIST_EOF; 1241 f->desc = CSAVS(3, 21, 1242 "Delete character under cursor, list completions or signal end of file"); 1243 1244 f++; 1245 f->name = "delete-word"; 1246 f->func = F_DELWORDNEXT; 1247 f->desc = CSAVS(3, 22, 1248 "Cut from cursor to end of current word - save in cut buffer"); 1249 1250 f++; 1251 f->name = "digit"; 1252 f->func = F_DIGIT; 1253 f->desc = CSAVS(3, 23, "Adds to argument if started or enters digit"); 1254 1255 f++; 1256 f->name = "digit-argument"; 1257 f->func = F_ARGDIGIT; 1258 f->desc = CSAVS(3, 24, "Digit that starts argument"); 1259 1260 f++; 1261 f->name = "down-history"; 1262 f->func = F_DOWN_HIST; 1263 f->desc = CSAVS(3, 25, "Move to next history line"); 1264 1265 f++; 1266 f->name = "downcase-word"; 1267 f->func = F_CASELOWER; 1268 f->desc = CSAVS(3, 26, 1269 "Lowercase the characters from cursor to end of current word"); 1270 1271 f++; 1272 f->name = "end-of-file"; 1273 f->func = F_SEND_EOF; 1274 f->desc = CSAVS(3, 27, "Indicate end of file"); 1275 1276 f++; 1277 f->name = "end-of-line"; 1278 f->func = F_TOEND; 1279 f->desc = CSAVS(3, 28, "Move cursor to end of line"); 1280 1281 f++; 1282 f->name = "exchange-point-and-mark"; 1283 f->func = F_EXCHANGE_MARK; 1284 f->desc = CSAVS(3, 29, "Exchange the cursor and mark"); 1285 1286 f++; 1287 f->name = "expand-glob"; 1288 f->func = F_EXPAND_GLOB; 1289 f->desc = CSAVS(3, 30, "Expand file name wildcards"); 1290 1291 f++; 1292 f->name = "expand-history"; 1293 f->func = F_EXPAND_HISTORY; 1294 f->desc = CSAVS(3, 31, "Expand history escapes"); 1295 1296 f++; 1297 f->name = "expand-line"; 1298 f->func = F_EXPAND; 1299 f->desc = CSAVS(3, 32, "Expand the history escapes in a line"); 1300 1301 f++; 1302 f->name = "expand-variables"; 1303 f->func = F_EXPAND_VARS; 1304 f->desc = CSAVS(3, 33, "Expand variables"); 1305 1306 f++; 1307 f->name = "forward-char"; 1308 f->func = F_CHARFWD; 1309 f->desc = CSAVS(3, 34, "Move forward one character"); 1310 1311 f++; 1312 f->name = "forward-word"; 1313 f->func = F_WORDFWD; 1314 f->desc = CSAVS(3, 35, "Move forward to end of current word"); 1315 1316 f++; 1317 f->name = "gosmacs-transpose-chars"; 1318 f->func = F_GCHARSWITCH; 1319 f->desc = CSAVS(3, 36, "Exchange the two characters before the cursor"); 1320 1321 f++; 1322 f->name = "history-search-backward"; 1323 f->func = F_UP_SEARCH_HIST; 1324 f->desc = CSAVS(3, 37, 1325 "Search in history backward for line beginning as current"); 1326 1327 f++; 1328 f->name = "history-search-forward"; 1329 f->func = F_DOWN_SEARCH_HIST; 1330 f->desc = CSAVS(3, 38, 1331 "Search in history forward for line beginning as current"); 1332 1333 f++; 1334 f->name = "insert-last-word"; 1335 f->func = F_LAST_ITEM; 1336 f->desc = CSAVS(3, 39, "Insert last item of previous command"); 1337 1338 f++; 1339 f->name = "i-search-fwd"; 1340 f->func = F_INC_FWD; 1341 f->desc = CSAVS(3, 40, "Incremental search forward"); 1342 1343 f++; 1344 f->name = "i-search-back"; 1345 f->func = F_INC_BACK; 1346 f->desc = CSAVS(3, 41, "Incremental search backward"); 1347 1348 f++; 1349 f->name = "keyboard-quit"; 1350 f->func = F_STARTOVER; 1351 f->desc = CSAVS(3, 42, "Clear line"); 1352 1353 f++; 1354 f->name = "kill-line"; 1355 f->func = F_KILLEND; 1356 f->desc = CSAVS(3, 43, "Cut to end of line and save in cut buffer"); 1357 1358 f++; 1359 f->name = "kill-region"; 1360 f->func = F_KILLREGION; 1361 f->desc = CSAVS(3, 44, 1362 "Cut area between mark and cursor and save in cut buffer"); 1363 1364 f++; 1365 f->name = "kill-whole-line"; 1366 f->func = F_KILLALL; 1367 f->desc = CSAVS(3, 45, "Cut the entire line and save in cut buffer"); 1368 1369 f++; 1370 f->name = "list-choices"; 1371 f->func = F_LIST_CHOICES; 1372 f->desc = CSAVS(3, 46, "List choices for completion"); 1373 1374 f++; 1375 f->name = "list-choices-raw"; 1376 f->func = F_LIST_ALL; 1377 f->desc = CSAVS(3, 47, 1378 "List choices for completion overriding programmable completion"); 1379 1380 f++; 1381 f->name = "list-glob"; 1382 f->func = F_LIST_GLOB; 1383 f->desc = CSAVS(3, 48, "List file name wildcard matches"); 1384 1385 f++; 1386 f->name = "list-or-eof"; 1387 f->func = F_LIST_EOF; 1388 f->desc = CSAVS(3, 49, 1389 "List choices for completion or indicate end of file if empty line"); 1390 1391 f++; 1392 f->name = "load-average"; 1393 f->func = F_LOAD_AVERAGE; 1394 f->desc = CSAVS(3, 50, "Display load average and current process status"); 1395 1396 f++; 1397 f->name = "magic-space"; 1398 f->func = F_MAGIC_SPACE; 1399 f->desc = CSAVS(3, 51, "Expand history escapes and insert a space"); 1400 1401 f++; 1402 f->name = "newline"; 1403 f->func = F_NEWLINE; 1404 f->desc = CSAVS(3, 52, "Execute command"); 1405 1406 f++; 1407 f->name = "newline-and-hold"; 1408 f->func = F_NEWLINE_HOLD; 1409 f->desc = CSAVS(3, 122, "Execute command and keep current line"); 1410 1411 f++; 1412 f->name = "newline-and-down-history"; 1413 f->func = F_NEWLINE_DOWN_HIST; 1414 f->desc = CSAVS(3, 123, "Execute command and move to next history line"); 1415 1416 f++; 1417 f->name = "normalize-path"; 1418 f->func = F_PATH_NORM; 1419 f->desc = CSAVS(3, 53, 1420 "Expand pathnames, eliminating leading .'s and ..'s"); 1421 1422 f++; 1423 f->name = "normalize-command"; 1424 f->func = F_COMMAND_NORM; 1425 f->desc = CSAVS(3, 54, 1426 "Expand commands to the resulting pathname or alias"); 1427 1428 f++; 1429 f->name = "overwrite-mode"; 1430 f->func = F_INSOVR; 1431 f->desc = CSAVS(3, 55, 1432 "Switch from insert to overwrite mode or vice versa"); 1433 1434 f++; 1435 f->name = "prefix-meta"; 1436 f->func = F_METANEXT; 1437 f->desc = CSAVS(3, 56, "Add 8th bit to next character typed"); 1438 1439 f++; 1440 f->name = "quoted-insert"; 1441 f->func = F_QUOTE; 1442 f->desc = CSAVS(3, 57, "Add the next character typed to the line verbatim"); 1443 1444 f++; 1445 f->name = "redisplay"; 1446 f->func = F_REDISP; 1447 f->desc = CSAVS(3, 58, "Redisplay everything"); 1448 1449 f++; 1450 f->name = "run-fg-editor"; 1451 f->func = F_RUN_FG_EDITOR; 1452 f->desc = CSAVS(3, 59, "Restart stopped editor"); 1453 1454 f++; 1455 f->name = "run-help"; 1456 f->func = F_HELPME; 1457 f->desc = CSAVS(3, 60, "Look for help on current command"); 1458 1459 f++; 1460 f->name = "self-insert-command"; 1461 f->func = F_INSERT; 1462 f->desc = CSAVS(3, 61, "This character is added to the line"); 1463 1464 f++; 1465 f->name = "sequence-lead-in"; 1466 f->func = F_XKEY; 1467 f->desc = CSAVS(3, 62, 1468 "This character is the first in a character sequence"); 1469 1470 f++; 1471 f->name = "set-mark-command"; 1472 f->func = F_SET_MARK; 1473 f->desc = CSAVS(3, 63, "Set the mark at cursor"); 1474 1475 f++; 1476 f->name = "spell-word"; 1477 f->func = F_CORRECT; 1478 f->desc = CSAVS(3, 64, "Correct the spelling of current word"); 1479 1480 f++; 1481 f->name = "spell-line"; 1482 f->func = F_CORRECT_L; 1483 f->desc = CSAVS(3, 65, "Correct the spelling of entire line"); 1484 1485 f++; 1486 f->name = "stuff-char"; 1487 f->func = F_STUFF_CHAR; 1488 f->desc = CSAVS(3, 66, "Send character to tty in cooked mode"); 1489 1490 f++; 1491 f->name = "toggle-literal-history"; 1492 f->func = F_TOGGLE_HIST; 1493 f->desc = CSAVS(3, 67, 1494 "Toggle between literal and lexical current history line"); 1495 1496 f++; 1497 f->name = "transpose-chars"; 1498 f->func = F_CHARSWITCH; 1499 f->desc = CSAVS(3, 68, 1500 "Exchange the character to the left of the cursor with the one under"); 1501 1502 f++; 1503 f->name = "transpose-gosling"; 1504 f->func = F_GCHARSWITCH; 1505 f->desc = CSAVS(3, 69, "Exchange the two characters before the cursor"); 1506 1507 f++; 1508 f->name = "tty-dsusp"; 1509 f->func = F_TTY_DSUSP; 1510 f->desc = CSAVS(3, 70, "Tty delayed suspend character"); 1511 1512 f++; 1513 f->name = "tty-flush-output"; 1514 f->func = F_TTY_FLUSHO; 1515 f->desc = CSAVS(3, 71, "Tty flush output character"); 1516 1517 f++; 1518 f->name = "tty-sigintr"; 1519 f->func = F_TTY_INT; 1520 f->desc = CSAVS(3, 72, "Tty interrupt character"); 1521 1522 f++; 1523 f->name = "tty-sigquit"; 1524 f->func = F_TTY_QUIT; 1525 f->desc = CSAVS(3, 73, "Tty quit character"); 1526 1527 f++; 1528 f->name = "tty-sigtsusp"; 1529 f->func = F_TTY_TSUSP; 1530 f->desc = CSAVS(3, 74, "Tty suspend character"); 1531 1532 f++; 1533 f->name = "tty-start-output"; 1534 f->func = F_TTY_STARTO; 1535 f->desc = CSAVS(3, 75, "Tty allow output character"); 1536 1537 f++; 1538 f->name = "tty-stop-output"; 1539 f->func = F_TTY_STOPO; 1540 f->desc = CSAVS(3, 76, "Tty disallow output character"); 1541 1542 f++; 1543 f->name = "undefined-key"; 1544 f->func = F_UNASSIGNED; 1545 f->desc = CSAVS(3, 77, "Indicates unbound character"); 1546 1547 f++; 1548 f->name = "universal-argument"; 1549 f->func = F_ARGFOUR; 1550 f->desc = CSAVS(3, 78, "Emacs universal argument (argument times 4)"); 1551 1552 f++; 1553 f->name = "up-history"; 1554 f->func = F_UP_HIST; 1555 f->desc = CSAVS(3, 79, "Move to previous history line"); 1556 1557 f++; 1558 f->name = "upcase-word"; 1559 f->func = F_CASEUPPER; 1560 f->desc = CSAVS(3, 80, 1561 "Uppercase the characters from cursor to end of current word"); 1562 1563 f++; 1564 f->name = "vi-beginning-of-next-word"; 1565 f->func = V_WORDBEGNEXT; 1566 f->desc = CSAVS(3, 81, "Vi goto the beginning of next word"); 1567 1568 f++; 1569 f->name = "vi-add"; 1570 f->func = V_ADD; 1571 f->desc = CSAVS(3, 82, "Vi enter insert mode after the cursor"); 1572 1573 f++; 1574 f->name = "vi-add-at-eol"; 1575 f->func = V_ADDEND; 1576 f->desc = CSAVS(3, 83, "Vi enter insert mode at end of line"); 1577 1578 f++; 1579 f->name = "vi-chg-case"; 1580 f->func = V_CHGCASE; 1581 f->desc = CSAVS(3, 84, 1582 "Vi change case of character under cursor and advance one character"); 1583 1584 f++; 1585 f->name = "vi-chg-meta"; 1586 f->func = V_CHGMETA; 1587 f->desc = CSAVS(3, 85, "Vi change prefix command"); 1588 1589 f++; 1590 f->name = "vi-chg-to-eol"; 1591 f->func = V_CHGTOEND; 1592 f->desc = CSAVS(3, 86, "Vi change to end of line"); 1593 1594 f++; 1595 f->name = "vi-cmd-mode"; 1596 f->func = V_CMD_MODE; 1597 f->desc = CSAVS(3, 87, 1598 "Enter vi command mode (use alternative key bindings)"); 1599 1600 f++; 1601 f->name = "vi-cmd-mode-complete"; 1602 f->func = V_CM_COMPLETE; 1603 f->desc = CSAVS(3, 88, "Vi command mode complete current word"); 1604 1605 f++; 1606 f->name = "vi-delprev"; 1607 f->func = V_DELPREV; 1608 f->desc = CSAVS(3, 89, "Vi move to previous character (backspace)"); 1609 1610 f++; 1611 f->name = "vi-delmeta"; 1612 f->func = V_DELMETA; 1613 f->desc = CSAVS(3, 90, "Vi delete prefix command"); 1614 1615 f++; 1616 f->name = "vi-endword"; 1617 f->func = V_ENDWORD; 1618 f->desc = CSAVS(3, 91, 1619 "Vi move to the end of the current space delimited word"); 1620 1621 f++; 1622 f->name = "vi-eword"; 1623 f->func = V_EWORD; 1624 f->desc = CSAVS(3, 92, "Vi move to the end of the current word"); 1625 1626 f++; 1627 f->name = "vi-char-back"; 1628 f->func = V_CHAR_BACK; 1629 f->desc = CSAVS(3, 93, "Vi move to the character specified backward"); 1630 1631 f++; 1632 f->name = "vi-char-fwd"; 1633 f->func = V_CHAR_FWD; 1634 f->desc = CSAVS(3, 94, "Vi move to the character specified forward"); 1635 1636 f++; 1637 f->name = "vi-charto-back"; 1638 f->func = V_CHARTO_BACK; 1639 f->desc = CSAVS(3, 95, "Vi move up to the character specified backward"); 1640 1641 f++; 1642 f->name = "vi-charto-fwd"; 1643 f->func = V_CHARTO_FWD; 1644 f->desc = CSAVS(3, 96, "Vi move up to the character specified forward"); 1645 1646 f++; 1647 f->name = "vi-insert"; 1648 f->func = V_INSERT; 1649 f->desc = CSAVS(3, 97, "Enter vi insert mode"); 1650 1651 f++; 1652 f->name = "vi-insert-at-bol"; 1653 f->func = V_INSBEG; 1654 f->desc = CSAVS(3, 98, "Enter vi insert mode at beginning of line"); 1655 1656 f++; 1657 f->name = "vi-repeat-char-fwd"; 1658 f->func = V_RCHAR_FWD; 1659 f->desc = CSAVS(3, 99, 1660 "Vi repeat current character search in the same search direction"); 1661 1662 f++; 1663 f->name = "vi-repeat-char-back"; 1664 f->func = V_RCHAR_BACK; 1665 f->desc = CSAVS(3, 100, 1666 "Vi repeat current character search in the opposite search direction"); 1667 1668 f++; 1669 f->name = "vi-repeat-search-fwd"; 1670 f->func = V_RSRCH_FWD; 1671 f->desc = CSAVS(3, 101, 1672 "Vi repeat current search in the same search direction"); 1673 1674 f++; 1675 f->name = "vi-repeat-search-back"; 1676 f->func = V_RSRCH_BACK; 1677 f->desc = CSAVS(3, 102, 1678 "Vi repeat current search in the opposite search direction"); 1679 1680 f++; 1681 f->name = "vi-replace-char"; 1682 f->func = V_REPLONE; 1683 f->desc = CSAVS(3, 103, 1684 "Vi replace character under the cursor with the next character typed"); 1685 1686 f++; 1687 f->name = "vi-replace-mode"; 1688 f->func = V_REPLMODE; 1689 f->desc = CSAVS(3, 104, "Vi replace mode"); 1690 1691 f++; 1692 f->name = "vi-search-back"; 1693 f->func = V_USH_META; 1694 f->desc = CSAVS(3, 105, "Vi search history backward"); 1695 1696 f++; 1697 f->name = "vi-search-fwd"; 1698 f->func = V_DSH_META; 1699 f->desc = CSAVS(3, 106, "Vi search history forward"); 1700 1701 f++; 1702 f->name = "vi-substitute-char"; 1703 f->func = V_SUBSTCHAR; 1704 f->desc = CSAVS(3, 107, 1705 "Vi replace character under the cursor and enter insert mode"); 1706 1707 f++; 1708 f->name = "vi-substitute-line"; 1709 f->func = V_SUBSTLINE; 1710 f->desc = CSAVS(3, 108, "Vi replace entire line"); 1711 1712 f++; 1713 f->name = "vi-word-back"; 1714 f->func = V_WORDBACK; 1715 f->desc = CSAVS(3, 109, "Vi move to the previous word"); 1716 1717 f++; 1718 f->name = "vi-word-fwd"; 1719 f->func = V_WORDFWD; 1720 f->desc = CSAVS(3, 110, "Vi move to the next word"); 1721 1722 f++; 1723 f->name = "vi-undo"; 1724 f->func = V_UNDO; 1725 f->desc = CSAVS(3, 111, "Vi undo last change"); 1726 1727 f++; 1728 f->name = "vi-zero"; 1729 f->func = V_ZERO; 1730 f->desc = CSAVS(3, 112, "Vi goto the beginning of line"); 1731 1732 f++; 1733 f->name = "which-command"; 1734 f->func = F_WHICH; 1735 f->desc = CSAVS(3, 113, "Perform which of current command"); 1736 1737 f++; 1738 f->name = "yank"; 1739 f->func = F_YANK_KILL; 1740 f->desc = CSAVS(3, 114, "Paste cut buffer at cursor position"); 1741 1742 f++; 1743 f->name = "yank-pop"; 1744 f->func = F_YANK_POP; 1745 f->desc = CSAVS(3, 115, 1746 "Replace just-yanked text with yank from earlier kill"); 1747 1748 f++; 1749 f->name = "e_dosify_next"; 1750 f->func = F_DOSIFY_NEXT; 1751 f->desc = CSAVS(3, 118, 1752 "(WIN32 only) Convert each '/' in next word to '\\\\'"); 1753 1754 f++; 1755 f->name = "e_dosify_prev"; 1756 f->func = F_DOSIFY_PREV; 1757 f->desc = CSAVS(3, 119, 1758 "(WIN32 only) Convert each '/' in previous word to '\\\\'"); 1759 1760 f++; 1761 f->name = "e_page_up"; 1762 f->func = F_PAGE_UP; 1763 f->desc = CSAVS(3, 120, "(WIN32 only) Page visible console window up"); 1764 1765 f++; 1766 f->name = "e_page_down"; 1767 f->func = F_PAGE_DOWN; 1768 f->desc = CSAVS(3, 121, "(WIN32 only) Page visible console window down"); 1769 1770 f++; 1771 f->name = NULL; 1772 f->func = 0; 1773 f->desc = NULL; 1774 1775 f++; 1776 if (f - FuncNames != F_NUM_FUNCNAMES) 1777 abort(); 1778 } 1779 1780 #ifdef DEBUG_EDIT 1781 void 1782 CheckMaps(void) 1783 { /* check the size of the key maps */ 1784 size_t c1 = NT_NUM_KEYS * sizeof(KEYCMD); 1785 1786 if (sizeof(CcKeyMap) != c1) 1787 xprintf("CcKeyMap should be %u entries, but is %zu.\r\n", 1788 NT_NUM_KEYS, sizeof(CcKeyMap) / sizeof(KEYCMD)); 1789 1790 if (sizeof(CcAltMap) != c1) 1791 xprintf("CcAltMap should be %u entries, but is %zu.\r\n", 1792 NT_NUM_KEYS, sizeof(CcAltMap) / sizeof(KEYCMD)); 1793 1794 if (sizeof(CcEmacsMap) != c1) 1795 xprintf("CcEmacsMap should be %u entries, but is %zu.\r\n", 1796 NT_NUM_KEYS, sizeof(CcEmacsMap) / sizeof(KEYCMD)); 1797 1798 if (sizeof(CcViMap) != c1) 1799 xprintf("CcViMap should be %u entries, but is %zu.\r\n", 1800 NT_NUM_KEYS, sizeof(CcViMap) / sizeof(KEYCMD)); 1801 1802 if (sizeof(CcViCmdMap) != c1) 1803 xprintf("CcViCmdMap should be %u entries, but is %zu.\r\n", 1804 NT_NUM_KEYS, sizeof(CcViCmdMap) / sizeof(KEYCMD)); 1805 } 1806 1807 #endif 1808 1809 int MapsAreInited = 0; 1810 int NLSMapsAreInited = 0; 1811 int NoNLSRebind; 1812 1813 void 1814 ed_InitNLSMaps(void) 1815 { 1816 int i; 1817 1818 if (AsciiOnly) 1819 return; 1820 if (NoNLSRebind) 1821 return; 1822 for (i = 0200; i <= 0377; i++) { 1823 if (Isprint(CTL_ESC(i))) { 1824 CcKeyMap[CTL_ESC(i)] = F_INSERT; 1825 } 1826 } 1827 NLSMapsAreInited = 1; 1828 } 1829 1830 static void 1831 ed_InitMetaBindings(void) 1832 { 1833 Char buf[3]; 1834 int i; 1835 CStr cstr; 1836 KEYCMD *map; 1837 1838 map = CcKeyMap; 1839 for (i = 0; i <= 0377 && CcKeyMap[CTL_ESC(i)] != F_METANEXT; i++) 1840 continue; 1841 if (i > 0377) { 1842 for (i = 0; i <= 0377 && CcAltMap[CTL_ESC(i)] != F_METANEXT; i++) 1843 continue; 1844 if (i > 0377) { 1845 i = '\033'; 1846 if (VImode) 1847 map = CcAltMap; 1848 } 1849 else { 1850 map = CcAltMap; 1851 } 1852 } 1853 buf[0] = (Char)CTL_ESC(i); 1854 buf[2] = 0; 1855 cstr.buf = buf; 1856 cstr.len = 2; 1857 for (i = 0200; i <= 0377; i++) { 1858 if (map[CTL_ESC(i)] != F_INSERT && map[CTL_ESC(i)] != F_UNASSIGNED && map[CTL_ESC(i)] != F_XKEY) { 1859 buf[1] = CTL_ESC(i & ASCII); 1860 AddXkey(&cstr, XmapCmd((int) map[CTL_ESC(i)]), XK_CMD); 1861 } 1862 } 1863 map[buf[0]] = F_XKEY; 1864 } 1865 1866 void 1867 ed_InitVIMaps(void) 1868 { 1869 int i; 1870 1871 VImode = 1; 1872 setNS(STRvimode); 1873 update_wordchars(); 1874 1875 ResetXmap(); 1876 for (i = 0; i < NT_NUM_KEYS; i++) { 1877 CcKeyMap[i] = CcViMap[i]; 1878 CcAltMap[i] = CcViCmdMap[i]; 1879 } 1880 ed_InitMetaBindings(); 1881 ed_InitNLSMaps(); 1882 ResetArrowKeys(); 1883 BindArrowKeys(); 1884 } 1885 1886 void 1887 ed_InitEmacsMaps(void) 1888 { 1889 int i; 1890 Char buf[3]; 1891 CStr cstr; 1892 cstr.buf = buf; 1893 cstr.len = 2; 1894 1895 VImode = 0; 1896 if (adrof(STRvimode)) 1897 unsetv(STRvimode); 1898 update_wordchars(); 1899 1900 ResetXmap(); 1901 for (i = 0; i < NT_NUM_KEYS; i++) { 1902 CcKeyMap[i] = CcEmacsMap[i]; 1903 CcAltMap[i] = F_UNASSIGNED; 1904 } 1905 ed_InitMetaBindings(); 1906 ed_InitNLSMaps(); 1907 buf[0] = CTL_ESC('\030'); 1908 buf[2] = 0; 1909 buf[1] = CTL_ESC('\030'); 1910 AddXkey(&cstr, XmapCmd(F_EXCHANGE_MARK), XK_CMD); 1911 buf[1] = '*'; 1912 AddXkey(&cstr, XmapCmd(F_EXPAND_GLOB), XK_CMD); 1913 buf[1] = '$'; 1914 AddXkey(&cstr, XmapCmd(F_EXPAND_VARS), XK_CMD); 1915 buf[1] = 'G'; 1916 AddXkey(&cstr, XmapCmd(F_LIST_GLOB), XK_CMD); 1917 buf[1] = 'g'; 1918 AddXkey(&cstr, XmapCmd(F_LIST_GLOB), XK_CMD); 1919 buf[1] = 'n'; 1920 AddXkey(&cstr, XmapCmd(F_PATH_NORM), XK_CMD); 1921 buf[1] = 'N'; 1922 AddXkey(&cstr, XmapCmd(F_PATH_NORM), XK_CMD); 1923 buf[1] = '?'; 1924 AddXkey(&cstr, XmapCmd(F_COMMAND_NORM), XK_CMD); 1925 buf[1] = '\t'; 1926 AddXkey(&cstr, XmapCmd(F_COMPLETE_ALL), XK_CMD); 1927 buf[1] = CTL_ESC('\004'); /* ^D */ 1928 AddXkey(&cstr, XmapCmd(F_LIST_ALL), XK_CMD); 1929 ResetArrowKeys(); 1930 BindArrowKeys(); 1931 } 1932 1933 void 1934 ed_InitMaps(void) 1935 { 1936 if (MapsAreInited) 1937 return; 1938 #ifndef IS_ASCII 1939 /* This machine has an EBCDIC charset. The assumptions made for the 1940 * initialized keymaps therefore don't hold, since they are based on 1941 * ASCII (or ISO8859-1). 1942 * Here, we do a one-time transformation to EBCDIC environment 1943 * for the key initializations. 1944 */ 1945 { 1946 KEYCMD temp[NT_NUM_KEYS]; 1947 static KEYCMD *const list[3] = { CcEmacsMap, CcViMap, CcViCmdMap }; 1948 int i, table; 1949 1950 for (table=0; table<3; ++table) 1951 { 1952 /* copy ASCII ordered map to temp table */ 1953 for (i = 0; i < NT_NUM_KEYS; i++) { 1954 temp[i] = list[table][i]; 1955 } 1956 /* write back as EBCDIC ordered map */ 1957 for (i = 0; i < NT_NUM_KEYS; i++) { 1958 list[table][_toebcdic[i]] = temp[i]; 1959 } 1960 } 1961 } 1962 #endif /* !IS_ASCII */ 1963 1964 #ifdef VIDEFAULT 1965 ed_InitVIMaps(); 1966 #else 1967 ed_InitEmacsMaps(); 1968 #endif 1969 1970 MapsAreInited = 1; 1971 } 1972