The KeyAT Manuals

To get the KeyAT-5 Manual press: KeyAT-5 Manual
To get the KeyAT-4 Manual press: KeyAT-4 Manual
To get the KeyAT FA1/FA1-E Manual press: KeyAT FA1/FA1-E Manual

You will need an Adobe Acrobat reader to view or print the manuals above.
To get one press: Get Adobe Acrobat Reader.


KeyAT-4 Firmware Update, Ver 4.0x7

To get the KeyAT-4 Update as a zip file archive: KeyAT-4 Ver 4.0x7 Firmware Update

To get the KeyAT-4 Update as a self-extracting zip file: KeyAT-4 Ver 4.0x7 Firmware Update

You will need Tera Term Pro Terminal emulator to update KeyAT-4 Firmware.
The Tera Term application is available at: Tera Term


KeyAT-5 - Excerpts from Customer Support


Question: Are the scan codes the same for the KeyAT-4 and KeyAT-5?
Answer: No. The KeyAT-4 uses PS/2 scan codes, and the KeyAT-5 uses USB codes, which happen to be different.

KeyAT-4 - Excerpts from Customer Support

Question: How does the KeyAT handle function keys?
Answer: Generally you would put it in 'DOS Scan Code Mode' (~S command) and send the function scan codes: ie. F1=59, F2=60 ... The manual lists all the scan codes for you.

Question: How does it handle key combinations, eg Ctrl F7?
Answer: Put it into raw key code mode (~K command) and send the RAW key codes: 14 83 F0 83 F0 14
where: 14 is the raw key code for the ctrl key
83 is the raw key code for the F7 key
F0 prefixes a release of that key

Question: Can it handle non-standard PC keyboards? I'm particularly interested in simulating the DEC LK450 which is a VT 420 terminal style keyboard attached to 486/pentium PC's using terminal emulator software.
Answer: Physically, it only emulates an AT style keyboard. Any key remapping is really the burden of the software sending it keystrokes. Since it will accept raw 'keycodes", you can create any key that you AT compatible computer will accept. ASCII and DOS Scan code sets are really for convenience, so that you do not have to recreate every keycode sequence for every key.

Question: After sending the keyat keystrokes for the computer, how do you know when the have been processed so that you can send it more keystrokes?
Answer: In RS-232 communications, the prompt is not returned until the keys are processed. So it is best to have your application look to receive the colon prompt before proceeding to send the KeyAT more data.

Question: Can you explain more about examples on page 9?
Answer: They show a full-duplex terminal session between a host PC and a KeyAT in 'non-addressed mode'. The characters shown are what the user types except for the prompt, which is a carriage return (Hex 0D), line feed (hex 0A) and a colon. As the user types, all keys are echoed. An [ENTER] key completes the command, which is acknowledged by the KeyAT by a new prompt.

Question: What is the difference between carriage return (Hex 0D) and "^M"?
Answer: A carriage return (hex 0D) or [ENTER] key is the character the KeyAT uses to end a line in 'line turnaround mode'. That character does not get sent through to the PC. To send a carriage return on through to the PC you have to send it another way. One way is to the caret character ^ followed by an M. The KeyAT interprets that as a control M character, which is the same as a carriage return.

Question: The data frame described on page 10 of the manual does not mention parity. Is there a parity bit?
Answer: There is no parity. The character frame is one stop bit, eight data bits, and one stop bit.

Question: What precisely does the receipt of a colon by the host mean in non-addressed, Line Turnaround mode?
Answer: It means that all of the keyboard scan codes have been sent to the target PC. There is no way of knowing whether the target has processed all of them. If the target has a ring keyboard buffer in RAM (like most IBM style PCs), there is no way of knowing how full the buffer is, or whether any characters were lost in a fast transmission.

Question: Page 5 of the manual says "Characters are not echoed when the KeyAT is addressed." What about when the KeyAT is in 'non-addressed mode'?
Answer: In that 'non-addressed mode (DIP switch positions 1-6, open), all characters are addressed.

