home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-385-Vol-1of3.iso / d / ddx-mips.zip / MIPSKBDU.C < prev    next >
C/C++ Source or Header  |  1992-07-31  |  8KB  |  218 lines

  1. /*
  2.  * $XConsortium$
  3.  *
  4.  * Copyright 1991 MIPS Computer Systems, Inc.
  5.  *
  6.  * Permission to use, copy, modify, distribute, and sell this software and its
  7.  * documentation for any purpose is hereby granted without fee, provided that
  8.  * the above copyright notice appear in all copies and that both that
  9.  * copyright notice and this permission notice appear in supporting
  10.  * documentation, and that the name of MIPS not be used in advertising or
  11.  * publicity pertaining to distribution of the software without specific,
  12.  * written prior permission.  MIPS makes no representations about the
  13.  * suitability of this software for any purpose.  It is provided "as is"
  14.  * without express or implied warranty.
  15.  *
  16.  * MIPS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
  17.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL MIPS
  18.  * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  19.  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
  20.  * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 
  21.  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  22.  */
  23. #ident    "$Header: mipsKbdUNIX1.c,v 1.4 91/07/10 15:43:41 dd Exp $"
  24.  
  25. /*
  26.  *    keysym mapping for the unix keyboard.
  27.  */
  28.  
  29. #include <sys/types.h>
  30. #include "X.h"
  31. #include "Xmd.h"
  32. #include "input.h"
  33. #include "keysym.h"
  34. #include "mips.h"
  35. #include "mipsKbd.h"
  36.  
  37. extern void specialKeybdEvent(), genKeybdEvent();
  38.  
  39. /* UNIX1 keyboard type */
  40.  
  41. #ifdef UNIX1_KEYBOARD
  42. KeySym unix1_KeyMap[] = {
  43.     XK_F1,        NoSymbol,    /* 0x07 F1 */
  44.     XK_Escape,        NoSymbol,    /* 0x08 esc */
  45.     NoSymbol,        NoSymbol,    /* 0x09     */
  46.     NoSymbol,        NoSymbol,    /* 0x0a     */
  47.     NoSymbol,        NoSymbol,    /* 0x0b     */
  48.     NoSymbol,        NoSymbol,    /* 0x0c     */
  49.     XK_Tab,        NoSymbol,    /* 0x0d tab */
  50.     XK_quoteleft,    XK_asciitilde,    /* 0x0e ` ~ */
  51.     XK_F2,        NoSymbol,    /* 0x0f F2  */
  52.     NoSymbol,        NoSymbol,    /* 0x10     */
  53.     XK_Control_L,    NoSymbol,    /* 0x11 CONTROL   */
  54.     XK_Shift_L,        NoSymbol,    /* 0x12 SHIFT */
  55.     NoSymbol,        NoSymbol,    /* 0x13     */
  56.     XK_Caps_Lock,    NoSymbol,    /* 0x14 CAPS LOCK   */
  57.     XK_Q,        NoSymbol,    /* 0x15 Q  */
  58.     XK_1,        XK_exclam,    /* 0x16 1 ! */
  59.     XK_F3,        NoSymbol,    /* 0x17 F3  */
  60.     NoSymbol,        NoSymbol,    /* 0x18     */
  61.     XK_Alt_L,        NoSymbol,    /* 0x19 Left ALT   */
  62.     XK_Z,        NoSymbol,    /* 0x1a Z  */
  63.     XK_S,        NoSymbol,    /* 0x1b S  */
  64.     XK_A,        NoSymbol,    /* 0x1c A  */
  65.     XK_W,        NoSymbol,    /* 0x1d W  */
  66.     XK_2,        XK_at,        /* 0x1e 2 @ */
  67.     XK_F4,        NoSymbol,    /* 0x1f F4  */
  68.     NoSymbol,        NoSymbol,    /* 0x20     */
  69.     XK_C,        NoSymbol,    /* 0x21 C  */
  70.     XK_X,        NoSymbol,    /* 0x22 X  */
  71.     XK_D,        NoSymbol,    /* 0x23 D  */
  72.     XK_E,        NoSymbol,    /* 0x24 E  */
  73.     XK_4,        XK_dollar,    /* 0x25 4 $ */
  74.     XK_3,        XK_numbersign,    /* 0x26 3 # */
  75.     XK_F5,        NoSymbol,    /* 0x27 F5  */
  76.     NoSymbol,        NoSymbol,    /* 0x28     */
  77.     XK_space,        NoSymbol,    /* 0x29 sp */
  78.     XK_V,        NoSymbol,    /* 0x2a V  */
  79.     XK_F,        NoSymbol,    /* 0x2b F  */
  80.     XK_T,        NoSymbol,    /* 0x2c T  */
  81.     XK_R,        NoSymbol,    /* 0x2d R  */
  82.     XK_5,        XK_percent,    /* 0x2e 5 % */
  83.     XK_F6,        NoSymbol,    /* 0x2f F6  */
  84.     NoSymbol,        NoSymbol,    /* 0x30     */
  85.     XK_N,        NoSymbol,    /* 0x31 N  */
  86.     XK_B,        NoSymbol,    /* 0x32 B  */
  87.     XK_H,        NoSymbol,    /* 0x33 H  */
  88.     XK_G,        NoSymbol,    /* 0x34 G  */
  89.     XK_Y,        NoSymbol,    /* 0x35 Y  */
  90.     XK_6,        XK_asciicircum,    /* 0x36 6 ^ */
  91.     XK_F7,        NoSymbol,    /* 0x37 F7  */
  92.     NoSymbol,        NoSymbol,    /* 0x38     */
  93.     XK_Alt_R,        NoSymbol,    /* 0x39 Right alt */
  94.     XK_M,        NoSymbol,    /* 0x3a M  */
  95.     XK_J,        NoSymbol,    /* 0x3b J  */
  96.     XK_U,        NoSymbol,    /* 0x3c U  */
  97.     XK_7,        XK_ampersand,    /* 0x3d 7 & */
  98.     XK_8,        XK_asterisk,    /* 0x3e 8 * */
  99.     XK_F8,        NoSymbol,    /* 0x3f F8  */
  100.     NoSymbol,        NoSymbol,    /* 0x40     */
  101.     XK_comma,        XK_less,    /* 0x41 , <  */
  102.     XK_K,        NoSymbol,    /* 0x42 K  */
  103.     XK_I,        NoSymbol,    /* 0x43 I  */
  104.     XK_O,        NoSymbol,    /* 0x44 O  */
  105.     XK_0,        XK_parenright,    /* 0x45 0 ) */
  106.     XK_9,        XK_parenleft,    /* 0x46 9 ( */
  107.     XK_F9,        NoSymbol,    /* 0x47 F9  */
  108.     NoSymbol,        NoSymbol,    /* 0x48     */
  109.     XK_period,        XK_greater,    /* 0x49 . >  */
  110.     XK_slash,        XK_question,    /* 0x4a / ? */
  111.     XK_L,        NoSymbol,    /* 0x4b L  */
  112.     XK_semicolon,    XK_colon,    /* 0x4c ; : */
  113.     XK_P,        NoSymbol,    /* 0x4d P  */
  114.     XK_minus,        XK_underscore,    /* 0x4e - _ */
  115.     XK_F10,        NoSymbol,    /* 0x4f F10 */
  116.     NoSymbol,        NoSymbol,    /* 0x50     */
  117.     NoSymbol,        NoSymbol,    /* 0x51     */
  118.     XK_quoteright,    XK_quotedbl,    /* 0x52 ' " */
  119.     NoSymbol,        NoSymbol,    /* 0x53     */
  120.     XK_bracketleft,    XK_braceleft,    /* 0x54 [ { */
  121.     XK_equal,        XK_plus,    /* 0x55 = + */
  122.     XK_F11,        NoSymbol,    /* 0x56 F11 */
  123.     XK_Linefeed,    NoSymbol,    /* 0x57 Linefeed */
  124.     XK_Control_R,    NoSymbol,    /* 0x58 Right control */
  125.     XK_Shift_R,        NoSymbol,    /* 0x59 SHIFT */
  126.     XK_Return,        NoSymbol,    /* 0x5a RETURN */
  127.     XK_bracketright,    XK_braceright,    /* 0x5b ] } */
  128.     XK_backslash,    XK_bar,        /* 0x5c \ | */
  129.     NoSymbol,        NoSymbol,    /* 0x5d     */
  130.     XK_F12,        NoSymbol,    /* 0x5e F12 */
  131.     XK_Break,        NoSymbol,    /* 0x5f KP_Break */
  132.     XK_Down,        NoSymbol,    /* 0x60 down arrow  */
  133.     XK_Left,        NoSymbol,    /* 0x61 left arrow  */
  134.     XK_Menu,        NoSymbol,    /* 0x62 Menu */
  135.     XK_Up,        NoSymbol,    /* 0x63 uparrow */
  136.     XK_Delete,        NoSymbol,    /* 0x64 DEL */
  137.     NoSymbol,        NoSymbol,    /* 0x65     */
  138.     XK_BackSpace,    NoSymbol,    /* 0x66 bs  */
  139.     NoSymbol,        NoSymbol,    /* 0x67     */
  140.     NoSymbol,        NoSymbol,    /* 0x68     */
  141.     XK_KP_1,        XK_End,        /* 0x69 1  */
  142.     XK_Right,        NoSymbol,    /* 0x6a right arrow */
  143.     XK_KP_4,        XK_Left,    /* 0x6b 4  */
  144.     XK_KP_7,        XK_Home,    /* 0x6c 7  */
  145.     XK_KP_Separator,    NoSymbol,    /* 0x6d ,  */
  146.     NoSymbol,        NoSymbol,    /* 0x6e     */
  147.     NoSymbol,        NoSymbol,    /* 0x6f     */
  148.     XK_KP_0,        XK_Insert,    /* 0x70 0  */
  149.     XK_KP_Decimal,    XK_Delete,    /* 0x71 .  */
  150.     XK_KP_2,        XK_Down,    /* 0x72 2  */
  151.     XK_KP_5,        NoSymbol,    /* 0x73 5  */
  152.     XK_KP_6,        XK_Right,    /* 0x74 6  */
  153.     XK_KP_8,        XK_Up,        /* 0x75 8  */
  154.     XK_KP_F1,        NoSymbol,    /* 0x76 PF1 */
  155.     XK_KP_F2,        NoSymbol,    /* 0x77 PF2 */
  156.     NoSymbol,        NoSymbol,    /* 0x78     */
  157.     XK_KP_Enter,    NoSymbol,    /* 0x79 KP_ENTER */
  158.     XK_KP_3,        XK_Next,    /* 0x7a 3  */
  159.     NoSymbol,        NoSymbol,    /* 0x7b     */
  160.     XK_KP_F4,        NoSymbol,    /* 0x7c PF4 */
  161.     XK_KP_9,        XK_Prior,    /* 0x7d 9  */
  162.     XK_KP_F3,        NoSymbol,    /* 0x7e PF3 */
  163.     NoSymbol,        NoSymbol,    /* 0x7f     */
  164.     NoSymbol,        NoSymbol,    /* 0x80     */
  165.     NoSymbol,        NoSymbol,    /* 0x81     */
  166.     NoSymbol,        NoSymbol,    /* 0x82     */
  167.     NoSymbol,        NoSymbol,    /* 0x83     */
  168.     XK_KP_Subtract,    NoSymbol,    /* 0x84 -  */
  169. };
  170.  
  171. CARD8 unix1_ModMap[MAP_LENGTH] = {
  172. /* 00-0f */     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  173. /* 10-1f */     0, 0, 0,MC,MS, 0,ML, 0, 0, 0, 0,M1, 0, 0, 0, 0,
  174. /* 20-2f */     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  175. /* 30-3f */     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,M1, 0, 0, 0, 0,
  176. /* 40-4f */     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  177. /* 50-5f */     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,MC,MS, 0, 0, 0, 0,
  178. /* 60-6f */     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  179. /* 70-7f */     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  180. /* 80-8f */     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  181. /* 90-9f */     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  182. /* a0-af */     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  183. /* b0-bf */     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  184. /* c0-cf */     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  185. /* d0-df */     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  186. /* e0-ef */     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  187. /* f0-ff */     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  188. };
  189.  
  190. void
  191. unix1KeybdEvent(pKeybd, code)
  192. DevicePtr    pKeybd;
  193. u_char        code;
  194. {
  195.     static int        release = 0;
  196.     u_char        kindex;
  197.  
  198.     /* Random 0xfa and 0xfe characters are being delivered */
  199.  
  200.     if ((code & 0xfa) == 0xfa)
  201.     return;
  202.  
  203.     if (code == 0xf0)
  204.     release = 1;
  205.     else {
  206.     kindex = code;
  207.     if (kindex == 0x62) {
  208.         if (release)
  209.         specialKeybdEvent();
  210.     }
  211.  
  212.     kindex += keybdType[UNIX1_KEYBOARD].offset;
  213.     genKeybdEvent(pKeybd, release, kindex);
  214.     release = 0;
  215.     }
  216. }
  217. #endif /* UNIX1_KEYBOARD */
  218.