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