Question: In Immediate mode, how fast can data be sent to the KeyAT?
Answer: That cannot be absolutely determined. It depends on many factors, such as the speed of the PC, the BIOS being used and the application that is running. Using line turnaround mode is a safer method to avoid over-running the input buffer. In non-addressed mode, when the colon returns you can send another line. In addressed mode, when you get a response from the request status command, then you can send another line.

Question: Customer had trouble interfacing the KeyAT to a Symbol LT-1820 hand-held CCD scanner. Somehow the KeyAT was not seeing the [CR] (carriage return) character at the end of the scanned string.
Answer: I don't know if you'll recall, but I spoke with you the other day regarding a problem I was having with the KeyAT: it was buffering 30 characters before passing them to the keyboard port even though one of the characters it received was a [CR] Recall that I have a bar-code scanner attached to RS-232 port (not a PC). You suggested that the KeyAT was probably getting and misinterpreting a parity bit, although at the time I couldn't be positive if parity was actually be used. Sure enough, the scanner was programmed to use odd parity. There wasn't an option for no parity, so I reprogrammed it to use "space" parity. This fixed the problem -- just thought I'd let you know.

Question: Do you provide a power supply for the KeyAT?
Answer: We do provide supplies on special order. If you need a supply and can solder you own connection, you might consider Part number T309-P6P-ND from Digi-Key (Last price I checked was $8.10). A 6 pin Mini-DIN connector from Digi-Key would be CP-2060-ND.

Question: Do you do custom programming and hardware for the KeyAT?
Answer: Yes we do. Let us know your requirements, and we will gladly quote on either ci#Sustom hardware or software.

Question: My KeyAT does not work correctly with my IBM Thinkpad. It works OK on my other computers.
Answer: You need a PS2 Mouse-Keyboard Y Adapter. IBM sells this as part number 54G0441. L3 Systems also sells one. It is part number CL0012. If you use the L3 Systems part, plug the KeyAT into the connector labled "mouse". If you also have a mouse, plug it into the connector labeled "keyboard".

Question: Can the KeyAT work with a modem?
Answer: The KeyAT offers no specific modem support. I suspect you could get it to work with modem by:

  • Use a "null modem adapter" or cross cable to connect the modem to the KeyAT
  • Put the modem into a "dumb mode"
  • Enable auto-answer
  • Setting the baud rate to 9600 baud.

Question: Does your keyat device work under NT. Basically I am running NT and need to generate a space bar keycode on a target system. NT does not like giving access to serial ports. Do you supply drivers for that??
Answer: The KeyAT will work on a PC running NT, both on a keyboard port and connecting with an RS-232 port. We do not provide drivers for NT, and there really should not be any need for one. Writing to an NT serial port can be as simple as opening a DOS shell, and doing the following:

C> echo Hello> com2
C>

The above sends "Hello" to the port COM2. You can use the mode command to set the baud rate and bit patterns.

Since the echo command doesn't take space as a parameter to send, the way you get around that is to use the KeyAT sequence for accepting ASCII Hex data. A tilde (~) followed by two digits will cause the keyat to interpret those to digits as the hexadecimal representation of an ASCII character. Since the ASCII space character is 20 in hexadecimal, the following will instruct the KeyAT to send a space to the target machine:

C> echo ~20> com2
C>

Of course, you can put the above on a batch file, say SPACE.BAT, and then all you woould have to do is type the command "space".

For more sophisticated interaction, you might want to try using a terminal emulation program. Two which have pretty good scripting and that run on NT are Tera Term and Kermit, and you can download these for free. Also Visual Basic has capabilities for reading from and writing to serial ports, but we don't have the expertise here to advise on that process.

Question: I have a keyat which I am trying to control using Visual Basic. Now, the unit works fine with hyperterminal but with VB it seems to hold the characters in a buffer somewhere. I looked at all the VB manuals, but it seemed like it should send the data rightaway. Any clues to this?
Answer: Basically, if you send a string in Visual Basic to the serial port you'll do this using the MSComm module.

