WO1994023356A1 - Keyboard port communication apparatus and method - Google Patents

Keyboard port communication apparatus and method Download PDF

Info

Publication number
WO1994023356A1
WO1994023356A1 PCT/CA1994/000184 CA9400184W WO9423356A1 WO 1994023356 A1 WO1994023356 A1 WO 1994023356A1 CA 9400184 W CA9400184 W CA 9400184W WO 9423356 A1 WO9423356 A1 WO 9423356A1
Authority
WO
WIPO (PCT)
Prior art keywords
die
device
code
upstream
downstream
Prior art date
Application number
PCT/CA1994/000184
Other languages
French (fr)
Inventor
Thomas Michael Taylor
Karim Amirali Mitha
Jennifer Sarah Blair
Paul Dawson Nikkel
Original Assignee
Tanisys Technology, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority to US4122893A priority Critical
Priority to US041,228 priority
Priority to US17171693A priority
Priority to US171,716 priority
Application filed by Tanisys Technology, Inc. filed Critical Tanisys Technology, Inc.
Publication of WO1994023356A1 publication Critical patent/WO1994023356A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/02Input arrangements using manually operated switches, e.g. using keyboards or dials
    • G06F3/0202Constructional details or processes of manufacture of the input device
    • G06F3/021Arrangements integrating additional peripherals in a keyboard, e.g. card or barcode reader, optical scanner

Abstract

An apparatus comprising a central processing unit, upstream and downstream communications ports connected to the central processing unit, transfer means connected to the upstream and downstream communications ports, the transfer means being controlled by the central processing unit to selectively enable and disable the transfer of signals between the downstream communications port and the upstream communications port in response to signals received at the upstream communications port.

Description

KEYBOARD PORT COMMUNICATION APPARATUS AND METHOD

CROSS-REFERENCES TO RELATED APPLICATIONS

This is a continuation-in-part of co-pending United States patent application serial number 08/041,228, filed March 31, 1993. BACKGROUND OF THE INVENTION

This invention relates to communications devices, for communicating with a keyboard port of a host computer.

Usually, only a conventional keyboard is normally connected to a conventional keyboard port of a host computer. At present there are few devices which can be connected to a conventional keyboard port at the same time as a conventional keyboard.

One problem with connecting an alternative input device and a conventional keyboard simultaneously to a conventional keyboard port is that a system of addressing each device individually must be provided. This can be difficult with IBM (trademark) computers and clones thereof due to the keyboard communication protocol which requires that the keyboard acknowledge every byte sent to it by the host. Care must be taken to ensure that the device and the keyboard do not simultaneously attempt to send this acknowledgement to the host computer. Preferably such a communications method would permit a plurality of devices to be simultaneously connected to the keyboard port along with the conventional keyboard, without causing corruption of conventional keyboard transmissions or device communications .

Preferably, the method prevents unintelligible commands from being sent to the keyboard.

The present invention addresses these problems.

A typical communication arrangement might be to simply send messages to the device through the keyboard controller. This however, cannot always be done because many personal computers have different keyboard controllers which may or may not permit arbitrary data to be sent from the host computer to devices connected to the keyboard port.

It is desirable to employ a communications method which will permit arbitrary data to be transmitted, without regard to the type of keyboard controller installed in the host computer.

The present invention addresses this need.

SUMMARY OF THE INVENTION

According to one aspect of the invention there is provided an apparatus comprising a central processing unit, upstream and downstream communications ports connected to the central processing unit, transfer means connected to the upstream and downstream communications ports, the transfer means being controlled by the central processing unit to selectively enable and disable the transfer of signals between the downstream communications port and die upstream communications port in response to signals received at the upstrea communications port.

Preferably, the upstream and downstream communications ports include upstream an downstream clock and data signal lines respectively and the transfer means includes a repeate for repeating signals received at the downstream clock and downstream data signal lines a the upstream clock and upstream data signal lines respectively and for repeating signal received at the upstream clock and upstream data signal lines at the downstream clock an downstream data signal lines respectively.

Preferably, the repeater includes impedance means for presenting a low impedanc path between the upstream data signal line and downstream data signal line and between th upstream clock signal line and the downstream clock signal line when the transfer means i enabling the transfer of signals, and for presenting a high impedance path between th upstream data signal line and the downstream data signal line and between the upstream clock signal line and the downstream clock signal line when the transfer means is disabling the transfer of signals.

Preferably, the impedance means includes a first analog switch connected to th upstream data signal line and the downstream data signal line and controlled by the central processing unit to selectively connect and disconnect the downstream data signal line with the upstream data signal line and a second analog switch connected to the upstream clock signal line and the downstream clock signal line and controlled by the central processing unit to selectively connect and disconnect the downstream clock signal line with the upstream cloc signal line.

The apparatus may further include imposing means for imposing a predefined signal state on the downstream clock signal line when the transfer of signals between th downstream clock signal line and the upstream clock signal line is disabled, the imposing means being controlled by the central processing unit. The imposing means may include an analog switch controlled by the central processing unit for connecting the downstream clock signal line to a circuit node having the predefined signal state and the pre-defined signal state may be a low voltage level. The apparatus may further include communication means associated with the central processing unit for communicating with an upstream apparatus connected to the upstream communications port.

The communications means may include code executable by the central processing unit to cause the central processing unit to communicate with the upstream apparatus. The apparatus may further include maintaining means for maintaining the transfer means disabled during communications between the central processing unit and the upstream apparatus and for re-enabling the transfer means upon the termination of communication between the central processing unit and the upstream apparatus. The maintaining means may include code executable by the central processing unit to cause the central processing unit to determine when the communications between the central processing unit and the upstream apparatus are terminated.

In accordance with another aspect of the invention there is provided a method o selectively establishing communications between an upstream device and a selected downstream device in a plurality of series-connected downstream devices, the method comprising the steps of: selectively enabling and disabling the transfer of signals between a downstream communications port and an upstream communications port of the selected downstream device, in response to signals received at the upstream communications port.

The method may further include the step of sending a pre-determined code in the signals, from the upstream device to all downstream devices, the pre-determined code having code elements.

The method may also further include the step of responding to the pre-determined code at the selected downstream device by disabling the transfer of signals between the downstream communications port and the upstream communications port of the selected downstream device.

Optionally, the method may include the step of sending redundant communications codes to the selected device, the redundant communications codes having at least some code elements corresponding to elements of the pre-determined code.

Preferably, the method further includes the step of receiving the redundant communications codes at each downstream device and determining whether or not the code elements match corresponding code elements of a key code and executing the step of disabling when a match is found. Optionally, the method may include the step of fragmenting the pre-determined code to produce code fragments and sending to the downstream device a succession of the redundant communications codes having at least some code elements corresponding to the elements of the code fragments. The method would include the step of receiving the redundant communications codes at each downstream device and determining whether or not the code fragments match corresponding key code fragments and executing the step o disabling when a match is found.

Optionally, the method may include the step of sending LED command codes a redundant communication codes. The method may further include the step of conducting communications between th upstream device and the selected downstream device while maintaining disabled the transfe of signals between the downstream communications port and the upstream communication port of the selected downstream device to disable communications between the remainin downstream devices and the upstream device during the communications. The method ma then include the step of re-enabling the transfer of signals between the downstrea communications port and the upstream communications port of the selected downstrea device to re-enable communication between the remaining downstream devices and th upstream device upon completion of the communications.

Preferably, the method further includes die step of passing communications message from the upstream device to the selected downstream device by sending redundan communications codes to the selected device, the communications codes having at least som code elements corresponding to elements of the messages.

Optionally, the method may include die step of fragmenting the communication messages to produce message fragments and sending to the downstream device a successio of redundant communications codes having at least some code elements corresponding to th elements of the message fragments.

According to a further aspect of the invention there is provided an apparatu comprising a host computer having a keyboard port, the keyboard port having a clock signal line and a data signal line, the host computer being operable to control the states of the cloc signal line and die data signal line. The apparatus further includes a first device connecte to the keyboard port, the device including a first central processing unit, first upstream an first downstream communications ports, the first upstream communications port bein connected to the keyboard port, and first transfer means connected to the first upstream an downstream communications ports, the first transfer means being controlled by the firs central processing unit to selectively enable and disable the transfer of signals between th first downstream communications port and the first upstream communications port in respons to signals received at the first upstream communications port.

The apparatus may further include a second device, die second device including second central processing unit, a second upstream communications port, the second upstrea communications port being connected to the first downstream communications port of the firs device, a second downstream communications port and second transfer means connected to die second upstream and second downstream communications ports, the second transfer means being controlled by the second central processing unit to selectively enable and disable the transfer of signals between the second downstream communications port and the second upstream communications port in response to signals received at the second upstream communications port.

The apparatus may further include at least one further device including a further central processing unit, further upstream and further downstream communications ports, and further transfer means connected to the further upstream and downstream communications ports, the further transfer means being controlled by the further central processing unit to enable and disable the transfer of signals between the further downstream communications port and the further upstream communications port in response to signals received at the further upstream communications port. The at least one further device is connected in series, between the first and second devices such that the further upstream communications port of the at least one further device is connected to the first downstream communications port of the first device and the further downstream communications port of the at least one further device is connected to the second upstream communications port of the second device.

Preferably, the host computer includes host communications means for communicating through the keyboard port with at least one selected device selected from the group comprising the first device, the second device and the at least one further device and wherein each of the devices includes respective device communications means for conducting communications with the host communications means.

Preferably, the host communications means produces the signals.

Preferably, the communications include messages having a plurality of message elements, and respective central processing units include respective maintaining means for maintaining disabled respective transfer means of the at least one selected device and devices further downstream than the at least one selected device while die messages are being communicated.

Preferably, the communications means of the at least one selected device re-enables its respective transfer means after the messages have been communicated to the at least one selected device.

Preferably, the host computer includes producing means for producing a redundant code command operable to be communicated by the keyboard port to the at least one selected device, the redundant code command having a plurality of code elements, at least some of the code elements corresponding to at least some of the code elements of die pre-determine code.

Preferably, the producing means is operable to produce a redundant messag command operable to be communicated by the keyboard port to the at least one selecte device, the redundant message command having a plurality of message command elements at least some of the message command elements corresponding to at least some of th message elements of the message.

Preferably, each of the devices includes respective receiving means for receiving th redundant command codes and for determining whether or not the code elements matc corresponding code elements of respective key codes and for disabling die respective transfe means when a match is found.

Preferably, the host computer includes fragmenting means for fragmenting the pre determined code and the message prior to producing the redundant code commands an redundant message commands such that the pre-determined code and the message are sent t the at least one selected device in a plurality of redundant message and code command respectively, each including a message fragment and code fragment respectively. And, eac of the devices includes respective fragment receiving means for receiving the redundan message and code commands and for determining whether or not the code elements of th redundant code commands match corresponding code elements of respective correspondin key code fragments associated with each device and for causing the central processing uni of each downstream device in which a match is found to disable its respective transfer mean and for assembling the message fragments.

Preferably, the host computer includes control means for controlling the data and di clock signal lines of the keyboard controller to hold the data signal line constant whil changing die state of the clock signal line to effect serial transmission of the communication from the host computer to the devices.

Preferably, the devices include respective detecting means for detecting changes i signal state on the clock signal line when the data signal line is held constant, to receive th serial transmission of communications from the host computer. Preferably, the devices include transmitting means for transmitting communication to the keyboard port by changing the state of the data signal line while changing the state o the clock signal line in accordance with a timing specification compatible with the keyboar controller. According to a further aspect of the invention there is provided a method of establishing communications with a device connected to a keyboard port of a host computer, the method comprising die steps of: selectively enabling and disabling die transfer of signals between a downstream communications port and an upstream communications port of the device, in response to signals received at the upstream communications port from the keyboard port.

According to a further aspect of the invention there is provided a metiiod of communicating messages from a host computer to a device connected to a keyboard port of the host computer where the host computer has a keyboard port controller for sending bytes of data through the keyboard port to the device using a conventional data transfer method but which permits only specific bytes to be communicated to the device, die method comprising die steps of: a) producing a list of non-passable bytes which cannot be passed through the keyboard port controller to the device; b) comparing a message byte with the non-passable bytes to determine whether or not the message byte is a non-passable byte; c) where the message byte is a non-passable byte, fragmenting die message byte into message fragments and using die conventional data transfer method to send at least one passable byte having a portion defined by the message fragments; and d) where the message byte is a passable byte, sending through the keyboard port controller, using die conventional data transfer method, die message byte. Preferably, ie method includes the steps of receiving the passable bytes having a portion defined by die message fragments, and reconstructing die message byte from the portion defined by the message fragments.

Preferably, the method includes the steps of preceding die at least one passable byte having a portion defined by the message fragments with an identification code. Preferably, the method includes die step of building a configuration file of the non- passable bytes.

Preferably, the method includes die step of sending a test mode command to the device to place die device in a test mode.

Preferably, the method includes the step of employing the conventional method of data transmission to send a pre-defined sequence of bytes to the device. Preferably, the method includes die step of receiving passable bytes at the device and sending from the device to die host computer a pre-defined acknowledgement signal to indicate diat a given byte has been received.

Preferably, the method includes the step of copying to the configuration file, all bytes for which the pre-defined acknowledgement signal is not received.

According to another aspect of the invention ti ere is provided an apparatus comprising: a) a host computer having a keyboard port controller having a keyboard port, the keyboard port controller being operable to send bytes of data through the keyboard port using a conventional data transfer method, the keyboard port controller permitting only specific bytes to be sent through the keyboard port; b) a communications device connected to the keyboard port for receiving bytes therefrom and for sending bytes thereto; c) producing means in die host computer for producing a list of non- passable bytes which cannot be passed tiirough the keyboard port controller to the device; d) comparing means in the host computer for comparing a message byte with the non-passable bytes to determine whether or not the message byte is a non-passable byte; e) fragmenting means in the host computer for fragmenting the message byte into message fragments and using the conventional data transfer method to send at least one passable byte having a portion defined by the message fragments, where the message byte is a non-passable byte; and f) passing means in the host computer for sending through die keyboard port controller, using the conventional data transfer method, die message byte where die message byte is a passable byte.

Preferably, the apparatus includes receiving means at the communications device for receiving the passable bytes having a portion defined by the message fragments, and reconstructing die message byte from the portion defined by die message fragments.

Preferably, the apparatus includes identification means in die host computer for preceding die at least one passable byte having a portion defined by the message fragments with an identification code. Preferably, the apparatus includes configuration file building means for building a configuration file of the non-passable bytes.

Preferably, the host computer includes testing means for sending a test mode command to die device to place die device in a test mode. Preferably, the testing means includes sequence sending means for employing the conventional method of data transmission to send a pre-defined sequence of bytes to the device.

Preferably, the device includes transmission means for receiving passable bytes at the device and for sending from the device to the host computer a pre-defined acknowledgement signal to indicate diat a given byte has been received.

Preferably, the testing means includes copying means for copying to the configuration file, all bytes for which the pre-defined acknowledgement signal is not received.

BRIEF DESCRIPTION OF THE DRAWINGS In drawings which illustrate embodiments of the invention,

