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