Balint Cristian wrote:
> Regard to that one BUG with the mention that it persist in 4.3.0 too 
> and any CVS too:
> 
> By Rene:
> http://marc.theaimsgroup.com/?l=xfree86&m=104526841725691&w=2
> 
> By mysef:
> http://marc.theaimsgroup.com/?l=xfree86&m=104385693307371&w=2
> 
> I send more deBug:
> http://marc.theaimsgroup.com/?l=xfree86&m=104385720707941&w=2

  The reason of this bug is a change

: 656. Make SysRq generate the same keycode as PrtScrn, and Break the same
:      keycode as Pause (#A.1160, Owen Taylor).

which added into an xf86PostKbdEvent procedure a code

: /*
:  * PC keyboards generate separate key codes for
:  * Alt+Print and Control+Pause but in the X keyboard model
:  * they need to get the same key code as the base key on the same
:  * physical keyboard key.
:  */
:  if (scanCode == KEY_SysReqest)
:      scanCode = KEY_Print;
:  else if (scanCode == KEY_Break)
:     scanCode = KEY_Pause;

  But for a Sun's type5 keyboard it means something like

if (code == 'letter L') code = 'letter B'
if (code == 'comma')    code = 'letter V'

  A simple fix for this issue could be a moving this code to the part of
xf86PostKbdEvent which is being executed for PC keyboards only.

--- xc/programs/Xserver/hw/xfree86/common/xf86Events.c.orig   Tue Mar  4 18:34:31 2003
+++ xc/programs/Xserver/hw/xfree86/common/xf86Events.c        Tue Mar  4 18:41:45 2003 
                              
@@ -531,6 +531,17 @@                                                           
     }                                                                         
                                                                               
   /*                                                                          
+   * PC keyboards generate separate key codes for                             
+   * Alt+Print and Control+Pause but in the X keyboard model                  
+   * they need to get the same key code as the base key on the same           
+   * physical keyboard key.                                                   
+   */                                                                         
+  if (scanCode == KEY_SysReqest)                                              
+    scanCode = KEY_Print;                                                     
+  else if (scanCode == KEY_Break)                                             
+    scanCode = KEY_Pause;                                                     
+                                                                 
+  /*                                                             
    * and now get some special keysequences                       
    */                                                            
                                                                  
@@ -819,17 +830,6 @@                                              
 #ifdef XKB                                                       
     }
 #endif
-
-  /*
-   * PC keyboards generate separate key codes for
-   * Alt+Print and Control+Pause but in the X keyboard model
-   * they need to get the same key code as the base key on the same
-   * physical keyboard key.
-   */
-  if (scanCode == KEY_SysReqest)
-    scanCode = KEY_Print;
-  else if (scanCode == KEY_Break)
-    scanCode = KEY_Pause;

   /*
    * Now map the scancodes to real X-keycodes ...

-- 
 Ivan U. Pascal         |   e-mail: [EMAIL PROTECTED]
   Administrator of     |   Tomsk State University
     University Network |       Tomsk, Russia
_______________________________________________
Devel mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/devel

Reply via email to