Figure 1 is a perspective view of an apparatus according to a first embodiment of the invention;

Figure 2 is a block diagram of a device according to die first embodiment;

Figure 3 is a flowchart of a main routine executed by the microcontroller circuit of Figure 2;

Figure 4 is a chart of main registers used by the microcontroller circuit of Figure 2;

Figure 5 is a diagram of a transmission format for sending a transmission to a host computer; F Fiigguurree 66 is a flowchart of a template routine executed by the microcontroller circuit of Figure 2;

Figure 7 is a flowchart of a switch routine executed by the microcontroller circuit of Figure 2;

Figure 8 is a flowchart of a wake-up routine executed by die microcontroller circuit of Figure 2;

Figure 9 is a flowchart of a command processing routine executed by die microcontroller circuit of Figure 2;

Figure 10 is a functional block diagram of main routines and memory registers associated with the host computer; F Fiigguurree 1111 depicts a plurality of tables maintained by the host computer; Figure 12 is a flowchart of a programming routine executed by the hos computer; Figure 13 is a flowchart of a configure routine executed by die host computer

Figure 14 is a flowchart of an application program interface executed by di host computer; and

Figure 15 is a flowchart of a code interpreter and verifier implemented by d host computer; Figure 15a is a block diagram of a device according to an alternativ embodiment of the invention; Figure 16 is a pictorial diagram of an apparatus according to an alternativ embodiment of the invention in which LED commands are used t communicate with devices connected to a keyboard port; Figure 17 is a representation of a conventional LED command;

Figure 18 is a pictorial diagram of an apparatus according to an alternativ embodiment of the invention in which clock and data signal lines ar controlled to send a transmission from a host computer; Figure 19 is a pictorial diagram of a host computer connected to a plurality o input devices; Figure 20 is a general timing diagram illustrating the general format o communications between the host computer and devices connected t the keyboard port; Figure 21 is a general timing diagram illustrating the general format of synchronization burst code according to an embodiment of th invention; Figure 22 is a general timing diagram illustrating the general format of a wake up bit pattern code according to the invention; Figure 23 is a general timing diagram illustrating the general format of a restor command dispatched from the host computer to the device; Figure 24 appears on the same sheet as Figures 19 and 20 and is a genera timing diagram illustrating the general format of code fragments o the wake-up bit pattern of Figure 22; Figure 25 is a general timing diagram illustrating the general format of a wake up acknowledgement sequence according to an embodiment of th invention; and Figure 26 is a general timing diagram illustrating the general format of sending a message from the host computer to a device, according to an embodiment of the invention. DETAILED DESCRIPTION Referring to Figure 1, an input device according to a first embodiment of the invention is shown generally at 10 connected to a host computer 12 having a display 13 and a conventional keyboard 14. The apparatus includes a base 16 to which is secured a printed circuit board 18. A cover member 20 is secured to die base to cover the base and circuit board. The cover member 20 has an elongated top portion 22 to which is secured first and second pluralities of membrane switches 24 and 25. In each plurality, the membrane switches are arranged in spaced apart relation forming a two-row by eight-column configuration.

Immediately adjacent die first plurality of membrane switches is an opening 26. A plurality of opto-electronic emitters 28 and a plurality of opto-electronic sensors 30 are disposed in spaced apart pairs, along a straight line, within the opening 26.

Immediately adjacent the opening 26 is a plurality of binding clips 32 for binding to the cover member 20 a plurality of transparent jackets 33 for holding respective pairs of templates 34, 36 and 38. The binding clips separate die first and second pluralities of membrane switches 24 and 25. Each of the templates includes a plurality of visual indicia, one of which is shown at

40, the visual indicia being arranged in a two-row by eight-column arrangement, similar to the arrangement of the membrane switches 24. Each of the jackets has a respective void area 42 and reflector area 44.

Referring back to Figure 1, the binding clips 32 permit the transparent jackets to be rotated about the binding clips from a zero degree position in which the jackets cover d e second plurality of switches 25 to a 180 degree position relative diereto, in which the jackets cover the first plurality of switches 24. First and second templates 37 and 39 are inserted into each jacket such that when the jacket is in the 180 degree position, die first template is face up and when the jacket is in the zero degree position, the second template is face up. The visual indicia on the first template are arranged such that they lie directly above respective membrane switches of the first plurality of membrane switches when the jacket is in the 180 degree position. Similarly, the visual indicia on the second template are arranged such iat they lie directly above respective membrane switches of the second plurality of membrane switches when the jacket is in the zero degree position. The templates therefore co-operate with the switches to associate indicia with respective switches. Each pair of templates is further arranged such that the reflective areas on the jacket

33 are immediately adjacent to and cover respective emitter/sensor pairs when the jackets ar placed in die 180 degree position. Each jacket has its reflective area positioned such diat di reflective area is operable to cover a respective emitter/sensor pair when placed in die 18 degree position.

The membrane switches 24 and die emitters and sensors 28 and 30 are connected t the circuit board 18, with further connections to a microcontroller 46. In addition, a powe indicator 48 is provided and a record indicator 50 is connected to and controlled by di microcontroller 46. The microcontroller 46 actuates the emitters 28, reads die status of th sensors 30 and membrane switches 24 and actuates the record indicator 50 in response to controlling program.

Further connected to the microcontroller 46 is a keyboard input connector 52 and keyboard input port 54. The keyboard input connector 52 is for connection to th conventional keyboard 14 or other downstream device and die keyboard input port connecto 54 is for connection to a conventional keyboard input port of the host computer 12 or othe upstream device. Figure 2

Referring to Figure 2, the microcontroller 46 is a PIC 16C57 manufactured by Microchip Technology Inc. The microcontroller includes Random Access Memory (RAM) 56, Read Only Memory (ROM) 58, a first input/output (I/O) port 60, a second input/outpu port 62, a third input/output port 64 and a Real Time Counter (RTC) 65. Effectively, th microcontroller is a computer.

The first I/O port 60 has a record signal line 66, a KBDATA signal line 67, a KBCLK signal line 68 and an enable signal line 70. The record signal line 66 is operable to control die state of the record LED 50. The KBDATA signal line is connected to an upstream data signal line 61 and to a first collector of a first transistor 78. A downstream data signal line 71 is connected to a first emitter of the first transistor and a first base of the first transistor is connected to the enable signal line 70. In a similar fashion, the KBDATA signal line is connected to an upstream clock signal line 73 and to a second collector of a second transistor 80. A downstream clock signal line 75 is connected to a second emitter o the second transistor and a second base of the second transistor is connected to die enabl signal line 70. The upstream clock and data signal lines act as an upstream communications port 83 and die downstream clock and data signal lines act as a downstream communications port 85. The upstream clock and data lines are connected to upstream pins including N/C, GND and Vcc pins which are connected to pins by die same names at die downstream communications port by signal lines of the same names. The upstream data pin, upstream clock pin and the N/C, GND and Vcc pins act as interface means for directly interfacing the upstream communications port with the keyboard port of the host computer. Thus, port A 60 acts as a communications port for receiving signals from the upstream port and for presenting signals to the upstream port. The upstream communication port can be connected directly to a conventional computer keyboard port.

The downstream port has downstream data and downstream clock pins which together with the N/C, GND and Vcc pins act as emulating means for emulating a computer keyboard port. Thus, a computer keyboard can be connected directly to the downstream communications port, which emulates the conventional keyboard port of the host computer.

The first and second transistors 78 and 80 are enabled by setting the enable signal line

70 active. This causes the first and second transistors 78 and 80 to present a low impedance path between the upstream data signal line 61 and downstream data signal line 71 and between die upstream clock signal line 73 and downstream clock signal line 75. Conversely, when die first and second transistors are disabled by setting the enable signal line 70 inactive, die first and second transistors present a high impedance path between the upstream data signal line and die downstream signal data line and between die upstream clock signal line and die downstream clock signal line. The first and second transistors therefore act as impedance means between respective data and clock signal lines of the upstream and downstream communications ports 83 and 85. When die first and second transistors 78 and 80 are enabled they act as repeaters for repeating signals received at the downstream clock 75 and downstream data signal lines 71 at the upstream clock 73 and upstream data signal lines 69 respectively and for repeating signals received at the upstream clock 73 and upstream data signal lines 69 at the downstream clock 75 and downstream data signal lines 71 respectively. Generally, the first and second transistors act as transfer means for transferring signals between the downstream communications port and the upstream communications port while the enable signal line 70 acts as a control signal line connected between die microcontroller (computer) 46 and the transfer means. It will be appreciated that the first and second transistors may be replaced with first and second analog switches as an alternative way to provide the transfer means. Generally, the transfer means must be capable of selectively, enabling and disabling die transfer of signals between the upstream and downstream communication ports while permitting the microcontroller to monitor signals appearing at the upstream communications port. The microcontroller executes a plurality of communications commands which act a communications means for permitting it to communicate with an apparatus connecte upstream of the upstream communications port 83, in this embodiment, die host computer. The communications commands monitor die states of the upstream data 69 and clock 7 signal lines and communicate die status of information received at die upstream port 83 t control signal code executed by the microcontroller which change the state of the enable lin 70 to selectively enable and disable die transfer of signals between the upstrea communications port 83 and the downstream communications port 85, in response to pre defined signals at die upstream communications port. Effectively, these commands and di microcontroller itself act as enabling means connected to d e transfer means for selectivel enabling and disabling the transfer means to selectively enable and disable the transfer o signals between the downstream communications port 85 and the upstream communications port 83 in response to pre-defined signals received at die upstream communications port. More particularly, the control signal codes executed by die microcontroller represent control signal commands which act as control signal producing means for producing control signal for controlling the transfer means in response to pre-defined signals received at die upstrea port.

The communication commands executed by die microcontroller include enabl commands which include a plurality of control signal command codes representing control signal commands executed by the microcontroller to change the state of the enable line to effect enabling and disabling of the transfer means. These codes executable by di microcontroller and the microcontroller itself act as control signal producing means for controlling the transfer means.

The second I/O port 62 includes three data lines, BQ-B2 connected to respective opto- electronic emitters 28 which, in this embodiment, are infrared emitters. In addition, die I/O port 62 includes 8 data lines, Bg-By, connected to respective column lines of the membrane switches indicated generally at 24.

The third I/O port 64 includes 3 data lines CQ-C2 connected to respective sensors 30, which, in this embodiment, are infrared sensors. The third I/O port further includes data lines C0-C3 which are connected to respective row lines 69 of the membrane switches 24.

The infrared sensors are further connected to a pulse generation circuit 81 which shapes signals received from the sensors 30 into signals recognizable by the Real Time Counter 65.

To scan the membrane switches, the third I/O port 64 is configured as an output to set all row lines 69 high while the second I/O port 62 is configured as an input, diereby "pulling-up" die column lines 63. A first set of digital values is written to the third I/O port to selectively set the row lines 69 low, in sequence. While each row line 69 is set low, the second I/O port is read to determine if any column line 63 is low. If a column line 63 is found to be iow, die digital value read at die second I/O port, in combination with die digital value currently written to the third I/O port uniquely specifies which of the membrane switches has been actuated. The microcontroller then performs a 1 to 4 encoder function on the row lines 69 to represent the selected row with a two binary digit code and performs a 1 to 8 encoder function to represent the low column line 63 with a three binary digit code. The last mentioned diree digits and die aforementioned two digits are combined to form a switch code comprised of 8 bits, the 3 bit code acting as three least significant bits of the switch code and the 2 bit code representing the next most significant bits of the switch code, the remaining bits of the switch code being zero. The microcontroller therefore acts as determining means for determining which, if any, of the switches has been actuated, and for producing a switch code in response to an actuated switch, a different switch code being associated widi each switch. To scan die sensors 30, the second I/O port 62 pulses the I/R emitters 28 while the tiiird I/O port 64 selectively writes digital codes to the I/R sensors 30 in sequence. If any selected sensor receives I/R energy from its associated emitter, a pulsed signal is received at d e pulse generation circuitry 81. The pulse generation circuitry shapes the pulses received from the sensors into well-defined pulses which are received at die Real Time Counter 65. When such well-defined pulses are received at die Real Time Counter 65, the selected sensor is deemed to be covered by a reflective area of a template pair in the 180 degree position. In this manner, the template pairs which are in the 180 degree position can be determined.

Referring back to Figure 1, the jackets are installed on the binding clips in a reverse order, whereby the first emitter/sensor pair tested during scanning is covered by die diird jacket, the second tested is covered by the second jacket and the third tested is covered by die first jacket.

Thus, if the first tested emitter/sensor pair is covered, all three jackets must be in the 180 degree position with the third jacket on top. Similarly, if the first tested emitter /sensor pair is not covered but the second tested emitter /sensor pair is covered, the first and second jackets must be in die 180 degree position with the second jacket on top and the tiiird jacket must be in the zero degree position. If the first and second tested emitter pairs are not covered but the third pair is covered, the first jacket must be in the 180 degree position and the second and tiiird jackets must be in the zero degree position with die second jacket on top. If no sensors are covered, all templates must be in the zero degree position with the first template on top. The templates are clearly arranged, one on top of another, such that a user can turn to any desired template, and such tiiat the light reflecting areas on the templates co-operat with the sensors to indicate die presence of a given template adjacent a corresponding sensor.

In die embodiment shown, tiiere are effectively four template configurations:

template configurations

1 all at 0 degrees

2 #1 at 180 degrees #2 at 0 degrees #3 at 0 degrees

3 #1 at 180 degrees #2 at 180 degrees #3 at 0 degrees

4 all at 180 degrees

The digital codes supplied to die third I/O port 64 to select the sensors 30 in sequence, act as possible template configuration codes for each configuration. Due to the order of scanning the sensors and die order in which the jackets are placed on die binding clips, die digital code which selects the first emitter/sensor pair to produce a valid pulse train is deemed to be the template configuration code representing the template configuration selected by the user.

Each configuration is represented by a respective template configuration code as follows:

configuration template configuration code

1 01H

2 02H

3 03H

4 04H

Preferably, the cover member 20 has first and second portions with respective 2 by

8 arrangements of indicia thereon similar to the templates. These portions themselves act as respective templates when the jackets are placed in die 0 degree and 180 degree positions respectively. Therefore, each template configuration is associated witii two pluralities of switches at one time and therefore each template configuration is associated witii 32 possible switch codes.

The microcontroller therefore acts as identifying means for identifying die selected template and for producing a template configuration code indicative of the template selected by the user. Figure 3

Referring to Figure 3, a main routine which is executed by die microcontroller 46 of Figure 2 is shown generally at 86. The main routine co-operates with registers shown generally at 88 in Figure 4. Figure 4

Referring to Figure 4, the registers include a first array 90 including a TEMPTEMP register 92, a LASTTEMP register 94 and an LTEMPSENT register 96. These registers are used to keep track of the template configuration code currently detected, die last template configuration code detected and die last template configuration code sent to die host computer. The registers further include a SWITEMP register 97 which is used to hold the switch code produced by the actuation of one of the membrane switches. The registers further include a second array of transmit buffer registers 98 collectively referred to as a transmit buffer. The transmit buffer contains a plurality of registers used to hold respective bytes of the last transmission sent to the host computer. The number of bytes in the transmission is variable, depending upon die command sent to die host computer and tiierefore the transmit buffer includes a count register 100 for maintaining a count of the number of bytes in the last sent transmission. Figure 5

