Browse Prior Art Database

Interrupt-Driven KEYSTROKE Capture and Playback

IP.com Disclosure Number: IPCOM000036545D
Original Publication Date: 1989-Oct-01
Included in the Prior Art Database: 2005-Jan-29
Document File: 3 page(s) / 17K

Publishing Venue

IBM

Related People

Lin, C: AUTHOR [+4]

Abstract

Disclosed is a programming method for recording keystroke data, maintaining and playing keystroke data back on a PC Convertible. Existing tools for the IBM PC did not support the IBM PC Convertible due to its unique non-mistable interrupt (NMI) structure. A keyboard clear NMI is used to save the converted PC1 scan code, keystroke status byte and delta time period in the memory buffer, which holds the data until it is to be written into a test keystroke file. These saved keystroke scan codes in the keystroke test file can be modified, if needed, and played back by a program that writes the keystroke data back to an I/O port and generates the appropriate interrupt. Related Concepts

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

Page 1 of 3

Interrupt-Driven KEYSTROKE Capture and Playback

Disclosed is a programming method for recording keystroke data, maintaining and playing keystroke data back on a PC Convertible. Existing tools for the IBM PC did not support the IBM PC Convertible due to its unique non- mistable interrupt (NMI) structure. A keyboard clear NMI is used to save the converted PC1 scan code, keystroke status byte and delta time period in the memory buffer, which holds the data until it is to be written into a test keystroke file. These saved keystroke scan codes in the keystroke test file can be modified, if needed, and played back by a program that writes the keystroke data back to an I/O port and generates the appropriate interrupt. Related Concepts

1. In the keyboard architecture for the IBM PC, a keystroke is entered by the user; its scan code data is fed by the hardware into an I/O port, and a hardware interrput level 1 (INT 9) is generated. The keystroke is then made available to the applications via BIOS or reading the I/O port 60H directly.

2. In the keyboard architecture for the IBM PC Convertible (PCC), a keystroke is entered by the user; its (PCC) scan code is fed by the hardware into an I/O port, which generates keyboard data-ready NMI. A keyboard data ready NMI handler translates this PCC scan code at the I/O port into its PC1 compatible scan code and places that PC1 scan code into another I/O port, which generates the hardware level 1 (INT 9) interrupt. When an INT 9 handler (BIOS or application) finishes and issues the end of interrupt command, a PCC keyboard clear NMI is generated. The keyboard clear NMI sets up to allow scan code translation of the next PC Convertible keystroke.

3. Keystroke status flag specifies some special keys, e.g., insert, num lock, left shift, etc., are being pressed.

A few test tools had been developed to record and maintain the software test data and then play them back. But these existing tools can not be directly applied to record the test data on the PC Convertible due to the difference of the keyboard architecture in IBM PC and PC Convertible. Here, a new tool is designed to attain the goal, make the test data file easily maintained and play each of these test data back based on the time period for entering it. The new tool includes a keystroke recording, a keystroke playback and two conversion programs. Keystroke Record

A resident record program is designed to take over the NMI handler and check the NMI source. If a keyboard clear NMI is detected, then the keystroke scan data is read from I/O port 60H, keystroke status byte is fetched from BIOS data area, and a delta time period for the keystroke is computed. The four bytes (scan code, keystroke status, time period) for each keystroke is stored in the output memory buffer. Until an ending record keystroke sequence left_shift+right_shift is entered, the buffer will continue to accumulate the keystrokes. When the ending record keystroke is keyed, the keystrok...