Logo

Zerocat PS/2-Keyboard – Get rid of keyloggers.

AUTHORS.md

AUTHORS
=======


* Kai Mertens (See source file for contact information.)


___

(See source file for copyright information.)
    

COPYING.md

Copying
=======


Zerocat PS/2-Keyboard ships copyrighted work.  
See [AUTHORS][] for a list of people which have contributed.

Zerocat PS/2-Keyboard is free software. It makes use of free software
approved licenses only and should be freely distributable:

* [GNU General Public License][GNU GPL]
* [GNU Free Documentation License][GNU FDL]
* [CreativeCommons Attribution-ShareAlike License][CC BY-SA]

Authorship, copyright and license information may be provided in more 
detail on a per-folder and/or per-file basis. Check the sources.

Please report a bug if you find the distribution hindered by any
obstacle. See [Zerocat Website][] for contact information.


___

[AUTHORS]:                ../doc/AUTHORS.md
[GNU-GPL]:                ../doc/GNU-GPL.md
[GNU-FDL]:                ../doc/GNU-FDL.md
[CC BY-SA]:               https://creativecommons.org/licenses/by-sa/4.0/
[Zerocat Website]:        http://www.zerocat.org/


___

(See source file for copyright information.)
    

README.md

README
======


Project Goal
------------


The goal of Zerocat PS/2-Keyboard is to provide you with a save
keyboard, driven by a free-design microcontroller board.


Paths
-----


All paths within this document are relative in respect to the original
location of this source file, which is located in the project’s `doc/`
folder.


Prerequisites
-------------


If you are on GNU Guix System, create your environment:

        guix environment --pure -m ../guix/manifest.scm

Otherwise, check the manifest file and install the listed packages with
the package manager of your distro. Adapt package names as required.


Make Documentation
------------------


To build the documentation, type:

        make -C ../hardware/doc
        make -C ../doc

To get a full list of available targets, type:

        make -C ../hardware/doc help

or

        make -C ../doc help


Contributing
------------


Once you have contributed, add yourself to [AUTHORS][].


### Documentation Files


In order to enrich this documentation:

* add more `*.md` markdown text files to `../doc/`
* maintain copyright footer within new files
* add more folders, images or other files

... and adapt `../doc/Makefile` to produce nice output.

In case more tools are needed, don't forget to update
`../guix/manifest.scm`.


### Shell Scripts


If you intend to write shell scripts, use this skeleton to make them
work for GNU Guix:

        #!/bin/sh

        # Re-exec if we are not using Bash or are using Bash in POSIX mode.
        if [ -z "$BASH" ] || [ "$BASH" = "/bin/sh" ]; then
          bash=`command -v bash`
          if [ -z "$bash" ]; then
            echo "Couldn't find Bash, sorry!"
            exit 1
          else
            exec "$bash" "$0" "$@"
          fi
        fi

        # We're using Bash now.
        set -o errexit
        set -o nounset
        set -o pipefail

        # Your code goes here ...


### Code Files


This project may ship non-code, graphic sources, which cannot be
covered by the standard GNU General Public License. The license header
for code source files thus has been adapted accordingly, please use it
if you intend to write code:

        Zerocat PS/2-Keyboard --- Get rid of keyloggers.

        Copyright (C) 2021  Authors of Zerocat PS/2-Keyboard

        This file is part of Zerocat PS/2-Keyboard.

        This file is free software: you can redistribute it and/or modify it
        under the terms of the GNU General Public License as published by
        the Free Software Foundation, either version 3 of the License,
        or (at your option) any later version.

        This file is distributed in the hope that it will be useful, but
        WITHOUT ANY WARRANTY; without even the implied warranty of
        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
        See the GNU General Public License for more details.

        You should have received a copy of the GNU General Public License
        along with Zerocat PS/2-Keyboard.
        If not, see <http://www.gnu.org/licenses/>.


Version Tags
------------