Referring to Figure 5, transmissions to the host computer are of a format generally indicated at 102 and include a transmission prefix 104, an information portion 106, a checksum portion 107 and a transmission suffix 108. The transmission prefix 104 includes pre-defined make codes for the conventional keyboard keys: Ctrl 110, Alt 112, Shift 114, and Comma 116. The transmission prefix further includes a Comma break code 118. Each transmission sent to the host computer by the input device includes die transmission prefix. The transmission prefix, including the above described sequence of codes, normally represents a sequence of codes which is unrecognizable by application programs running on die host computer. Therefore, the transmission prefix serves to identify the transmission as a transmission from the input device as opposed to a transmission from die conventional keyboard. In effect, the transmission prefix acts as at least one transmission identification code for identifying die source of the transmission and includes characters operable t distinguish die transmission from conventional computer keyboard transmissions.

The information portion 106 of the transmission is embedded between die prefix an suffix portions and includes one of five command ID make and break codes shown generall at 120, and a string of make and break codes 122 representing parameters associated wi respective ID codes 120. The ID codes 120 represent one of five command types, namel a security code command, a new template command, a switch press command, a statu command and a resend request command.

The security code command is associated witii, in this embodiment, four parameter identified as P1-P4, each represented by respective make and break codes. The parameter are pre-defined and are unique to the programmable controller used in die input device. Th parameters represent such items as the serial number of the unit, burn-in data, and date an time of manufacturing the programmable controller, to the nearest millisecond. The use o the security code eliminates the need for external security devices to be used in conjunctio witii die input device.

The template command includes a single parameter identified as P5 which i represented by respective make and break codes. Parameter P5 is the template configuratio code unique to die template configuration currently selected by die user, as detected by th sensors 30 shown in Figures 1 and 2. The switch press command includes two parameters identified as P5 and Pg, eac represented by respective make and break codes. Parameter P5 is identical to the paramete P5 associated with die new template command. Parameter Pg is a unique "table" cod representing the membrane switch currently actuated by a user of the device. The uniqu "table" code is acquired from a lookup table relating switch codes derived from die row an column lines to "table codes" which are conventional keyscan codes. It is preferable not t send die raw switch codes as read at the second I/O port to die host computer as these code could correspond to codes which may be interpreted as command codes by die host computer hence die use of the table codes.

The status command includes two parameters P5 and P7, P5 being identical to die P parameter associated with the new template command and P7 representing the status of th device. The status may include a code as to whether or not the device is apparentl functional, a code as to whetiier or not a key is stuck, and a code as to whetiier or not template error is detected by the sensors.

The re-send request command includes no parameters and is simply succeeded by di checksum portion of the transmission. The checksum portion 124 includes checksum low make and break codes 126 and 128; and checksum high make and break codes 130 and 132.

The transmission suffix 108 includes Shift-Break, Alt-Break and Ctrl-Break codes 134, 136 and 138, respectively. These Shift-Break, Alt-Break and Ctrl-Break codes serve to complete the transmission initiated by the Ctrl-Make, Alt-Make and Shift-Make codes 110, 112 and 114 in die transmission prefix.

Referring back to Figure 3, the main routine begins with step 140 which initializes each of the registers 88 shown in Figure 4. The main routine then executes step 142 which calls the wake-up routine 143 shown in Figure 8. The wake-up routine responds to transmissions initiated by the host computer and received by the input device. Such transmissions may include a security code command, a status command, a re-send request command, an initialize command or a toggle command. The wake-up routine has three exit paths including a "No" path 144, a "Yes" path 146 and an initialize path 148, the initialize path causing program control to jump to step 140 of the main routine. At step 142, proceeding along die "No" path 144 causes step 142 to be re- executed thereby again calling the wake-up routine. Effectively, step 142 is repeated until a wake-up sequence is received from the host computer at which point the routine is exited along the "Yes" path 146. The purpose of step 142 is to allow the host computer to interrogate the input device to receive the security code command and status commands upon start up of the device. Upon completion of step 142, step 150 again calls the wake-up routine, however this time the "No" path 144 causes processing to proceed in the main routine whereas proceeding along the "Yes" path 146 causes step 150 to be repeated. Step 150 tiierefore causes die input device to stay in a receiving mode until transmissions from the host computer have been completed. In the event that the input device receives an initialization command, the wake-up routine is exited along patii 148 tiiereby causing die initialization step 140 to be repeated and processing to resume at step 140.

Assuming processing has proceeded along die "No" path 144 after completion of step

150, step 152 causes the template sensors to be scanned and die result of this scan, the template configuration code, is stored in die TEMPTEMP register 92 shown in Figure 4. Referring back to Figure 3, step 154 then scans die switches and die result of this scan, the switch code, is stored in die SWITEMP register 97 shown in Figure 4.

If no switch has been actuated, the contents of the SWITEMP register will be zero and if a switch has been actuated, the contents of die SWITEMP register will include die switch code identifying the particular switch actuated. Using the contents of the SWITEMP register 97 of Figure 4, step 156 determines whether or not a switch has been actuated by determining whether or not the contents of the SWITEMP register 97 are zero. If th contents of the SWITEMP register are zero, it is assumed that no switch has been actuate and step 158 causes processing to jump to a template routine shown generally at 160 i Figure 6. If the contents of the SWITEMP register are non-zero, it is assumed tiiat a switc has been actuated and step 162 causes processing to jump to a switch routine shown generall at 164 in Figure 7. Figure 6

Referring to Figure 6, the template routine 160 begins with step 166 which moves di contents of die TEMPTEMP register 92 into the LASTTEMP register 94. Step 168 the compares the contents of the LTEMPSENT register 96 with the contents of the LASTTEM register 94 to determine whether or not the currently selected template is die same as di template indication last sent to the host computer. If the selected template is die same as di last indicated to die host computer then no further processing is required and step 168 cause processing to jump to location A of the main routine 86 of Figure 3. If, however, the selected template is different from the one last indicated to die hos computer, processing proceeds with step 170 which initiates a call to die wake-up routine 14 shown in Figure 8. If the wake-up routine is exited along the "Yes" path 146, step 170 i repeated and die wake-up routine is again called. If an initialization command is received i die wake-up routine, processing proceeds along die initialization path 148 which cause processing to proceed with step 140 of the main routine 86 shown in Figure 3. If processin proceeds along die "No" patii 144, processing proceeds with step 172 which causes die ne template command shown in Figure 5 to be sent to the host computer. At the same time a the new template command is sent, the entire contents of the transmission to the hos computer are stored in the transmit buffer 98 shown in Figure 4. This provides means fo die host computer to receive a message previously sent, upon request.

After sending the template command, step 174 moves the contents of the LASTTEM register 94 to the LTEMPSENT register 96 of Figure 4. Processing is then returned to poin A of the main routine 86 of Figure 3. Figure 7 Referring back to Figure 3, when step 162 causes processing to jump to the switc routine 164 of Figure 7, the switch routine begins with step 176 which calls the wake-u routine 143 shown in Figure 8. Proceeding along the "Yes" path 146 from the wake-u routine causes step 176 to be repeated and the wake-up routine to be recalled. Proceedin along path 148 from the wake-up routine causes processing to proceed witii step 140 of th main routine 86 shown in Figure 3. Proceeding along the "No" path 144, step 178 cause the switch code value currently in die SWITEMP register 97 of Figure 4 to be used to index a corresponding table code in a table relating switch codes to table codes. The table codes include codes which are conventional keyscan codes corresponding to die keyscan codes commonly sent by a conventional keyboard. It is preferable not to send die raw switch codes as read at the second I/O port to the host computer as these codes could correspond to codes which may be interpreted as command codes by the host computer, hence the use of the table codes.

Upon locating the corresponding table code in the table 180, step 182 causes the transmission prefix to be dispatched to die host computer and to die transmit buffer. Step 184 then causes the switch pressed command ID make and break codes to be sent to die host computer and to the transmit buffer. Step 186 then causes the make and break codes for the value stored in die LASTTEMP register 94 of Figure 4 to be sent to the host computer and to die transmit buffer. Step 188 then causes the make and break codes for the table code corresponding to die switch code held in die SWITEMP register 97 to be forwarded to die host computer and to die transmit buffer. Step 190 then causes the checksum 124 shown in Figure 5 to be sent to the host computer and transmit buffer and step 192 causes the SWITEMP register 97 to be continually read in anticipation of a zero value, indicating tiiat the actuated switch has been released. If the switch has been released, step 194 causes die transmission suffix 108 shown in Figure 5 to be sent to the host computer and die transmit buffer and processing continues at point A of the main routine 86 shown in Figure 3.

Referring back to Figure 7, if a switch release is not detected witiiin 10 seconds of actuation of a switch, the routine is said to timeout and step 196 sends the transmission suffix to the host computer and to the transmit buffer to complete the transmission. Step 198 then sends die status command ID make and break codes shown in Figure 5 to the host computer and to die transmit buffer and further sends die make and break codes representing the contents of the LASTTEMP register 94 shown in Figure 4 and make and break codes corresponding to the switch stuck code. The microcontroller therefore acts as sending means for sending to the host computer a transmission including at least one of die template configuration code and die switch code. Figure 8

Referring to Figure 8, the wake-up routine is shown generally at 143. Referring briefly to Figure 2, the wake-up routine monitors the KBCLK signal line 68 at the first input port 60 to determine whether or not this line is held low for greater than 80 milliseconds. If the line is not held low for the required time, processing continues under die "No" patii 144. If the clock line has been held low for the required period of time, step 202 causes the routine to monitor a conversation between the host computer and keyboard. Thi conversation is depicted in step 202 of Figure 8.

If the conversation does not proceed as expected, die wake-up routine is exite through the "No" path 144. If the conversation does proceed as expected, step 204 causes die enable line 70 of Figur

2 to be rendered inactive tiiereby disabling die transfer of signals between the upstream an downstream communications ports and disabling transmissions between d e conventiona keyboard and die host computer. Step 206 then receives a transmission from the hos computer, the transmission including either a security code command, a status command, re-send request command, an initialize command or a toggle command. The format of th transmission for each of these commands is generally as specified in Figure 5, however, di transmission does not include the transmission prefix and suffix or the checksum codes. Only die command ID codes are sent by the host computer. The initialize command is of the same format as the re-send request command, with a different ID code, of course. The codes received by the input devices are stored in a receive register (not shown).

Upon receiving a command ID, step 208 causes processing to jump to a command processin routine shown generally at 210 in Figure 9. Figure 9

The command processing routine begins with step 212 which determines whetiier or not the transmission is corrupted by errors, as determined by a comparison of parity values. In the event tiiat the transmission is corrupted, step 214 causes the re-send request command shown in Figure 5 to be sent to the host computer and to die transmit buffer and die wake-u routine is exited along die "Yes" path 146. If the command is not corrupted, step 216 tests whetiier or not the command is a status command. If so, then step 218 performs a hardware test routine to determine whether or not the microprocessor is functioning correctly, whether or not a key is stuck and whether or not a page error has been detected. This hardware test routine produces a status code which is represented by the P7 make and break codes shown in connection with the status command shown in Figure 5. Upon completion of the hardware test routine, die status command shown in Figure 5 is dispatched to the host computer and to the transmit buffer and the wake-up routine is exited along die "Yes" path 146.

If step 216 finds tiiat the command is not of the status type, then step 220 determines whether or not the received command is a security command. If so, then step 222 causes the security code command to be transmitted to the host computer and to the transmit buffer and the wake-up routine is exited along the "Yes" path 146. If step 220 determines that the received command is not a security command, tiien step 224 determines whether or not the received command is a re-send command. If so, tiien step 226 causes the contents of the transmit buffer 98 shown in Figure 4 to be transmitted to the host computer and die wake-up routine is exited along the "Yes" path 146. If the received command is not a re-send command, tiien step 228 determines whether or not the received command is an initialize command. If not, then step 230 causes the record LED 50 shown in Figure 2 to be toggled on or off and die wake-up routine is exited along the "Yes" path 146. If step 228 determines that the received command is an initialize command, the wake-up routine is exited along die initialize path 148 and processing continues at step 140 of the main routine 86 shown in Figure 3. Figure 10

Referring to Figure 10, functional blocks depicting main routines and registers executed by die host computer are shown generally at 232. Blocks which were derived as a result of the present invention are marked with a solid triangle in their respective upper left- hand corners. Blocks without the solid triangle are blocks which are conventional and can be found in die prior art. A broken line 234 surrounds hardware devices which are included to illustrate communications paths between the hardware devices die routines run on die host computer.

In the present embodiment, die host computer runs the program entitled "WINDOWS". (WINDOWS is a registered trademark of Microsoft Corporation.) WINDOWS is operable to run a number of applications which collectively are represented by functional block 236 entitled WINDOWS applications. In addition, the WINDOWS program includes a WINDOWS system message queue represented by functional block 238. The WINDOWS system message queue is operable to receive messages normally received from a conventional keyboard connected to the host computer. The WINDOWS program further includes a keyboard driver 240 which acts as an interface between the WINDOWS program and die conventional keyboard 14.

The functional blocks associated with tins embodiment include die input device 11, a code interpreter and verifier 242, a control panel routine 244, a plurality of memory units 246, a plurality of memory patches 248, an application program interface (API) 250, a programming routine 252 and a template control file 254. The host computer, including die WINDOWS functional blocks 236, 238 and 240 and the functional blocks 242 - 252, co¬ operate to achieve a plurality of effects, these effects including: a) die automatic execution of an input code sequence upon turning to a new template configuration at the input device 11; b) the automatic execution of an input code sequence upon die actuatio of a switch at the input device; c) die ability to permit die user to pre-define the input code sequenc executed upon the establishment of a new template configuration o the actuation of a switch; and d) die ability to permit WINDOWS applications to communicate wit the input device.

Figure 11

Referring to Figure 11, a plurality of memory units organized as lookup table maintained by the API 250 of Figure 10 is shown generally at 256. The tables include a active template table 258, a template register table 260, a template sequence code table fo each template, one of such tables being shown at 264, and an attribute location table for eac template, one of which is shown at 266.

The active template table 258 is a list of templates currently selected by die user There may be more than one input device, in which case template codes may be repeated suc as in die entries indicated in the table. The active template table therefore also serves t relate device ID codes to template codes so tiiat when a template code is received from a input device, such code is associated with an ID code of die input device.

The template register table 260 holds a list of codes, associated memory unit location and attribute locations for each physical template inserted into the jackets and printed on di first and second portions of the cover portion. This table associates the start locations o respective template configuration code sequence tables with respective device codes an template codes and associates the start locations of respective switch attribute files wit respective device codes and template codes. Each physical template is associated witii a respective template sequence code tabl

264 and a respective attribute location table 266.

Therefore, a separate lookup table is associated witii each template and die looku tables include respective pluralities of memory units. The lookup tables are indexed t respective templates by the template configuration codes, and die memory units are indexe to die switches by the switch codes, which in this embodiment are translated into table code and new switch code.

