Browse Prior Art Database

Method to Provide Numeric Keypad Functions on a Keyboard

IP.com Disclosure Number: IPCOM000038427D
Original Publication Date: 1987-Jan-01
Included in the Prior Art Database: 2005-Jan-31
Document File: 3 page(s) / 16K

Publishing Venue

IBM

Related People

Day, M: AUTHOR [+2]

Abstract

A method is described to make the keypad function and dedicated cursor keys on a keyboard of a Personal Computer (PC) transparent to application programs for compatibility requirements. The IBM Personal Computer family of products has established a keyboard layout where 14 outboard keys function as either numeric keypad keys or as cursor keys. The numeric keypad keys consist of the 0-9,+,-,* and . keys. The cursor keys are overlayed on the same keys with the Cursor Left, Right, Up, Down, Home, Page Up, Page Down, and End keys. The PC family of products designed the keypad area to be selectable between cursor functions and numeric functions with the addition of a third key called Num Lock. Each time a key is pressed on a keyboard, the hardware generates a unique code for that key, called a scan code.

This text was extracted from a PDF file.
This is the abbreviated version, containing approximately 44% of the total text.

Page 1 of 3

Method to Provide Numeric Keypad Functions on a Keyboard

A method is described to make the keypad function and dedicated cursor keys on a keyboard of a Personal Computer (PC) transparent to application programs for compatibility requirements. The IBM Personal Computer family of products has established a keyboard layout where 14 outboard keys function as either numeric keypad keys or as cursor keys. The numeric keypad keys consist of the 0-9,+,-,* and . keys.

The cursor keys are overlayed on the same keys with the Cursor Left, Right, Up, Down, Home, Page Up, Page Down, and End keys. The PC family of products designed the keypad area to be selectable between cursor functions and numeric functions with the addition of a third key called Num Lock. Each time a key is pressed on a keyboard, the hardware generates a unique code for that key, called a scan code.

The hardware also generates an interrupt to the processor to activate a keyboard processing routine in firmware or the application program.

The Num Lock key causes such a scan code to be presented to the software which then changes a state flag called NUM_STATE in system memory. This NUM_STATE flag is then used by the software to determine how the scan codes of the keypad area keys are to be used. If the flag is set, the scan codes are interpreted as numeric keys.

If the flag is reset, the keypad area scan codes are interpreted as cursor movement keys. The new keyboard is down-sized due to size constraints. Because of the relatively high use of the cursor movement keys, Up, Down, Left, and Right, four keys on this keyboard are designated as cursor keys. The numeric keypad is defined as an overlay or shared function with 14 inboard character keys: the M,J,K,L,U,I,O,7,8,9,-,=,. /. This method makes this new arrangement of keys transparent to the application programs, and keeps the cursor and numeric keypad keys functionally independent, i.e., not dependent on the Num Lock key. This method is dependent on how the system translates unique scan codes into PC compatible scan codes. Briefly, this is done by system firmware providing a keyboard preprocessing function that is triggered by a unique interrupt from the keyboard and translates the unique keyboard scan codes into PC compatible scan codes. These scan codes are then loaded into a hardware holding register addressable at I/O address 60H. I/O address 60H is where all PC family software reads the keyboard scan codes after being interrupted by a keyboard interrupt, indicating that a key has changed state and its scan code is ready to be read. Loading of holding register 60H causes the keyboard interrupt to activate the keyboard processing routine in the firmware or application program. When the keyboard routine has read the scan code from I/O address 60H, it issues a Clear Keyboard command that triggers the keyboard preprocessing function to load any pending scan codes into the holding register from the scan code queue. It is import...