Within this project’s git repository, versions are tagged according to
the following pattern:

        v<major>.<minor>.<revision>

* major – The resulting product is a major change or upgrade.
* minor – Additional functionality or new features are introduced.
* revision – Bug fixes, minor changes, graphical stuff.


___

[AUTHORS]:        ../doc/AUTHORS.md
[Git]:            https://git-scm.com/
[Zerocat Team]:   http://www.zerocat.org/team.html


___

(See source file for copyright information.)
    

controller-board.md

The Controller Board
====================


List of Files
-------------


* Source Files

    - [board.sch][]

* Generated Images

    - [board.sch.png][]


Test Setup 1
------------


* Learn host<--->controller communication.
* May controller be powered by PS/2’s +5V Power Line?
* What about ground connection? Ground Loop?

```
  +-----------------------+                 +----------------------+
  |                       |                 |                      |
  | ASRock E350M1         |<-- USB Power -->|  Zerocat             |
  | Coreboot Machine      |<---- PS/2 ----->|  PS/2 Controller     |
  | with PS/2 Port,       |                 |  Board               |
  | no Keyboard attached  |                 |                      |
  |                       |                 +----------------------+
  +-----------------------+                         ^
          ^                                         |
          |                                         |
          |                                       RS232
          |                                         |
          |                                         |
          |                                         v
      +-----------+                    +----------------------+
      |           |                    |                      |
      | 230VAC    |------------------->| Laptop ZC-X60        |
      | Power     |                    | + Docking            |
      |           |                    | + RS232 Port         |
      +-----------+                    |                      |
                                       | uploads firmware,    |
                                       | issues key-strokes   |
                                       |                      |
                                       +----------------------+
```


Test Setup 2
------------


```
  +-----------------------+
  |                       |                 +----------------------+
  |   Laptop ZC-T60       |                 |                      |
  |   + Docking           |<-- USB Power -->|  Zerocat             |
  |     + RS232 Port?     |<---- RS232 ---->|  PS/2 Controller     |
  |     + PS/2 Port       |<---- PS/2 ----->|  Board               |
  |                       |                 |                      |
  |                       |                 +----------------------+
  +-----------------------+
          ^
          |
          |
      +-----------+
      |           |
      | 230VAC    |
      | Power     |
      |           |
      +-----------+
```


Circuit Preview
---------------


Nothing evolved, so far. Let’s start with this basic board:

![PS/2 Controller Board][board.sch.png]


___

[board.sch]:        ../hardware/gschem/board.sch "Board Schematic Source"
[board.sch.png]:    ../hardware/gschem/board.sch.png "Board Schematic PNG Preview"


___

(See source file for copyright information.)
    

points-of-interest.md

Points of Interest
==================


Websites
--------


* <http://www.extremetech.com/computing/187279-undetectable-indefensible-security-flaw-found-in-usb-its-time-to-get-your-ps2-keyboard-out-of-the-cupboard>

    Article about USB Security Flaw

* <https://en.wikipedia.org/w/index.php?title=PS/2_port>

    General info about PS/2

* <http://www.computer-engineering.org/ps2keyboard/>

    The PS/2 Keyboard Interface

* <http://www.computer-engineering.org/ps2protocol/>

    The PS/2 Mouse/Keyboard Protocol

* <http://www.computer-engineering.org/ps2keyboard/scancodes1.html>

    Keyboard Scan Codes -- Set 1

* <http://www.computer-engineering.org/ps2keyboard/scancodes2.html>

    Keyboard Scan Codes -- Set 2

* <http://www.computer-engineering.org/ps2keyboard/scancodes3.html>

    Keyboard Scan Codes -- Set 3

* <http://wiki.osdev.org/PS/2_Keyboard>

    good short description

* <http://www.win.tue.nl/~aeb/linux/kbd/scancodes.html>

    Keyboard scancodes in detail

* <https://hackaday.com/2016/01/13/stallmans-one-mistake/>

    See photo in section “Keyboards And Webcams And Hard Drives”.