Each template sequence code table 264 includes a directory of input code sequence which define the locations within the table where start and end locations of respective inpu code sequences associated with respective templates and switch codes can be found. In th present embodiment, there are 16 possible switch codes for any given template and tiierefor there are 16 input code sequence start and end locations. In addition, a portion of the table defines the start and end locations of a template auto-execution sequence 268 which can automatically be executed when die template code of the selected template is received.

Each attribute location table 266 includes a template attribute portion 270 which defines attributes pertaining to the template as a whole, such attributes including the layout of the membrane switches which, in this embodiment, is a two-row by eight-column format.

Alternatively, however the format could be 2 by 16, 4 by 8, 8 by 4, 16 by 2, 1 by 32, 32 by

I, etc. In addition, die attribute location table specifies the locations of attributes associated witii each switch code, such attributes including switch priority, visual indicia associated witii a given switch, an alpha-numeric key name associated with the switch, a description of the visual indicia associated with the switch and the switch location on the template. The visual indicia may include indicia similar to that provided by WINDOWS, i.e., the bit bucket and die cut and paste icons. The attribute location tables therefore act as assigning means for assigning to each memory unit at least one attribute. The tables referred to in Figure 11 are held in respective files stored on disk and only the template sequence code table 264 and attribute location table 266 associated witii the templates specified by the active template table 258 are downloaded into die operating RAM of the host computer.

Referring back to Figure 10, the control panel routine 244 is an executable file which is executed upon start up of the WINDOWS program. The control panel routine recalls the template control file and downloads into RAM, the active template table 258 shown in Figure

II, the template register table 260, the associated template sequence code tables 264, and attribute location tables 266.

Figure 12 Referring to Figure 12, the programming routine 252 is invoked as a WINDOWS application and places die host computer into an edit mode as indicated at step 272. Step 274 presents a list of all templates contained in the template register, the names of the templates being derived from the attribute location tables 266. The user is then requested to select which template is to be edited. Upon selecting the desired template name, step 276 requests a configure routine shown at 316 in Figure 13 to take control.

Referring to Figure 12, the configure routine places the programming routine in a communications mode where data received from the configure routine is displayed as indicated at step 278. Input received at the keyboard from the user, is handled at the programming routine and is forwarded to the configure routine. The combination of the programming routine and the configure routine permits the user to edit die input code sequences associated with any switch code under the selected template. In addition, di template auto-execution sequence 268 shown in Figure 11 is editable and die templat attributes 270 and attributes associated with each switch code under the template are als editable. Upon completion of editing, the programming routine is exited as indicated at 280 Figure 13

Referring to Figure 13, the configure routine closely co-operates with the tables 25 shown in Figure 11. Essentially, the configure routine updates die template register tabl 260, the template sequence code tables 264 and attribute location tables 266, all shown i Figure 11, at the request of the user. Referring back to Figure 13, the configure routine begins with step 318 which refer to the template register table 260 of Figure 11 to determine the attribute table location of th template associated with the template selected by die user. Knowing the attribute tabl location, step 320 then refers to the attribute table location table 262 to determine di locations of die attributes associated with die template selected by the user. Step 322 the recalls the template attributes 270 associated witii the template and witii each switch. Th user is then presented with a visual display of attributes associated with the template and eac individual switch position.

Referring back to Figure 13, step 324 then requests a user prompt to establis whether or not the user wishes to edit attributes, edit code sequences, or exit. If the use requests to edit attributes, step 326 records the user's changes to the attributes in a temporar buffer in the host computer's RAM. When the user has completed an editing session, ste 328 stores the attributes in the template control file 254 of Figure 10 and stores the ne attribute locations in the attribute location table 266 shown in Figure 11. Upon storing th new attribute locations, the configure routine returns to step 324 which requests the user t select further editing of the attributes, to select editing of die code sequences or to exit.

The configure routine therefore acts as a sequence of instructions operating on th host computer for assigning to each memory unit at least one user-definable attribute whic may include visual indicia such as an icon defined by a user of the apparatus.

The display 13 acts as display means for displaying visual indicia and for displayin a template image in which the indicia are positioned in a manner which at least implies a one to-one correspondence between die visual indicia and die membrane switches. The templat is therefore considered a logical entity manifest as a template image on the display.

If the user selects to edit code sequences, step 330 refers to the template sequenc code table 264 to display die sequence of input codes (i.e. a sequence of commands associate witii a switch selected by die user) currently associated with the indicated switch. Step 33 then stores any revisions to the sequence in the memory unit patches 248 of Figure 10 and loads die start and end locations of die new sequence into the template sequence code table 264 of Figure 11. Referring back to Figure 13, Step 333 then prompts the user to establish whether or not the current changes to the sequence should be regarded as a patch or permanent. If the current changes are a patch, the configure routine is redirected to step 324 tiiereof and die user is again prompted for a decision to proceed. If the current changes are to be permanent, step 334 copies the contents of the memory unit patch to die template control file 254 of Figure 10 and to the operating RAM of the host computer and updates die start and end locations of the code sequence accordingly. Upon completion of step 334, the configure routine returns to step 324 at which tiie user is again requested to edit either attribute or code sequences or to exit through step 336.

It should be understood that code sequences could include keyscan codes or executable files containing commands recognizable by WINDOWS or by applications programs running tiiereon or a combination of command types. For example, die following keyscan codes can be programmed to be invoked upon the actuation of a designated switch to perform a cut and paste function in Microsoft Word (Tm): {ALT-E, P}.

The memory units are therefore programmable with code sequences recognizable by the host computer, the code sequences including at least one code recognizable by die host computer and the configure routine acts as user actuated programming means for permitting a user of the apparatus to program the memory units with desired code sequences.

The configure routine is a sequence of instructions operating on the host computer for permitting a user of the apparatus to store desired code sequences in the memory units. Figure 14

Referring to Figure 10, the application program interface 250 communicates with WINDOWS applications 236, the control panel routine 244, the memory units and memory unit patches 246 and 248, and die code interpreter and verifier 242. The application program interface (API) is shown in greater detail in Figure 14 at 250 and includes 12 functions which are initiated upon the receipt of respective commands. The commands include a REGISTER TEMPLATE command 500, a NEW TEMPLATE command 502, a TEMPLATE EVENT command 504, a DEVICE QUERY command 506, a DEVICE CAPABILITIES command 508, an OPEN DEVICE command 510, a CLOSE DEVICE command 512, a DEVICE DIAGNOSTICS command 514, a DEVICE SECURITY CODE command 516, a RESET DEVICE command 518, a DEFINE KEY command 520, and a TOGGLE LED command 522. Generally, each command, with the exception of the DEVICE QUERY command 506 receives input parameters from the application requesting the command. Upon response to the command by die application program interface, commands 506 - 516 provide return data for further processing by the application requesting the command. Each command will now be discussed separately.

The REGISTER TEMPLATE command is used to add a template to the template register. This command is called by a WINDOWS application or by the Control Panel routine and includes a template code parameter. There is no return parameter. The register template function adds a device code, a template code, a template sequence code table start location and an attribute table start location to the template register to register a new template.

The NEW TEMPLATE command is used to specify a new active template. This command is called by a WINDOWS application, a virtual device application (to be described in die alternatives portion), or the code verifier. If called by the code verifier, it is in response to a template code sent by the physical input device. The command includes parameters including a template code and device ID. There is no return parameter. The new template function first checks for the indicated template code and device code in die template register and, if found, adds to the active template table die template code and die device code. In addition, die template sequence code table for the selected template is loaded into die memory units 246. If such template sequence code is not found in the template register, an error message to this effect is given to the user.

The TEMPLATE EVENT command (switch code) is used to initiate a template event causing the input sequence corresponding to the specified template event code to be run. This command is called by a WINDOWS application, a virtual device application or the code verifier. If called by the code verifier, it is in response to a switch code sent by die physical input device. The command includes parameters representing the template code, die template event code, and device ID. There is no return parameter. The DEVICE QUERY command is used to determine the ID number of the input device tiiat is currently installed. The command causes die code interpreter of each device to return a pre-defined ID number associated with the device. The ID is pre-programmed and tiierefore fixed. This command is called by a WINDOWS application or by the Control Panel routine. There are no parameters passed to die command, but die command returns codes representing die number of installed devices and a pointer to a memory unit containing die device ID.

The DEVICE CAPABILITIES command is used to determine the capabilities of a device. This command is called by a WINDOWS application or by the Template Control Panel. A device ID parameter is passed to the command. The device capabilities function causes the code interpreter of each device to return pre-defined codes representing: 1) total number of template configurations supported,

2) number of active template configurations supported,

3) whetiier or not the security code is supported,

4) whether or not the device is a physical or virtual device, 5) whetiier or not the device supports downloadable template pages (for use with a touch screen, for example). The OPEN DEVICE command is used to activate a device. It is primarily used only upon start-up of the device and is called by a WINDOWS application or by the Control Panel routine. The open device function causes a status request to be made to the input device, which effectively breaks the wait loop formed at step 142 of the main routine of Figure 3. A device ID parameter and status code are returned by this command, indicating whether or not the device was opened properly.

The CLOSE DEVICE command is used to deactivate a device. This command is called by a WINDOWS application or the Control Panel routine and a device ID parameter is passed witii the command. The close device function causes the INITIALIZE command to be sent to die input device which, at the input device, returns processing to step 142 of Figure 3. A status code is returned by this command, indicating whetiier or not the device was closed properly.

The DEVICE DIAGNOSTICS command is used to request a device to perform diagnostics. This command is called by a WINDOWS application or the Control Panel routine and the device ID parameter is passed with the command. The device diagnostics function instructs the command interpreter to send a status command to die input device from the protocol generator. The input device responds by sending back a status message.

The DEVICE SECURITY CODE command is used to request a security code from a device. This command is called by a WINDOWS application or die Control Panel routine and die device ID parameter is passed witii the command. The device security code function instructs the command interpreter to send a security request command to die input device from the protocol generator. The input device responds with its security code and die security code is returned by this command. The RESET DEVICE command is used to reset a device. This command is called by a WINDOWS application or by the Control Panel routine and die device ID parameter is passed witii the command. There is no return parameter. The reset device function instructs the command interpreter to send an INITIALIZE command to the input device from die protocol generator. This command functions similar to close device command. The DEFINE KEY command is used to assign special functions to selected switches on die input device. Such functions would include record, help, and stop. This command is called by a WINDOWS application or die Template Control Panel. The parameters passed to this command include an ID code, a template configuration code, a switch code and a pointer to pre-defined sequences of codes for performing the tasks of recording a series of keystrokes, displaying a help message, and stopping the recording of keystrokes. The define key function loads die start and end locations of these pre-defined sequences into die template sequence code table 264, specified by die ID code, switch code and template code and adds a special status code representing the special status of the switch(es) specified by the device ID, template configuration code and switch code to die list of attributes associated witii the indicated switch. There is no return parameter.

The TOGGLE LED command is used to toggle an LED on an input device. This command is called by die code verifier. The device ID parameter is passed with the command. There is no return parameter. The TOGGLE LED command is used in conjunction with die record and stop function switches (if such switches are assigned). Effectively, when the record switch is actuated, an LED ON parameter is passed witii the TOGGLE LED command and when the stop switch is actuated, and LED OFF parameter is passed. Generally, therefore, the TOGGLE LED command is used to control die LED 50 of Figure 2 in response to the actuation of pre-defined record and stop switches. Referring back to Figure 10, when the input device 11 is not communicating witii the host computer, keyboard transmissions produced by die conventional keyboard 14 are passed through the input device to the keyboard driver 240. The keyboard driver 240 passes keyboard codes to the code interpreter and verifier 242 which determines whether the codes received are from the input device or from the conventional keyboard. If the codes are from the input device, die command portion of the transmission is forwarded to die API 250. If die codes are conventional keyboard codes, the code interpreter and verifier 242 forwards them to the WINDOWS system message queue 238. Figure 15

Referring to Figure 15, the code interpreter and verifier is shown at 242. Codes received at die keyboard port of the host computer are referred to as keyboard events and may have originated from the input device or from the conventional keyboard shown in Figure 10.

Referring to Figure 15, keyboard events are intercepted by a keyboard hook 338 which prevents die keyboard events from being forwarded directly to the WINDOWS system message queue. The keyboard hook forwards die keyboard events to a code interpreter 340 which passes the transmission to the WINDOWS system message queue if the transmission prefix is not included in the transmission and which places die entire transmission in a parameter buffer 342 when the transmission prefix is received. Effectively, therefore, keyboard events without the transmission prefix are deemed to have been sent by the conventional keyboard and keyboard events with the transmission prefix are deemed to have been sent by the input device.

While die transmission is being received, die code interpreter 340 watches for the transmission suffix. When the transmission suffix is received, the entire transmission is located in die parameter buffer 342 and a code verifier routine is invoked. The code verifier routine generates a checksum based on the contents of the parameter buffer and compares the checksum to the checksum values sent with the transmission. If the calculated checksum does not equal die transmitted checksum, then a re-send request is made to the protocol generator 314 which generates the wake-up sequence described witii respect to Figure 8, and a re-send command is sent to die input device. If, however, the checksums agree, the ID code of the command in die parameter buffer is read to determine whether or not the command relates to data to be forwarded to a requesting routine or to a command initiated by die input device. In this embodiment, the security and status commands contain data to be sent as return data to the application program interface whereas the new template and switch press commands act as commands initiated by the input device and are converted to NEW TEMPLATE and TEMPLATE EVENT commands recognizable to the API.

Recall tiiat each template configuration corresponds to two templates being available for viewing by the user. Therefore, separate template codes are sent to the API to represent the two templates selected by the user. In tiiis embodiment, a template configuration code to template code translation table is used as follows:

template configuration code template codes (Hex) sent to API

(Hex)

01 00, 01

02 02, 03

03 04, 05

04 06, 07

Similarly, since each template configuration has 32 switches associated with it, these 32 switches are divided into two sets of 16 each, each set relating to a respective template. In this embodiment, switches 1 - 16 define die first set, associated with the template in the 180 degree position, and switches 17 - 32 define die second set, associated with the template in the 0 degree position. Since the switch codes originated from a table of table codes (180 of Figure 7) which does not inherently specify the number of the switch, a further table is employed by the code verifier to relate die table codes witii switch codes in the range of 1 - 16. The table has a format as follows:

SWITCHES 1 - 16

table code new switch code q 1 w 2 e 3 r 4

y 16

SWITCHES 17 - 32

table code new switch code j 1 k 2

1 3 z 4

c 16

In effect therefore, the selection of a new template causes the code verifier to send two NEW TEMPLATE commands to each API, each of these commands including respective template codes. The actuation of a switch causes a TEMPLATE EVENT command to be sent to die API, this command including a single new switch code and a single template code as parameters. The code verifier also provides an ID parameter to die API whenever it requests an API command such as NEW TEMPLATE or TEMPLATE EVENT. Operation

