8c5188b6d3
Many of the IBM Terminal keyboards from the 1980s and early 1990s communicate using a protocol similar, but not identical to the AT keyboard protocol. (Models known to be like this include 6110344, 6110668, 1390876, 1386887, and possibly others.) When the connector is rewired or adapter to an AT-DIN or PS/2 connector, they can be connected to a standard PC, with three caveats: a) They can only use scancode set 3; requests to use anything else are quietly ignored. b) The AT Command to request Make, Break and Repeat codes is not properly interpreted. c) The top function keys on a 122 key keyboard, and the arrow/edit keys in the middle of the board send non-standard scancodes. C) is easily taken care of in userspace, by use of setkeycodes B) can be taken care of by a userspace hack (that makes the kernel complain in dmesg) A) is fixable in theory, but on the keyboard i tested on (6110668), it seems to be detected unoverridably as Set 2, causing userspace oddities that make it harder to fix C). Enclosed is a small patch to the kernel that fixes A) and B) in the kernel, making it much easier to fix C) in userspace. It adds a single kernel command line parameter that overrides the detection that sets these boards as set 2, and instead of sending the Make-break-repeat command to the keyboard, it sends the make-break command, which is properly recognized by these keyboards. Software level key repeating seems to make up for the lack of hardware repeat codes perfectly. Without manually setting the command line parameter (tentatively named atkbd.terminal), this code has no effect, and the driver works exactly as before. See also: http://www.seasip.info/VintagePC/ibm_1390876.html http://www.seasip.info/VintagePC/ibm_6110344.html http://geekhack.org/showwiki.php?title=Island:7306 Signed-off-by: Erika Quinn <erikas.aubade@gmail.com> Signed-off-by: Benjamin LaHaise <bcrl@kvack.org> Signed-off-by: Dmitry Torokhov <dtor@mail.ru> |
||
---|---|---|
.. | ||
aaed2000_kbd.c | ||
adp5520-keys.c | ||
adp5588-keys.c | ||
amikbd.c | ||
atakbd.c | ||
atkbd.c | ||
bf54x-keys.c | ||
davinci_keyscan.c | ||
ep93xx_keypad.c | ||
gpio_keys.c | ||
hil_kbd.c | ||
hilkbd.c | ||
hpps2atkbd.h | ||
imx_keypad.c | ||
jornada680_kbd.c | ||
jornada720_kbd.c | ||
Kconfig | ||
lkkbd.c | ||
lm8323.c | ||
locomokbd.c | ||
Makefile | ||
maple_keyb.c | ||
matrix_keypad.c | ||
max7359_keypad.c | ||
mcs_touchkey.c | ||
newtonkbd.c | ||
nomadik-ske-keypad.c | ||
omap-keypad.c | ||
omap4-keypad.c | ||
opencores-kbd.c | ||
pxa27x_keypad.c | ||
pxa930_rotary.c | ||
qt2160.c | ||
samsung-keypad.c | ||
sh_keysc.c | ||
stmpe-keypad.c | ||
stowaway.c | ||
sunkbd.c | ||
tca6416-keypad.c | ||
tnetv107x-keypad.c | ||
twl4030_keypad.c | ||
w90p910_keypad.c | ||
xtkbd.c |