* <https://deskthority.net/wiki/TrackPoint>

    Informative resource on keyboards and pointing devices



___

(See source file for copyright information.)
    

ps2.md

PS/2
====


WWW Articles
------------


* Looking for articles by author Adam Chapweske

    - <http://www.burtonsys.com/ps2_chapweske.htm>
    - <http://users.utcluj.ro/~baruch/sie/labor/PS2/PS-2_Mouse_Interface.htm>
    - <http://zpt2.tele.pw.edu.pl/kjasio/PS2_Key_Prot.doc>
    - <https://www.tayloredge.com/reference/Interface/atkeyboard.pdf>

* <https://en.wikipedia.org/wiki/PS/2_port>
* <http://www.burtonsys.com/PS2_keyboard_and_mouse_mini-DIN-6_connector_pinouts.html>


Advantages
----------


* PS/2 is now considered a legacy port, which continues to be included
  on many computer motherboards.

* PS/2 ports may be favored for security reasons [...] as they allow
  USB ports to be totally disabled, preventing the connection of [...]
  malicious USB devices

* The PS/2 interface provides no restriction on key rollover.

* The PS/2 interface has near-universal compatibility with BIOS.

* They cause fewer problems when KVM switching with non-Wintel systems.


Short List of Specs
-------------------


* The PC 97 standard introduced a color code: the keyboard port, and
  the plugs on compliant keyboards, were purple; mouse ports and plugs
  were green.

* The pinouts of the connectors (keyboard vs. mouse) are the same, but
  most computers will not recognize devices connected to the wrong port.

* PS/2 ports are designed to connect the digital I/O lines of the
  microcontroller in the external device directly to the digital lines of
  the microcontroller on the motherboard. They are not designed to be hot
  swappable.

* Standard PS/2 mice send interrupts at a default rate of 100 hertz
  when they have data to send to the computer.

* PS/2 allows the sample rate to be overridden, with PS/2 supporting a
  sampling rate of up to 200 Hertz.


PS/2 Pinout Cross Reference
---------------------------


    Function          | 6-pin DIN (PS/2) | 5-pin DIN (AT/XT)  | 6-pin SDL
    --------          | ---------------- | -----------------  | ---------
    +5V               | 4                | 5                  | E
    DATA              | 1                | 2                  | B
    not connected     | 2, 6             | 3                  | A, F
    GND               | 3                | 4                  | C
    CLK               | 5                | 1                  | D


### Pinout 6-Pin DIN


    >
    > Socket:                       Plug:
    >             6   _   5                    5   _   6
    >              o | | o                      · | | ·
    >                |_|                          |_|
    >             o       o                    ·       ·
    >            4         3                  3         4
    >               o   o                        ·   ·
    >              2     1                      1     2
    >


### Pinout 5-Pin DIN


    >
    > Socket:                       Plug:
    >              _   _                         _   _
    >               \_/                           \_/
    >
    >           3         1                   1         3
    >          o           o                 ·           ·
    >             5     4                       4     5
    >            o   2   o                     ·   2   ·
    >                o                             ·
    >


### Pinout 6-Pin SDL


    >
    > Socket:                       Plug:
    >
    >
    >         xxxxxxxxxxxxxxx               xxxxxxxxxxxxxxx
    >           | | | | | |                   | | | | | |
    >           F E D B C A                   A B C D E F
    >
    >


PS/2 Combi Ports
----------------


Mainboards and ThinkPad docking stations often carry a so called PS/2
Combi Port, with keyboard *and* mouse icons at the outlet. The exact
wiring is unknown to the author, three options should be taken into
account. Each option would require different usage of a dedicated
Y-Splitter-Cable.

1.  Combi Port is a PS/2-Keyboard Port with extra clock and data lines
    for mouse at pins 6 and 2.

2.  Combi Port is a PS/2-Mouse Port with extra clock and data lines for
    *keyboard* at pins 6 and 2.