The operation of the input device will now be described with die understanding tiiat the device of Figure 1 has been connected to die conventional keyboard 14 and to die host computer 12 and that each of the program blocks referred to in Figure 10 has been loaded onto die host computer 12 of Figure 1. In addition, for the immediate discussion, it is assumed tiiat the tables 256 shown in Figure 11 have already been loaded from the template control file 254 shown in Figure 10 into the operating RAM of the host computer 12 of Figure 1. In addition, referring to Figure 3, it is assumed that the microcontroller 46 of Figure 1 has been initialized by step 140 of Figure 3 and is currently executing the loop formed at step 142 wherein die wake-up routine is continually being run. Finally, it is assumed tiiat each of the template pairs 34, 36 and 38 is in die 0 degree position such tiiat none of the templates is covering the emitter/sensor pairs with the opening 26 shown in Figure 1.

With the above understanding, and referring to Figure 10, the user invokes a WINDOWS application 236 intended to be used in conjunction witii the input device. By invoking the WINDOWS application, the WINDOWS application sends an OPEN DEVICE command 510 shown in Figure 14 including an ID parameter corresponding to die input device to die application program interface 250 shown in Figure 10. The OPEN DEVICE command causes a status request to be made to die input device. This is done by causing die host computer to send a status command to the code interpreter and verifier of Figure 10 which causes the protocol generator 314 of Figure 15 to generate the wake-up sequence and send die status command to the input device.

Referring to Figure 9, the status command causes die input device to perform an internal hardware test and causes a status command to be sent back to the host computer in the format indicated in Figure 5. Referring to Figure 10, the transmission produced by die input device 11 is forwarded to the keyboard driver 240 and referring to Figure 15, the keyboard hook 338 intercepts the transmission and forwards it to the code interpreter 340. The code interpreter 340 receives the transmission prefix and therefore the entire transmission is stored in die parameter buffer 342. The code verifier then determines that die received command is a status command and the parameters associated with the status command are returned to die API 250 of Figure 1 which returns the status parameters to the WINDOWS application 236.

It should be appreciated tiiat the sending of the status command from the hos computer to the input device causes die wake-up routine at step 142 shown in Figure 3 t proceed along the "Yes" path 146 which then causes step 150 to again call the wake-u routine. Assuming no further wake-up routine is received, step 152 scans die templat sensors and scans the switches. Assuming no templates have been moved to die 180 degre position and no switches have been actuated, die NEW TEMPLATE command, including d template configuration code (i.e. 01H) corresponding to configuration number 1 (all template in the 0 degree position), is transmitted to the host computer. The code verifier tiien sends first and second NEW TEMPLATE commands to the API shown in Figure 10, the first NE TEMPLATE command corresponding to the first template code (i.e. 00H) associated with the received template configuration code and the second template command corresponding to die second template code (i.e. 01H) associated with the template configuration code received. Still responding to die NEW TEMPLATE command, die API checks die template register 260 shown in Figure 11 to determine whether or not the received device codes and template codes are included in the template register. If such codes are not found, an error message is provided to the user. If, however, such codes are found, tiiese codes are tiien placed in die active template table 258 and the template sequence code table 264 and th attribute location table 266 are loaded into the memory unit RAM 246 of the host computer. Still acting in response to the NEW TEMPLATE command, die API refers to the template attributes 270 of the selected templates and if such attributes indicate that an auto- execution sequence should be run, the API locates the start and end locations of die auto- execution sequence 268 from the template sequence code table 264 and automatically executes the sequence of input codes specified by die start and end locations. If the auto-execution attribute is not set, the NEW TEMPLATE command is simply terminated, leaving die active template table 258 with the currently selected template and device as an entry therein and leaving the sequence code table 264 and attribute location table 266 loaded in memory uni memory 246. Referring back to Figure 1, if the user now rotates jacket 33 about the binding clips

32 such tiiat the jacket is in the 180 degree position, die sensors with the opening 26 will detect die presence of the jacket 33 thereby causing the input device to send a transmissio including a NEW TEMPLATE command wherein the parameters associated witii that command include the template configuration code for the second template configuration (i.e. 02H). Referring to Figure 15, when the transmission is received, the code verifier 344 determines that the template codes associated witii the second template configuration are 02H and 03H and tiierefore these codes, 02H and 03H, are included as respective parameters of respective NEW TEMPLATE commands forwarded by die code verifier 344 to the API 250 shown in Figure 10. The API then locates the corresponding device and template codes in the template register and copies tiiese codes into the active template table 258. In addition, the template sequence code tables and attribute location tables corresponding to the template codes received by die host computer are loaded into die memory unit RAM 246 of the host computer.

With the first jacket 33 in the 180 degree position, if the user actuates one of the membrane switches, a switch code is produced by die microcontroller, the switch code representing the switch actuated by the user. Referring to Figure 7, the switch routine locates the table code corresponding to the switch code in table 180. The SWITCH PRESS command is then forwarded to die host computer with the template configuration code and die table code as parameters. However, the transmission of the transmission suffix is deferred until the switch is either released or until a 10 second timeout period has elapsed. If die 10 second timeout period has elapsed, the transmission suffix is sent and immediately following, a STATUS command including a switch stuck parameter is sent to the host computer.

Assuming die switch has been properly released before the 10 second timeout, die SWITCH PRESS command is received in die parameter buffer 342 of Figure 15. The code verifier 344 then extracts the table code from the parameter buffer and determines whetiier the table code corresponds to the first set of membrane switches or the second set of membrane switches. Assuming the switch code corresponds to the first set of membrane switches, a TEMPLATE EVENT command is sent by the code verifier to die API, die TEMPLATE EVENT command including the template code corresponding to template 37 and die switch code corresponding to the one of sixteen membrane switches associated witii the first plurality of switches.

The TEMPLATE EVENT command causes the API to determine die memory unit start location for the memory units associated with die template code parameter. Upon determining die memory unit start location, the corresponding template sequence code table 264 is located and the switch code parameter is used to determine the start and end locations of die input code sequence associated with d e switch code parameter. Upon determining die input code sequence start and end locations, the corresponding executable file of input codes is executed and such input codes are provided to die host computer to cause the host computer to respond to die commands or keystrokes comprising the executable file. In the event that the user wishes to change the attributes associated witii a given switch position and template, or in the event that the user wishes to edit the sequence of commands executed upon actuation of a switch, the programming routine and configure routine shown in Figures 12 and 13 respectively, are used. It will be appreciated that any sequence of keystrokes and hence any sequence of commands which can normally be input to a host computer under an application, can be pre¬ recorded as input code sequences associated witii the given switch and given template tiiereby causing such sequences to be automatically input to the computer upon actuation of an associated membrane switch. In addition, as a result of the inclusion of the auto-execute sequence associated with a given template, a sequence of input codes or commands can be automatically entered into die computer upon turning to a new template configuration. Thus, referring to Figure 1, if jacket 33 is in the 180 degree position and the second template pair 36 is rotated from the 0 degree position to die 180 degree position, the emitter/sensor pairs within the opening 26 will detect die new template configuration and cause die auto-execution sequence to occur automatically. A clever user may therefore assign each template configuration to correspond to a different WINDOWS application and cause die auto-execution sequences associated witii each template configuration to automatically cause WINDOWS to switch to the corresponding application. This allows the user to move from application to application within WINDOWS, by merely flipping the jackets from the 0 degree position to the 180 degree position, or vice versa. When used in such a manner, the indicia visible to the user in each template configuration can represent pre-programmed code sequences executing commands within die corresponding application. Alternatives In an alternative embodiment, a visual image of a plurality of templates may be displayed on die host computer with the template currently selected by die user being in die foreground and displaying the indicia associated with each switch position. In such an embodiment, die code interpreter 340 shown in Figure 15 would include an additional program block for creating a display of the templates and would include a mouse or keyboard driver permitting the user to select indicia on the template to cause tiie additional program block to produce a transmission similar to that described with respect to Figure 5, as produced by die above described input device. Thus, die user could select templates and "actuate switches" using a mouse or the cursor control keys on the conventional keyboard. This effectively represents a software version of the device and may be referred to as a virtual device. In another alternative embodiment, the entire unit shown at 10 in Figure 1 may be replaced witii a voice recognition system and an additional functional block may be added to die code interpreter 340 of Figure 15, similar to the block described above which presents a visual image of templates on die display of the host computer. Changing active templates can then be achieved by speaking commands, such as "change template", into die voice recognition unit and actuating switches associated witii the template can be achieved by speaking commands such as "open, edit, cut, file, save", etc.

According to a tiiird alternative embodiment, there may be provided a mouse-type device having a row of 16 buttons arranged in a 2 by 8 configuration. Again, a visual indication of die templates and currently selected template would be produced on die display of die host computer and movement of the mouse would be used to select different templates while die switches on die mouse would be used to actuate switches in a manner similar to tiiat in which the membrane switches are actuated.

According to a fourth alternative embodiment, die host computer includes a printer and printer routines for permitting a user to create visual images of templates and indicia under die programming routine and to cause such visual images to be printed on die printer to produce hard copy of such images. The images may be appropriately scaled such tiiat die hard copy is approximately the same size as the templates in the jackets and tiierefore the hard copy may be inserted directly into the jackets. In this manner, the user is able to create and produce his own templates including indicia created by die user. The printer therefore acts as hard copy producing means for producing hard copy of visual indicia and for producing hard copy of a template image in which the indicia are positioned in a manner which at least implies a one-to-one correspondence between said visual indicia and said switches. In this embodiment die template is a physical entity manifest as the hard copy. According to a fifth alternative embodiment, die display associated witii the host computer is a touch screen display and a visual image of a selected template is displayed on die display such that switches associated with the touch screen display are directly in line with the visual indicia forming part of the display image and tiierefore generally imply a one-to- one correspondence between said switches and said visual indicia. Preferably, the touch screen display is operable to define separate page images of visual indicia, each page image being associated with a respective plurality of memory units and each page image including identifying means for identifying a template image currently being displayed. Also in this embodiment, preferably the identifying means includes at least one memory location for holding a template image code identifying the template image being displayed, the template image code determining the plurality of memory units associated with die template and a sequence of codes from die associated plurality of memory units is passed to die comman interpreter in response to receiving a switch code. In effect, therefore, the membran switches are replaced with switches integral to a touch screen display and the templates ar visual images displayed on die touch screen display. In this embodiment, die identificatio means includes at least one memory location for holding a template image code identifyin the template image currently selected by die user.

In addition, die switches integral to the touch screen display act as input means fo developing signals in response to actions by a user of the apparatus. In effect therefore, this embodiment would include: a) a touch screen display having a plurality of switches, any one of sai switches being actuable by said user and determining means fo determining which, if any, of said switches has been actuated, an for producing a pre-defined switch code in response to an actuate switch, a different switch code being associated witii each switch; an b) a host computer including; i) a command interpreter; ii) a plurality of memory units; iii) programming means for storing in said memory unit respective code sequences recognizable by said comman interpreter; iv) assigning means for assigning to each of said memory unit at least one user definable attribute including visual indicia; v) correlating means for correlating said pre-defined switc codes with respective memory units; vi) receiving means for receiving said switch codes from sai touch screen; and vii) passing means for passing to said command interpreter th code sequence stored in the memory location correlated t the received switch code. According to a sixth alternative embodiment, an input device having a simila appearance to that indicated in Figure 1 shown generally at 10 may include an LCD touc screen having plurality of pre-defined switches and provisions for creating template image on the LCD. The images may be associated with visual indicia which are positioned directl in line with switches of the touch screen display and tiierefore, in effect, this embodimen replaces the physical templates with template images. Such a device would produce a transmission format similar to the transmission format described in Figure 5.

According to a seventh alternative embodiment, the function keys on a standard conventional keyboard are pre-configured to replace the membrane switches shown in Figure 1 and an elongated LCD display unit adapted to rest directly above die function switches of the conventional keyboard may be used to present visual indicia and associate such visual indicia witii the respective function switches.

Generally, each of the above alternative embodiments requires a modified code verifier 344 of Figure 15 to ensure that commands sent to die API provide die required parameters such as the switch code and template code parameters. For example, those alternative embodiments which provide template configuration codes require the translation tables described above for splitting the configuration code into two separate template codes. In addition, such embodiments require the switch code translation tables as described above to split a single plurality of switch codes into one of two pluralities of switch codes, depending upon die switch actuated. In addition, the code verifier should have a unique ID code to represent die type of input device used. Thus, the code interpreter and verifier 242 shown in Figure 15 is, in effect, device dependent.

Witii the present invention, the user has the capability of writing an input code sequence to be executed upon actuation of a new template configuration or a switch. In effect, the codes to be executed in this manner are typically commands, such as Microsoft Word commands (Microsoft Word is a registered trademark of Microsoft Corporation). Therefore, just as a sequence of key strokes within Microsoft Word can be programmed within that program as a macro, similar such sequences of key strokes can be programmed as the input code sequence described herein to affect control of the host computer. The present invention therefore provides a uniform method for storage and playback of macros, die method of storage and playback being common to all applications programs. Hence, a user need only learn one method of macro recording and playback.

A further advantage of the system is that commands at die operating system level can be provided to die host computer to provide, for example, the closing of one application and the opening of another application by the user simply turning to a new template configuration by merely flipping one of the jackets to or from the zero degree position. This eliminates a series of mouse clicks currently required by die WINDOWS program, or a series of keystrokes, alternatively required by the WINDOWS program. Thus, paging between applications operating within WINDOWS is automated. In one use of the invention, a macro can be recorded by pre-defining a switch position witiiin a given template to execute an input code sequence which co-operates with the WINDOWS macro recorder thereby permitting the WINDOWS macro recorder to record the keystrokes, and, creating an executable file containing tiiose keystrokes. The start and end locations of the executable file can then be assigned, through the template sequence code table 264 shown in Figure 11 to a corresponding switch code. Then, when the membrane switch producing die switch code is actuated, the start and end locations of the executable file are located and die executable file is run. The executable file then replays the keystrokes previously recorded by die WINDOWS macro recorder. Alternative communications interface

Referring to Figure 15a, an alternative communications interface is shown generally at 524. The interface includes an upstream communications port shown generally at 526 and a downstream communications port shown generally at 528. Disposed between the upstream and downstream communications port is a repeater circuit 530. The upstream communications port includes UKBDATA 532, UKBCLOCK 534,

UN/C 536, UGND 538, and UVCC 540 signal lines. The downstream communications port includes DKBDATA 542, DKBCLOCK 544, DN/C 546, DGND 548 and DVCC 550 signal lines, where the prefix U designates the upstream communications port and the prefix D designates die downstream communications port. The UN/C signal line is connected directly to die DN/C signal line, die UGND signal line is connected to the DGND signal line and die UVCC signal line is connected to the DVCC signal line.

The UKBDATA signal line is 532 and UKBCLOCK signal line 534 are connected to I/O port A 60 and are terminated in respective pull-up resisters 552 and 554 respectively. These lines are further connected to respective analog switches 556 and 558 which are controlled by an enable signal line 560, also connected to the IO port A 60. The first and second analog switches 556 and 558 are controlled by the enable signal line 560 to selectively provide a low impedance or high impedance path between the UKBDATA signal line 532 and the DKBDATA signal line 542 and between the UKBCLOCK signal line 534 and the DKBCLOCK signal line 544. The enable signal line is further connected to a tiiird analog switch 562 wired to a pull-up resister 564 to perform the function of an inverter. The third analog switch 562 is connected to a fourth analog switch 566 which is further connected to signal ground and to die DKBCLOCK signal line 544.

