• Benjamin LaHaise's avatar
    Input: atkbd - add 'terminal' parameter for IBM Terminal keyboards · 8c5188b6
    Benjamin LaHaise authored
    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:7306Signed-off-by: default avatarErika Quinn <erikas.aubade@gmail.com>
    Signed-off-by: default avatarBenjamin LaHaise <bcrl@kvack.org>
    Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
    8c5188b6
atkbd.c 43.2 KB