3.  Combi Port is a standard PS/2 port (pins 6 and 2 not connected)
    which is able to detect the type of device at boot time. Using both
    devices (keyboard and mouse) simultaneously is not supported.

Port types 1.) and 2.) would require to use a Y-Splitter-Cable (see
Figure A) for simultaneous operation of keyboard and mouse. Port type
2.) would additionally require to twist the plugs, thus using the mouse
with the keyboard plug and vice-versa.

    >
    >     Figure A: PS/2 Y-Splitter-Cable
    >     ===============================
    >
    >   6-pin Mini-DIN            6-pin Mini-DIN               6-pin Mini-DIN
    >  (PS/2 Combi Port)          (PS/2-Keyboard)              (PS/2-Mouse)
    >
    >         1 -------------------------- 1
    >         2 --------------------------------------------------------1
    >         3 -------------------------- 3 -------------------------- 3
    >         4 -------------------------- 4 -------------------------- 4
    >         5 -------------------------- 5
    >         6 --------------------------------------------------------5
    >
    >


PS/2-Keyboard Port with Dual Keyboard-Like Devices
--------------------------------------------------


Note the different layout of a Y-Splitter-Cable which allows for
simultaneous usage of keyboard-like devices:

    >
    >     Figure B: PS/2 Y-Splitter-Cable
    >     ===============================
    >
    >    6-pin Mini-DIN            6-pin Mini-DIN               6-pin Mini-DIN
    >  (PS/2 Keyboard Port)       (PS/2 Keyboard)           (PS/2 Barcode Scanner)
    >
    >         1 -------------------------- 1 -------------------------- 1
    >         3 -------------------------- 3 -------------------------- 3
    >         4 -------------------------- 4 -------------------------- 4
    >         5 -------------------------- 5 -------------------------- 5
    >
    >


PS/2 Hardware Support with Coreboot
-----------------------------------


Coreboot seems to *not* support PS/2 hardware in first place.
Documentation about PS/2 is often lacking details on coreboot’s board
status pages. i.e.:

* [Coreboot T60 Status Page][]
* [Coreboot T400 Status Page][]
* [Coreboot D945GCLF Status Page][]
* [Coreboot GA-G41M-ES2L Status Page][]
* [Coreboot GA-B75M-D3H Status Page][]
* [Coreboot E350M1 Status Page][]

Exact lists about *which* hardware works *how* has to be gathered
individually and would be a **required source of information**.


[Coreboot T60 Status Page]:           https://www.coreboot.org/Board:lenovo/t60
[Coreboot T400 Status Page]:          https://www.coreboot.org/Board:lenovo/t400
[Coreboot D945GCLF Status Page]:      https://www.coreboot.org/Board:asrock/d945gclf
[Coreboot GA-G41M-ES2L Status Page]:  https://www.coreboot.org/Board:gigabyte/ga-g41m-es2l
[Coreboot GA-B75M-D3H Status Page]:   https://www.coreboot.org/Board:gigabyte/ga-b75m-d3h
[Coreboot E350M1 Status Page]:        https://www.coreboot.org/Board:asrock/e350m1


___

(See source file for copyright information.)
    

x200-keyboard-hack.md

X200 Keyboard Hack
==================


Keyboard Disassembled
---------------------


![ThinkPad X200 Keyboard Disassembled (Mechanics of one Key Missing)][IMG_1076.jpg]


### Listed Overview


* Original Layout: DE

* Seems to have 8 rows and 15 columns of keys:

    - row 1: 12 keys (with audio control and power button)
    - row 2: 15 keys (function keys, and other)
    - row 3: 14 keys
    - row 4: 13 keys
    - row 5: 14 keys
    - row 6: 13 keys
    - row 7: 8 keys + 3 navigation keys
    - row 8: 3 navigation keys

    However, the corresponding X200 sysboard schematics depicts a
    matrix of 8 rows and 16 columns.

* No internal keyboard controller in use.

