Keyboard controller (computing)
In computing, a keyboard controller is a device that interfaces a keyboard to a computer. Its main function is to inform the computer when a key is pressed or released. When data from the keyboard arrives, the controller raises an interrupt (a "keyboard interrupt") to allow the CPU to handle the input. If a keyboard is a separate peripheral system unit (such as in most modern desktop computers), the keyboard controller is not directly attached to the keys but receives scancodes from a microcontroller embedded in the keyboard via some kind of serial interface. In this case , the controller usually also controls the keyboard's LEDs by sending data back to the keyboard through the wire. The IBM PC AT used an Intel 8042 chip to interface to the keyboard. This computer also controlled access to the A20 line in order to implement a workaround for a chip bug in the Intel 80286. The keyboard controller was also used to initiate a software CPU reset in order to allow the CPU to transition from protected mode to real mode because the 286 did not allow the CPU to go from protected mode to real mode unless the  CPU is reset. This was a problem because the BIOS and the operating system services could only be called by programs in real mode. These behaviors have been used by plenty of software that expects this behavior, and therefore keyboard controllers have continued controlling the A20 line and performing software CPU resets even when the need for a reset via the keyboard controller was obviated by the Intel 80386's ability to switch to real mode from protected mode without a CPU reset. The keyboard controller also handles PS/2 mouse input if a PS/2 mouse port is present. Today the  keyboard controller is either a unit inside a Super I/O device or is missing, having the keyboard controller and mouse controller functions handled by the USB keyboard and USB mouse itself, and its role in controlling the A20 line handled by the chipset. IBM. List of KBC Commands. -The commands listed as “ignored” perform no function. Conclusion. A portable computing device comprising:a keyboard controller having a first input for receiving keystroke inputs and having an output for conveying said keystroke inputs to a main processor; and a secondary processor having an interface to said keyboard controller through a  secondary bus, said secondary bus also being used to communicate with a battery module, wherein said keyboard controller also conveys said keystroke inputs to said secondary processor through said secondary bus. The keyboard controller is programmed to support the IBM® compatible personal computer keyboard serial interface. The keyboard controller receives serial data from the keyboard, checks the parity of the data, translates the scan code, and presents the data to the system as a byte of data in its output buffer. The controller will interrupt the system when data is placed in its output buffer. The byte of data  will be sent to the keyboard serially with an odd parity bit automatically inserted. The keyboard is required to acknowledge all data transmissions. No transmission should be sent to the keyboard until acknowledgment is received for the previous byte sent. The keyboard controller and BIOS to improve the performance of IBM PC machines and their compatibles. A hardwired methodology is used in this keyboard controller instead of a software implementation, as in the traditional 8042 keyboard BIOS. This enables the keyboard controller to respond instantly to all commands sent from the keyboard to the CPU BIOS. This enables popular programs  such as Microsoft® Windows™, NOVELL®, and other programs to run much faster.