improve kbd usability. this patch updates usb/kb in the following ways
• revamp the repeat process. eliminate the races. as a side effect,
the gotos are gone.
• support keypad used as a keypad. to avoid surprises, the led is
driven to communicate the state to the user. the default is on.
(that is, typing on the keypad yields numbers.)
- the scan code complete with escape is now stored in the
usb-to-scancode table. depending on the state of numlock,
the escape may be stripped for usb codes from keypad.
- move magic processing (for leds and f7/f8) to the input
side. this is because we need the usb code to do it. the
downside: the magic action does not repeat.
• support jp keyboards that produce nonstandard usb codes.
- also improve scan table to support f11-f24. unfortunately
the use of overlapping escapes for e.g. home (KF|13)
makes f-keys above f12 unreliable.
• the standard says that the endpoint may be an In/Out (Eboth)
endpoint. support that.
• use the original eid, not the one created when we open the endpoint
for reconnection. (found due to crash when using the wrong eid.)
i'm open to suggestions on some of the judgement calls made in
this patch, but i'll propose this as is for now to get feedback.
|