* Foil connector pads in total: 40 (see photo)

    - top foil (keyswitch side) connector pads: 20
    - lower (backside) connector pads: 20

* Double layer connector cable, schematic needed!

    - simple flat connector pads to keyboard: 40

        + top: 20
        + bottom: 20

    - splits towards... (see photo)

        + Sysboard Plug “JAE CONN40A-1-U1GP”

            Similar, but wrong JAE Connectors:

            - <https://www.jae.com/jccom/en/connectors/Search/BoardToBoard>
            - <http://www.jae.com/z-en/product_en.cfm?l_code=en&series_code=WP9&product_number=WP9-P040VA1-R6000>
            - <http://www.jae.com/z-en/product_en.cfm?l_code=en&series_code=WP7&product_number=WP7B-P040VA1-R8000>

        + and trackpoint board (6x signal, 2x power)

    - note cable is covered with self-adhesive thick aluminium foil 
      when mounted

* integrated trackpoint hardware

    - soldered towards flat-cable with eight pads

    - Trackpoint controller is PTPM754DR 32-pin SSOP, no datasheet
      available. To get some ideas, please refer to:

        + <https://www.mikrocontroller.net/attachment/52583/tpm754.pdf>
        + <https://geekhack.org/index.php?topic=8971.msg775152#msg775152>
        + <https://deskthority.net/wiki/TrackPoint_Hardware>

        visible markings:

        + NXP
        + PTPM754DR
        + CM2983  06
        + TPG0835C
        + 3E_0_B
        + 32pin SSOP

    - additional chip (Quad OpAmp):

        + National Semi
        + M86AF
        + LMV77
        + 4MT
        + 14pin SSOP


Double Layer Keyboard Cable
---------------------------


![Keyboard Cable, splits towards Systemboard and Trackpoint][IMG_1092.jpg]

![Systemboard Connector from JAE, 40-pin + 4 Hold Downs (CONN40A-1-U1GP)][IMG_1084.jpg]


### Circuit Schematic


![Schematic of an X200 Keyboard Cable with 32-pin PTPM754DR TrackPoint Controller][x200-keyboard-cable.sch.png]


Keyboard I/O Pads
-----------------


As visible from the x200 keyboard cable schematics, the keyboard foil
pads are organized in...

* 24 pads for driving the 16x8 matrix (8 rows, 16 columns)
* one pad is provided for the power button
* one pad for the Fn hotkey
* two pads are ground (GND)
* two more pads are connected to ground
* 4 pads are not connected
* three auxiliary lines (yet of unknown function), labeled as KBDID0..KBDID2
* three pads for the mouse button lines

...resulting in 36 active pads.

![Double Layer with integrated Vias][IMG_1088.jpg]

![Keyboard Connector Pads, Top and Bottom][IMG_1091.jpg]


Trackpoint Board
----------------


Please read [PS/2](ps2.md) to get prepared for PS/2 basics.


### Pad Connection


The trackpoint board is connected to the keyboard cable by eight
soldered pads, referenced by names Pad-1..Pad-8 within this
documentation. Pad-1 is located close to the board’s edge.

```
Pad Number  | Function        | Remarks                                                 | 9-pin Sub-D Test Plug
----------  | --------        | -------                                                 | :---
1           | CLK             | close to board’s edge                                   | 9
2           | RST             | can be connected to positive POR, alternatively         | 4
3           | MIDDLE BUTTON   | -                                                       | 8
4           | RIGHT BUTTON    | -                                                       | 3
5           | LEFT BUTTON     | -                                                       | 7
6           | DATA            | -                                                       | 2
7           | VSS (GND)       | connected to thicker route in keyboard cable            | 6
8           | VCC (+5V)       | connected to thicker, edgemost route of keyboard cable  | 1
-           | -               | -                                                       | 5
```


### Alternative Power-On-Reset (POR)


```
>
>   Alternative POR at RST (Pad 2)
>   ==============================
>
>              C
>   VCC --------||------+
>              2.2µF    |
>                       |     R
>   RST ----------------+------/\/\/------- GND
>                               100K
>
```


