home *** CD-ROM | disk | FTP | other *** search
/ Mega Top 1 / os2_top1.zip / os2_top1 / DEMO / RIM22 / MACROS / KBDCUA.RM < prev    next >
Text File  |  1993-11-22  |  9KB  |  290 lines

  1. /*
  2. ** Macro module: kbdcua.rm - ASCII key bindings for CUA
  3. **
  4. ** Copyright (C) 1993 Brian L. Smith
  5. ** Copyright (C) 1993 RimStar Technology, Inc.
  6. ** All rights reserved internationally.
  7. ** Unlicensed use is a violation of applicable laws.
  8. **
  9. ** This source code is provided to licensed users of RimStar's products
  10. ** for the purpose of allowing the user to customize and/or enhance RimStar's
  11. ** products. The source code remains the property of the copyright holders
  12. ** with all rights reserved internationally.
  13. ** Any modifications to the source code are considered derivative works and
  14. ** all rights thereto are reserved to the copyright holders except
  15. ** that the purchaser may use the derivitive work in the same manner
  16. ** as permitted by the license governing the unmodified product.
  17. ** Distribution in any manner of any part of the original source code,
  18. ** whether in source or object form, is expressly prohibited without the
  19. ** express written permission of the copyright holders.
  20. **
  21. */
  22.  
  23. #include "macro.h"
  24.  
  25. /* These functions handle CUA style selection behavior */
  26.  
  27. void
  28. CUASel( char *func ) {
  29.     if ( !MarkQuerySelType() )
  30.         MarkBeginSel(SELECT_EXCLUSIVE);
  31.     ExecFunction( func );
  32. } /* end CUASel() */
  33.  
  34.  
  35. void
  36. CUAMov( char *func ) {
  37.     SELECTION sel;
  38.  
  39.     if ( MarkQuerySel( &sel, 0 ) ) {
  40.         MarkRemoveSel();
  41.         MovAbs( sel.s_line, sel.s_column );
  42.     }
  43.     ExecFunction( func );
  44. } /* end CUAMov() */
  45.  
  46.  
  47. void
  48. CUACopy( char *func ) {
  49.     ExecFunction( func );
  50.     if ( MarkQuerySelType() )
  51.         MarkRemoveSel();
  52. } /* end CUACopy() */
  53.  
  54.  
  55. void
  56. CUAInsert( void ) {
  57.     SELECTION sel;
  58.  
  59.     if ( MarkQuerySel( &sel, 1) ) {
  60.         BufDeleteCharOrSelection();
  61.         MovAbs( sel.s_line, sel.s_column );
  62.     }
  63.     SelfInsert();
  64. } /* end CUAInsert() */
  65.  
  66.  
  67. /*
  68. ** KbdBindAsciiKeys()
  69. **
  70. **    This version of KbdBindAsciiKeys() sets the standard typable key bindings
  71. ** for a keyboard using CUA style selection.
  72. **    Binds (assigns) all the typeable keys to the current keyboard mapping.
  73. ** KbdBindDefault() should call this function first.
  74. **    If you are defining a keyboard and want the standard typables
  75. **    just make your new keyboard the current keyboard and call this function.
  76. */
  77.  
  78. void
  79. KbdBindAsciiKeys(void) {
  80.     /*
  81.     ** To save memory only specify the string
  82.     ** once, then use a pointer to it
  83.     */
  84.     char  *cua_insert = "CUAInsert";    
  85.     char    *p;
  86.  
  87.     /* Bind the default CUA system menu accels */
  88.  
  89.     KbdBind("Ctrl+F4",        "WinDeleteCurrentWindow");
  90.     KbdBind("Ctrl+F5",        "WinRestore");
  91.     KbdBind("Ctrl+F7",        "WinMove");
  92.     KbdBind("Ctrl+F8",        "WinSize");
  93.     KbdBind("Ctrl+F9",        "WinMinimize");
  94.     KbdBind("Ctrl+F10",        "WinMaximize");
  95.     KbdBind("Ctrl+Space",    "WinSysMenu");
  96.     KbdBind("Alt+F4",            "ExitEditor");
  97.     KbdBind("Alt+F5",            "WinMainRestore");
  98.     KbdBind("Alt+F7",            "WinMainMove");
  99.     KbdBind("Alt+F8",            "WinMainSize");
  100.     KbdBind("Alt+F9",            "WinMainMinimize");
  101.     KbdBind("Alt+F10",        "WinMainMaximize");
  102.     KbdBind("Alt+F11",        "WinMainHide");
  103.     KbdBind("Alt+Space",        "WinMainSysMenu");
  104.  
  105.     /*
  106.     ** These are the standard typable key bindings
  107.     */
  108.  
  109.     KbdBind("KP_MINUS",              cua_insert);
  110.     KbdBind("KP_PLUS",            cua_insert);
  111.     KbdBind("KP_SLASH",              cua_insert);
  112.     KbdBind("KP_STAR",            cua_insert);
  113.     KbdBind("Shift+KP_DELETE", cua_insert);  // .
  114.     KbdBind("Shift+KP_INSERT", cua_insert);  // 0
  115.     KbdBind("Shift+KP_END",         cua_insert);  // 1
  116.     KbdBind("Shift+KP_DOWN",    cua_insert);  // 2
  117.     KbdBind("Shift+KP_PGDN",    cua_insert);  // 3
  118.     KbdBind("Shift+KP_LEFT",    cua_insert);  // 4
  119.     KbdBind("Shift+KP_5",        cua_insert);  // 5
  120.     KbdBind("Shift+KP_RIGHT",  cua_insert);  // 6
  121.     KbdBind("Shift+KP_HOME",    cua_insert);  // 7
  122.     KbdBind("Shift+KP_UP",          cua_insert);  // 8
  123.     KbdBind("Shift+KP_PGUP",    cua_insert);  // 9
  124.     KbdBind("Shift+KP_SLASH",  cua_insert);  // /
  125.     KbdBind("Shift+KP_STAR",    cua_insert);  // *
  126.     KbdBind("Shift+KP_MINUS",  cua_insert);  // -
  127.     KbdBind("Shift+KP_PLUS",    cua_insert);  // +
  128.  
  129.     KbdBind("Ctrl+`", cua_insert);
  130.     KbdBind("Ctrl+1", cua_insert);
  131.     KbdBind("Ctrl+2", cua_insert);
  132.     KbdBind("Ctrl+3", cua_insert);
  133.     KbdBind("Ctrl+4", cua_insert);
  134.     KbdBind("Ctrl+5", cua_insert);
  135.     KbdBind("Ctrl+6", cua_insert);
  136.     KbdBind("Ctrl+7", cua_insert);
  137.     KbdBind("Ctrl+8", cua_insert);
  138.     KbdBind("Ctrl+9", cua_insert);
  139.     KbdBind("Ctrl+0", cua_insert);
  140.     KbdBind("Ctrl+=", cua_insert);
  141.     KbdBind("Ctrl+[", cua_insert);
  142.     KbdBind("Ctrl+]", cua_insert);
  143.     KbdBind("Ctrl+\\",cua_insert);
  144.     KbdBind("Ctrl+;", cua_insert);
  145.     KbdBind("Ctrl+'", cua_insert);
  146.     KbdBind("Ctrl+,", cua_insert);
  147.     KbdBind("Ctrl+.", cua_insert);
  148.     KbdBind("Ctrl+/", cua_insert);
  149.     KbdBind("ESCAPE", cua_insert);
  150.  
  151.     KbdBind("Ctrl+A", cua_insert);
  152.     KbdBind("Ctrl+B", cua_insert);
  153.     KbdBind("Ctrl+C", cua_insert);
  154.     KbdBind("Ctrl+D", cua_insert);
  155.     KbdBind("Ctrl+E", cua_insert);
  156.     KbdBind("Ctrl+F", cua_insert);
  157.     KbdBind("Ctrl+G", cua_insert);
  158.     KbdBind("Ctrl+H", cua_insert);
  159.     KbdBind("Ctrl+I", cua_insert);
  160.     KbdBind("Ctrl+J", cua_insert);
  161.     KbdBind("Ctrl+L", cua_insert);
  162.     KbdBind("Ctrl+M", cua_insert);
  163.     KbdBind("Ctrl+N", cua_insert);
  164.     KbdBind("Ctrl+O", cua_insert);
  165.     KbdBind("Ctrl+P", cua_insert);
  166.     KbdBind("Ctrl+Q", cua_insert);
  167.     KbdBind("Ctrl+R", cua_insert);
  168.     KbdBind("Ctrl+S", cua_insert);
  169.     KbdBind("Ctrl+T", cua_insert);
  170.     KbdBind("Ctrl+U", cua_insert);
  171.     KbdBind("Ctrl+V", cua_insert);
  172.     KbdBind("Ctrl+W", cua_insert);
  173.     KbdBind("Ctrl+X", cua_insert);
  174.     KbdBind("Ctrl+Y", cua_insert);
  175.     KbdBind("Ctrl+Z", cua_insert);
  176.  
  177.     KbdBind("`", cua_insert);
  178.     KbdBind("1", cua_insert);
  179.     KbdBind("2", cua_insert);
  180.     KbdBind("3", cua_insert);
  181.     KbdBind("4", cua_insert);
  182.     KbdBind("5", cua_insert);
  183.     KbdBind("6", cua_insert);
  184.     KbdBind("7", cua_insert);
  185.     KbdBind("8", cua_insert);
  186.     KbdBind("9", cua_insert);
  187.     KbdBind("0", cua_insert);
  188.     KbdBind("-", cua_insert);
  189.     KbdBind("=", cua_insert);
  190.     KbdBind("[", cua_insert);
  191.     KbdBind("]", cua_insert);
  192.     KbdBind("\\",cua_insert);
  193.     KbdBind(";", cua_insert);
  194.     KbdBind("'", cua_insert);
  195.     KbdBind(",", cua_insert);
  196.     KbdBind(".", cua_insert);
  197.     KbdBind("/", cua_insert);
  198.  
  199.     KbdBind("Shift+`", cua_insert);    // ~    Shifted punctuation - 
  200.     KbdBind("Shift+1", cua_insert);    // !    You could use the shifted
  201.     KbdBind("Shift+2", cua_insert);    // @    ascii version of the letter
  202.     KbdBind("Shift+3", cua_insert);    // #    but you MUST still specify
  203.     KbdBind("Shift+4", cua_insert);    //    $    the SHIFT key modifier.
  204.     KbdBind("Shift+5", cua_insert);    //    %
  205.     KbdBind("Shift+6", cua_insert);    //    ^
  206.     KbdBind("Shift+7", cua_insert);    //    &
  207.     KbdBind("Shift+8", cua_insert);    //    *
  208.     KbdBind("Shift+9", cua_insert);    //    (
  209.     KbdBind("Shift+0", cua_insert);    // )
  210.     KbdBind("Shift+-", cua_insert);    // _
  211.     KbdBind("Shift+=", cua_insert);    // +
  212.     KbdBind("Shift+[", cua_insert);    // {
  213.     KbdBind("Shift+]", cua_insert);    // }
  214.     KbdBind("Shift+|", cua_insert);    // |
  215.     KbdBind("Shift+;", cua_insert);    //    :
  216.     KbdBind("Shift+'", cua_insert);    //    "
  217.     KbdBind("Shift+,", cua_insert);    // <
  218.     KbdBind("Shift+.", cua_insert);    //    >
  219.     KbdBind("Shift+/", cua_insert);    // ?
  220.  
  221.     KbdBind("Shift+A", cua_insert);    // Upper-case letters
  222.     KbdBind("Shift+B", cua_insert);
  223.     KbdBind("Shift+C", cua_insert);
  224.     KbdBind("Shift+D", cua_insert);
  225.     KbdBind("Shift+E", cua_insert);
  226.     KbdBind("Shift+F", cua_insert);
  227.     KbdBind("Shift+G", cua_insert);
  228.     KbdBind("Shift+H", cua_insert);
  229.     KbdBind("Shift+I", cua_insert);
  230.     KbdBind("Shift+J", cua_insert);
  231.     KbdBind("Shift+K", cua_insert);
  232.     KbdBind("Shift+L", cua_insert);
  233.     KbdBind("Shift+M", cua_insert);
  234.     KbdBind("Shift+N", cua_insert);
  235.     KbdBind("Shift+O", cua_insert);
  236.     KbdBind("Shift+P", cua_insert);
  237.     KbdBind("Shift+Q", cua_insert);
  238.     KbdBind("Shift+R", cua_insert);
  239.     KbdBind("Shift+S", cua_insert);
  240.     KbdBind("Shift+T", cua_insert);
  241.     KbdBind("Shift+U", cua_insert);
  242.     KbdBind("Shift+V", cua_insert);
  243.     KbdBind("Shift+W", cua_insert);
  244.     KbdBind("Shift+X", cua_insert);
  245.     KbdBind("Shift+Y", cua_insert);
  246.     KbdBind("Shift+Z", cua_insert);
  247.  
  248.     KbdBind("A", cua_insert);    // Lower-case letters
  249.     KbdBind("B", cua_insert);
  250.     KbdBind("C", cua_insert);
  251.     KbdBind("D", cua_insert);
  252.     KbdBind("E", cua_insert);
  253.     KbdBind("F", cua_insert);
  254.     KbdBind("G", cua_insert);
  255.     KbdBind("H", cua_insert);
  256.     KbdBind("I", cua_insert);
  257.     KbdBind("J", cua_insert);
  258.     KbdBind("K", cua_insert);
  259.     KbdBind("L", cua_insert);
  260.     KbdBind("M", cua_insert);
  261.     KbdBind("N", cua_insert);
  262.     KbdBind("O", cua_insert);
  263.     KbdBind("P", cua_insert);
  264.     KbdBind("Q", cua_insert);
  265.     KbdBind("R", cua_insert);
  266.     KbdBind("S", cua_insert);
  267.     KbdBind("T", cua_insert);
  268.     KbdBind("U", cua_insert);
  269.     KbdBind("V", cua_insert);
  270.     KbdBind("W", cua_insert);
  271.     KbdBind("X", cua_insert);
  272.     KbdBind("Y", cua_insert);
  273.     KbdBind("Z", cua_insert); 
  274.  
  275.     KbdBind("Shift+ENTER",    p = "BufInsertChar 10");
  276.     KbdBind("KP_ENTER",        p);
  277.     KbdBind("ENTER",            p);
  278.     KbdBind("Shift+ENTER",    p);
  279.  
  280.     KbdBind("TAB",                cua_insert);
  281.     KbdBind("SPACE",            cua_insert);
  282.     KbdBind("Shift+SPACE",    cua_insert);
  283.  
  284. } /* end KbdBindAsciiKeys() */
  285.  
  286.  
  287. /*
  288. ** End module: kbdcua.c
  289. */
  290.