home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #26 / NN_1992_26.iso / spool / comp / windows / x / 18901 < prev    next >
Encoding:
Internet Message Format  |  1992-11-09  |  3.9 KB

  1. Xref: sparky comp.windows.x:18901 comp.sys.sun.misc:5165
  2. Newsgroups: comp.windows.x,comp.sys.sun.misc
  3. Path: sparky!uunet!nevada.edu!tamsun.tamu.edu!inetg1!edp.arco.com!dbgwab
  4. From: dbgwab@edp.arco.com (William A. Bailey)
  5. Subject: Patches for Sun X server for NumLock support
  6. Message-ID: <1992Nov9.143452.11919@Arco.COM>
  7. Keywords: X11R5 Sun NumLock
  8. Sender: news@Arco.COM
  9. Organization: ARCO - Aept
  10. References:  <1992Nov6.120836.12831@abekrd.co.uk>
  11. Date: Mon, 9 Nov 1992 14:34:52 GMT
  12. Lines: 145
  13.  
  14.           Release 5 SUN Keyboard NumLock Patch
  15.           William Bailey <dbgwab@arco.com>
  16.  
  17. This patch provides support for the NumLock function on the keypad
  18. of Sun Type 4 and Type 5 keyboards. 
  19.  
  20. To apply this patch:
  21.  
  22. cd to the top of the source tree (to the directory containing the "mit"
  23. and "contrib" subdirectories) and do:
  24.     patch -p -s < ThisFile
  25.         cd mit/server
  26.         make
  27.  
  28. Patch will work silently unless an error occurs. 
  29. This will rebuild Xsun and/or XsunMono per your original configuration.
  30. You can then test and install the new Xserver(s) manually.
  31.  
  32. *** mit/server/ddx/sun/sunKbd.c
  33. 372,376c372
  34. < /*
  35. <  * The LEDs on the type-4 keyboard are in a *strange*
  36. <  * order.  This code remaps them left-to-right, which
  37. <  * may not be what you want, but it seems reasonable to me.
  38. <  */
  39. ---
  40. > #define LED_ALL     (LED_NUM_LOCK | LED_COMPOSE | LED_SCROLL_LOCK | LED_CAPS_LOCK)
  41. 378,384d373
  42. < #define LED_LOCK    0x08
  43. < #define LED_1        0x02
  44. < #define LED_2        0x04
  45. < #define LED_3        0x01
  46. < #define LED_X        (LED_1 | LED_2 | LED_3)
  47. < #define LED_ALL        (LED_LOCK | LED_X)
  48. 393,400c382,389
  49. <     if (request & 0x01)
  50. <     device |= LED_1;
  51. <     if (request & 0x02)
  52. <     device |= LED_2;
  53. <     if (request & 0x04)
  54. <     device |= LED_3;
  55. <     if (pPriv->lockLight)
  56. <     device |= LED_LOCK;
  57. ---
  58. >     if (request & LED_NUM_LOCK)
  59. >     device |= LED_NUM_LOCK;
  60. >     if (request & LED_COMPOSE)
  61. >     device |= LED_COMPOSE;
  62. >     if (request & LED_SCROLL_LOCK)
  63. >     device |= LED_SCROLL_LOCK;
  64. >     if (request & LED_CAPS_LOCK)
  65. >     device |= LED_CAPS_LOCK;
  66. 428d416
  67. <     char      led;
  68. 451c439
  69. <     pPriv->ctrl->leds = ctrl->leds & LED_X;
  70. ---
  71. >     pPriv->ctrl->leds = ctrl->leds & LED_ALL;
  72. 468c456
  73. < sunKbdLockLight (pKeyboard, on)
  74. ---
  75. > sunKbdLockLight (pKeyboard, led)
  76. 470c458
  77. <     Bool    on;
  78. ---
  79. >     char    led;
  80. 475c463
  81. <     pPriv->lockLight = on;
  82. ---
  83. >     pPriv->ctrl->leds ^= led;
  84. 549c537
  85. <     KbPrivPtr        pPriv;
  86. ---
  87. >     KbPrivPtr    pPriv = (KbPrivPtr) pKeyboard->devicePrivate;
  88. 552a541,542
  89. >     KeySym        *keysym;
  90. >     KeyClassRec *keyc;
  91. 553a544
  92. >     keyc = ((DeviceIntPtr)pKeyboard)->key;
  93. 555a547,584
  94. > if (pPriv->ctrl->leds & LED_NUM_LOCK) {
  95. >   if (key == 0x77) { /* 1 */
  96. >       key = 0x25;
  97. >       }
  98. >   else if (key == 0x78) { /* 2 */
  99. >     key = 0x26;
  100. >     }
  101. >   else if (key == 0x79) { /* 3 */
  102. >     key = 0x27;
  103. >     }
  104. >   else if (key == 0x62) { /* 4 */
  105. >     key = 0x28;
  106. >     }
  107. >   else if (key == 0x63) { /* 5 */
  108. >     key = 0x29;
  109. >     }
  110. >   else if (key == 0x64) { /* 6 */
  111. >     key = 0x2a;
  112. >     }
  113. >   else if (key == 0x4B) { /* 7 */
  114. >     key = 0x2B;
  115. >     }
  116. >   else if (key == 0x4C) { /* 8 */
  117. >     key = 0x2C;
  118. >     }
  119. >   else if (key == 0x4D) { /* 9 */
  120. >     key = 0x2D;
  121. >     }
  122. >   else if (key == 0x65) { /* 0 */
  123. >     key = 0x2E;
  124. >     }
  125. >   else if (key == 0x39) { /* . */
  126. >     key = 0x73;
  127. >     }
  128. >   }
  129. 563c592,597
  130. ---
  131. >     keysym = (keyc->curKeySyms.map +
  132. >         keyc->curKeySyms.mapWidth *
  133. >         (key - keyc->curKeySyms.minKeyCode));
  134. > /*
  135. > ErrorF("key %x, keysym %x, numlock %x\n",key,*keysym,XK_Num_Lock);
  136. > */
  137. 573c607,615
  138. <     sunKbdLockLight (pKeyboard, xE.u.u.type == KeyPress);
  139. ---
  140. >     sunKbdLockLight (pKeyboard, LED_CAPS_LOCK);
  141. >     }
  142. >     if (*keysym == XK_Num_Lock) {
  143. >     if (xE.u.u.type == KeyRelease)
  144. >         return; /* this assumes autorepeat is not desired */
  145. >     if (BitIsOn(((DeviceIntPtr)pKeyboard)->key->down, key))
  146. >         xE.u.u.type = KeyRelease;
  147. >     sunKbdLockLight (pKeyboard, LED_NUM_LOCK);
  148.  
  149.  
  150. -- 
  151. Bill Bailey <dbgwab@arco.com>
  152. Voice : (214) 754-6779
  153.