### Modified Cable


The Keyboard Cable has been modified to ease experimenting with the
disassembled Trackpoint Board. Test Connector is a SUB-D9 male plug.

![Modified Keyboard Cable to Ease Experimenting][IMG_1118.jpg]


### Onboard Controller


Controller in use is the TPM754 from Philips Semiconductors. This is a
8051-based machine which runs proprietary code from IBM:

> “IBM has licensed Philips Semiconductors to sell microcontrollers
> with TrackPoint code. By purchasing a TPM from Philips, the
> purchaser becomes a sub-licensee of Philips. The selling price of
> Philips’ TPM includes the royalties for IBM’s intellectual property,
> which Philips in turn pays to IBM. Customers for TPMs do not need
> to sign any licensing agreement with either IBM or Philips. This code
> is the intellectual property of IBM, which is covered by numerous
> patents, and must be treated accordingly.”
> --- Philips Semiconductors [TPM754 Datasheet][]

[TPM754 Datasheet]:   https://www.mikrocontroller.net/attachment/52583/tpm754.pdf

The TPM754 comes in different packages with different ordering codes.
Unfortunately there is no datasheet nor pinout available for the 32-pin
SSOP package (ordering code PTPM754DR), but in regard to measurements
and the 28-pin SSOP datasheet, the pinout can be guessed in a straight
foreward approach.


#### PTPM754DR 32-pin SSOP Pinout


```
Pin   | Function        | Connected Board Pad           | External PS/2 Mouse (6-pin Mini-DIN)
---   | --------        | -------------------           | ------------------------------------
1     | RxD/T0/P3.4     | -                             | Pin 1 (DATA)
2     | TxD/T1/P3.5     | Pad 1 (CLK), close to edge    | -
3     | ECI/P3.6        | -                             | -
4     | INT1/P3.7       | -                             | Pin 5 (CLK)
5     | RST             | Pad 2 (RST)                   | -
6     | X2              | -                             | -
7     | X1              | -                             | -
8     | VSS             | Pad 7 (GND)                   | Pin 3 (GND)
9     | ZIN             | -                             | -
10    | YIN             | -                             | -
11    | XIN             | -                             | -
12    | XYZRAMP         | -                             | -
13    | AVSS            | -                             | -
14    | AVCC            | -                             | -
15    | not connected   | -                             | -
16    | not connected   | -                             | -
17    | VCC? AVCC?      | -                             | -
18    | not connected   | -                             | -
19    | DECOUPLE        | -                             | -
20    | VREG            | -                             | -
21    | XYDACBIAS       | -                             | -
22    | XYSOURCE        | -                             | -
23    | ZDAC/ASEL       | -                             | -
24    | XYDAC           | -                             | -
25    | P1.2            | -                             | -
26    | VCC             | Pad 8 (VCC)                   | Pin 4 (VCC)
27    | CEX/P1.1        | -                             | -
28    | INT0/P1.0       | Pad 6 (DATA)                  | -
29    | P3.0            | Pad 5 (LEFT BUTTON)           | -
30    | P3.1            | Pad 4 (RIGHT BUTTON)          | -
31    | P3.2            | Pad 3 (MIDDLE BUTTON)         | -
32    | P3.3            | -                             | -
```


### PS/2-Mouse at H8’s TrackPoint Interface


**Warning:** If the TrackPoint is replaced by a PS/2-Mouse, interfacing
with the sysboard’s H8 controller doesn't work. Probably, H8 and
TrackPoint Controller do not talk according to PS/2 standards??


### PS/2-Mouse via Trackpoint Board


Although no interface is provided to attach an additional external PS/2
Mouse, pins 1 and 4 of the TPM754 can be used as a workaround in
conjunction with the VCC and GND power lines. The IBM code separates
data streams from Trackpoint and Mouse clearly, so that one device
moves the screen pointer without being irritated by the other.

