Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 23 Feb 2006 14:27:04 -0800
From:      Maksim Yevmenkin <maksim.yevmenkin@savvis.net>
To:        Norbert Koch <NKoch@demig.de>
Cc:        freebsd-hackers@freebsd.org
Subject:   Re: does ukbd delay break scan codes?
Message-ID:  <43FE36B8.7070601@savvis.net>
In-Reply-To: <43FE2C4F.6030909@savvis.net>
References:  <000001c6379d$63036d80$4801a8c0@ws-ew-3.demig.intra> <43FE2C4F.6030909@savvis.net>

next in thread | previous in thread | raw e-mail | index | archive | help
Maksim Yevmenkin wrote:
> Norbert,
> 
> [...]
> 
>> I still do not know where it comes from,
>> but what I found so far is,
>> that the usb keyboard (or ukbd driver)
>> seems to delay the break codes for
>> keys with prefix E0 (which may or may not
>> have anything to do with my problem).
>>
>> E.g., I press Keypad-Enter and see
>>   E0 1C E0
>>         ^prefix
>>      ^make code
>>   ^prefix
>> and nothing else. As soon as I press
>> e.g. Enter (any key works) I see
>>   9C 1C 9C
>>         ^break code
>>      ^make code
>>   ^delayed break code.
>>
>> Does anyone have an idea where that
>> may come from?
> 
> i see this to on week old -current. if ukbd(4) delays break code then 
> this might explain state synchronization problem with kbdmux(4). i guess 
> we should start digging into ukbd(4), starting with ukbd_interrupt() to 
> see why this happening.

just by looking at the code, i think, that ukbd_check_char() should also 
return "true" if ks_buffered_char[0] != 0, i.e. try the following 
untested patch

--- ukbd.c.orig Thu Feb 23 14:24:21 2006
+++ ukbd.c      Thu Feb 23 14:25:47 2006
@@ -1145,9 +1145,7 @@
         state = (ukbd_state_t *)kbd->kb_data;
         if (!(state->ks_flags & COMPOSE) && (state->ks_composed_char > 0))
                 return TRUE;
-       if (state->ks_inputs > 0)
-               return TRUE;
-       return FALSE;
+       return ukbd_check(kbd);
  }

  /* some useful control functions */

===

i will try this as soon as my buildworld/buildkernel completes.

thanks,
max



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?43FE36B8.7070601>