The operation of the communications interface is such that when die enable signal line 560 is high, the first and second analog switches 556 and 558 are placed into a low impedance state thereby transferring signals received at the downstream communications port to the upstream communications port and vice-versa. At die same time, when the enable signal line is high, the third analog switch 562 presents a low impedance patii to current flowing tiirough the resister 564 and tiiereby disables die fourth analog switch 566, effectively placing a high impedance between the DKBCLOCK signal line and signal ground. Thus the DKBCLOCK signal line 544 follows the UKBCLOCK signal line 534.

When the enable signal line is placed into a low voltage state, die first and second analog switches 556 and 558 are placed into respective high impedance states which serves to block signals from passing from the downstream communications port to the upstream communications port and vice-versa. However, at die same time, the low voltage level on the enable signal line 560 disabled the third analog switch 562 which causes a high voltage level to appear at the fourth analog switch 566 thereby enabling it and connecting the DKBCLOCK signal line 544 directly to ground which acts as a circuit node having a pre¬ defined voltage level of 0 volts. The third and fourth analog switches thus act as imposing means for imposing a pre-defined signal state on die downstream clock signal line. In this embodiment, the upstream data signal line UKBDATA 532, upstream clock signal line UKBCLOCK 534 upstream no connection line 536 upstream ground line 538 and upstream VCC line 540 act as interface means for directly interfacing die upstream communications port with the keyboard port with the host computer or for directly interfacing the upstream communications port with a device having a similar communications interface. Port A 60 still acts as a communications port for receiving signals from the upstream port and for presenting signals to the upstream port from the microcontroller. The downstream communications port 528 is comprised of the downstream data and clock signal lines DKBDATA 542 and DKBCLOCK 544 and DN/C 546 DGND 548 DVCC 550 signal lines, which emulate a conventional keyboard port of a host computer, with the further capability of holding die downstream keyboard clock line 544 at a low voltage level which places devices connected downstream of the downstream communications port in a wait mode.

Effectively, the first and second analog switches 556 and 558 act as impedance means between respective data and clock signal lines of the upstream and downstream communications ports 526 and 528. When the first and second analog switches 556 and 558 are enabled, they act as repeaters for repeating signals received at the downstream clock signal line DKBCLOCK 544 and downstream data signal line DKBDATA 542 at the upstream clock UKBCLOCK 534 and upstream data UKBDATA 532 signal lines respectively and for repeating signals received at the upstream data and clock signal lines 532 and 534 at die downstream data and clock signal lines 542 and 544. Generally, the first and second analog switches act as transfer means for transferring signals between the downstream communications port and the upstream communications port while the enable signal line 560 acts as a control signal line connected between die microcontroller and die transfer means. Generally, die transfer means must be capable of selectively enabling and disabling the transfer signals between the upstream and downstream communications ports while permitting the microcontroller to monitor signals appearing at the upstream communications port while maintaining the downstream keyboard clock signal line 544 in a predefined state.

As witii the communications interface shown in Figure 2, the microcontroller 46 executes a plurality of communications commands which act as communications means for permitting it to communicate with an apparatus connected upstream from the upstream communications port 526, in this embodiment, the host computer. The communications commands monitor the states of the upstream data and clock signal lines 532 and 534 and communicate the status of information received at die upstream port 526 to control signal code executed by die microcontroller which causes the state of the enable line to selectively enable and disable die transfer signals between the upstream communications port and die downstream communications port and vice-versa, in response to predefined signals received at die upstream communications port. Effectively, these commands and die microcontroller itself act as an enabling means connected to die transfer means for selectively enabling and disabling die transfer means to selectively enable and disable die transfer of signals between the downstream communications port 528 and the upstream communications port 526 in response to predefined signals received at die upstream communications port. More particularly, the code executed by the microcontroller represents control signal commands which act as control signal producing means for producing control signals for controlling the transfer means in response to predefined signals received at die upstream communications port. The communication commands executed by die microcontroller includes an enable command which includes a plurality of control signal command codes representing control signal commands executed by the microcontroller to change the state of the enable line to effect enabling and disabling of the transfer means. The code executed by die microcontroller and die microcontroller itself act as control signal producing means for controlling the transfer means.

Alternative communications

In discussing Figure 8, it was stated that die format of transmission of commands coming from the host computer is generally the same as specified in Figure 5, however, die transmission does not include the transmission prefix and suffix or the checksum codes. Ratiier, die transmission includes one or more eight-bit words representing die ID code of die intended command and any parameters associated tiierewith. One potential problem with transmitting messages from the host in this format is that die command and parameter words must be passed tiirough the keyboard port controller of die host computer. The keyboard port controller may only be capable of passing a restricted set of words or bytes to the keyboard port and this restricted set may not include the command and parameter words required to be sent. In this situation, an alternative method of communication from the host to the device may be used.

Referring to Figure 16, an apparatus according to an eightii alternative embodiment, for executing an alternative method of communication from a host computer 600 to a device 602 connected to a keyboard port 604 of a keyboard controller 606 of the host computer, is shown generally at 608. The method is performed by a redundant code routine which functions as follows:

When a command is to be sent to die device 602, the redundant code routine causes a redundant command to be sent to the keyboard controller 606, which passes the redundant command to die device 602. In this embodiment, die redundant command is a conventional LED control command.

It will be appreciated that LED control commands are conventional commands which can be sent from the host computer 600 through the keyboard controller 606 to a keyboard 612, for controlling keyboard LEDs 614, 616, 618, indicating die status of Num Lock, Caps Lock and Scroll Lock. Referring to Figure 17, the LED command includes first and second eight bit bytes 620 and 622. The first byte 620 is the Hexadecimal code ED and identifies die command as an LED command. The second byte 622 includes a first nibble which is always 0 and a second nibble identified as X, which may contain any code from 0 to 7. In other words, die tiiree least significant bits of the byte are used to control die states of the LEDS.

In this embodiment, information is sent from the host computer to the device by sending LED commands in which the three least significant bits of each command are selected to correspond to successive groups of three bits of a device control command. In effect tiierefore, the device control commands are fragmented and sent to die device in command fragments. While this has the effect of altering the states of the LEDs each time another LED command is received at die keyboard, the LEDs are merely seen to flicker. At the end of die transmission from the host, a final LED command is sent to restore die LEDs to tiieir original states.

The use of conventional keyboard commands to send data from die host to die device is referred to herein as the use of redundant commands because any effects the commands may have on the keyboard are defeated by restoring die keyboard to die state it was in immediately prior to encountering die redundant commands. While redundant LED commands have been described above, otiier commands such as the typematic rate command and die scanset command or any other command which has an effect which can be negated may be used.

Even tiiough the host computer may have to send all communications commands to die device using redundant commands, the device can still communicate witii the host computer using the data transmission techniques described previously and need not use redundant commands to send messages back to die host computer. Referring to Figure 18, an apparatus according to a ninth alternative embodiment is shown generally at 601. This embodiment is generally the same as die embodiment shown in Figure 16 in that it includes a host computer 603, a keyboard controller 605 having a keyboard port 607 with clock and data lines 609 and 611 which are connected to an upstream communications port 526 of an input device 615, having communications interface as shown in Figure 15a. As discussed previously, the input device has a microcontroller for monitoring die states of the data and clock signal lines 609 and 611 and has transfer means 530 for enabling and disabling die transfer of signals between the upstream communications port 526 and a downstream communications port 528, to which a keyboard 623 is connected.

Communications from the host computer 603 are sent to the device 615 by changing the state of the clock signal line 609 while ignoring the state of the data signal line 611. This is accomplished by writing to a control register (not shown) in the keyboard controller 605 to change the state of the clock signal line 609 in accordance with data reflecting the command to be sent. In effect therefore, the host computer 603 acts as control means for controlling the data and clock signal lines 609 and 611 of die keyboard port 607 to hold die data signal line 611 constant while changing the state of the clock signal line 609 to effect serial transmission of communication from the host computer 603 to the device 615. The device 615 monitors the clock signal line 609 to detect changes in signal state to receive the serial transmission of the communication from the host computer. While communications from the host 603 to the device 615 may be performed in the above manner, communications from the device 615 to the host 603 are still transmitted by changing the state of the data signal line 611 while changing the state of the clock signal line 609 in accordance witii a pre¬ defined timing specification compatible with the keyboard controller. Multiple device system

The ability to communicate, through the keyboard port of a host computer, with devices connected thereto is facilitated, in part, by the ability to selectively disable die transfer of signals between the upstream and downstream communications ports of each device. Because tins transfer can be selectively enabled and disabled, a plurality of devices can be connected, in series, to the keyboard port as shown in Figure 19.

Referring to Figure 19, a host computer is depicted generally at 630 having a keyboard controller 632 with a keyboard port 634. To die keyboard port 634 is connected a cable 636 connected to an upstream communications port 638 of a first device 640 having a communications interface as described witii respect to Figure 15a. The first device has a downstream communications port 642 to which is connected a second cable 644 connected to an upstream communications port 526 of a second device 648. The second device 648 has a downstream communications port 528 to which is connected a tiiird cable connected to an upstream communications port 652 of a third device 654. The third device has a downstream communications port 656 which is connected to a fourth cable 658 which is connected to an upstream communications port of a keyboard 662.

The first and second devices 640 and 648 may be input devices as described previously herein, die third device 654 may be a joystick adapted to communicate keycodes associated with respective control buttons on the joystick to the keyboard port 634 and die keyboard 662 may be a conventional keyboard.

Essentially, die devices are connected in series such that signals produced at a downstream device must pass through the respective transfer means of each device farther upstream in the series. This permits devices farther upstream in the series to inhibit communications from devices farther downstream, thereby establishing a priority order of communications between the host computer 630 and the devices 640, 648, 654 and 662, enabling the host computer 630 to communicate with one or more selected devices.

To explain die operation of communications in the multiple device system of Figure 19, wherein the communications method of redundant commands is employed, reference is made to Figure 20 with the assumption that communications are to be conducted between die host computer and the second input device 648.

The format of communications between the host computer 630 and die second input device is as shown at 664 in Figure 20. First a wake-up transmission 666 is initiated by die host computer. Then, a wake-up acknowledgement 668 is initiated by die second input device 648 and tiien a message transmission 670 is initiated by the host 630.

Referring to Figures 21, 22 and 23 the wake-up transmission 666 includes a synchronization burst 672, a wake-up bit pattern 674 and a restore command 676. The synchronization burst 672 includes an exchange between the host computer and die keyboard wherein die host computer sends four LED commands witii the X bits shown in Figure 18 corresponding to 0, followed by one LED command witii the X bits corresponding to 1. Between each word of the LED commands, die keyboard responds with the word FA to acknowledge safe receipt of the word from the host. The purpose of the synchronization burst is to enable all devices to find a reference point in die transmission, from which the positions of data representing the wake-up bit pattern of Figure 22 can be located.

Referring to Figure 22, die wake-up bit pattern 674 includes six LED commands, each having second word portions as designated 0X1-0X6 respectively. The X portions each include 4 bits the most significant of which is 0 and die remaining 3 of which are code fragments of a pre-determined code shown generally at 677 in Figure 24. The pre-determined code includes a first portion 678, a scanset portion 680, a product type portion 682 and a device type portion 684. The first portion 678 is unused, the scanset portion 680 is used to hold a two-bit code representing the keyboard scan set currently in effect, the product type code 682 includes 9 bits representing the product type or manufacturer of the product and die device type 684 represents the type of device such as joystick, input device or other. The pre-determined code 677 is broken into code fragments 686 including tiiree code elements each. Each code fragment is used as a group of parameters replacing die tiiree least significant bits in the X nibble of respective redundant LED code commands as shown in Figure 18. The host computer therefore executes commands which cause die pre-determined codes to be fragmented as shown in Figure 24 and produces a redundant code command operable to be communicated by the keyboard port to the first device, die redundant code command having a plurality of code elements, at least some of which correspond to die code elements of the pre-determined code. In response to the redundant code command, die keyboard controller issues corresponding pre-defined signals representing the pre-determined code to the devices connected to the keyboard port 634. Each microcontroller of each device has executable signal pattern recognizing codes for recognizing a pre-determined signal pattern in die pre-defined signals received at die upstream communications port and for signalling the transfer means when the pre-determined signal pattern is received. This enables each device to monitor the upstream data and upstream clock signal lines and receive signals appearing tiiereon. Each device is pre- programmed witii a key code having key code fragments identifying the device type and product type of the device. As the redundant commands are received from the host computer, each microcontroller divides the commands into code fragments and compares each of the code fragments received with corresponding key code fragments. When a match of all received code fragments is found, a message flag is set in the corresponding microcontroller to indicate that the message to follow is for that device. However, before sending such message, the host computer sends the restore LED command 676 which is ignored by each device except die keyboard. The keyboard responds by resetting the LEDs thereon to the state they were in immediately prior to the synchronization burst.

Referring to Figure 15a, in each device in which a message flag was set, a code is executed by the microcontroller to cause it to dispatch a disable signal on the enable signal line 560 to set the first and second analog switches into a high impedance state to disable die transfer of signals between the upstream and downstream communications ports 526 and 528 while at the same time pulling the downstream clock signal line DKBCLOCK 544 low. The low clock line is recognized by each of die downstream devices as a wait signal and each downstream device responds by halting any attempts to send data on its respective upstream data line. This has the effect of leaving only the farthest upstream device selected in communication witii the host computer while the remaining downstream devices are prevented from communicating with the host computer. The code executed by die microcontroller and the microcontroller itself act as receiving means for receiving the redundant command codes and for determining whether or not the code elements in pre-defined positions thereof match corresponding code elements of a key code and for signalling the transfer means to disable the transfer of signals between the downstream communications port and die upstream communications port when a match is found.

With the downstream devices disabled, die wake-up acknowledgement 668 shown in Figure 20, is dispatched from the device to the host computer. Referring to Figure 25, in this embodiment, the wake-up acknowledgement includes a plurality of scan codes including make codes for CTRL, ALT, SHIFT, followed by make codes for a device code and make codes for a product code, die device and product code being equal to die device and product key codes described above. These codes are followed by a make code for the letter "W" and a make code for a the character " ' ". The wake-up acknowledgement is followed by break codes for SHIFT, ALT and CTRL. The host computer receives the wake-up acknowledgement as described above and tiien is ready to send messages including data or commands or both, to the device.

To send a message to the device, die host computer first determines die message to be sent, breaks it into message elements and tiien fragments the message into fragments of three bits each. Each fragment replaces the least significant three bits in the second word of a respective redundant LED command and the redundant LED command is sent to die device. Referring to Figure 26, LED command descriptor ED is first sent by the host, which is then acknowledged by die device sending an FA code back to die host. The second word of the LED command is designated OCl in Figure 26, die tiiree least significant bits of the C portion including the fragmented portion of the command intended for the device. Safe receipt of the second word is acknowledged by the device sending anotiier FA to the host. Generally, the remainder of the command and any parameters associated witii the command are sent from the host in a similar manner, until all fragments have been sent. While the respective fragments are being received at the device, the device stores them in a buffer where they are reassembled into conventional 8 bit words meaningful to the device's microcontroller.