![Experimental Setup with External PS/2 Mouse][IMG_1121.jpg]

![Connecting the Trackpoint Board][IMG_1126.jpg]


### TrackPoint at PS/2 Mouse Port


```
>
>     Connect Trackpoint via Test Plug to a Standard PS/2 Mouse Port
>     ==============================================================
>
>
>     +---------VCC---------------------+--------> to Pin 4
>     | +----------------DATA-----------|--------> to Pin 1
>     | |                               |
>     | |   +------RST-------+---||-----+
>     | |   |                |   2.2uF
>    1|2|3 4|5               |
>   \ · · · · · /            +--/\/\/---+
>    \ · · · · /                 100K   |
>     6|7 8 9|                          |
>      |     |                          |
>      |     +-----------CLOCK----------|--------> to Pin 5
>      +---------GND--------------------+--------> to Pin 3
>
>   Sub-D9 Test Plug      ---->    PS/2 6-pin Mini-DIN
>
>
```

This setup has been proved to work with a D945GCLF Intel Desktop Board,
running blobless coreboot firmware and the Trisquel7 Operating System.
The Trackpoint and its attached external PS/2-Mouse is recognized at
the PS/2 Mouse Port along with a PS/2-Keyboard (IBM Model M) attached
to the PS/2 Keyboard Port. The reset line of the Trackpoint is
simulated by the alternative Power-On-Reset circuit.

![Trackpoint with External PS/2-Mouse at Standard PS/2 Mouse Port of a Blobless Coreboot Machine][IMG_1137.jpg]


Drafted Idea for a PS/2-Keyboard with Trackpoint and External Mouse
-------------------------------------------------------------------


```
>
>   PS/2-Keyboard Setup using an X200 Keyboard Matrix with Trackpoint and external Mouse
>   ====================================================================================
>
>
>  ····························································································
>  :                                                                                          :
>  :                                                  +-----------------------------------+   :
>  :  +-----------------------+                       | Board with Free-Design Controller |   :
>  :  | X200 Keyboard         |-----GND---/4----------| ================================= |   :
>  :  | =============         |                       |                                   |   :
>  :  |                       |=====PB and Hotkey=========discard or translate====+       |   :
>  :  | No controller in use. |                       |___                        |       |   :
>  :  |                       |-----KBDID0----------->|   |                       |       |   :
>  :  | * Power Button (PB)   |-----KBDID1----------->| ? |                       |       |   :
>  :  | * Fn Hotkey           |-----KBDID2----------->|___|                       |       |   :
>  :  | * Matrix 16x8         |                       |                           |       |   :
>  :  | * 3 Mouse Buttons     |-----Matrix 16x8-----------------/24----------+    |       |   :
>  :  | * KBDID0..2 Lines     |                       |                      |    |       |   :
>  :  | * 4x Ground           |---Mouse Button M----->|                      |    /2      |   :
>  :  | = 36 Pads             |---Mouse Button R----->|                      |    |       |   :
>  :  |                       |---Mouse Button L----->|                      |    |       |   :
>  :  +-----------------------+                       |                      v    v       |   :
>  :                                                  |              +················+   |   :
>  :                                                  |              : translate into :   |   :
>  :  +-----------------------+                       |              :      PS/2      :   |   :
>  :  | TrackPoint Board      |<<====+5V, GND===============\\       +················+   |   :
>  :  | ================      |                       |     ||               ^            |   :
>  :  |                       |<---Mouse Button M-----|   __||___________    |            |   :
>  :  | 8051-based controller |<---Mouse Button R-----|  |  +5V, GND     |   |            |   :
>  :  | (PTPM754DR) runs      |<---Mouse Button L-----|  |_______________|   |            |   :
>  :  | proprietary code      |                       |    |     ^     ^     |            |   :
>  :  | from IBM.             |<-------Reset----------|    |     |     |     |            |   :
>  :  |                       |                       |    /2    /2    /2    /2           |   :
>  :  | * 3x Mouse Buttons    |     PS/2-Trackpoint   |    |     |     |     |            |   :
>  :  | * PS/2 (clock, data)  |<=======clock/data================+     |     |            |   :
>  :  | * Reset Line          |       PS/2-Mouse      |    |     |     |     |            |   :
>  :  | * Ground              |                       |    |     |     +-----|            |   :
>  :  | * +5V Power           |    Ext. PS/2 Mouse    |    v     |           |            |   :
>  :  | * Ext. PS/2           |<======clock/data===========+     |           |            |   :
>  :  | = 10 Lines            |                       |    |     |           |            |   :
>  :  |                       |                       |    |     |           |            |   :
>  :  +-----------------------+                       +----|-----|-----------|------------+   :
>  :                                                       |     |           |                :
>  :  PS/2-Keyboard with Trackpoint                        /4    /4          /4               :
>  ························································|·····|···········|·················
>                                                          |     |           |
>                 +--------Ext. PS/2-Mouse-----------------+     |           |
>                 |                                              |           |
>                 |                                              v           v
>                 |                     +-----------------------------------------------------+
>                 v                     |                   :| PS/2  |   | PS/2     |:        |
>   +------------------------+          |                   :| Mouse |   | Keyboard |:        |
>   | External PS/2 Mouse    |          |                   :|_______|   |__________|:        |
>   | ===================    |          |                   ·····PS/2-Combi-Port?·····        |
>   |                        |          |                                                     |
>   | proprietary controller |          | Blobfree Coreboot Computer or Laptop                |
>   |                        |          | ====================================                |
>   | * PS/2                 |          |                                                     |
>   | = 4 Lines              |          | * with two PS/2 Ports                               |
>   |                        |          | * or with one PS/2 Combi Port and Y-Splitter-Cable  |
>   +------------------------+          |                                                     |
>                                       | Working Example(s):                                 |
>                                       |                                                     |
>                                       | * D945GCLF Desktop Board with Blobless Coreboot     |
>                                       |                                                     |
```


