How does the keyboard interface work? - Computer PC Packages
Search Computer PC Packages
Basket
0 Items
($0)
   CLICK BELOW FOR LIVE CHAT     
Comodo Logo
TESTED 22 MAY
  Welcome Guest LOGIN |  CREATE NEW ACCOUNT |  MY ACCOUNT  |  CART CONTENTS  |  CHECKOUT   

Main Categories
Computer SSL Cert

Computer PC Packages is encrypted with 256bit ssl for secure credit card transactions.

How does the keyboard interface work?
by Computer PC Packages
     
     

The IBM keyboard is connected to the computer through a serial interface similar to a COM port. When you press a key, the keyboard sends a "scan-code" for that key to the computer. When you release the key, the keyboard sends a release code to the computer. If you hold down one key and press and release another key, the computer will receive the scan-code for the held key and a scan and release code for the other key. Since the release code for the held key was not received, the computer knows that the held key was down while the other key was pressed. In this way, the computer can handle the Shift, Alt and Ctrl keys (and any key could work like a shift key, since all keys work alike). The ROM BIOS in the computer buffers the data from the keyboard, translates the scan-codes to ASCII and handles the operation of the shift and lock keys. The keyboard itself also has a small buffer and there is hardware flow-control for preventing overruns. All of this seems simple and quite elegant, but by the time we get to the AT keyboard the details of the implementation are so complicated as to ruin an otherwise ideal keyboard.

The XT keyboard's interface almost captures the above elegance (indeed it is the only elegant thing about the XT, IMHO). The interface uses a 5-pin DIN connector with these signal assignments:

     1     CLK/CTS (open-collector)
     2     RxD
     3     RESET
     4     GND
     5     +5V

When the keyboard has a byte to send to the computer, it shifts 9 bits out to the data line (RxD) with nine clock pulses on the CLK line. The data format is 1 start bit, followed by 8 data bits. The baud rate is roughly 2000 bits per second and is not precisely defined. Once a byte is completely transmitted, the computer holds the Clear-To-Send (CTS) line low to prevent the keyboard from sending any more bytes until the keyboard interrupt handler reads the current one. Usually a simple 9-bit clearable TTL shift register is used to receive keyboard data. The 9th bit of the shift register is used to drive an open-collector buffer connected to the CTS line. When the start-bit gets all of the way through the shift register, it holds the CTS line low itself. Once the CPU reads the assembled byte, it has only to clear the shift register to release the CTS line and allow another byte to be received. Three TTL chips or a single PAL can implement an entire XT keyboard interface.

The data bytes which the XT sends are also simple. Codes 0-127 are the scan-codes. Codes 128-255 are the release codes- they're the same as the scan codes, but with the high bit set. The XT keyboard has only 84 keys, so not all of the scan-codes are used.

The only problems with the XT keyboard are the lock-status lights (Caps-lock, Scroll-lock and Num-lock) and the key repeat mechanism. The lock-status lights can get out of sync with the computer's idea of which lock keys are activated, but this only happens if someone resets the keyboard by unplugging it temporarily. When you hold a key down long enough, the keyboard starts repeating the scan-code for that key. The release code is still only transmitted once, when the key is released. The problem here is that the delay to the start of the repeats and the repeat rate were made too slow. Of course, the keyboard really doesn't have to handle repeat at all, since the computer knows when keys are pressed and released and has a timer itself. Old XT keyboard TSRs allowed you to adjust the repeat delay and rate by duplicating the key repeat mechanism in the computer.

Once IBM found that it had a nearly perfect keyboard it, of course, decided that it had to be almost completely redesigned for the AT. The keyboard didn't have to be redesigned- there were enough extra scan-codes for the AT's 101 key keyboard and the repeat mechanism could simply have been moved to the BIOS. But no, they had to redesign everything. Sigh.

The AT uses a 5-pin DIN and the PS/2 uses a smaller connector with the same signals:

     1     CLK/CTS (open-collector)
     2     RxD/TxD/RTS (open-collector)
     3     Not connected or Reset
     4     GND
     5     +5V

Now the interface is bi-directional. When the computer wants to send a byte to the keyboard, it asserts RTS and releases CTS. If you're lucky, the keyboard isn't deciding to transmit at the same time and it responds by giving 10 clock pulses (at about 10000 baud) on the CLK line. The computer shifts a frame out on TxD on rising clock edges. The frame format is now 1 start bit, 8 data bits and 1 odd parity bit. The keyboard takes RTS being held low as the first start bit, and the first data bit should be sent on TxD after the first clock edge is received. Yes, now you need a full UART for the keyboard interface since you have to both transmit and receive and generate and check parity (but it's still not RS-232- that would have been too logical). Why do you need parity checking on a three foot long keyboard cable? Because collisions can occur since the lines are so overloaded with signals with different meanings and parity provides the means for detecting these collisions.

The AT documentation says that pin 3 is "reserved", so the keyboard has to provide its own reset. But on the original AT, pin 3 was still Reset and IBM's own keyboards at that time needed Reset (original AT keyboards won't work on some old clones because of this). Don't ask me... I don't understand why they did this.