Referring back to Figure 15a, during die transmission of the message to the device, the microcontroller in the device executes a code which maintains die first and second analog switches 556 and 558 disabled to prevent the transfer of signals between the upstream and downstream communications ports 526 and 528 to prevent transmissions from the downstream devices (654 and 662 in Figure 19) from corrupting the messages being received from die host computer.

Referring to Figure 19, when the host computer 630 has completed its transfer of messages to the device, it sends a pre-defined terminate command to die device 648 to signal tiiat die messages have ended. Referring to Figure 15a, the code executed by die microcontroller in the device watches for the terminate command and when such is received, determines that the communications between the computer and die upstream apparatus are terminated. The device responds by changing die signal state of its enable signal line 560 thereby re-enabling its first and second analog switches 526 and 528 and removing die low clock signal from die DKBCLOCK signal line 544. This re-enables the transfer of signals between the upstream and downstream communications ports 526 and 528 and permits devices farther downstream an opportunity to communicate with the host computer. The device tiierefore re-enables the transfer of signals between the downstream communications port and upstream communications port after the messages have been communicated. Referring back to Figure 24, the wake-up bit pattern is shown generally at 677. It will be appreciated tiiat the key code described above has a format similar to the product type and device type portions 682 and 684 of the wake-up bit pattern. In an alternative embodiment, more than one key code can be used to cause a downstream device to respond to interrogation by the host computer. More particularly, three key codes may be chosen for the following responses:

1. Communication to a specific product and device;

2. Communication to all products of a specific device type; and

3. Communication to all devices regardless of product type and device type. In order to achieve this, the key codes are devised such that all zeros in the product type and device type portions 682 and 684 of die wake-up cause all devices to respond, and all zeros in die product type 682 witii a specific code corresponding to the selected device in the device type portion 684, cause all devices of a given device type to respond and a specific code in the product type portion 682 and a specific code in die device type portion 684 cause a specific device to respond. The specific product and specific device situation has been described above.

Referring to Figure 19, assume that the first input device 640 and die second input device 648 are similar input devices but are products from different manufacturers. In order to send a communications message from the host 630 to botii devices 640 and 648, die host sends a wake-up bit pattern as seen in Figure 24, wherein the product type portion 682 is comprised of all zeros and the device type portion is comprised of AB, for example, where AB corresponds to die device type of die first and second devices 640 and 648.

Effectively, both devices 640 an 648 receive the wake-up bit pattern and monitor the exchange between the host computer and the keyboard 662 in accordance with Figure 22. After the restore LED command 676 of Figure 23 has been executed, botii devices 640 and 648 should attempt to respond with respective wake-up acknowledgments to die host computer. However, because the first device 640 is further upstream than the second device 648, die first device 640 presents a low voltage level on the clock signal line in the cable 644 extending between die first downstream communications port 642 and die second upstream communications port 526, thereby placing the second input device 648 into a wait mode. The second input device 648 also sets its downstream clock signal line low thereby placing the joystick 654 and the keyboard 662 into a wait mode, altiiough the joystick and keyboard will not be waiting to send a wake-up acknowledgement. However, the low clock signal lines prevent die joystick and keyboard from attempting to send messages in response to user input. Thus, the second input device 648 is ready to send a wake-up acknowledgment but has been placed in a wait mode by a first device 640. The first device 640 can then communicate with the host computer and when such communications are finished, the first input device 640 removes die low signal value from the clock line to the second device tiiereby removing the wait status from the second device and enabling it to respond with its wake-up acknowledgment to die original wake-up bit pattern.

In this manner, a priority order for communications with the host computer is established with die device electrically nearest the host having the highest priority and die device electrically farthest from the host having the lowest priority. It should be noted tiiat when a device of lower priority is communicating with the host, all devices of higher priority effectively "listen" since they monitor signals passing through their respective upstream communication ports. Recall that the synchronization burst and wake-up bit pattern must be received before a device will attempt to disable its transfer means and send an acknowledgement. It is unlikely that bit patterns passed tiirough the upstream devices would exactly match the bit patterns corresponding to the synchronization burst and d e wake-up pattern for the upstream devices and therefore it is unlikely that communications with the downstream device would be interrupted by an upstream device responding to bit patterns not intended for it.

It will be appreciated tiiat three methods of communication are disclosed herein; direct byte transfer from the host to a downstream device, fragmented byte transfer tiirough the use of redundant commands and manipulation of the clock signal line rather tiian the data signal line by die host computer. It has been stated tiiat the second and tiiird of these two methods are required in cases where a keyboard port controller is unable to pass arbitrary bytes as would be required witii the first method of communication. The first method of communication however is the simplest and most efficient and is tiierefore the preferred choice.

With reference to Figure 19, according to a further embodiment of die invention, die host computer 630 is operable to determine which of die above described communications method is most efficient for any given byte which is to be transferred from die host computer to the downstream devices 640, 648, 654 and 662. It will be appreciated that the microcontroller of each downstream device is previously programmed to receive data in botii die regular data transfer format and in die LED command format.

In this embodiment, die host computer first establishes communications witii at least one of the downstream devices using the second metiiod of communication, ie., fragmented LED commands. Once having established such communication, die host computer sends a test mode command to die selected downstream device to place die device in a test mode. Code executed by die host computer acts as testing means for sending a test code command to place die device in a test mode.

Witii the selected downstream device in die test mode, the host computer employs the conventional metiiod of communication, ie., regular data transfer, to send to die selected device a pre-defined succession of bytes beginning with 00H and ending witii 7FH. Code executed by the host computer acts as sequence sending means for employing the conventional method of data transmission to send a pre-defined sequence of bytes to die device.

The selected device receives only the passable bytes. For each byte received, die device sends back to die host computer scan codes corresponding to the hexadecimal value of the byte. This hexadecimal value acts as a pre-defined acknowledgement signal to indicate that a given byte has been received. Code executed by die microcontroller of the selected device acts as transmission means for receiving passable bytes at the device and for sending from die device to die host computer a pre-defined acknowledgement signal to indicate tiiat a given byte has been received.

The host computer monitors the responses of the downstream device and if the downstream device fails to echo appropriate scan codes, it is assumed that the byte attempted to be sent to die device is a non-passable byte and cannot be passed tiirough the keyboard controller. The host computer then copies to a configuration file this non-passable byte. This process is repeated until all bytes for which pre-defined acknowledgement signals are not received have been copied to the configuration file. Code executed by the host computer acts as configuration file building means for building a configuration file of non-passable bytes and acts as copying means for copying to the configuration file all bytes for which the a pre¬ defined signal is not received. This code also acts as producing means for producing a list of non-passable bytes which cannot be passed through die keyboard controller. The configuration file then contains a list of all non-passable bytes associated witii the keyboard controller installed in die host computer.

After the configuration file has been produced, commands are sent to the device to take it out of the test mode and back into a communication mode. When die host computer is required to send a message byte, die message byte is compared witii the bytes in the configuration file to determine whetiier or not the message byte is a non-passable byte. Code executed by die host computer acts as comparing means for comparing a message byte with the non-passable bytes to determine whether or not the message byte is a non-passable byte. If it is a non-passable byte, the host computer fragments the message byte into message fragments and sends die message fragments to the device in bytes which are passable. In the embodiment shown, bytes which are passable have a 0 most significant nibble and a least significant nibble of any value between 0 and 7 inclusive. Thus, the least significant nibble is chosen to correspond to up to at least tiiree bits of the message byte. Therefore, three passable bytes are used to send tiiree fragments of a message byte. Code executed by die host computer acts as fragmenting means for fragmenting the message byte into message fragments and for using the conventional data transfer metiiod to send at least one passable byte having a portion defined by die message fragments. In order to properly identify die passable byte as a byte which contains a message fragment, each passable byte containing a message fragment is preceded by an identification code, which, in this embodiment is die byte ED, which is the header for an LED command. Code executed by the host computer acts as identification means for preceding the passable byte having portions defined by message fragments, witii an identification code.

At the selected device, the received bytes are monitored to determine whether or not they are preceded by die ED byte. The least significant three bits of each byte preceded by an ED are shifted into a buffer which accumulates these bits to re-construct the message byte from the message fragments contained in the bytes received. Once having reconstructed die message byte, die message byte is effectively communicated to die selected device. Code executed by die microcontroller of the selected device acts as receiving means for receiving passable bytes having portions defined by message fragments and for reconstructing the message byte from the message fragments.

Where the message byte is a passable byte, the host computer simply passes the message byte to the keyboard controller which forwards die message byte directly to die selected device, using the conventional data transfer method. Code executed by die host computer acts as passing means for passing the message byte using conventional data transfer method where the message byte is a passable byte.

In this manner, the host computer passes bytes through the keyboard controller as efficiently as possible. This permits a plurality of input devices having communications interface characteristics as shown at 524 in Figure 15a to be connected to a single host computer having virtually any keyboard controller and communicate efficiently therewitii. While specific embodiments of die invention have been described and illustrated, such embodiments should be considered illustrative of the invention only and not as limiting die invention as construed in accordance with die accompanying claims.

Claims