Conclusion
----------


In case a desktop board with blobless coreboot is used as host, this
PS/2 free-design keyboard would significantly improve the computer
user’s situation in respect to freedom and security. Let’s go for
prototyping!


___

[IMG_1076.jpg]:  ../images/IMG_1076.jpg "ThinkPad X200 Keyboard Disassembled (Mechanics of one Key Missing)"
[IMG_1088.jpg]:  ../images/IMG_1088.jpg "Double Layer with integrated Vias"
[IMG_1092.jpg]:  ../images/IMG_1092.jpg "Keyboard Cable, splits towards Systemboard and Trackpoint"
[IMG_1084.jpg]:  ../images/IMG_1084.jpg "Systemboard Connector, unknown Type"
[IMG_1091.jpg]:  ../images/IMG_1091.jpg "Keyboard Connector Pads, Top and Bottom"
[x200-keyboard-cable.sch.png]:     ../hardware/gschem/x200-keyboard-cable.sch.png "Schematic of an X200 Keyboard Cable with 32-pin PTPM754DR TrackPoint Controller"
[IMG_1118.jpg]:  ../images/IMG_1118.jpg "Modified Keyboard Cable to Ease Experimenting"
[IMG_1121.jpg]:  ../images/IMG_1121.jpg "Experimental Setup with External PS/2 Mouse"
[IMG_1126.jpg]:  ../images/IMG_1126.jpg "Connecting the Trackpoint Board"
[IMG_1137.jpg]:  ../images/IMG_1137.jpg "Trackpoint with External PS/2-Mouse at Standard PS/2 Mouse Port of a Blobless Coreboot Machine"


___

(See source file for copyright information.)
    

Documentation for “Zerocat PS/2-Keyboard” as of Tue, 26 Oct 2021 10:05:27 +0200
Repository: git://zerocat.org/zerocat/projects/ps2-keyboard
Version: 41a9535
Branch: master