home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / X / mit / server / ddx / sun / sunKeyMap.c < prev    next >
Encoding:
C/C++ Source or Header  |  1991-06-10  |  21.8 KB  |  547 lines

  1. /************************************************************
  2. Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
  3.  
  4.                     All Rights Reserved
  5.  
  6. Permission  to  use,  copy,  modify,  and  distribute   this
  7. software  and  its documentation for any purpose and without
  8. fee is hereby granted, provided that the above copyright no-
  9. tice  appear  in all copies and that both that copyright no-
  10. tice and this permission notice appear in  supporting  docu-
  11. mentation,  and  that the names of Sun or MIT not be used in
  12. advertising or publicity pertaining to distribution  of  the
  13. software  without specific prior written permission. Sun and
  14. M.I.T. make no representations about the suitability of this
  15. software for any purpose. It is provided "as is" without any
  16. express or implied warranty.
  17.  
  18. SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
  19. INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
  20. NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
  21. ABLE  FOR  ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
  22. ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,  DATA  OR
  23. PROFITS,  WHETHER  IN  AN  ACTION OF CONTRACT, NEGLIGENCE OR
  24. OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION  WITH
  25. THE USE OR PERFORMANCE OF THIS SOFTWARE.
  26.  
  27. ********************************************************/
  28.  
  29. #include    "sun.h"
  30. #include    "keysym.h"
  31.  
  32. /*
  33.  *    XXX - Its not clear what to map these to for now.
  34.  *    keysyms.h doesn't define enough function key names.
  35.  */
  36.  
  37.  
  38. #ifndef    XK_L1
  39. #define    XK_L1    XK_Cancel
  40. #define    XK_L2    XK_Redo
  41. #define    XK_R1    NoSymbol
  42. #define    XK_R2    NoSymbol
  43. #define    XK_R3    NoSymbol
  44. #define    XK_L3    XK_Menu
  45. #define    XK_L4    XK_Undo
  46. #define    XK_R4    NoSymbol
  47. #define    XK_R5    NoSymbol
  48. #define    XK_R6    NoSymbol
  49. #define    XK_L5    XK_Insert
  50. #define    XK_L6    XK_Select
  51. #define    XK_R7    NoSymbol
  52. #define    XK_R8    XK_Up
  53. #define    XK_R9    NoSymbol
  54. #define    XK_L7    XK_Execute
  55. #define    XK_L8    XK_Print
  56. #define    XK_R10    XK_Left
  57. #define    XK_R11    XK_Home
  58. #define    XK_R12    XK_Right
  59. #define    XK_L9    XK_Find
  60. #define    XK_L10    XK_Help
  61. #define    XK_R13    NoSymbol
  62. #define    XK_R14    XK_Down
  63. #define    XK_R15    NoSymbol
  64. #endif
  65.  
  66. #ifdef    notdef
  67. static KeySym KlunkMap[] = {
  68. };
  69.  
  70. static KeySym VT100[] = {
  71. };
  72. #endif
  73.  
  74. static KeySym Sun2Map[] = {
  75.     XK_L1,        NoSymbol,        /* 0x01 */
  76.     NoSymbol,    NoSymbol,        /* 0x02 */
  77.     XK_L2,        NoSymbol,        /* 0x03 */
  78.     NoSymbol,    NoSymbol,        /* 0x4 */
  79.     XK_F1,        NoSymbol,        /* 0x5 */
  80.     XK_F2,        NoSymbol,        /* 0x6 */
  81.     NoSymbol,    NoSymbol,        /* 0x7 */
  82.     XK_F3,        NoSymbol,        /* 0x8 */
  83.     NoSymbol,    NoSymbol,        /* 0x9 */
  84.     XK_F4,        NoSymbol,        /* 0xa */
  85.     NoSymbol,    NoSymbol,        /* 0xb */
  86.     XK_F5,        NoSymbol,        /* 0xc */
  87.     NoSymbol,    NoSymbol,        /* 0xd */
  88.     XK_F6,        NoSymbol,        /* 0xe */
  89.     NoSymbol,    NoSymbol,        /* 0xf */
  90.     XK_F7,        NoSymbol,        /* 0x10 */
  91.     XK_F8,        NoSymbol,        /* 0x11 */
  92.     XK_F9,        NoSymbol,        /* 0x12 */
  93.     XK_Break,    NoSymbol,        /* 0x13 */
  94.     NoSymbol,    NoSymbol,        /* 0x14 */
  95.     XK_R1,        NoSymbol,        /* 0x15 */
  96.     XK_R2,        NoSymbol,        /* 0x16 */
  97.     XK_R3,        NoSymbol,        /* 0x17 */
  98.     NoSymbol,    NoSymbol,        /* 0x18 */
  99.     XK_L3,        NoSymbol,        /* 0x19 */
  100.     XK_L4,        NoSymbol,        /* 0x1a */
  101.     NoSymbol,    NoSymbol,        /* 0x1b */
  102.     NoSymbol,    NoSymbol,        /* 0x1c */
  103.     XK_Escape,    NoSymbol,        /* 0x1d */
  104.     XK_1,        XK_exclam,        /* 0x1e */
  105.     XK_2,        XK_at,            /* 0x1f */
  106.     XK_3,        XK_numbersign,        /* 0x20 */
  107.     XK_4,        XK_dollar,        /* 0x21 */
  108.     XK_5,        XK_percent,        /* 0x22 */
  109.     XK_6,        XK_asciicircum,        /* 0x23 */
  110.     XK_7,        XK_ampersand,        /* 0x24 */
  111.     XK_8,        XK_asterisk,        /* 0x25 */
  112.     XK_9,        XK_parenleft,        /* 0x26 */
  113.     XK_0,        XK_parenright,        /* 0x27 */
  114.     XK_minus,    XK_underscore,        /* 0x28 */
  115.     XK_equal,    XK_plus,        /* 0x29 */
  116.     XK_quoteleft,    XK_asciitilde,        /* 0x2a */
  117.     XK_BackSpace,    NoSymbol,        /* 0x2b */
  118.     NoSymbol,    NoSymbol,        /* 0x2c */
  119.     XK_R4,        NoSymbol,        /* 0x2d */
  120.     XK_R5,        NoSymbol,        /* 0x2e */
  121.     XK_R6,        NoSymbol,        /* 0x2f */
  122.     NoSymbol,    NoSymbol,        /* 0x30 */
  123.     XK_L5,        NoSymbol,        /* 0x31 */
  124.     NoSymbol,    NoSymbol,        /* 0x32 */
  125.     XK_L6,        NoSymbol,        /* 0x33 */
  126.     NoSymbol,    NoSymbol,        /* 0x34 */
  127.     XK_Tab,        NoSymbol,        /* 0x35 */
  128.     XK_Q,        NoSymbol,        /* 0x36 */
  129.     XK_W,        NoSymbol,        /* 0x37 */
  130.     XK_E,        NoSymbol,        /* 0x38 */
  131.     XK_R,        NoSymbol,        /* 0x39 */
  132.     XK_T,        NoSymbol,        /* 0x3a */
  133.     XK_Y,        NoSymbol,        /* 0x3b */
  134.     XK_U,        NoSymbol,        /* 0x3c */
  135.     XK_I,        NoSymbol,        /* 0x3d */
  136.     XK_O,        NoSymbol,        /* 0x3e */
  137.     XK_P,        NoSymbol,        /* 0x3f */
  138.     XK_bracketleft,    XK_braceleft,        /* 0x40 */
  139.     XK_bracketright,    XK_braceright,    /* 0x41 */
  140.     XK_Delete,    NoSymbol,        /* 0x42 */
  141.     NoSymbol,    NoSymbol,        /* 0x43 */
  142.     XK_R7,        NoSymbol,        /* 0x44 */
  143.     XK_Up,        XK_R8,            /* 0x45 */
  144.     XK_R9,        NoSymbol,        /* 0x46 */
  145.     NoSymbol,    NoSymbol,        /* 0x47 */
  146.     XK_L7,        NoSymbol,        /* 0x48 */
  147.     XK_L8,        NoSymbol,        /* 0x49 */
  148.     NoSymbol,    NoSymbol,        /* 0x4a */
  149.     NoSymbol,    NoSymbol,        /* 0x4b */
  150.     XK_Control_L,    NoSymbol,        /* 0x4c */
  151.     XK_A,        NoSymbol,        /* 0x4d */
  152.     XK_S,        NoSymbol,        /* 0x4e */
  153.     XK_D,        NoSymbol,        /* 0x4f */
  154.     XK_F,        NoSymbol,        /* 0x50 */
  155.     XK_G,        NoSymbol,        /* 0x51 */
  156.     XK_H,        NoSymbol,        /* 0x52 */
  157.     XK_J,        NoSymbol,        /* 0x53 */
  158.     XK_K,        NoSymbol,        /* 0x54 */
  159.     XK_L,        NoSymbol,        /* 0x55 */
  160.     XK_semicolon,    XK_colon,        /* 0x56 */
  161.     XK_quoteright,    XK_quotedbl,        /* 0x57 */
  162.     XK_backslash,    XK_bar,            /* 0x58 */
  163.     XK_Return,    NoSymbol,        /* 0x59 */
  164.     NoSymbol,    NoSymbol,        /* 0x5a */
  165.     XK_Left,    XK_R10,            /* 0x5b */
  166.     XK_R11,        NoSymbol,        /* 0x5c */
  167.     XK_Right,    XK_R12,            /* 0x5d */
  168.     NoSymbol,    NoSymbol,        /* 0x5e */
  169.     XK_L9,        NoSymbol,        /* 0x5f */
  170.     NoSymbol,    NoSymbol,        /* 0x60 */
  171.     XK_L10,        NoSymbol,        /* 0x61 */
  172.     NoSymbol,    NoSymbol,        /* 0x62 */
  173.     XK_Shift_L,    NoSymbol,        /* 0x63 */
  174.     XK_Z,        NoSymbol,        /* 0x64 */
  175.     XK_X,        NoSymbol,        /* 0x65 */
  176.     XK_C,        NoSymbol,        /* 0x66 */
  177.     XK_V,        NoSymbol,        /* 0x67 */
  178.     XK_B,        NoSymbol,        /* 0x68 */
  179.     XK_N,        NoSymbol,        /* 0x69 */
  180.     XK_M,        NoSymbol,        /* 0x6a */
  181.     XK_comma,    XK_less,        /* 0x6b */
  182.     XK_period,    XK_greater,        /* 0x6c */
  183.     XK_slash,    XK_question,        /* 0x6d */
  184.     XK_Shift_R,    NoSymbol,        /* 0x6e */
  185.     XK_Linefeed,    NoSymbol,        /* 0x6f */
  186.     XK_R13,        NoSymbol,        /* 0x70 */
  187.     XK_Down,    XK_R14,            /* 0x71 */
  188.     XK_R15,        NoSymbol,        /* 0x72 */
  189.     NoSymbol,    NoSymbol,        /* 0x73 */
  190.     NoSymbol,    NoSymbol,        /* 0x74 */
  191.     NoSymbol,    NoSymbol,        /* 0x75 */
  192.     NoSymbol,    NoSymbol,        /* 0x76 */
  193.     NoSymbol,    NoSymbol,        /* 0x77 */
  194.     XK_Meta_L,    NoSymbol,        /* 0x78 */
  195.     XK_space,    NoSymbol,        /* 0x79 */
  196.     XK_Meta_R,    NoSymbol,        /* 0x7a */
  197.     NoSymbol,    NoSymbol,        /* 0x7b */
  198.     NoSymbol,    NoSymbol,        /* 0x7c */
  199.     NoSymbol,    NoSymbol,        /* 0x7d */
  200.     NoSymbol,    NoSymbol,        /* 0x7e */
  201.     NoSymbol,    NoSymbol,        /* 0x7f */
  202. };
  203.  
  204. static KeySym Sun3Map[] = {
  205.     XK_L1,        NoSymbol,        /* 0x01 */
  206.     NoSymbol,    NoSymbol,        /* 0x02 */
  207.     XK_L2,        NoSymbol,        /* 0x03 */
  208.     NoSymbol,    NoSymbol,        /* 0x4 */
  209.     XK_F1,        NoSymbol,        /* 0x5 */
  210.     XK_F2,        NoSymbol,        /* 0x6 */
  211.     NoSymbol,    NoSymbol,        /* 0x7 */
  212.     XK_F3,        NoSymbol,        /* 0x8 */
  213.     NoSymbol,    NoSymbol,        /* 0x9 */
  214.     XK_F4,        NoSymbol,        /* 0xa */
  215.     NoSymbol,    NoSymbol,        /* 0xb */
  216.     XK_F5,        NoSymbol,        /* 0xc */
  217.     NoSymbol,    NoSymbol,        /* 0xd */
  218.     XK_F6,        NoSymbol,        /* 0xe */
  219.     NoSymbol,    NoSymbol,        /* 0xf */
  220.     XK_F7,        NoSymbol,        /* 0x10 */
  221.     XK_F8,        NoSymbol,        /* 0x11 */
  222.     XK_F9,        NoSymbol,        /* 0x12 */
  223.     XK_Alt_R,    NoSymbol,        /* 0x13 */
  224.     NoSymbol,    NoSymbol,        /* 0x14 */
  225.     XK_R1,        NoSymbol,        /* 0x15 */
  226.     XK_R2,        NoSymbol,        /* 0x16 */
  227.     XK_R3,        NoSymbol,        /* 0x17 */
  228.     NoSymbol,    NoSymbol,        /* 0x18 */
  229.     XK_L3,        NoSymbol,        /* 0x19 */
  230.     XK_L4,        NoSymbol,        /* 0x1a */
  231.     NoSymbol,    NoSymbol,        /* 0x1b */
  232.     NoSymbol,    NoSymbol,        /* 0x1c */
  233.     XK_Escape,    NoSymbol,        /* 0x1d */
  234.     XK_1,        XK_exclam,        /* 0x1e */
  235.     XK_2,        XK_at,            /* 0x1f */
  236.     XK_3,        XK_numbersign,        /* 0x20 */
  237.     XK_4,        XK_dollar,        /* 0x21 */
  238.     XK_5,        XK_percent,        /* 0x22 */
  239.     XK_6,        XK_asciicircum,        /* 0x23 */
  240.     XK_7,        XK_ampersand,        /* 0x24 */
  241.     XK_8,        XK_asterisk,        /* 0x25 */
  242.     XK_9,        XK_parenleft,        /* 0x26 */
  243.     XK_0,        XK_parenright,        /* 0x27 */
  244.     XK_minus,    XK_underscore,        /* 0x28 */
  245.     XK_equal,    XK_plus,        /* 0x29 */
  246.     XK_quoteleft,    XK_asciitilde,        /* 0x2a */
  247.     XK_BackSpace,    NoSymbol,        /* 0x2b */
  248.     NoSymbol,    NoSymbol,        /* 0x2c */
  249.     XK_R4,        NoSymbol,        /* 0x2d */
  250.     XK_R5,        NoSymbol,        /* 0x2e */
  251.     XK_R6,        NoSymbol,        /* 0x2f */
  252.     NoSymbol,    NoSymbol,        /* 0x30 */
  253.     XK_L5,        NoSymbol,        /* 0x31 */
  254.     NoSymbol,    NoSymbol,        /* 0x32 */
  255.     XK_L6,        NoSymbol,        /* 0x33 */
  256.     NoSymbol,    NoSymbol,        /* 0x34 */
  257.     XK_Tab,        NoSymbol,        /* 0x35 */
  258.     XK_Q,        NoSymbol,        /* 0x36 */
  259.     XK_W,        NoSymbol,        /* 0x37 */
  260.     XK_E,        NoSymbol,        /* 0x38 */
  261.     XK_R,        NoSymbol,        /* 0x39 */
  262.     XK_T,        NoSymbol,        /* 0x3a */
  263.     XK_Y,        NoSymbol,        /* 0x3b */
  264.     XK_U,        NoSymbol,        /* 0x3c */
  265.     XK_I,        NoSymbol,        /* 0x3d */
  266.     XK_O,        NoSymbol,        /* 0x3e */
  267.     XK_P,        NoSymbol,        /* 0x3f */
  268.     XK_bracketleft,    XK_braceleft,        /* 0x40 */
  269.     XK_bracketright,    XK_braceright,    /* 0x41 */
  270.     XK_Delete,    NoSymbol,        /* 0x42 */
  271.     NoSymbol,    NoSymbol,        /* 0x43 */
  272.     XK_R7,        NoSymbol,        /* 0x44 */
  273.     XK_Up,        XK_R8,            /* 0x45 */
  274.     XK_R9,        NoSymbol,        /* 0x46 */
  275.     NoSymbol,    NoSymbol,        /* 0x47 */
  276.     XK_L7,        NoSymbol,        /* 0x48 */
  277.     XK_L8,        NoSymbol,        /* 0x49 */
  278.     NoSymbol,    NoSymbol,        /* 0x4a */
  279.     NoSymbol,    NoSymbol,        /* 0x4b */
  280.     XK_Control_L,    NoSymbol,        /* 0x4c */
  281.     XK_A,        NoSymbol,        /* 0x4d */
  282.     XK_S,        NoSymbol,        /* 0x4e */
  283.     XK_D,        NoSymbol,        /* 0x4f */
  284.     XK_F,        NoSymbol,        /* 0x50 */
  285.     XK_G,        NoSymbol,        /* 0x51 */
  286.     XK_H,        NoSymbol,        /* 0x52 */
  287.     XK_J,        NoSymbol,        /* 0x53 */
  288.     XK_K,        NoSymbol,        /* 0x54 */
  289.     XK_L,        NoSymbol,        /* 0x55 */
  290.     XK_semicolon,    XK_colon,        /* 0x56 */
  291.     XK_quoteright,    XK_quotedbl,        /* 0x57 */
  292.     XK_backslash,    XK_bar,            /* 0x58 */
  293.     XK_Return,    NoSymbol,        /* 0x59 */
  294.     NoSymbol,    NoSymbol,        /* 0x5a */
  295.     XK_Left,    XK_R10,            /* 0x5b */
  296.     XK_R11,        NoSymbol,        /* 0x5c */
  297.     XK_Right,    XK_R12,            /* 0x5d */
  298.     NoSymbol,    NoSymbol,        /* 0x5e */
  299.     XK_L9,        NoSymbol,        /* 0x5f */
  300.     NoSymbol,    NoSymbol,        /* 0x60 */
  301.     XK_L10,        NoSymbol,        /* 0x61 */
  302.     NoSymbol,    NoSymbol,        /* 0x62 */
  303.     XK_Shift_L,    NoSymbol,        /* 0x63 */
  304.     XK_Z,        NoSymbol,        /* 0x64 */
  305.     XK_X,        NoSymbol,        /* 0x65 */
  306.     XK_C,        NoSymbol,        /* 0x66 */
  307.     XK_V,        NoSymbol,        /* 0x67 */
  308.     XK_B,        NoSymbol,        /* 0x68 */
  309.     XK_N,        NoSymbol,        /* 0x69 */
  310.     XK_M,        NoSymbol,        /* 0x6a */
  311.     XK_comma,    XK_less,        /* 0x6b */
  312.     XK_period,    XK_greater,        /* 0x6c */
  313.     XK_slash,    XK_question,        /* 0x6d */
  314.     XK_Shift_R,    NoSymbol,        /* 0x6e */
  315.     XK_Linefeed,    NoSymbol,        /* 0x6f */
  316.     XK_R13,        NoSymbol,        /* 0x70 */
  317.     XK_Down,    XK_R14,            /* 0x71 */
  318.     XK_R15,        NoSymbol,        /* 0x72 */
  319.     NoSymbol,    NoSymbol,        /* 0x73 */
  320.     NoSymbol,    NoSymbol,        /* 0x74 */
  321.     NoSymbol,    NoSymbol,        /* 0x75 */
  322.     NoSymbol,    NoSymbol,        /* 0x76 */
  323.     XK_Caps_Lock,    NoSymbol,        /* 0x77 */
  324.     XK_Meta_L,    NoSymbol,        /* 0x78 */
  325.     XK_space,    NoSymbol,        /* 0x79 */
  326.     XK_Meta_R,    NoSymbol,        /* 0x7a */
  327.     NoSymbol,    NoSymbol,        /* 0x7b */
  328.     NoSymbol,    NoSymbol,        /* 0x7c */
  329.     NoSymbol,    NoSymbol,        /* 0x7d */
  330.     NoSymbol,    NoSymbol,        /* 0x7e */
  331.     NoSymbol,    NoSymbol,        /* 0x7f */
  332. };
  333.  
  334. static KeySym Sun4Map[] = {
  335.         XK_L1,          NoSymbol,               /* 0x01 */
  336.         NoSymbol,       NoSymbol,               /* 0x02 */
  337.         XK_L2,          NoSymbol,               /* 0x03 */
  338.         NoSymbol,       NoSymbol,               /* 0x4 */
  339.         XK_F1,          NoSymbol,               /* 0x5 */
  340.         XK_F2,          NoSymbol,               /* 0x6 */
  341.         XK_F10,         NoSymbol,               /* 0x7 */
  342.         XK_F3,          NoSymbol,               /* 0x8 */
  343.         XK_F11,         NoSymbol,               /* 0x9 */
  344.         XK_F4,          NoSymbol,               /* 0xa */
  345.         XK_F12,         NoSymbol,               /* 0xb */
  346.         XK_F5,          NoSymbol,               /* 0xc */
  347.         NoSymbol,       NoSymbol,               /* 0xd */
  348.         XK_F6,          NoSymbol,               /* 0xe */
  349.         NoSymbol,       NoSymbol,               /* 0xf */
  350.         XK_F7,          NoSymbol,               /* 0x10 */
  351.         XK_F8,          NoSymbol,               /* 0x11 */
  352.         XK_F9,          NoSymbol,               /* 0x12 */
  353.     XK_Alt_L,    NoSymbol,        /* 0x13 */
  354.         NoSymbol,       NoSymbol,               /* 0x14 */
  355.         XK_R1,          XK_Pause,               /* 0x15 */
  356.         XK_R2,          NoSymbol,               /* 0x16 */
  357.         XK_R3,          NoSymbol,               /* 0x17 */
  358.         NoSymbol,       NoSymbol,               /* 0x18 */
  359.         XK_L3,          NoSymbol,               /* 0x19 */
  360.         XK_L4,          NoSymbol,               /* 0x1a */
  361.         NoSymbol,       NoSymbol,               /* 0x1b */
  362.         NoSymbol,       NoSymbol,               /* 0x1c */
  363.         XK_Escape,      NoSymbol,               /* 0x1d */
  364.         XK_1,           XK_exclam,              /* 0x1e */
  365.         XK_2,           XK_at,                  /* 0x1f */
  366.         XK_3,           XK_numbersign,          /* 0x20 */
  367.         XK_4,           XK_dollar,              /* 0x21 */
  368.         XK_5,           XK_percent,             /* 0x22 */
  369.         XK_6,           XK_asciicircum,         /* 0x23 */
  370.         XK_7,           XK_ampersand,           /* 0x24 */
  371.         XK_8,           XK_asterisk,            /* 0x25 */
  372.         XK_9,           XK_parenleft,           /* 0x26 */
  373.         XK_0,           XK_parenright,          /* 0x27 */
  374.         XK_minus,       XK_underscore,          /* 0x28 */
  375.         XK_equal,       XK_plus,                /* 0x29 */
  376.         XK_quoteleft,   XK_asciitilde,          /* 0x2a */
  377.         XK_BackSpace,   NoSymbol,               /* 0x2b */
  378.         NoSymbol,       NoSymbol,               /* 0x2c */
  379.         XK_R4,          XK_KP_Equal,        /* 0x2d */
  380.         XK_R5,          XK_KP_Divide,        /* 0x2e */
  381.         XK_R6,          XK_KP_Multiply,        /* 0x2f */
  382.         NoSymbol,       NoSymbol,               /* 0x30 */
  383.         XK_L5,          NoSymbol,               /* 0x31 */
  384.         XK_Delete,      XK_KP_Decimal,          /* 0x32 */
  385.         XK_L6,          NoSymbol,               /* 0x33 */
  386.         NoSymbol,       NoSymbol,               /* 0x34 */
  387.         XK_Tab,         NoSymbol,               /* 0x35 */
  388.         XK_Q,           NoSymbol,               /* 0x36 */
  389.         XK_W,           NoSymbol,               /* 0x37 */
  390.         XK_E,           NoSymbol,               /* 0x38 */
  391.         XK_R,           NoSymbol,               /* 0x39 */
  392.         XK_T,           NoSymbol,               /* 0x3a */
  393.         XK_Y,           NoSymbol,               /* 0x3b */
  394.         XK_U,           NoSymbol,               /* 0x3c */
  395.         XK_I,           NoSymbol,               /* 0x3d */
  396.         XK_O,           NoSymbol,               /* 0x3e */
  397.         XK_P,           NoSymbol,               /* 0x3f */
  398.         XK_bracketleft, XK_braceleft,           /* 0x40 */
  399.         XK_bracketright,XK_braceright,          /* 0x41 */
  400.         XK_Delete,      NoSymbol,               /* 0x42 */
  401.         XK_Multi_key,   NoSymbol,               /* 0x43 */
  402.         XK_R7,          XK_KP_7,                /* 0x44 */
  403.         XK_Up,          XK_KP_8,                /* 0x45 */
  404.         XK_R9,          XK_KP_9,                /* 0x46 */
  405.         XK_KP_Subtract, XK_KP_Subtract,         /* 0x47 */
  406.         XK_L7,          NoSymbol,               /* 0x48 */
  407.         XK_L8,          NoSymbol,               /* 0x49 */
  408.         NoSymbol,       NoSymbol,               /* 0x4a */
  409.         NoSymbol,       NoSymbol,               /* 0x4b */
  410.         XK_Control_L,   NoSymbol,               /* 0x4c */
  411.         XK_A,           NoSymbol,               /* 0x4d */
  412.         XK_S,           NoSymbol,               /* 0x4e */
  413.         XK_D,           NoSymbol,               /* 0x4f */
  414.         XK_F,           NoSymbol,               /* 0x50 */
  415.         XK_G,           NoSymbol,               /* 0x51 */
  416.         XK_H,           NoSymbol,               /* 0x52 */
  417.         XK_J,           NoSymbol,               /* 0x53 */
  418.         XK_K,           NoSymbol,               /* 0x54 */
  419.         XK_L,           NoSymbol,               /* 0x55 */
  420.         XK_semicolon,   XK_colon,               /* 0x56 */
  421.         XK_quoteright,  XK_quotedbl,            /* 0x57 */
  422.         XK_backslash,   XK_bar,                 /* 0x58 */
  423.         XK_Return,      NoSymbol,               /* 0x59 */
  424.         XK_KP_Enter,    XK_KP_Enter,            /* 0x5a */
  425.         XK_Left,        XK_KP_4,                /* 0x5b */
  426.         XK_R11,         XK_KP_5,                /* 0x5c */
  427.         XK_Right,       XK_KP_6,                /* 0x5d */
  428.         XK_Insert,       XK_KP_0,                /* 0x5e */
  429.         XK_L9,          NoSymbol,               /* 0x5f */
  430.         NoSymbol,       NoSymbol,               /* 0x60 */
  431.         XK_L10,         NoSymbol,               /* 0x61 */
  432.         XK_Num_Lock,    XK_Num_Lock,            /* 0x62 */
  433.         XK_Shift_L,     NoSymbol,               /* 0x63 */
  434.         XK_Z,           NoSymbol,               /* 0x64 */
  435.         XK_X,           NoSymbol,               /* 0x65 */
  436.         XK_C,           NoSymbol,               /* 0x66 */
  437.         XK_V,           NoSymbol,               /* 0x67 */
  438.         XK_B,           NoSymbol,               /* 0x68 */
  439.         XK_N,           NoSymbol,               /* 0x69 */
  440.         XK_M,           NoSymbol,               /* 0x6a */
  441.         XK_comma,       XK_less,                /* 0x6b */
  442.         XK_period,      XK_greater,             /* 0x6c */
  443.         XK_slash,       XK_question,            /* 0x6d */
  444.         XK_Shift_R,     NoSymbol,               /* 0x6e */
  445.         XK_Linefeed,    NoSymbol,               /* 0x6f */
  446.         XK_R13,         XK_KP_1,                /* 0x70 */
  447.         XK_Down,        XK_KP_2,                /* 0x71 */
  448.         XK_R15,         XK_KP_3,                /* 0x72 */
  449.         NoSymbol,       NoSymbol,               /* 0x73 */
  450.         NoSymbol,       NoSymbol,               /* 0x74 */
  451.         NoSymbol,       NoSymbol,               /* 0x75 */
  452.         XK_Help,        XK_Help,                /* 0x76 */
  453.         XK_Caps_Lock,   NoSymbol,               /* 0x77 */
  454.         XK_Meta_L,      NoSymbol,               /* 0x78 */
  455.         XK_space,       NoSymbol,               /* 0x79 */
  456.         XK_Meta_R,      NoSymbol,               /* 0x7a */
  457.         NoSymbol,       NoSymbol,               /* 0x7b */
  458.         NoSymbol,       NoSymbol,               /* 0x7c */
  459.         XK_KP_Add,      XK_KP_Add,              /* 0x7d */
  460.         NoSymbol,       NoSymbol,               /* 0x7e */
  461.         NoSymbol,       NoSymbol,               /* 0x7f */
  462. };
  463.  
  464.  
  465. KeySymsRec sunKeySyms[] = {
  466.     /*    map       minKeyCode    maxKC    width */
  467. #ifdef    notdef
  468.     KlunkMap,        1,    0x7a,    2,
  469.     VT100Map,        1,    0x7a,    2,
  470. #else
  471.     (KeySym *)NULL,    0,    0,    0,
  472.     (KeySym *)NULL,    0,    0,    0,
  473. #endif
  474.     Sun2Map,        1,    0x7a,    2,
  475.     Sun3Map,        1,    0x7a,    2,
  476.     Sun4Map,        1,    0x7d,    2,
  477. };
  478.  
  479. #define    cT    (ControlMask)
  480. #define    sH    (ShiftMask)
  481. #define    lK    (LockMask)
  482. #define    mT    (Mod1Mask)
  483. static CARD8 type2modmap[MAP_LENGTH] = {
  484.     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* 00-0f */
  485.     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* 10-1f */
  486.     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* 20-2f */
  487.     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* 30-3f */
  488.     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* 40-4f */
  489.     0,  0,  0,  cT, 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* 50-5f */
  490.     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  sH, 0,  0,  0,  0,  0, /* 60-6f */
  491.     0,  0,  0,  0,  0,  sH, 0,  0,  0,  0,  0,  0,  0,  0,  0,  mT,/* 70-7f */
  492.     0,  mT, 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* 80-8f */
  493.     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* 90-9f */
  494.     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* a0-af */
  495.     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* b0-bf */
  496.     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* c0-cf */
  497.     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* d0-df */
  498.     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* e0-ef */
  499.     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* f0-ff */
  500. };
  501.  
  502. static CARD8 type3modmap[MAP_LENGTH] = {
  503.     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* 00-0f */
  504.     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* 10-1f */
  505.     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* 20-2f */
  506.     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* 30-3f */
  507.     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* 40-4f */
  508.     0,  0,  0,  cT, 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* 50-5f */
  509.     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  sH, 0,  0,  0,  0,  0, /* 60-6f */
  510.     0,  0,  0,  0,  0,  sH, 0,  0,  0,  0,  0,  0,  0,  0,  lK, mT,/* 70-7f */
  511.     0,  mT, 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* 80-8f */
  512.     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* 90-9f */
  513.     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* a0-af */
  514.     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* b0-bf */
  515.     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* c0-cf */
  516.     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* d0-df */
  517.     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* e0-ef */
  518.     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* f0-ff */
  519. };
  520.  
  521. static CARD8 type4modmap[MAP_LENGTH] = {
  522.     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* 00-0f */
  523.     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* 10-1f */
  524.     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* 20-2f */
  525.     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* 30-3f */
  526.     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* 40-4f */
  527.     0,  0,  0,  cT, 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* 50-5f */
  528.     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  sH, 0,  0,  0,  0,  0, /* 60-6f */
  529.     0,  0,  0,  0,  0,  sH, 0,  0,  0,  0,  0,  0,  0,  0,  lK, mT,/* 70-7f */
  530.     0,  mT, 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* 80-8f */
  531.     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* 90-9f */
  532.     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* a0-af */
  533.     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* b0-bf */
  534.     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* c0-cf */
  535.     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* d0-df */
  536.     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* e0-ef */
  537.     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, /* f0-ff */
  538. };
  539.  
  540. CARD8 *sunModMap[] = {
  541.     NULL,
  542.     NULL,
  543.     type2modmap,
  544.     type3modmap,
  545.     type4modmap,
  546. };
  547.