The protocol on the keyboard interface is now much more complicated. These bytes are defined: Commands

  ED <byte>                 Set leds depending on byte
                              bit 0 is Scroll lock
                              bit 1 is Num lock
                              bit 2 is Caps lock

EE Echo EE (for testing?) F0 <mode> Select mode 1, 2 or 3 F2 Send keyboard I.D. F3 <byte> Set repeat delay and rate byte is: 0ddbbaaa delay is (dd+1)*250 msec rate is (8+aaa)*2^bb*4 msec

F4 Clear buffer F5 Restore default settings and wait for enable F6 Restore default settings FA Acknowledge FE Error- please retransmit FF Reset keyboard

Status returns

  00                        Buffer overflow
  AA                        Self-test passed
  F0 <scan-code>            Release code
  FA                        Acknowledge last command
  FD                        Self-test failed
  FC                        Self-test failed
  FE                        Last command in error; re-send
  E0 scan/release code      Extended keys in Mode 2

The computer and keyboard must acknowledge each command and key code with either FA if there was no error, or FE if the last command/key-code should be re-sent. There are three modes of operation for the keyboard, depending on which scan code assignments you want (these can often be set by a switch on the back of keyboard, except that if mode 1 is selected from the switch, the protocol is eliminated an the keyboard works exactly like an original XT keyboard- newer keyboards only support modes 1 and 3). In mode 1, the keyboard gives XT scan-codes. The keyboard handles the cursor keypad (which didn't exist on the XT) by simulating pressing or releasing a shift key (depending on whether shift or num-lock are pressed) and sending codes from the numeric keypad. Mode 2 works like mode 1, except that when the keyboard does the weird stuff with the numeric keypad it prefixes everything with E0 and the release codes are the scan-codes prefixed with F0. In mode 3, each key gets a unique code and the release codes work as in mode 2: the release are the scan-codes prefixed by F0.

When the AT keyboard is first reset it's supposed to send an AA if its self-test passed or FD or FC if it failed. But before it does this, it sends a continual stream of AAs with the parity incorrect. Once the computer sends an FE to indicate that there is a parity error, the keyboard stops sending bad AAs and sends a correct AA or an FD or FC. This sounds like someone made a quick fix in the keyboard firmware for mis-matched reset timing (the keyboard always finishes resetting before the computer so the computer could miss the AA/FD/FC

This article was published on Friday 24 April, 2009.
Article Rating:
Votes: 0
How does the keyboard interface work?
Name:    
E-Mail:    
Website:
Rating:  
Rating Saved


Please note that your review for may take up to 24 hours to process and may not be immediately viewable.
 

Customer Information for How does the keyboard interface work?:

Ask your question about How does the keyboard interface work?
E-Mail:    
Enter Code
Random Products for How does the keyboard interface work?
Acer Aspire 1690 Data Recovery Service Hourly $35.00
Acer Aspire 1690 Data Recovery Service Hourly Acer Aspire 1690 Data Recovery Service Hourly
buy now | more info
CALIFORNIA CA Financial Statement Form Download $9.99
CALIFORNIA CA Financial Statement Form Download MDOFPC for the month of May presents to you the CALIFORNIA CA Financial Statement Form Download
buy now | more info
PENNSYLVANIA PA Moving Contract Form Download $9.99
PENNSYLVANIA PA Moving Contract Form Download PENNSYLVANIA PA Moving Contract Form Download
buy now | more info
Acer Aspire 1830T Virus & Spyware Removal Hourly $35.00
Acer Aspire 1830T Virus & Spyware Removal Hourly MDOFPC for the month of May presents to you the Acer Aspire 1830T Virus & Spyware Removal Hourly
buy now | more info
AFFILIATE INFORMATION
Affiliate Information
Affiliate Program FAQ
Affiliate Log In
GENERAL INFORMATION
FAQ Section
* Gift Voucher FAQ
* Shipping Overview
Privacy Notice
Conditions
Contact Us
Request for Quote
SUPPORT
* Create Support Ticket
* Support Forums
Installation Manuals
Download Software
* Download Overview
* Download Instructions
* Free Download Tools
Computer PC Packages Misc
* Custom Computer Packages
Site Map
* Computer PC Packages Overview Blog
* RSS feed for best sellers
* RSS feed for new products
* RSS feed for categories
* ROR feed for Products

How does the keyboard interface work?

How does the keyboard interface work? - Computer PC Packages
Computer PC Packages is a subsidiary of MD of PC Doctor of Computers. All rights reserved 2012
Please Contact: MDofPC@gmail.com or 412-250-7965 for sales or support
Fax: 412-568-0010