does ukbd delay break scan codes?
Maksim Yevmenkin
maksim.yevmenkin at savvis.net
Thu Feb 23 14:27:09 PST 2006
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
More information about the freebsd-hackers
mailing list