What is claimed is:
1. An apparatus comprising: a) a central processing unit; b) upstream and downstream communications ports connected to die central processing unit; and c) transfer means connected to die upstream and downstream communications ports, the transfer means being controlled by said central processing unit to selectively enable and disable the transfer of signals between said downstream communications port and said upstream communications port in response to signals received at said upstream communications port.
2. An apparatus as claimed in claim 1 wherein said upstream communications port includes interfacing means for directly interfacing with a keyboard port of a host computer.
3. An apparatus as claimed in claim 2 wherein said interfacing means includes upstream clock and upstream data signal lines.
4. An apparatus as claimed in claim 1 wherein said downstream communications port includes emulating means for emulating a host computer keyboard port.
5. An apparatus as claimed in claim 4 wherein said emulating means includes downstream clock and downstream data signal lines.
6. An apparatus as claimed in claim 1 wherein said upstream and downstream communications ports include upstream and downstream clock and data signal lines respectively and wherein said transfer means includes a repeater for repeating signals received at die downstream clock and downstream data signal lines at die upstream clock and upstream data signal lines respectively and for repeating signals received at die upstream clock and upstream data signal lines at the downstream clock and downstream data signal lines respectively.
7. An apparatus as claimed in claim 6 wherein said repeater includes impedance means for a) presenting a low impedance patii between said upstream data signal line and downstream data signal line and between die upstream clock signal line and die downstream clock signal line when said transfer means is enabling said transfer of signals; and for b) presenting a high impedance patii between said upstream data signal line and said downstream data signal line and between said upstream clock signal line and said downstream clock signal line when said transfer means is disabling said transfer of signals.
8. An apparatus as claimed in claim 7 wherein said impedance means includes: a) a first analog switch connected to said upstream data signal line and said downstream data signal line and controlled by said central processing unit to selectively connect and disconnect said downstream data signal line with said upstream data signal line; and b) a second analog switch connected to said upstream clock signal line and said downstream clock signal line and controlled by said central processing unit to selectively connect and disconnect said downstream clock signal line witii said upstream clock signal line.
9. An apparatus as claimed in claim 5 further including imposing means for imposing a predefined signal state on said downstream clock signal line when die transfer of signals between the downstream clock signal line and die upstream clock signal line is disabled, said imposing means being controlled by said central processing unit.
10. An apparatus as claimed in claim 9 wherein said imposing means includes an analog switch controlled by said central processing unit for connecting the downstream clock signal line to a circuit node having said predefined signal state.
11. An apparatus as claimed in claim 10 wherein said pre-defined signal state is a low voltage level.
12. An apparatus as claimed in claim 1 wherein said central processing unit includes control signal producing means for producing control signals for controlling said transfer means in response to said signals received at said upstream communications port.
13. An apparatus as claimed in claim 12 further including control signal lines connected between said central processing unit and said transfer means and wherein said control signal producing means includes code executable by said central processing unit to cause said central processing unit to change the states of said control signal lines to effect enabling and disabling of said transfer means.
14. An apparatus as claimed in claim 12 wherein said control signal producing means includes signal pattern recognizing means for recognizing a pre-determined signal pattern in said signals received at said upstream communications port and for disabling said transfer means when said pre-determined signal pattern is received.
15. An apparatus as claimed in claim 14 wherein said signal pattern recognizing means includes code executable by said central processing unit to cause said central processing unit to determine whetiier or not said pre-determined signal pattern is received.
16. An apparatus as claimed in claim 11 further including communication means associated with the central processing unit for communicating with an upstream apparatus connected to said upstream communications port.
17. An apparatus as claimed in claim 16 wherein said communication means includes code executable by said central processing unit to cause said central processing unit to communicate with said upstream apparatus.
18. An apparatus as claimed in claim 17 further including maintaining means for maintaining said transfer means disabled during communications between said central processing unit and said upstream apparatus and for re-enabling said transfer means upon the termination of communication between said central processing unit and said upstream apparatus.
19. An apparatus as claimed in claim 18 wherein said maintaining means includes code executable by said central processing unit to cause the central processing unit to determine when said communications between said central processing unit and said upstream apparatus are terminated.
20. A metiiod of selectively establishing communications between an upstream device and a selected downstream device in a plurality of series-connected downstream devices, the method comprising the steps of: selectively enabling and disabling die transfer of signals between a downstream communications port and an upstream communications port of said selected downstream device, in response to signals received at said upstream communications port.
21. A metiiod as claimed in claim 20 further including die step of sending a pre¬ determined code in said signals, from said upstream device to all downstream devices, said pre-determined code having code elements.
22. A metiiod as claimed in claim 21 further including die step of responding to said pre¬ determined code at said selected downstream device by disabling die transfer of signals between said downstream communications port and said upstream communications port of said selected downstream device.
23. A method as claimed in claim 22 further including die step of preceding said pre¬ determined code with a synchronization sequence of codes to alert the downstream devices that said pre-determined code is about to be sent.
24. A method as claimed in claim 22 further including the step of sending redundant communications codes to said selected device, said redundant communications codes having at least some code elements corresponding to elements of said pre-determined code.
25. A method as claimed in claim 24 further including die step of receiving said redundant communications codes at each downstream device and determining whether or not said code elements match corresponding code elements of a key code and executing die step of disabling when said match is found.
26. A metiiod as claimed in claim 24 further including die step of fragmenting said pre- determined code to produce code fragments and sending to said downstream device a succession of said redundant communications codes having at least some code elements corresponding to said elements of said code fragments.
27. A method as claimed in claim 25 further including die step of receiving said redundant communications codes at each downstream device and determining whetiier or not said code fragments match corresponding key code fragments and executing die step of disabling when said match is found.
28. A metiiod as claimed in Claim 27 further including die step of sending LED command codes as redundant communication codes.
29. A metiiod as claimed in claim 26 further including die step of conducting communications between said upstream device and said selected downstream device while maintaining disabled die transfer of signals between said downstream communications port and said upstream communications port of said selected downstream device to disable communication between the remaining downstream devices and said upstream device during said communications.
30. A metiiod as claimed in claim 29 further including die step of re-enabling the transfer of signals between said downstream communications port and said upstream communications port of said selected downstream device to re-enable communication between said remaining downstream devices and said upstream device upon completion of said communications.
31. A metiiod as claimed in claim 29 further including die step of passing communications messages from the upstream device to die selected downstream device by sending redundant communications codes to said selected device, said communications codes having at least some code elements corresponding to elements of said messages.
32. A metiiod as claimed in claim 31 further including die step of fragmenting said communications messages to produce message fragments and sending to said downstream device a succession of redundant communications codes having at least some code elements corresponding to said elements of said message fragments.
33. An apparatus comprising: a) a host computer having a keyboard port, said keyboard port having a clock signal line and a data signal line, said host computer being operable to control the states of said clock signal line and said data signal line; and b) a first device connected to said keyboard port, said device including: i) a first central processing unit; ii) first upstream and first downstream communications ports, said first upstream communications port being connected to said keyboard port; and iii) first transfer means connected to die first upstream and downstream communications ports, die first transfer means being controlled by said first central processing unit to selectively enable and disable die transfer of signals between said first downstream communications port and said first upstream communications port in response to signals received at said first upstream communications port.
34. An apparatus as claimed in claim 33 further including a second device, said second device including: i) a second central processing unit; and ii) a second upstream communications port, said second upstream communications port being connected to said first downstream communications port of said first device.
35. An apparatus as claimed in claim 34 wherein said second device includes a keyboard compatible with said keyboard port.
36. An apparatus as claimed in claim 34 wherein said second device includes: a) a second downstream communications port; and b) second transfer means connected to the second upstream and second downstream communications ports, the second transfer means being controlled by said second central processing unit to selectively enable and disable die transfer of signals between said second downstream communications port and said second upstream communications port in response to signals received at said second upstream communications port.
37. An apparatus as claimed in claim 36 further including at least one further device including: i) a further central processing unit; ii) further upstream and further downstream communications ports; and iii) further transfer means connected to the further upstream and downstream communications ports, the further transfer means being controlled by said further central processing unit to enable and disable die transfer of signals between said further downstream communications port and said further upstream communications port in response to signals received at said further upstream communications port, said at least one further device connected in series, between said first and second devices such that die further upstream communications port of said at least one further device is connected to the first downstream communications port of said first device and die further downstream communications port of said at least one further device is connected to die second upstream communications port of said second device.
38. An apparatus as claimed in claim 37 wherein said host computer includes host communications means for communicating tiirough said keyboard port with at least one selected device selected from the group comprising the first device, die second device and said at least one further device and wherein each of said devices includes respective device communications means for conducting communications with said host communications means.
39. An apparatus as claimed in claim 38 wherein said host communications means produces said signals.
40. An apparatus as claimed in claim 39 wherein said communications include messages having a plurality of message elements, and wherein respective central processing units include respective maintaining means for maintaining disabled respective transfer means of said at least one selected device and devices further downstream than said at least one selected device while said messages are being communicated.
41. An apparatus as claimed in claim 40 wherein die communications means of said at least one selected device re-enables its respective said transfer means after said messages have been communicated to said at least one selected device.
42. An apparatus as claimed in claim 41 wherein said signals include a pre-determined code having a plurality of code elements recognizable by said at least one selected device.
43. An apparatus as claimed in claim 42 wherein die host computer includes producing means for producing a redundant code command operable to be communicated by said keyboard port to said at least one selected device, said redundant code command having a plurality of code elements, at least some of said code elements corresponding to at least some of said code elements of said pre-determined code.
44. An apparatus as claimed in Claim 43 wherein said redundant code command includes an LED command code.
45. An apparatus as claimed in claim 43 wherein said producing means is operable to produce a redundant message command operable to be communicated by said keyboard port to said at least one selected device, said redundant message command having a plurality of message command elements, at least some of said message command elements corresponding to at least some of said message elements of said message.
46. An apparatus as claimed in claim 45 wherein each of said devices includes respective receiving means for receiving said redundant message command codes and for determining whether or not said code elements match corresponding code elements of respective key codes and for disabling die respective transfer means when said match is found.
47. An apparatus as claimed in claim 45 further including fragmenting means for fragmenting said pre-determined code and said message prior to producing said redundant code commands and redundant message commands such tiiat said pre- determined code and said message are sent to said at least one selected device in a plurality of redundant message and code commands respectively, each including a message fragment and code fragment respectively.
48. An apparatus as claimed in claim 46 wherein each of said devices includes respective fragment receiving means for receiving said redundant message and code commands and for determining whether or not said code elements of said redundant code commands match corresponding code elements of respective corresponding key code fragments associated with each device and for causing the central processing unit of each downstream device in which said match is found to disable its respective transfer means and for assembling the message fragments to re-create said message.
49. An apparatus as claimed in claim 40 wherein said host computer includes control means for controlling said data and said clock signal lines of said keyboard controller to hold said data signal line constant while changing the state of said clock signal line to effect serial transmission of said communications from the host computer to said devices.
50. An apparatus as claimed in claim 49 wherein said devices include respective detecting means for detecting changes in signal state on die clock signal line when said data signal line is held constant, to receive said serial transmission of said communications from said host computer.
51. An apparatus as claimed in claim 50 wherein said devices include transmitting means for transmitting communications to said keyboard port by changing the state of said data signal line while changing the state of said clock signal line in accordance witii a timing specification compatible with the keyboard controller.
52. A method of establishing communications with a device connected to a keyboard port of a host computer, the method comprising die steps of: selectively enabling and disabling the transfer of signals between a downstream communications port and an upstream communications port of said device, in response to signals received at said upstream communications port from said keyboard port.
53. A method as claimed in claim 52 further including the step of maintaining disabled said transfer of signals between said downstream communications port and said upstream communications port while messages are being communicated from the host computer to the device.
54. A method as claimed in claim 53 further including die step of re-enabling said transfer of signals between said downstream communications port and said upstream communications port after said messages have been communicated.
55. A method as claimed in claim 54 further including die step of producing a redundant code command operable to be communicated by said keyboard port to said device, said redundant code command having a plurality of code elements, at least some of said code elements corresponding to at least some code elements of a pre-determined code and sending said redundant code command to said device using said signals.
56. A metiiod as claimed in Claim 55 further including die step of producing a redundant LED command code as said redundant code command.
57. A method as claimed in claim 55 further including die step of producing a redundant message command operable to be communicated by said keyboard port to said device, said redundant message command having a plurality of message command elements, at least some of said message command elements corresponding to at least some message elements of said message and sending said redundant message command to said device using said signals.
58. A method as claimed in claim 57 further including the step of receiving said redundant code commands at said device and determining whetiier or not at least some of said code elements match corresponding code elements of a key code and performing the step of disabling when said match is found.
59. A method as claimed in claim 57 further including the step of fragmenting said pre- determined code and said message prior to producing said redundant code commands and redundant message commands such that said pre-determined code and said message are sent to said device in a plurality of redundant message and code commands respectively, each including a message fragment and code fragment respectively.
60. A method as claimed in claim 59 further including die step of receiving said redundant message and code commands at said device and determining whether or not said code elements match corresponding code elements of corresponding key code fragments and performing the step of disabling when said match is found and for assembling the message fragments to re-create said message at said device.
61. A method as claimed in claim 52 further including the step of controlling data and clock signal lines of said keyboard port to hold said data signal line constant while changing die state of said clock signal line to effect serial transmission of communication from the host computer to said device.
62. A method as claimed in claim 61 further including the step of detecting changes in signal state on the clock signal line when said data signal line is held constant, to receive said serial transmission of said communication from said host computer at said device.
63. A method as claimed in claim 62 further including the step of transmitting communications from said device to said keyboard port by changing the state of said data signal line while changing die state of said clock signal line in accordance witii a timing specification compatible with the keyboard controller.
64. A method of communicating messages from a host computer to a device connected to a keyboard port of said host computer where the host computer has a keyboard port controller for sending bytes of data through said keyboard port to said device using a conventional data transfer method but which permits only specific bytes to be communicated to said device, die method comprising the steps of: a) producing a list of non-passable bytes which cannot be passed through said keyboard port controller to said device; b) comparing a message byte witii said non-passable bytes to determine whetiier or not said message byte is a non-passable byte; c) where said message byte is a non-passable byte, fragmenting said message byte into message fragments and using said conventional data transfer method to send at least one passable byte having a portion defined by said message fragments; and d) where said message byte is a passable byte, sending through said keyboard port controller, using said conventional data transfer method, said message byte.
65. A metiiod as claimed in claim 64 further including the steps of receiving said passable bytes having a portion defined by said message fragments, and reconstructing said message byte from said portion defined by said message fragments.
66. A method as claimed in claim 64 further including die step of preceding said at least one passable byte having a portion defined by said message fragments with an identification code.
67. A metiiod as claimed in claim 64 further including die step of building a configuration file of said non-passable bytes.
68. A method as claimed in claim 67 further including die step of sending a test mode command to said device to place said device in a test mode.
69. A method as claimed in claim 68 further including die step of employing die conventional metiiod of data transmission to send a pre-defined sequence of bytes to said device.
70. A metiiod as claimed in claim 69 further including die step of receiving passable bytes at said device and sending from said device to said host computer a pre-defined acknowledgement signal to indicate tiiat a given byte has been received.
71. A method as claimed in claim 70 further including die step of copying to said configuration file, all bytes for which said pre-defined acknowledgement signal is not received.
72. An apparatus comprising: a) a host computer having a keyboard port controller having a keyboard port, die keyboard port controller being operable to send bytes of data tiirough said keyboard port using a conventional data transfer method, the keyboard port controller permitting only specific bytes to be sent tiirough said keyboard port; b) a communications device connected to said keyboard port for receiving bytes therefrom and for sending bytes diereto; c) producing means in the host computer for producing a list of non-passable bytes which cannot be passed tiirough said keyboard port controller to said device; d) comparing means in die host computer for comparing a message byte with said non-passable bytes to determine whether or not said message byte is a non-passable byte; e) fragmenting means in the host computer for fragmenting said message byte into message fragments and using said conventional data transfer method to send at least one passable byte having a portion defined by said message fragments, where said message byte is a non-passable byte; and f) passing means in the host computer for sending through said keyboard port controller, using said conventional data transfer method, said message byte where said message byte is a passable byte.
73. An apparatus as claimed in claim 72 further including receiving means at said communications device for receiving said passable bytes having a portion defined by said message fragments, and reconstructing said message byte from said portion defined by said message fragments.
74. An apparatus as claimed in claim 72 further including identification means in the host computer for preceding said at least one passable byte having a portion defined by said message fragments with an identification code.
75. An apparatus as claimed in claim 72 wherein the host computer includes configuration file building means for building a configuration file of said non-passable bytes.
76. An apparatus as claimed in claim 75 wherein said host computer includes testing means for sending a test mode command to said device to place said device in a test mode.
77. An apparatus as claimed in claim 76 wherein said testing means includes sequence sending means for employing said conventional metiiod of data transmission to send a pre-defined sequence of bytes to said device.
78. An apparatus as claimed in claim 77 wherein said device includes transmission means for receiving passable bytes at said device and for sending from said device to said host computer a pre-defined acknowledgement signal to indicate tiiat a given byte has been received. An apparatus as claimed in claim 78 wherein said testing means includes copying means for copying to said configuration file, all bytes for which said pre-defined acknowledgement signal is not received.
PCT/CA1994/000184 1993-03-31 1994-03-29 Keyboard port communication apparatus and method WO1994023356A1 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
US4122893A true 1993-03-31 1993-03-31
US041,228 1993-03-31
US17171693A true 1993-12-22 1993-12-22
US171,716 1993-12-22

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
AU64221/94A AU6422194A (en) 1993-03-31 1994-03-29 Keyboard port communication apparatus and method

Publications (1)

Publication Number Publication Date
WO1994023356A1 true WO1994023356A1 (en) 1994-10-13

Family

ID=26717932

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CA1994/000184 WO1994023356A1 (en) 1993-03-31 1994-03-29 Keyboard port communication apparatus and method

Country Status (2)

Country Link
AU (1) AU6422194A (en)
WO (1) WO1994023356A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6768483B1 (en) 1997-11-13 2004-07-27 Prosisa Overseas, Inc. System and method of providing restrained, streamlined access to a computerized information source

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1990002993A1 (en) * 1988-09-15 1990-03-22 Star Microterminals Limited Electronic device for memorizing digital data e.g. of a key input sequence

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1990002993A1 (en) * 1988-09-15 1990-03-22 Star Microterminals Limited Electronic device for memorizing digital data e.g. of a key input sequence

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6768483B1 (en) 1997-11-13 2004-07-27 Prosisa Overseas, Inc. System and method of providing restrained, streamlined access to a computerized information source

Also Published As

Publication number Publication date
AU6422194A (en) 1994-10-24

Similar Documents

Publication Publication Date Title
JP3357506B2 (en) Computer system
EP0543882B1 (en) System and method for monitoring copiers from a remote location
JP4553279B2 (en) Data transfer system, data transfer terminal, controller, and interface method
US5461710A (en) Method for providing a readily distinguishable template and means of duplication thereof in a computer system graphical user interface
US5563630A (en) Computer mouse
US5440699A (en) System by which a remote computer receives screen images from and transmits commands to a host computer
CA2018652C (en) Split screen keyboard emulator
US6148241A (en) Method and system for providing a user interface for a networked device using panel subunit descriptor information
US5525978A (en) Graphical key manager for computer
US4754326A (en) Method and apparatus for assisting user of information retrieval systems
US6282383B1 (en) Method of monitoring and initiating operational commands in an image processing device
EP0394614A2 (en) Advanced user interface
JP3227542B2 (en) Apparatus and method to ensure compatibility of versions of software written for a particular computer hardware architecture
US4994795A (en) Position indicating device for a digital computer
US4458331A (en) Interactive display terminal with alternating data processing and text processing sessions with text processing status line operable during data processing session
US5084875A (en) System for automatically monitoring copiers from a remote location
US20080131184A1 (en) Display key, display keyswitch assembly, key display assembly, key display, display data entry device, display PC keyboard, and related methods
US5335342A (en) Automated software testing system
US4425627A (en) Intelligent prompting terminal apparatus
CA2194112C (en) Method & apparatus for display of windowing application programs on a terminal
US5867149A (en) Switch key image display and operator/circuit interface
US4941829A (en) Method for providing a dynamic tutorial display
US4072825A (en) Hotel/motel automatic control system
EP0693724A1 (en) A method of reconfiguring a simulated keyboard device in a computer system
CA2101552C (en) Chordal keyboard method and apparatus

Legal Events

Date Code Title Description
AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): AT BE CH DE DK ES FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN ML MR NE SN TD TG

AK Designated states

Kind code of ref document: A1

Designated state(s): AT AU BB BG BR BY CA CH CN CZ DE DK ES FI GB GE HU JP KG KP KR KZ LK LU LV MD MG MN MW NL NO NZ PL PT RO RU SD SE SI SK TJ TT UA UZ VN

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase in:

Ref country code: CA