So, say you want to send a string Hello world ending with a " Carriage Return character. In VB you might consider doing the following:

MSComm1.Output="Hello world"
MSComm1.Output="^M"

Unfortunately, the above example doesn't output the Carriage Return character. However, deep in the bowels of VB it says that you have to append a vbcarriage return to the results. Thus you need to do:

string="hello world ^M " & vbCR
MSComm1.Output=string

Only took me a few hours to figure that one out (Ed note: Both question and answer supplied by customer. We're not VB experts here!)

Question: How do you send data to the KeyAT using QBASIC
Answer: The following shows program statements to send "Hello" through a KeyAT attached to the PC's com1 port.

open "com1:9600,N,8,1,ds,cs"for output as #1
print #1,"Hello"

The real undocumented trick with qbasic is how to print something without sending a "Carriage Return" at the end. The following sends the two characters ^M without the ending carriage return. Removing the semi-colon at the end of the PRINT statement will cause it to add the carriage return at the end.

Here's an example:

COMMON cr as STRING
OPEN "com1: 9600,8,n,1" FOR OUTPUT AS #1
cr = "^M"
PRINT #1, cr$;

Question: What general hints do you have regarding connecting a KeyAT to a barcode scanner.
Answer: Here are a few points that generally apply to using the KeyAT with a barcode scanner:

  • If you have RS-232 cabling for the bar code scanner that works on a PC's RS-232 port, then this cable would have to have the transmit (pin 2) and the receive (pin 3) signals reversed when connecting to a KeyAT.
  • The scanner RS-232 port should be configured to match the KeyAT. See page 8 of the KeyAT manual to see what settings are available. The default KeyAT setting is 9600 baud, 8 data bits and no parity.
  • I always suggest testing the KeyAT with a terminal emulator program like Hyperterm, ProComm or Tera Term on a connected PC computer. I happen to really like Tera Term, and it's free to download and use.

    The Tera Term application is available at: Tera Term

  • You need to set up the scanner to send a a carriage return character (hex 0D) at the end of the scan code data.
  • The KeyAT does not normally send the carriage return character through to the PC. If your application also needs the [CR] character, the ~F command will tell the KeyAT to pass through the carraige return character.
  • You can change the KeyAT configurationn to allow this. See page 8 of the manual. You would need to change the 4th parameter of the configuration string.

Question: Can three key combo's such as the Windows login sequence (CTRL-ALT-DEL) be created?
Answer: Yes. Any key combination can be created. To do CTRL-ALT-DEL, you can do the following:

:~+29~+56~:83~-56~-29[ENTER]
:
where:
~+29 Sends a CTRL key press
~+56 Sends an ALT key press
~:83 Sends a CTRL key press and release
~-56 Sends an ALT key release
~-29 Sends a CTRL key release

Question: Do you have to switch modes to go from monitor to send?
Answer: No. You can send while in monitor mode.

Question: Do you know of any linux drivers / programs / front ends for this or do you recommend just manually reading and writing to the serial port?
Answer: Minicom has some simple scripting, plus it would allow you to monitor things. "Expect" provides pretty good serial interface scripting, that is typically used by programs like mgetty to converse with a modem. Of course, many true-blooded Linux geeks would use Perl.

Question: The Left or Right window scan codes (90 or 91) do not seem to work correctly. I'm sending them using a ~:90 and ~:91 command. (Version 4.0x5)
Answer: Version 4.0x7 fixes this problem. To get a new version, see the links in the KeyAT Tech Info/Q&A section: KeyAT Tech Info/Q@A

Question: I'm having trouble sending a Control-C followed by some more characters. (Version 4.0x5)
Answer: Version 4.0x7 fixes this problem. To get a new version, see the links in the KeyAT Tech Info/Q&A section: KeyAT Tech Info/Q@A

Question: The Keypad Enter scan code A0 does not seem to work when I send a ~:A0 command. (Version 4.0x5)
Answer: Version 4.0x7 fixes this problem. To get a new version, see the links in the KeyAT Tech Info/Q&A section: KeyAT Tech Info/Q@A