Columbia University and Barnard College, NYC, photo courtesy of morningside-heights.net.

# Kermit 95 Version 3.0 DEV

### Internet and Modem Communications for 32bit and 64bit Windows and OS/2
from The Kermit Project

> Manual by: Christine M. Gianone, Frank da Cruz, and Jeffrey Altman with updates by David Goodwin for Kermit 95 3.0+
> Software by: Jeffrey Altman, Frank da Cruz, David Goodwin, Thomas Wu, and Max Evarts
> Software version: 3.0.0 DEV, 27 January 2025

Copyright © 1996, 2003, Trustees of Columbia University in the City of New York. Previously Copyright © 1996, 2003, Manning Publications, Greenwich CT. Copyright assigned to Columbia University 30 March 2011. Converted for Web 30 March 2011. Last update: Mon Jan 27 14:03:36 2025

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included here.

First Printing: September 1995
Seventh Edition: 1 January 2003
Revised periodically since then.

[ READ ME FIRST ] [ Tutorial ] [ Frequently Asked Questions ]

## Contents

Welcome...

1. What is Kermit 95?
2. Installation
3. Getting Started
4. Using the Dialer
5. Adding and Changing Dialer Entries
6. The Command Screen
7. Using the Terminal Emulator
8. File Transfer
9. Host Mode

Trademarks

## Index to Reference Materials

General

- Kermit 95 Tutorial
- Kermit 95 2.0 GUI Features
- Using C-Kermit, 2nd Edition
- Supplement to Using C-Kermit, 2nd Edition for C-Kermit 7.0
- Supplement to Using C-Kermit, 2nd Edition for C-Kermit 8.0
- Supplement to Using C-Kermit, 2nd Edition for C-Kermit 9.0
- For OS/2 Users...
- The K95 Bugs List
- K95-Specific Command Line Options
- File Transfer Pipes and Filters
- The SET WIN95 Command
- REXX support in Kermit 95
- Glossary

Connections

- SSH Client Reference
- Kermit Security Reference
- Telnet Client Reference
- Using Named Pipes
- FTP Client Reference
- HTTP Client Reference
- Windows Internet Kermit Service Overview
- Windows Internet Kermit Service User Guide
- Windows Internet Kermit Service Administrator Guide
- Internet Kermit Service User Guide
- TAPI Command Reference
- Dialing Directory Format
- Digital Equipment Corp Networking Methods
- Sending Alpha and Numeric Pages

Terminal Emulation

- SET TERMINAL Command List
- Printer Setup and Troubleshooting
- Advanced Screen Navigation Features
- Table of Keyboard Key Codes
- List of Keyboard Verbs
- Default Key Map
- Swapping the Ctrl and Caps Lock keys

Character Sets

- The ASCII Character Set
- Cyrillic Character Sets
- Hebrew Character Sets
- Kermit 95 Character-Set List
- Terminal Character-Set Terminology and Mechanics
- Latin-1 and Latin-2 Compose-Key Tables

## Welcome . . .

. . . to Kermit 95, communications software for Microsoft Windows 95/98/ME/NT/2000/XP/Vista/7/8/10/11 and IBM OS/2, brought to you by The Kermit Project -- connecting the world's computers together since 1981.

Kermit 95 is built from the file-transfer and scripting portions of C-Kermit ("The world's most portable communications software") plus custom Windows and OS/2-specific modules for serial and network communications, keyboard and mouse handling, terminal emulation, and system service access, plus its own point-and-click graphical connection manager ("Dialer").

> Newcomers to K95 are invited to begin by reading the relatively short Kermit 95 Tutorial.

The documentation for Kermit 95 consists of the following parts:

1. This manual concentrates on the specifics of Kermit 95 such as terminal emulation, key mapping, printing, and using the graphical Dialer.

2. For the OS/2 Version, a supplement to this manual.

3. The book Using C-Kermit, 2nd Edition, which doubles as the manual for C-Kermit 6.0 on Unix, VMS, and other operating systems, covers the common Kermit 95 and C-Kermit command and scripting language, file transfer, general principles of data communications and character sets, and specific material about other operating systems like Unix and VMS that you are likely to access using Kermit 95.

4. The Supplement to Using C-Kermit, 2nd Edition, describing the new features of C-Kermit 7.0 (which corresponds to K95 1.1.20) And Another Supplement for C-Kermit 8.0 (which corresponds to K95 2.0, updated for 2.1). And A Third Supplement for C-Kermit 9.0. At this time there is no supplement covering new features in C-Kermit 10 (which corresponds to K95 3.0)

This edition of the Kermit 95 manual is maintained as part of the open source Kermit 95 project and updated for each release. It supersedes the printed first edition of 1995 and all previous electronic editions. It is to be read with a Web browser such as Firefox, Edge or Chrome. This edition documents Kermit 95 3.0.0 DEV.

This manual is written in no-frills HTML, readable by any browser that follows the HTML 1.0 specification plus tables. It includes quite a few screen shots. If you find that this makes it take too long to load into your browser, disable "Load images automatically" in your browser's options.

The navigation links [Next] and [Previous] are context-sensitive. At the top of a chapter, they refer to the next and previous chapter. At the top of a section within a chapter, they refer to the next and previous section, and so on. [Top] brings you back to the main table of contents. Others, like [Chapter Contents] and [Section Contents], should be self-explanatory. Whenever you follow a link, you can use your Browser's Back button to return to your previous context.

> Christine M. Gianone
> Frank da Cruz
> Jeffrey Altman
> Max Evarts
> The Kermit Project - Columbia University
> New York City
> August 1995 - October 2002

How to Reach the Kermit Project

Visit the Kermit Project Website at https://kermitproject.org/.

## Chapter 1. What Is Kermit 95?

[Next] [Contents] [Top]

Kermit 95, "K-95" for short (and "K95" for shorter), is a full-featured, high-performance, native, 32-bit communications software package for 32bit and 64bit versions of Microsoft Windows and IBM OS/2 offering:

- A consistent approach to network, modem, and serial-port connections.
- Terminal emulation -- emulation of nearly 40 types of terminals.
- Kermit, FTP, and XYZMODEM file transfer on terminal connections.
- FTP and HTTP file transfer on the Internet.
- Character-set conversion in terminal sessions and file transfer.
- SSH, SSL/TLS and Kerberos security (Windows only). -->
- Remote access from Internet or by direct dialin.
- Numeric and alpha paging.
- Local file management.
- Scriptability and automation.
- Compatibility with Kermit software for many other platforms.

For an overview of the packaging, system requirements, installation, directory layout, and new features of the latest version of K95, see the `README` file.

Kermit 95 is primarily for accessing text-based computers and services by dialup, direct serial connection, or network. Kermit 95 is like a VT100 terminal (or any of the dozens of other terminals that it can emulate), but with the added ability to transfer files back and forth and to automate any or all phases of a communication session, plus numerous comforts like key mapping, screen scrollback, and color selection. On the Internet, K-95 is a Telnet, Rlogin, FTP, and HTTP client with the ability to make secure connections. In Windows (not OS/2), it is also an SSH client. Furthermore, since Kermit 95 runs in a window of your PC desktop, it can interact with other PC applications by copying and pasting, clicking on "URL hotspots", and so on.

What is a text-based service? The best way to explain this is to list some examples:

- A Unix (Linux, FreeBSD, Solaris, AIX, HP-UX, ...) shell account
- The VMS shell (DCL)
- An IBM mainframe through a 3270 protocol converter
- All sorts of other minicomputers and mainframes
- A Bulletin Board System (BBS)
- Text-based library catalog and circulation systems
- Certain commercial information services
- Most TCP service ports (Telnet, Rlogin, SSH, etc)
- EDI service providers, insurance-claim clearinghouses, etc.
- Alphanumeric paging services
- The command prompt of a PBX, router, terminal server, or similar device
- The command processor of a modem
- Special-purpose devices like barcode readers, die cutters, press brakes, anaesthesia monitors.

Unlike graphical services such as those you access with Web browsers like Firefox or Internet Explorer, text-based services communicate and display only characters (not images or pixels), and (in general) display them in only a single font and size.

Contrary to what you might read in the popular press, text-based services are very much alive -- in corporations, universities, hospitals, government agencies, laboratories -- due to their stability, ease and universality of access, ease of automation, openness, long history, and wealth of applications (EMACS, VI, EDT, EVE, and other text editors; Pine, MM, and other e-mail programs; TeX, Scribe, Troff, and other text formatting/typesetting systems; rn, trn, tin, and other news readers; Lynx, IRC, Telnet, FTP, the many standard UNIX "building block" utilities, bibliographic databases and online library catalogs, legal/medical databases, statistical packages, math/scientific packages, compilers, system and network administration tools, and so on, plus countless custom text-based data entry / inquiry, office, and other applications). Kermit 95 is the perfect way to access this "world of text" from your PC.

Since Kermit 95 2.0 (June 2002), K95 has been available with both a Graphical User Interface (GUI) (available for Windows only) and a Console-mode interface. In this document, we refer to the GUI versions of K95 as K95G. Most of the features of the GUI and Console versions are the same; the following table summarizes the differences:

> Feature | GUI NT 3.51/95 or newer | Console Win9x/ME | Console NT/2000/XP
> --- | --- | --- | ---
> Kermit Menu | Yes | No | No
> Kermit Toolbar | Yes | No | No
> Scrollbars | Yes | No | No
> Font Selection | Yes | No | Limited
> Multiple Scripts | Yes | No | Limited
> Save Font Preferences | Yes | No | No
> Stretch Screen Dimensions | Yes | No | No
> Stretch Font Size | Yes | No | No
> Maximize/Restore | Yes | No | No
> True Fullscreen | No (*) | Yes | Yes
> True Underlining | Yes | No | No
> Double High/Wide Characters | Yes | No | No
> `[x]` Box Works | Yes | No | Yes

(*) The Kermit 95 GUI can be maximized but normally the Windows Task bar is still visible.

### 1.1. The Un-Windowed Kermit for Veterans

In case you have used other Kermit software before, or you just plain hate graphical user interfaces, you might be interested to know that the K-95 "communications engine" is a command-driven Kermit program that can be used without menus and clicking, just like other Kermit programs.

In Windows, run `K95.EXE` either from a Command prompt or from Start → Run dialog on the Taskbar. In OS/2 execute `K2.EXE` from a Command prompt window or by opening the Kermit/2 program object in the Kermit/2 desktop folder.

Then you'll see a greeting and Kermit's prompt, which shows your current directory `[`in brackets`]` and ends with "`K-95>`" (the commands that you type are underlined, and you should press the Enter key at the end):

      C:\WINDOWS> cd "Program Files\Kermit 95"
      C:\Program Files\Kermit 95> k95
      (Greeting is printed)
      [C:\Program Files\Kermit 95] K-95> _

Now type Kermit commands to set up and get connected as you would in any other Kermit program, like MS-DOS Kermit or UNIX C-Kermit, as documented in Using MS-DOS Kermit or Using C-Kermit, and in Chapter 6 of this document.

### 1.2. Platform Differences

Kermit 95 is available for all 32bit or 64bit versions of Windows except for Windows NT 3.10. In the Console version, differences among these platforms include:

Windows 95
Windows 98
Windows ME
  The local character set is limited to a single PC code page, which can't be changed without restarting the PC. Numerous operational limitations are imposed by the Microsoft Console driver. The `[x]` box on the Title bar is grayed out to prevent disaster. Windows tends to prefer to show the MS-DOS icon for K95 rather than its own icon, even though K95 is in no way a DOS program, and never has been.

Windows NT
Windows 2000
Windows XP
  Windows NT 3.50 or later is required. The display is Unicode-based and so different character sets, languages, and writing systems can be mixed on the same screen.

OS/2
  OS/2 3.0 (Warp) or later is required for the K95 Dialer. Kermit 95 itself requires OS/2 2.0 or later. The OS/2 version of K95 is not available in a GUI version and does not include an SSH client. Nor does it support TAPI or Start-menu shortcuts, features found only in Windows. However, the OS/2 version includes certain features that are not possible in Windows, including PPP and SLIP dialing, font-switching in fullscreen sessions, and a REXX interface. It also includes support for several types of networking not available in the Windows versions, including NETBIOS and Named Pipes. There is no Toolbar on the Kermit 95 window; use the System menu instead. CLICK HERE for details about the OS/2 version.

The GUI version of K95 has the same appearance and feature set on all Windows versions except for Windows NT 3.50 where it is missing the toolbar and some GUI dialogs. Regardless of GUI or Console version, the following features have a minimum Windows version requirement:

Ptys
  Running other Windows console-mode applications inside of Kermit 95s terminal emulator requires at least Windows 10 version 1809. Note that file transfers (Kermit or X/Y/Z-Modem protocols) are not supported through PTYs on Windows.
SSH
SSL/TLS
  Making connections secured with SSH or SSL/TLS is only supported on Windows XP SP3 or newer at this time.
TAPI
  TAPI requires at least Windows 95 or Windows NT 4.0. It is also not available on MIPS Windows NT at this time.

#### Starting Kermit 95

Once installed, Kermit 95 can be started from the Dialer, or by double-clicking an icon on your desktop (which may be placed there when you install K95), or from a text-mode command window (COMMAND.COM in Windows 95/98/Me, CMD.EXE or — in Windows 7 and later — PowerShell).

To start K95 from a command window (such as CMD.EXE or PowerShell), type "start path\k95g.exe", where path is where the Kermit 95 is stored; for example:

> start "C:\Program Files\Kermit 95\k95g.exe"

(note that k95g.exe is the GUI version; k95.exe is the console version). Or, if the command window's current directory is your desktop, and you have a K95 shortcut on your desktop, you can go through it:

> start "K95 GUI.lnk"

There are doubtless many other wrinkles to this topic, but the main purpose for this section is presenting K95's command-line options: configuration or action commands that you can give in the same command that you start K95 with. Command-line options are given after the program name in the system command that you use to start Kermit (in this and the following examples, "start k95g.exe" should be replaced by the appropriate command as explained just above, e.g. 'start "K95 GUI.lnk"'):

> start k95g.exe -i -s oofa.exe

tells Kermit to send (-s) the file oofa.exe in binary (-i) mode. For more details on Kermit 95s command line options, see Command line reference.

### Technical Support

The free telephone support that came with K95 from 1995 to 2011 is no longer available due to the closing of the Kermit Project by Columba University on the latter date.

We hope that this manual, plus Using C-Kermit and the other material provided, will give you all the help you need to use K-95. If you have trouble or questions and you can't find the answers in the manuals, begin by looking in the Bugs List, which describes all known problems in or affecting Kermit 95 as of the release that you have.

If you are on the Internet (and have a modern browser handy), also look at the Github Issue Tracker which contains descriptions of problems discovered since this release.

If you still have problems or questions that are not addressed in the manuals or bug files, please check:

      https://kermitproject.org

and look in the Kermit FAQ (Frequently Asked Questions). Also look at the Kermit 95 FAQ:

      https://kermitproject.org/k95faq.htm

and the Kermit Project's general Technical Support page:

      https://kermitproject.org/support.html

And you can also ask a question on Kermit 95s Github Discussions page:

        https://github.com/davidrg/ckwin/discussions

Or post on Kermits Usenet Newsgroup, though traffic tends to be very low these days:

        comp.protocols.kermit.misc

### Legend

Every computer manual has its share of "notation." We've tried to keep ours to a bare minimum:

`K-95> help`
  Monospace type is used to show dialogs with computers. The parts that you type are underlined, and must be terminated by pressing the Enter key.

`+1 (212) 854 3703`
  A fully specified telephone number, including country code (1) and area code (212).

[ . . . ]
  Items enclosed in italicized brackets are optional; that is, they can be omitted.

{ item1, item2, . . . }
  When items are listed within italicized braces, that means you should pick one of them.

number
  Words in italics are variables that should be replaced by real quantities. For example, replace number by an actual number like 3 or 2000; replace filename by the name of a real file on your computer, such as `C:\BUDGET\FY2002-03.TXT`.

File..Directories..Dialing
  Shorthand for indicating a series of menu selections. In this case, "select the File item on the main menu, then select Directories from the File menu, then select Dialing from the Directories menu."

## Chapter 2. Installation

[Next] [Previous] [Contents] [Top]

This chapter has been removed.

Information about installing and uninstalling Kermit 95 has been moved to the README file and the Installation Notes file.

## Chapter 3. Getting Started

[Next] [Previous] [Contents] [Top]

Contents:

- Standard Windows and OS/2 Features
- The K95G Menu
- The K95G Tool Bar
- The K95G Status Bar
- The Dialer

Once you've completed the installation procedure, you can double-click on the K95 Dialer icon to bring up the K-95 Dialer window, or on the K95 GUI icon to start the GUI version of Kermit 95 (K95G), or (veterans only), the K95 Console icon to start the Console version of Kermit 95. When you first start K95G, here's what you see:

Don't panic. The main screen is black because there is no connection yet. The Dial button on the left of the Toolbar brings up the Dialer to make a connection for you. You can also type commands in the black window at the prompt (explained in Chapter 6). But usually you won't have to -- most of what you need is in the menus or on the Toolbar. In the next section we explain how to use these and other standard Windows features. But first, let's briefly show how to make a connection in the GUI version of K95. Just click the Dial (leftmost) button on the K95G Toolbar:

Then pick your destination and go. Here's what the final result might look like:

This example shows a terminal session to a Linux computer running the text-mode Lynx Web browser. Of course, when you're just beginning, first you'll need to set up the connections that you'll be using, which is the topic of the next couple chapters. In case you couldn't make out the little Dial icon on the toolbar, here's a larger version:

### Standard Windows Features

Both K95G and the Dialer have the standard Windows features you expect. If you're already familiar with them, feel free to skip ahead.

The Title Bar
  The Title bar goes across the top of the window. It contains the program name, K-95 or Kermit 95 Dialer. You can move the window around by putting the mouse pointer on the title bar, holding down the left mouse button, and moving the mouse until the window is in the desired location, and then letting go of the mouse button. This is called "dragging."

  At the far left of the Title bar is the Title-bar icon, also called the Mini-icon, a tiny rendition of the K-95 icon. Clicking on it gives you the System menu, with Restore, Move, Size, Minimize, Maximize, and Close entries.

  Here is a brief explanation of the Windows System menu (the OS/2 System menu is slightly different):

  - Minimize and Maximize shrink and expand the window (explained in the Button section just below).
  - Restore puts the Window back to normal size if it was minimized or maximized.
  - Size and Move let you size and move the window using the arrow keys.
  - Close means to close the application, exit from it, and make it go away.

  On the right you have three little boxes. From left to right:

  - The Minimize box shrinks the program to a button on the Taskbar so it's not taking up space on your screen. But the program is still there when you want to call it back. Click on its button to bring it back. If you minimize the Dialer, you can also bring it back by clicking on K95G's Dial Toolbar button.
  - The Maximize box expands the program's window to fill your whole screen except for the Task bar. Try this now. See how the Maximize box changed into a Restore box. Click on this button again. Now we're back to normal size.
  - The Close box gives you another way to close the program and exit from it.

Scrolling the Window
  Just inside the right edge of the window you'll find a vertical scroll bar. In the Dialer, this lets you look at all your directory entries; in K95G it lets you look at previous host screens. Just put the mouse pointer on the scroll box and slide it down or up in the scroll-bar shaft. Or click anywhere in the shaft, or click on the little arrowheads at either end. Or use your mouse wheel, if you have one.

Sizing the Window
  Let's move around the edges of the window. The sides can be dragged to make the window wider or narrower. Put the mouse pointer over the left or right edge and see it change into a horizontal double-pointing arrow. Hold down the left mouse button and drag the edge of the window. Let go of the mouse button when the window is the desired width. Now put the mouse pointer on the top or bottom edge. Same deal, but this lets you change the height. You can change the width and height at the same time by putting the mouse pointer on any of the four corners of the window and dragging inwards or outwards. When you resize the window, the font size is automatically adjusted to make the current number of screen rows and columns fit in the new window; you also have the option to have resizing keep the font as-is and change the number of screen rows and columns (Actions → Resize Mode).

Switching among Applications
  Windows 95/98/ME/NT/2000/XP/etc and OS/2 are true multitasking operating systems, meaning you can have more than one software application going at a time. Only one application, however, can be in the foreground. The foreground application is the one whose title bar is highlighted, and it is the only one that receives mouse actions and keystrokes.

  You can bring any application into the foreground simply by clicking on any piece of its window that you can see peeking out from behind other windows (but be careful exactly where you click, because the clicking on a functional window element can have an effect; usually it's best to click on the middle of the Title bar). If you can't see it, you can bring it to the front by clicking on its Window button in the Taskbar, or by using Alt-Tab or Alt-Esc to rotate your applications in front of you, Lazy-Susan style, until the desired one is selected. (Hold down the Alt key, and press the Tab or Esc key repeatedly. Let go of the Alt key when you see the application you want.)

### The K95G Menu

First let's look at K95G, the GUI version of the Kermit 95 connection engine; we'll discuss the Dialer below. The K95G menu is clean and simple: File, Edit, Actions, Help. There are no keyboard shortcuts for K95G's menu items, since every key and key combination already has application-specific uses. The menubar at the top of the K95G window is also optional - if you'd like a little screen real estate back, you can turn it off with the `SET GUI MENUBAR VISIBLE OFF` command and use the Window Menu instead.

#### The File Menu

Connections
  Invokes the Kermit 95 Dialer so you can make a connection, or use it in any other desired way.

Hangup
  Closes the current connection.

Exit
  Exits from K95G.

#### The Edit Menu

Paste
  Copies the text (if any) from the clipboard into the current window (Command or Terminal).

Mark Mode
  Lets you use your keyboard to mark text for copying to the clipboard or transmission to the host. The particular action is controlled by the submenu: Start, Cancel, Copy to Clipboard, Copy to Host. More about mark mode HERE.

#### The Actions Menu

The following actions take place when you choose them in the Actions menu:

Clear Screen
  Clears (blanks) the current screen

Clear Scrollback
  Clears (erases) the scrollback buffer for the current screen

Reset Terminal
  Resets the terminal emulator (e.g. in case "garbage" from the host has put it into an unwanted state).

Send...
  Use the submenu to select what to send to the host: Break, Long Break, NUL (ASCII 0), Telnet Are You There, Telnet Interrupt Process.

Compose (character)
  Lets you compose a West or East European accented Roman or special character.

Unicode Compose (character)
  Lets you enter any Unicode BMP character by its 4-digit hexadecimal code value.

Most of the following are "toggles", which you turn on and off in the menu. Those with an ellipsis ( . . . ) lead to a small submenu. The menu is arranged alphabetically.

Autodownload
  Controls automatic recognition of Kermit and Zmodem file-transfer packets in K95's Terminal Screen. The choices are On, Off, and Ask. Ask is the default, which means that when a download is initiated from the host, you get a popup dialog allowing you to specify where the file is to go, or to cancel the download. On means to accept downloads without any dialog; Off means not to allow automatic downloading. When not Off, all Kermit-protocol file transfers can be initiated by the host-resident Kermit program, such as C-Kermit on Unix, and all Zmodem downloads (but not uploads) can be initized by the host-resident Zmodem program.

Automatic Locus Switching...
  Explained below.

Bytesize...
  Switches terminal bytesize between 7 and 8. These days 8 is the norm. 7 is normally used only on direct or directly dialed serial connections where the host is using even parity.

Capture
  Turns session logging on and off. If a session log has not been opened, the first time you turn capture on, a file dialog appears in which you can specify a location and/or name for the log file.

Copy to printer
  Turns printing of incoming material on and off; explained in more detail below.

Debug
  Turns terminal-screen debugging on and off. When debugging is on, control characters and escape sequences are displayed graphically, rather than acted upon.

Exit Warnings
  Enables/Disables warnings if you try to exit K95G when a connection is active. Exit warnings are enabled by default. Equivalent to SET EXIT WARNING.

GUI Dialogs
  Enables/Disables GUI dialogs; equivalent to SET GUI DIALOGS. GUI Dialogs are On by default; when Off, text-mode popups or prompts are used, which allow typeahead.

Keyclick
  Turns software keyclick on and off (the actual effect depends on your PC hardware and drivers).

Locus:Local
  Changes Locus for file management commands, explained below. Checked means Local, unchecked means Remote.

PCTERM keyboard
  Terns PCTERM keyboard mode on and off, in which Kermit sends up/down make/break codes for each key, rather than the associated character codes or Kverbs. In case your keyboard goes into PCTERM mode by accident, you can use your mouse and this menu to put it back to normal.

Resize mode...
  Switches the screen-stretch and maximize/minimize action between changing the font size and changing the number of rows and columns (but note that holding Shift while resizing always changes screen dimensions and holding Ctrl always changes font size).

URL highlighting
  Turns automatic URL highlighting off and on. It's on by default.

#### The Window Menu

This is a special menu accessible by clicking on the window icon (Windows 95/NT 4.0+) or control box (Windows NT 3.x) in the top-left corner of the K95G window, or by right-clicking anywhere on the title bar. When the menubar has been hidden with `SET GUI MENUBAR VISIBLE OFF`, a number of important K95G menu items appear in the Window Menu alongside the usual items Windows places there such as Maximize and Close

Connections
  Invokes the Kermit 95 Dialer so you can make a connection, or use it in any other desired way.

Terminal Screen
  Switches between the Terminal Screen and the Command Screen

Hangup
  Closes the current connection.

Paste
  Copies the text (if any) from the clipboard into the current window (Command or Terminal).

Mark Mode
  Lets you use your keyboard to mark text for copying to the clipboard or transmission to the host. The particular action is controlled by the submenu: Start, Cancel, Copy to Clipboard, Copy to Host. More about mark mode HERE.

Actions
  The contents of this menu is the same as what normally appears in The Actions Menu

### The K95G Toolbar

(K95G Only.) Like the Menu bar, K95G's Toolbar is minimal yet highly functional. It consists of two buttons and four combo boxes:

Button 1
  If you look closely, it's a telephone dial. Invokes the graphical Dialer (same as File → Connections), used mainly for opening connections, but also for configuring and managing them. If the Dialer is not loaded, this button loads and starts it. If the Dialer is loaded, this button brings it to the foreground. Only one copy of the Dialer can be active at a time.

Button 2
  The button with double-pointing arrows switches between the Terminal and Command screens, same as Alt-X.

The Terminal Type Combo Box
  Displays the current terminal emulation and lets you change it. This, like the remaining boxes on the Toolbar, is a combo box. If you click on it, a little list pops up, which you can scroll through (if necessary) using its scrollbar. Click on any entry to select it. You can also use arrow keys, Page Up, Page Down, Home, End, etc, to go down and up.

The Font Combo Box
  Displays the current font (facename) and lets you change it. Fonts are discussed in the Character Sets and Fonts in K95G Section.

The Font Size Combo Box
  Displays the current font size and lets you change it to any value between 1 and 47.5, in increments of one half point (a point is about 1/72 inch, and about 1/3 mm). Not all font sizes are valid for a given set of dimensions, facename, and height/width. When you select a facename or height, Windows performs a best fit and then the chosen size is automatically updated with the actual height that windows selected. Changing the font or font size repaints the current screen in the new font or size, and affects all subsequent new or scrolled-back screens.

The Character Set Combo Box
  Displays the current remote terminal character selection, and lets you change it. More about fonts and character sets in the Character Sets and Fonts in K95G Section. Changing the character set does not affect current or previous screens, only material that arrives after the change.

The Toolbar gives you a capsule definition of what you see on the screen and a mini control panel for making adjustments:

- If the Terminal screen format or layout is wrong, the host and K95G might have a terminal-type mismatch.

- The font selection determines which characters can be viewed, and the font size determines how big and/or readable the screen can be. If you see lots of hollow boxes or question marks on the screen, you might need to switch to a more complete or appropriate font.

- The character set tells K95G how to interpret the codes sent by the host (i.e. how to map them to glyphs in the current font) and which codes to send to the host. If you see garbage where "special" characters (such as accented or non-Roman letters, Kanji, math symbols, etc) should be, the character set probably needs changing.

If you find yourself rarely using the toolbar, you can hide it with the command `SET GUI TOOLBAR VISIBLE OFF` to get some screen space back.

### The K95G Status Bar

(K95G only) The status bar at the bottom of the window is divided into six sections; from left to right:

1. Screen indicator (Terminal Screen or Command Screen).
2. Current Locus for file management commands (remote or local, explained later.
3. Network protocol (such as Telnet, SSH, Rlogin), along with an indication of authentication and encryption methods used, if any.
4. Cursor coordinates in 1-based column,row (X,Y) notation.
5. Terminal screen dimensions, rows × columns.
6. Pull corner for changing screen dimension or font size.

If desired, it can be hidden with the command `SET GUI STATUSBAR OFF`.

### The Dialer

The K-95 Dialer is like a telephone book for PC communications, except it can be used not just with telephones, but also network connections, and (unlike a printed phone book) you can customize it by changing entries, adding new entries, deleting entries, hiding classes of entries, and so on.

If you have a telephone and modem, you can make and use dialup entries. If you have a TCP/IP network connection (either a direct connection to an Ethernet or other type of Local Area Network, a DSL connection, or Dial Up Networking), you can make and use network entries: SSH, secure Telnet, regular Telnet, secure FTP, regular FTP, and others.

Each entry has a name, a brief descriptive phrase, and a phone number or network address, with a little icon that tells which type of connection it is: network (a little airplane) or dialup (a little telephone), etc. But the real power of the Dialer is that behind each entry is an array of settings pages that let you customize every aspect of each connection: terminal emulation, screen size, colors, key map, character sets, file transfer protocol, network protocols, security policies, logs, ... Even the screen coordinates for the window if you wish.

Dialer entries come in several categories:

1. Any entry, regardless of connection type, can be predefined or user-defined.
2. Any entry, regardless of connection type, can be a real entry or a template.
3. Any entry, regardless of whether it is predefined, user-defined, real, or template, has one of the following connection types: Dial, Direct, Network Terminal, or FTP.

You can use Options..View to determine which kinds of entries are shown in the Dialer's main (white) window:

Unchecking Template results in in all the Template entries disappearing from the main (white) window.

## Chapter 4. Using the Dialer

[Next] [Previous] [Contents] [Top]

Contents:

- The Dialer Status Bar
- The Dialer Menu Bar
- The Dialer Tool Bar
- Multiple Connections

References:

- K95 Tutorial: The K95 Dialer

The K95 Dialer keeps a database of connections, which you can modify by adding, removing, or changing entries. When you want to make a connection, the Dialer generates a command file, or script, composed of Kermit commands (as documented in Using C-Kermit) and starts the `K95.EXE` or `K95G.EXE` program (Windows), or `K2.EXE` (OS/2), telling it to execute this script.

You can start the Kermit 95 Dialer with the K95G Dial Toolbar button, or from a desktop shortcut or the Start menu if you elected these at install time, as well as from a command prompt or Start → Run box as `K95DIAL.EXE` in the K95 program directory. No matter how you start it, only one copy of the Dialer may be active at a time (the version 1.1.21 and later Dialer enforces this policy).

The Dialer can launch as many sessions simultaneously as your PC can handle. Each session is a separate instance of Kermit 95 running in a separate window, and is totally independent of the Dialer, except that some status messages can be passed back and forth. If the Dialer exits, the sessions are not affected. If a session exits, the Dialer is unaffected except that it knows the session is no longer active.

Remember, you don't have to use the Dialer if you don't want to. It is a convenience, not a necessity. Every Dialer dialog, checkbox, and radio button has regular Kermit commands lurking behind it, as documented in the C-Kermit book, supplements, and this manual.

Let's look at the K-95 Dialer window in more detail. We've seen standard Windows features and we tried the [CONNECT] button. What is all the rest?

### The Dialer Status Bar

The Status bar at the bottom of the Dialer window gives you several bits of information about your current connection (the one whose name is highlighted in the Dialer's main window): its name, how long you've been connected (this helps you adjust your online time to fit your budget in case you're paying by the minute), and at the right, a word or two about what's going on at the moment (Online, Disconnected, etc). The status bar is "read-only."

### The Dialer Menu Bar

Directly beneath the Title Bar is the Menu Bar, with a series of menu items: the familiar File, Options, and Help menus, plus K95-specific items for defining and switching dialing locations and devices and (in Windows only) quick access to your TAPI configuration.

The File Menu

  The File menu lets you specify dialing and network directory files (phone lists and host tables). It also lets you generate script files, and it gives you a way to exit from the Dialer:

  Directories
    This brings a submenu that lets you choose Dialing or Network. These in turn bring up a dialog box in which you can list the names of dialing or network directory files. These are plain-text ASCII files where K-95 looks up phone numbers or network addresses when you give names for them in the Dialing directory, instead of giving just the number or net address. Dialing directory files are explained in Using C-Kermit, Chapters 5 and 6. CLICK HERE for a brief explanation.

  Generate Entry Script
    This one generates a script corresponding to the current (highlighted) entry. The filename is the same name as the entry name, but with spaces converted to underscores, with a file type of `.KSC`. The file goes into your `\v(appdata)SCRIPTS` subdirectory, with a shortcut placed on the desktop. Also see the description of the Shortcut button on the Toolbar.

  Generate Location Script
    This one generates a file called `LOCATION.KSC` that contains a series of macro definitions, one for each location you have defined in the Locations menu. The file goes into your `\v(appdata)SCRIPTS` subdirectory.

  Generate Modem Script
    This one creates a `MODEM.KSC` file containing macro definitions for each modem type defined in the Modems menu. The file goes into your `\v(appdata)SCRIPTS` subdirectory.

  Exit
    At the bottom is the ever-popular Exit entry -- no File menu should be without one. This does the same thing as the Close entry in the System menu, and also the same thing as the Close box on the right of the Title bar: it tells the Dialer to exit, saving all changes you might have made during your session, and remembering the size, location, and current entry for next time. Closing the Dialer does not close any sessions you might have open.

The Connections Menu

  Here is where you add, modify, and remove connections from the Dialer.

The Locations Menu
  The Locations menu lets you define one or more dialing locations -- places that you will be dialing from -- and it lets you easily switch among them, a convenience for frequent travellers and their laptops.

  Why is this necessary?`` Because the rules for dialing a telephone number number change as you move from one calling area to another. For example, a telephone number in the USA might be dialed one way from within the same area code, another way from a different area code, yet another from outside the country, and still another from within a Private Branch Exchange. K-95 can handle all combinations as long as the phone number in given portable format and it knows your dialing location.

  The Locations Menu has two choices, Change and Current. Here is a brief overview of how they work:

  - If you place the mouse pointer on the Current item, you will see a list of location names (the ones you have defined). Click on the desired name to choose that location, i.e. to make it the current one.

  - The Change item brings up the Locations dialog. This lets you change the details of your location definitions, add new ones, or remove locations you don't need any more.

  Each location has its own collection of Settings pages. The first page (General) contains a dropdown list of location names, with the current location showing and highlighted. All the other information on this page and the remaining pages pertains to the selected location. If you use the dropdown list to select a different location (by moving the mouse pointer to it and then releasing the mouse button), the information on the Settings pages changes to show the newly selected location.

  CLICK HERE for details about the Locations menu.

The Modems Menu
  In Kermit 95, a "modem" is a higher-level abstraction encompassing the actual modem (if any) and the communication port and all its settings. Most PCs have only one dialout device, but Kermit 95 lets you define any number of them. Multiple "modems" might be defined that use the same physical device, however. For example, you might want high-speed and low-speed versions, one for your ISP and another for sending pages.

  The Modems menu item has only one option, Change. When you choose it, the Modem Definitions dialog appears. This lets you select or define a dialout device. The Name field is a dropdown list containing the modem devices known to Kermit 95. In Windows, these are initially the same as the TAPI devices (from the Modems item in the Control Panel), but you can add, delete, and change the definitions as you like. All of your TAPI devices are imported into the Kermit 95's modem definitions whenever you start the Dialer.

  In Windows, Kermit 95 supports two kinds of dialout devices: TAPI and "physical". TAPI is Microsoft's Telephony Application Programming Interface, in which dialout devices are abstractions similar to Kermit 95's "modems", and are known by long descriptive names such as "Compaq Presario 56K-DF". Physical devices are known by a combination of the PC communications port device name, such as COM1, and the type of modem that is attached to it, such as Hayes-2400.

  When the TAPI type is chosen, TAPI itself handles the dialing if Options..Dialing..TAPI Modem Dialing is checked. When any other type is chosen (i.e. a specific modem type on a specific COM port), or on systems (such as OS/2) that don't have TAPI, Kermit 95 does everything itself.

  The Modem Definitions dialog includes three key fields:

  Name
    The name you want to give to this modem definition.

  Type
    The type of modem, TAPI (Windows only) or a specific type of modem.

  Port
    For TAPI devices, this is the TAPI device name. For physical devices, it is the COM port device name, such as COM1 or COM2.

  The remaining items specify communication parameters, which normally need not be changed.

  > CLICK HERE for details about adding new modems.

The Options Menu

  The Options menu lets you change your view of the entries and change or establish defaults related to your telephone dialing location and procedure.
  Dialing Options
    This brings up a little menu listing dialing options that can be checked or unchecked to turn them on and off:

    Confirm telephone number
      When this is checked, K-95 gives you a chance to change the telephone number at the last moment before dialing.

    Display dialing progress
      When this is checked, K-95 displays the dialog with the modem (if TAPI dialing has not been selected) and issues various progress messages.

    Hangup before dialing
      When checked, K-95 hangs up the phone as the first step of dialing.

    Sort phone numbers
      When checked, multiple phone numbers obtained from the dialing directory are sorted "cheapest first". If you are using a phone list file and multiple entries are found under the name you are dialing, K-95 tries to dial these entries in the following order: PBX internal calls first, then toll-free calls, then local calls, and so on, to long-distance calls, and finally international calls. This takes some guesswork. In case K-95 guesses wrong, simply uncheck this box and multiple numbers will be dialed in the order they are encountered in the phone lists. See Chapter 5 of Using C-Kermit, for details.

    TAPI modem dialing
      (Windows only) When checked, K-95 allows the Windows Telephony API (TAPI) to do the dialing. When unchecked, K-95 does the dialing itself.

    TAPI phone number conversions.
      (Windows only) When checked, K-95 allows TAPI to process the telephone number prior to dialing. When unchecked, K-95 uses its own dialing rules, which are, in general, more flexible and configurable.

  Shortcut Options
    There are two choices here: Add to Start Menu (Windows only) and Add to Desktop. You can check either one or both. Then, when you highlight an entry and click on the Shortcut button in the Toolbar, a shortcut for that entry is created in the specified place(s).

  View Options
    This option lets you narrow down the view to selected items: Preloaded entries, User-defined entries, Templates, Network entries, Dialup entries, etc. Each category is checked to view it, unchecked not to view it. To change the status (add or remove the check) of a category, just click on it. For example, if you don't have a network connection, you might as well uncheck Network entries so they don't clutter up your window. But if you ever do connect your PC to a network, simply check it again and they will reappear.

  Configure Applications
    Selecting this option brings up a dialog box in which you can specify your preferred editor and Web browser to be used when applications of these types are invoked explicitly or implicitly from Kermit 95:

    In Windows, these items are picked up from the Registry if you leave them blank; therefore Windows users normally would not fill in this dialog.

  Minimize on Use
    Check this option if you want the Dialer to be minimized and sent to the Taskbar when you make a connection, in which case you can bring it back by clicking on it again in the Taskbar.

The TAPI Menu
  Windows only, except Windows NT 3.x. This menu gives you access to the Windows TAPI configuration dialogs:

  Dialing Properties
    This is the same as choosing Dialing Properties in the Modems dialog of the Control Panel. Here you can set the country code and area code, as well as certain dialing procedures if "TAPI phone number conversions" is checked.

  Line Configuration
    This lists the modem devices you have defined in the Modems dialog of the Control panel. Selecting a TAPI Line lets you edit it as if you had opened the corresponding Modems in the Control Panel and selected Properties.

The Help Menu

  Menu
    Displays help text for the Dialer's Menu bar.

  Toolbar
    Displays help text for the Dialer's Toolbar.

  K95 Manual
    Displays this manual in your preferred Web browser.

  Via the Web
    Provides links to useful web pages at the Kermit website.

  About
    Shows the Kermit 95 version, copyright, and registration information.

### The Dialer Tool Bar

Buttons are in the Tool bar just below the Menu bar:

[CONNECT]
  Makes a connection to the place that is highlighted in your directory.

[Hangup]
  Hangs up the highlighted connection if it is open and shuts down the associated K-95 program.

[Quick]
  Makes a connection to a place that is not in your directory. A dialog box pops up; you select the connection method -- dialup or specific network protocol -- and enter the phone number or network address. Settings are taken from an existing entry (but not template), which you specify in the Based On box.

<[Shortcut]
  Lets you create a shortcut for the highlighted entry. The script file goes into your `\v(appdata)SCRIPTS` directory (see the README file) and a shortcut to it is placed on your desktop and/or in the Start menu, as specified in Options..Shortcut.

### Multiple Connections

You can have many connections active at once, within the limitations of your PC. For example, if you have a modem and a telephone and you also have an Ethernet connection to a network, you can have one dialup connection and one or more network connections active simultaneously. If you have two modems and two telephone lines, you can have two dialup connections. And so on:

- You can have as many simultaneous dialup sessions as you have ports and modems connected to telephone lines. Most people have just one.

- If you have a network connection, whether it is Ethernet, PPP, or SLIP, you can have as many simultaneous network sessions as you want, within the limitations of your PC.

Only one connection at a time can be in the foreground (sensitive to keyboard and mouse), but any number of them can be active -- scrolling lots of information, transferring a big file, etc. For example, you can have K-95 transferring a file in the background while you're working interactively on something else in the foreground. Switch among your K-95 tasks in the Taskbar, or by clicking on their window Title bars, or with the Alt-Tab or Alt-Esc key combinations.

## Chapter 5. Adding and Changing Dialer Entries

[Next] [Previous] [Contents] [Top]

References:

- Using C-Kermit, Chapters 4 and 5
- TAPI Reference

> The K95 1.1.20-and-earlier Dialer included a "settings notebook" for each connection, with tabs for each category of setting. However as more connection types were added (SSH, TLS, Kerberized Telnet, FTP, ...) the notebook became too large for Windows 95/98/ME. So to accommodate all the new connection methods and parameters, the notebook was replaced by separate settings dialogs for each category: Terminal Emulation, File Transfer, Keyboard, Printer, Telnet policies, SSL/TLS, SSH, FTP, and so on, as described HERE.

Kermit 95 comes in two pieces: a graphical Dialer (`K95DIAL.EXE`) and a text-based command and communications engine (`K95.EXE` or `K95G.EXE`). The Dialer is a user-friendly "front end" for K95 in the normal Windows graphical style, complete with menus, toolbar, and numerous graphical dialogs. You can use the Dialer to define all your connections, and after that you can access them any time you want simply by clicking on them. But you don't have to use the Dialer at all if you prefer not to, which might be the case if you are already an experienced user of C-Kermit or MS-DOS Kermit.

Any additions, deletions, or changes that you make to the Dialer are saved automatically. Changes made to an entry in the Dialer while a connection to it is active do not affect the connection, only the next invocation of it. If you really want to make changes that are used only during one session, but are not saved, you can make them in the Command screen, which is introduced in Chapter 6.

### Editing an Existing Entry

Links: [Next]

To edit an existing Dialer entry, you can either:

- Highlight the entry you want to edit in the main Dialer window, then choose Connections..Edit in the main manu, then choose which page you want to edit. Or:

- Right click the desired entry in the main Dialer window, choose Edit in popup menu, and then choose the page you want to edit.

Due to limitations of Windows 95, 98, and ME, there is no longer a method for flipping back and forth among an entry's settings pages; you have to open each page individually.

### Adding a New Entry

Links: [Previous] [Contents] [Top]

Contents:

1. The General Page
2. The Terminal Emulation Page
3. The File Transfer Page
4. The Serial Page
5. The Telnet Page
6. The SSH Page
7. The FTP Page
8. The TCP/IP Page
9. The Kerberos Page
10. The SSL/TLS Page
11. The Keyboard Page
12. The Login Page
13. The Printer Page
14. The Logs Page

There are two ways to add a new entry:

1. Connections..Add brings up the General page loaded with a copy of the DEFAULT template, and you can fill in the essentials and make any desired changes. Alternatively, you can right-click on any entry, and then choose Add in the popup menu, which gives the same result (DEFAULT entry General page). Either way, during an Add operation all the Settings pages pop up, one after the other until/unless you click Cancel on one of them.

2. Connections..Clone is just like Add except the new entry is copied from the currently highlighted existing entry or template rather than the DEFAULT entry, and only the General page is presented for editing (if you need to change any of the other Settings pages you can do it afterwards). The new entry inherits all the properties of the highlighted entry except its name, but of course you can change any properties that need changing, and these changes apply only to the new entry, not the original one. You can also clone an entry by right-clicking on it, then choosing Clone in the popup menu.

Here's what happens when you right-click an entry:

As you can see, a mini-menu pops up allowing you to Add a new entry, or to Clone, Connect to, Edit, or generate a script file or shortcut for an existing entry or template. (When you right-click a non-Template entry, the mini-menu also includes Connect, Shortcut, and if it's not a preloaded entry, Remove.)

As delivered, the Dialer includes the following templates, from which you can clone new entries:

> Name | Connection | Terminal | Backspace | Description
> --- | --- | --- | --- | ---
> DEFAULT | Any | VT100 | Delete | No special settings, used by Add

The DEFAULT template is used by Add. It contains reasonable "default defaults" that apply to the most common kinds of connections (VT100 terminal emulation, etc). If you edit the DEFAULT template it changes the defaults for subsequent Adds. You can't remove the DEFAULT template; otherwise Add would not work.

Templates have a special icon (it's supposed to look like a form you would fill out). You can see the templates by themselves in the Dialer window by clicking on Options in the Menu bar, then choosing the View option, and then checking only the Template option (uncheck the other choices by clicking on them until their checks are removed).

If you will be Cloning from a non-Default template, pick the most appropriate template by clicking on it once to highlight it and then in the main menu choose Connections..Clone. Or right-click on the template and then choose Clone.

The remaining sections of this chapter describe each of the Settings pages.

#### 5.1. The General Page

[Next] [Section Index] [Chapter Index] [Contents] [Top]

Whenever you make a new entry by Adding or Cloning, you must fill out the General page to specify the essentials: the entry name, connection type, and address or phone number, and optionally some other information. The blank General page looks like this:

At the bottom are three buttons common to all Settings pages:

[Save/Next]
  When adding, this button saves the Settings page you have just filled out and goes to the next relevant Settings page, if any, or if there are no more pages, completes the Add operation.

[OK]
  When Cloning or Editing, this button replaces the [Save/Next] button. It saves your changes on the current page, and closes the page.

[Cancel]
  On the General page, this means to cancel the Add, Clone, or Edit operation. On other Settings pages, which you can address only through Add or Edit, it means to discard any changes made to the current page. When Adding, however, all previous pages have already been saved, so Cancel during an Add on any page after the General page simply means that you are finished editing. If you really did change your mind about an Add after [Save/Next] on the General page, you'll have to Cancel, and then Remove the entry you just saved.

[Help]
  This gives help on the current page.

The fields of the General page are:

Name
  The name of the entry, anything you choose, up to 28 characters (letters, digits, spaces, punctuation). It should be unique; that is, different from the names of all the other entries. If you create an entry that has the same name as a preloaded entry, it takes the place of the preloaded entry. If you later remove your entry, the preloaded one returns. Note: Entries are listed alphabetically by name in the main Dialer window. So (for example) if you want this entry to appear on top, give it a name that starts with "#" or "AAA" or somesuch (like the ever-popular AAAAAAA Locksmith in the business listings of your telephone book).

Description
  This is a short note, up to 20 characters, that you can use for any purpose. It appears as part of the entry on the main Dialer window. It can be the geographic location or anything else you like. The location field is not used for anything at all by the software.

Template
  Check this box if the entry is to be a template; uncheck it (or leave it unchecked) if it is to be a real entry.

Access Info
  The Access Info group contains the fields that tell what kind of connection it is, plus the contact information (note: the GUI development system used to create the Dialer does not allow tabbing among fields within a group). The Connection Type list box allows you to choose among the kinds of connections that K95 supports, and the other boxes in the group let you specify the details appropriate to each kind of connection.

  The connection types are:

  Direct Serial Connection
    Two computers connected directly from one's serial port to the other by a null-modem cable. Put the serial port device name in the Address: box, e.g. COM1 or COM2, or the name of the device you have configured in Control Panel..Modems for "Communications cable between two computers".

  Modem or Compatible Device
    This means that Kermit 95 is to use your PC's modem to dial a telephone call to another modem somewhere else. Type the telephone number into the Phone number text box (phone number formats and options are explained later in this section. The modem itself is chosen or configured in the Modems item of the Dialer's main menu, and you can give special serial-port, modem, and dialing instructions for this connection on subsequent Settings pages.

    > NOTE: This is not Dial Up Networking, the Internet, TCP/IP, PPP, or any other kind of network connection. Instead, it is just like a direct serial-port connection, except with modems and a telephone connection in between. Before the Internet, this was the most common way to make connections between distant computers (or for that matter from a terminal to a computer), but nowadays this method is rarely used except by experts or old-timers, and modems are mainly used to make Internet connections (if this paragraph is gibberish to you, you probably won't need to make this kind of connection).

  TCP/IP Service
    This is for Telnet, Rlogin, or "raw TCP" connections. Fill in the Hostname or IP Address box and choose the protocol from the dropdown list in the Protocol box. If you need to access a nonstandard TCP port number, type it into the TCP/IP Port box; otherwise leave this box empty and Kermit uses the appropriate port for the chosen protocol. TCP/IP, Telnet, and related preferences, parameters, policies, and settings can be specified on subsequent Settings pages.

  Secure Shell (SSH)
    Windows only. This is for making Secure Shell (SSH) terminal connections on the Internet, explained HERE. Fill in the Hostname or IP Address box. Any other SSH-related customizations for this site can be made on the SSH Settings page.

  File Transfer Protocol (FTP)
    This is for making connections to FTP servers on the Internet. Unlike other connection methods, this one does not include terminal emulation or direct interaction with a remote host or server. Instead, K95 acts as a client to the remote FTP server, similarly to regular text-mode FTP clients, but with more capabilities.

  LAT Network Service
    LAT stands for Local Area Transport, a mostly defunct networking method for accessing Digital Equipment Corporation minis and mainframes (VMS, TOPS-10, TOPS-20, RSX-11, Ultrix, etc), documented HERE.

Download Directory
  Here you can specify where files should go when you download them on this connection. The default is `\v(personal)DOWNLOAD`, meaning the DOWNLOAD subdirectory of your My Documents directory (explained in the README file). You can specify any other directory that you have write access to, or you can leave this box blank, in which case each download file is placed in whatever K95's current directory happens to be at the time.

Notes
  For keeping reminders about the connection; for example, that the phone number will change on such-and-such a date, or that you have to make a voice call in advance and ask for the modem to be hooked up. IMPORTANT: Don't write passwords here or anybody who walk up to your PC can see them.

Exit on Disconnect
  Check this if you want the Kermit 95 window to disappear when you log out or the connection is otherwise broken.

#### About Phone Numbers

You have three choices for entering phone numbers:

1. Literally. Enter the phone number exactly as you would dial it from your telephone. For example "5551234" for a local call, "12125551234" for a long-distance call (in the USA or Canada, etc), "95551234" for dialing out from a PBX (whose outside-line prefix is "9") to make a local call. The advantage of literal numbers is that they're easy -- if you can dial a phone, you can use this method. The disadvantage is that it assumes you are always dialing from the SAME PLACE -- but if that's true, this is not a disadvantage at all! Literal numbers are perfectly OK if do not expect to take Kermit 95 with you on a trip and use it from another location. Important notes:

   - Kermit does not translate letters in telephone numbers to digits. Do not put a letter where a digit must be dialed.

   - Literal numbers render location information after the General Page useless. Neither Kermit 95 nor TAPI is able to determine if the phone call is local, long distance, toll free, or international and will therefore be unable to apply the dialing rules specified for the current location.

2. In portable format. Enter the number in a standard format that includes the country code, area or city code (if any) and phone number:

            +1 (212) 555 1212      (Manhattan, New York City, USA)
           +44 (171) 555 2121      (Central London, England)

   Portable entries always start with "+" (plus sign). The number after the "+" is the country code of the country where this phone number is (see Table VIII-1 of Using C-Kermit, second edition). The number in parentheses (if any) is the area code or city code within the country, and the rest is the local phone number within that area. The advantage of portable-format numbers is that K-95 can dial them from anywhere. Good for travellers and their laptops. This is the format we have used in the preloaded entries, which are intended to be used from anywhere.

3. By name. In place of phone number you can put the name of a dialing directory entry (which starts with a letter rather than "+" or a number). This works if you have also specified the name and location (full path) of one or more dialing directory files that contain one or more entries with this name. The main advantage of using the dialing directory entry names is that you can enter multiple phone numbers for the same name. When you do this, K-95 automatically tries one phone number after another until it gets an answer.

See Chapter 5 of Using C-Kermit to learn all the technical details about phone numbers, formats, and dialing procedures, as well as how to adapt K-95 to all sorts of dialing scenarios, and how to create a dialing directory file.

To specify a dialing directory in the Kermit 95 Dialer, click on File in the main menu, then Directories, then Dialing. This brings up Dialing Directory Files dialog box:

Check Use Dialing Directories and enter the names of one or more files into the Filename(s) text box, separating multiple filenames by spaces (not commas). Use full paths to eliminate any confusion. Feel free to make use of K95's various path variables to stand for Windows long pathnames.

Network directories are specified in the same way, except choose Network rather than Dialing in the File..Directories menu.

#### About Network Addresses

Internet services are reached not with a phone number, but with an IP (Internet Protocol) host name, usually a series of words or acronyms or abbreviations connected by dots, such as:

      ftp.kermit.columbia.edu

Or you can use the numeric IP host address, which always consists of four numbers (255 or less) connected by dots:

      128.59.31.95

Each Internet address might offer lots of different services, which are selected by a service name or number. For K-95, the default service is called Telnet -- which is the name of the Internet protocol for making an interactive terminal connection to the specified place. The service (port) number for Telnet is 23.

If you want to specify a different service name or number place the value into the port field, for example:

      Address: ftp.kermit.columbia.edu port: 1649

This used to be the Kermit Project's Internet Kermit Service at Columbia University (no longer active). If you omitted the port number in this case, you would have got the default service, 23 (TELNET), resulting in a login prompt, but most likely you would not have been able to get any farther than that, since most people didn't have login IDs on the Kermit server machine.

Kermit tries its best to determine which Internet protocol (e.g. Telnet) should be used based upon the service name or number. There are times when it is necessary for you to give Kermit a hint. That is what the Protocol listbox is for.

> Protocol | Port | Description
> --- | --- | ---
> default |  | Kermit chooses a protocol based upon the port
> raw socket | (any) | No protocol
> telnet (with negotiations) | 23 | Telnet protocol, Kermit initiates negotiations
> telnet (without negotiations) | 23 | Telnet protocol, the Host initiates negotiations
> rlogin | 513 | Rlogin protocol
> ek4login | 2105 | Encrypted Kerberos 4 Login
> ek5login | 2105 | Encrypted Kerberos 5 login
> ssl | 443 | Connect with SSLv3
> telnet over ssl | 992 | Connect with SSLv3 then use Telnet
> telnet over tls | 992 | Connect with TLSv1 then use Telnet
> tls | 443 | Connect with TLSv1

As with phone numbers, you can also supply a name from your Kermit Network Directory, if you have one. The advantage, as with dialing, is that you can specify alternative addresses for the same network service, so if one of them is unavailable, K-95 tries the next, and so on. An additional advantage is that network directory entry names act like nicknames for hosts outside your own domain, that DNS could not resolve, or might take a long time to resolve.

#### What Next?

If you picked an appropriate template, the rest of the Settings pages should already be filled in appropriately, but of course you should check for yourself.

The next few sections look at the remaining Settings pages so you'll know what's what in case you need to change things.

Finally, remember that the Settings pages are for setting up connections. You can't use them to change settings in connections that are currently active. That's what the Command Screen is for. TIP: If SET commands must be executed before a connection is made, include them in a keymap script.

#### 5.2. The Terminal Emulation Page

[Next] [Previous] [Section Index] [Chapter Index] [Contents] [Top]

Terminal emulation is one of Kermit 95's most important jobs.

> CLICK HERE for an explanation of terminal emulation.

Many people use a terminal emulator all day, every day, and they want it to be not only fast and accurate, but also customizable in every detail of appearance, behavior, and keyboard layout. Kermit 95 comes equipped with one of the fastest and most accurate and flexible terminal emulators available anywhere, adding many features to those of the original terminal:

- Virtually unlimited scrollback with search and bookmarks
- A fully remappable keyboard
- Keyboard macros
- Mouse actions including copy-and-paste, cursor positioning, URL hot spots
- Detailed control over screen dimensions, coloration, etc.
- Ability to handle different host character sets

Kermit 95 emulates about 40 different kinds of terminals; CLICK HERE for a complete list.

This section tells you how to fill in the Terminal Emulation Settings page, but it does not tell you how to use the terminal emulator; that's what Chapter 7 is for.

Each kind of terminal has different capabilities, and different kinds of terminals are likely to have different escape sequences that are incompatible with each other. So if the other computer's idea of what kind of terminal you have is not the same as the one K-95 is emulating, the result will be misformatted screens -- things in the wrong place, funny squiggly characters where you expected to see boxes, and so on.

> The key to successful terminal emulation is to make sure the emulator is set to the same terminal type that the computer or service thinks you have.

If you don't know what terminal type to choose, follow these guidelines:

- For services that do no screen formatting, use TTY
- For bulletin Board Systems (BBS's), use ANSI
- For commercial online services, use VT100
- For UNIX, Internet Shell accounts, etc, use VT102
- For IBM mainframes through 3270 emulators, use VT100
- For Linux, use Linux
- For SCO, use SCOANSI (and see below)
- For Unixware, use AT386
- For QNX, use QNX or QANSI
- For AOS/VS use DG217
- For AIX use AIXTERM or HFT
- For HP-UX use HPTERM or HP2621
- For Solaris or SunOS use VT220
- For SINIX or Reliant UNIX use SNI-97801 or BA80
- For VMS, use VT320
- If VT320 doesn't work, try VT220
- If VT220 doesn't work, try VT102, and so on (start high and work down)

Note that you probably have some choices on the host too. In UNIX, for example, you can select from many different terminal types (those supported by the UNIX termcap or terminfo mechanisms) by setting your TERM environment variable to the name of the desired terminal type. In VMS, you can use the `SET TERMINAL` `/DEVICE=xxx` command. And so on.

To select the type of terminal that K-95 should emulate on this connection, highlight its name in the Terminal Type list in the upper left of the Terminal page. Since K-95 emulates so many kinds of terminals, you might have to use the scroll bar to locate the one you're after. As soon as you highlight a terminal type, its characteristics are filled in on the page, but you can change them. Remember: choose the terminal type first, then make any changes afterward. The other items on the page are:

Byte Length
  The appropriate byte length is set automatically when you choose the terminal type. If it's 7 you can change it to 8 if you know you have a clear 8-bit-clean connection, If it's 8, you should change it to 7 if you know the connection is not 8-bit clean, e,g. it uses 7 data bits plus one parity bit.

Local Echo
  This tells K-95 whether the remote computer or service will be echoing the characters you type, or K-95 should do this itself. Normally you don't need to touch this button. But if the characters you type do not echo, then you should check this box. If each character you type echoes twice, uncheck it.

Auto Wrap
  This tells K-95 what to do about screen lines that are too long for the screen width. "On" means "wrap" them around by starting a new line. "Off" means discard any extra characters. Normally On, but Off for VMS which handles wrapping itself.

APC Enabled
  APC is an escape sequence that can be used when Kermit 95 is emulating a VT100 or higher (or any other terminal based on the ANSI X3.64-1979 standard), which contains Kermit commands to be executed. APCs allow the host application to "do things" on your PC, so this can be a security risk if you are not familiar with or do not trust the application. You should not check this box without first reading page 278 of Using C-Kermit.

Auto-Download
  This tells K-95 whether to receive files automatically (without your telling it to) when a Kermit or Zmodem send is initiated on the host. When this box is not checked, you must "escape back" and give a RECEIVE command, and then re-CONNECT when the transfer finishes. (When Kermit protocol is selected, this box also governs the ability of Kermit 95 to send files automatically when the other Kermit program is given a GET command.)

Status Line
  For non-ANSI terminal types, K-95 shows a status line at the bottom of the terminal screen that gives some information about the current state of the terminal emulator. Uncheck this box if you don't want to see it; in some cases this lets you add a line to your terminal screen.

Autodownload
  Enable (Yes) or disable (No) Kermit and Zmodem autodownloads in the terminal screen. Select "Ask" to be prompted with a file dialog that lets you refuse (cancel) the download or accept it and choose the destination for the incoming file.

Character Set
  Character sets are explained in detail in Using C-Kermit. If you are not concerned about accented or non-Roman letters, skip this part. In most cases, you can use any character set on the host that has the same repertoire as your PC code page, even if the encoding is different. Just pick its name from the Character Set scroll box. More about character sets in Chapter 7.

Screen
  The Screen box lets you set the following screen parameters:

  Width and Height
    The normal terminal screen dimensions are 24 lines (rows) by 80 columns. VT terminals also support a width of 132 columns. You can set K-95 to any screen height and width you want, but if you are using the Console version you should be aware that only certain combinations might be well supported by the underlying video drivers and hardware. The most widely supported sizes are:

          24 × 80
          42 × 80
          49 × 80

    As noted, ANSI terminal types add an extra line by eliminating the status line. In this case the common dimensions are:

          25 × 80
          43 × 80
          50 × 80

  Scrollback Buffer Size
    When the Terminal screen is cleared or when lines scroll off the top, K-95 saves this material so you can scroll back to it and view it again, copy it, print it, etc. The maximum number of lines that can be saved is specified in the Scrollback box, 512 unless you change it. The bigger the scrollback buffer, the more "past history" you can access, but also the more physical PC memory and disk swap space is required. If your PC has sufficient resources, you can increase the scrollback buffer up to about 2 million lines. If you want to totally disable scrollback, use the NOSCROLL command or `--noscroll` command-line option (there is currently no way to disable scrollback in a Dialer entry).

  Cursor
    Choose the desired cursor shape from the scroll list: Full (a full-height block cursor), Half (a half-height block cursor), and underline. All cursors blink, K95 2.1.3 has a new SET TERMINAL command to select a nonblinking cursor (SET TERMINAL CURSOR style NOBLINK). There is no way to control the cursor color; it is computing dynamically based on the fore- and background color of the cell it occupies.

Colors
  K-95's terminal window has six major components; each one can have its own foreground and background color. K-95 comes with tasteful, pleasing, and harmonious color selections, but you can change them to any garish and vulgar scheme you prefer `:-)` The screen elements are:

  Terminal Screen
    This is the terminal emulation screen, in which you interact with the other computer.

  Status Line
    The line at the bottom of the terminal emulation screen that tells you what's going on.

  Pop-up Help Screens
    These are the small windows that pop up on top of your terminal emulation screen when you request help during terminal emulation.

  Mouse Selection
    The colors to be used when highlighting terminal-screen text with the mouse.

  Underline Simulation
    Due to limitations of the PC video adapter, it is not possible to show true underlining except in the GUI version. In the Console version we show underlined text on the Terminal screen by using different colors.

  Command Line
    This is where you give commands at K-95's prompt.

  The colors that will be used are shown in the little boxes. To change them, just click on a box's arrow button to reveal a scrollable menu, and choose a color from the menu by clicking on it.

#### 5.3. The File Transfer Page

[Next] [Previous] [Section Index] [Chapter Index] [Contents] [Top]

Here you choose the file transfer preferences for this connection. As with terminal emulation, these settings are made when you start the connection. You can always change them later during the connection if you want to, but you have to do that in the Command screen (Chapter 6).

This page specifies and configures the file transfer protocol to be used across terminal connections (dialup, Telnet, SSH, etc). FTP connections, of course, use FTP protocol, which has its own page.

Protocol
  Kermit is recommended. Use Zmodem, Ymodem, Ymodem-G, or Xmodem (in that order of preference) if the remote computer or service does not support Kermit protocol, or supports it poorly. However, these protocols are less robust than Kermit, and they do not work at all on 7-bit connections.

Performance
  Kermit protocol can be configured to use Fast, Cautious, or Robust settings depending upon the quality of communications channel. There should be no reason to choose Kermit Cautious or Kermit Robust if the other Kermit program is implemented properly; the two Kermit programs will automatically negotiate the least common denominator of Kermit protocol options -- packet length, window size, error checking technique, etc. Choose Kermit Cautious or Kermit Robust when the other Kermit fails to negotiate or work properly with the Kermit FAST setting, or if the connection between the two Kermits has peculiarities that neither Kermit program knows about.

  Use Custom when tuning your file transfer parameters according to Chapters 9-12 of Using C-Kermit. This "ungrays" the packet length, window size, and unprefixing selections so you fine-tune them.

Packet Length
  For Kermit protocol, this applies only when K-95 is receiving files. K-95 tells other Kermit the maximum packet length to send. The default value is filled in for you automatically according to which Kermit Protocol option you chose (Fast, Cautious, or Robust). Change this value if you have trouble with the default length, or you want to experiment. To specify the packet length when K-95 is sending files, you have to give the other Kermit program a SET RECEIVE PACKET-LENGTH command. See Chapter 8 for details.

  For XMODEM and YMODEM protocol the packet length applies in the sending direction; 128 and 1024 are the possible values (others may be given, but only 128 and 1024 are used). For ZMODEM, which does not have packets per se, the packet length is the ZMODEM "window size".

Window Size
  This controls Kermit's "sliding windows" feature, which allows continuous simultaneous transmission of packets and acknowledgements. The default is set according to the Kermit Protocol option (Fast, Cautious, or Robust). Change it if you have trouble with the default window size (see Chapter 8 for details).

Unprefix Control Characters
  See Using C-Kermit Chapter 12 for a thorough explanation or Chapter 8 of this manual for an overview. Briefly:

  Never
    Safe but slow, especially for binary and/or precompressed files. Should work on every connection with any known Kermit implementation on the other end.

  Cautiously
    Faster, but less safe. This is Kermit 95's default setting; it allows for faster transfer of binary and precompressed files. Certain control characters that commonly cause transparency problems are prefixed for safety, the others are send bare. If uploads fail consistently, choose Never rather than Cautiously.

  With Wild Abandon
    The fastest and most dangerous setting. Use it if it works on this connection; don't use it if it doesn't.

  YMODEM and XMODEM never prefix control characters, and so are likely to run into trouble on non-transparent connections. In Kermit 95, ZMODEM follows the same rules as Kermit protocol.

Default Transfer Mode
  Text or Binary. Normally choose binary. In any case, Kermit 95 1.1.21 and later automatically switches to the appropriate mode for each file based on a quick scan of its contents. Remember, the transfer mode (text or binary) is determined by the file sender, so this setting usually is effective only when Kermit 95 is sending. More about this in Chapters 9-12 of Using C-Kermit (see, especially, page 236) and Chapter 8 of this manual.

File Character Set
  This applies to text-mode Kermit protocol transfers only. It tells Kermit 95 the character set in which text files on the PC are written, which is normally the same as your Console code page (such as CP437). Choose one from the scroll list. See Chapter 16 of Using C-Kermit for details.

Transfer Character Set
  Also applies to text-mode Kermit protocol transfers only. It tells Kermit 95 which of several standard character sets to translate local text files to before sending them to the other Kermit; choose one from the scroll list. See Chapter 16 of Using C-Kermit for details.

Filename Collision
  What Kermit 95 should do when receiving a file that has the same name as a file that is already on the same disk in the same directory (see page 197 of Using C-Kermit for details):

  Backup
    Change the name of the existing file;
  Update
    Refuse to accept the incoming file unless it is newer than the existing file, in which case it overwrites the existing file;
  Overwrite
    Always accept the incoming file and overwrite the existing file.
  Append
    Add the incoming file to the end of the existing file.
  Discard
    Refuse (discard) the incoming file, preserving the existing one.
  Rename
    Rename the incoming file (NOT recommended).

Transmit Literal Filenames
  If checked (which is the default), Kermit 95 sends filenames without conversion of any kind. If unchecked, Kermit 95 converts letters to uppercase and makes sure there is not more than one period in the filename (extra periods are converted to underscores).

Use / Include Pathnames
  Normally unchecked, so that pathnames are stripped from outbound and incoming files. For example, if you tell Kermit 95 to send `c:\local\bin\oofa.exe`, it is sent with the name `oofa.exe`. Check this box if you want the pathname kept on. Note: even when you check the box, the disk letter is stripped.

Keep Incompletely Received Files
  Normally checked, meaning that if reception of a file is interrupted (for example, because the connection was broken), Kermit 95 keeps the partial file. This allows binary-mode transfers to be resumed from the point of failure.

Negotiate Streaming Transfer Mode
  Kermit protocol supports a streaming mode which is used when both Kermits believe the connection is reliable. Streaming mode improves the transfer rate by eliminating the need to acknowledge each and every Kermit packet.

Negotiate Clear-Channel Transfer Mode
  Kermit protocol supports a clear-channel negotiation which allows two Kermits to determine if the connection supports unprefixing of control characters.

#### 5.4. The Serial Page

[Next] [Previous] [Section Index] [Chapter Index] [Contents] [Top]

This page is for customizing the serial communications settings for this connection. The use of this page depends on the connection type. For dialup connections, it lets you choose a particular modem device for this connection only, in case you have more than one, and possibly to override its settings from the File..Modems menu. Normally this page indicates the DEFAULT modem device and all the other options are grayed out, and normally you can leave it that way, with the possible exception of the parity setting. For a direct serial connection, this page specifies which device to be used, and lets you set the appropriate parameters.

The selections are as follows:

Modem
  For dialup connections this box contains a scroll list of all the modem devices you have defined in the File..Modems menu. If you have more than one modem device, click on the arrowhead to reveal the list, and then highlight the one you want to use for this connection. This box is not used for direct serial connections.

Line
  For Dial-Up connections this box is informational only. It displays the name of the TAPI modem device or physical COM port associated with the Kermit 95 modem that is highlighted in the Modem box, and is grayed out because you can't change it here. For Direct Serial Connections this box is used to choose the TAPI modem device or physical COM port to be used when making the connection.

The remaining show list the serial communication and modem settings in effect for the device you have chosen. Here we see all of that bewildering Data-Communications-101 mumbo jumbo. If you don't understand it, but want to, then you can pick up a good working knowledge by reading Appendix II, "A Condensed Guide to Serial Data Communications," of Using C-Kermit. For dialup connections each item is dim unless you check the Override box next to it, which allows you to change it for this connection only. For direct serial connections you must specify each of the parameters:

Speed
  The serial interface speed; choose a valid speed from the scroll box.

Flow control
  Flow control; choose one of the following from the scroll box: None, RTS/CTS (hardware), Xon/Xoff (software), or Auto (pick the type of flow control most appropriate for the given modem).

Parity
  Any parity (none, even, odd, mark, or space) required on this connection.

Stop Bits
  The number of stop bits to be sent to the modem after each byte of data. Usually 1.0 but might be 1.5 or 2.0.

Error Correction
  This is checked or unchecked by default according to the capabilities of the modem. You might need to change the default if the two modems on this connection have problems negotiating a common protocol. This parameter is not used for direct serial connections.

Data Compression
  This is checked or unchecked by default according to the capabilities of the modem, but you might need to change the default for the same reason. Note that data compression requires error correction. This parameter is not used for direct serial connections.

Carrier Detection
  When checked, this tells Kermit 95 to require Carrier at all times after the connection has been made. If carrier drops, Kermit 95 pops back to its prompt automatically. Uncheck this box to defeat this behavior.

#### 5.5. The Telnet Page

[Next] [Previous] [Section Index] [Chapter Index] [Contents] [Top]

Kermit 95's Telnet protocol implementation is quite advanced. It includes the following features, which are used automatically if the TELNET server on the other end of the connection also supports them:

- Automatic echo control;

- Automatic screen-size notification (so, for example, if you change K-95's screen dimensions, the other computer finds out about it automatically);

- Automatic terminal type negotiation and fallback;

- Automatic switching between text (NVT) and binary mode.

- Secure authentication and encryption with hosts that support it.

- True terminal type negotiation.

- Information exchange: environment variables, location, etc.

The Telnet Settings page allows configuration of Telnet negotiations and TCP/IP options for each of your Telnet connections.

CLICK HERE for a description of Kermit 95's Telnet functionality and hints to work around various problems you might experience when connecting to hosts on the Internet.

Telnet negotiations
  The dialer allows you to control how certain telnet negotiations are initiated between Kermit 95 and the host's telnet server. For each of the following telnet options you can choose to Accept, Refuse, Request, or Require the negotiation. For each option the default is Accept.

  Accepting an option means that if the Telnet server sends an option negotiation and Kermit 95 is able to negotiate it, that Kermit 95 will negotiate it. When refusing an option, Kermit 95 declines any negotiation attempt for the option. When requesting an option, Kermit 95 initiates the negotiation for the specified option. When an option is required, Kermit 95 initiates the negotiation and drops the connection if the negotiation fails.

  Authentication:
    The Authentication option is used to negotiate the use of an automated authentication method such as Kerberos, Secure Remote Password (SRP), or NTLM. SRP is supported by all Kermit 95 installations. NTLM is supported only on Windows. Kerberos is supported only if the necessary Kerberos libraries are installed on your machine.

    NOTE: SRP (and Kerberos if the Auto-Get TGT feature is in use) requires a password. Kermit 95 uses the password (if any) entered on the Login Page; if none is entered, you can check the "Prompt for password" box, and the Dialer prompts you for a password. If you want to be prompted for the password in the K95 session itself, leave the password field blank and the box unchecked. For details about secure authentication, CLICK HERE.

  Binary Mode:
    The Binary option selects a special Telnet mode in which 8-bit transparency is guaranteed and end-of-line translations do not occur. The only reason to change this would be for connections to Telnet servers that refuse to accept 8-bit data on a non-Binary Telnet connection.

  Encryption:
    The Encryption option is used in conjunction with the Authentication option to negotiate the use of an encryption method to protect the privacy of the data transmitted after the successful authentication of your identity. As of this writing, encryption in K95 is available only in the USA and Canada after installation of an additional patch that can be downloaded from the Kermit 95 Web site. For details about encryption, CLICK HERE.

  Kermit:
    The Kermit option is used when connecting to an Internet Kermit Service. When the Kermit option is negotiated On, Kermit 95 and the IKS are able to notify each other of their current mode. This significantly simplifies the transfer of files between Kermit 95 and the IKS. For details on the IKS, CLICK HERE.

  Start TLS:
    Transport Layer Security (TLS) is an alternative to Telnet Encryption for securing the connection to the host. Besides providing data privacy, TLS also provides data-integrity protection. The combination of TLS and telnet authentication is the most secure method available for logging into a remote host. As of this writing, TLS support in K95 is available only in the USA and Canada after installation of an additional patch that can be downloaded from the Kermit 95 Web site. For further information about TLS, CLICK HERE.

  Forward-X:
    How to handle requests for forwarding of X Windows system data with X authorization (on encrypted connections only).

  Com-Port-Control:
    How to handle negotiation of the RFC2217 Telnet Com-Port Control option, which allows the client to make use of serial ports (and modems) on the server.

  Telnet options can be negotiated successfully only if the option is supported by both the client and the server. Some of the modern telnet options might not be supported by the default telnet servers that ship with commercial operating systems. These include Authentication, Encryption, and TLS.

Environment Variables
  These strings are sent to the Telnet server in the indicated option negotiations:

  Account
    Specifies an account to be billed on hosts that require one. This string is sent by the Environment option.

  Display
    Specifies the location of the local X Windows Server (if you have one). This string is sent by both the Environment option and the X Display Location option.

  Job
    Specifies a job (or process) to be executed by the server (if supported). This string is sent by the Environment option.

  Location
    Specifies the physical location of the telnet client. This string is sent by the Send Location option.

  Printer
    Specifies the printer to be used by processes running on the host. For a Unix host this should be the default printer to be used by LPR. This string is sent by the Environment option.

  Terminal Type
    This character string is sent to the Telnet server if it requests your terminal type. If you do not specify this string, then Kermit 95 and the host might attempt to negotiate a terminal type they have in common. For each of its terminal emulations, Kermit 95 sends the emulation name (converted to uppercase, such as "VT320"). Additional types are tried until one is accepted or Kermit 95's list is exhausted. Use the Telnet Terminal Type string to disable negotiation and simply send the given name in case the host does not use the same name for the terminal as Kermit 95 does. For example, an SCO host should be accessed using K95's SCOANSI terminal type, but it must be told that the terminal type is ANSI, not SCOANSI.

Forward credentials to host
  Turn ON to forward your authentication credentials to the host if they are forwardable. At the time of this writing Kerberos V ticket-granting-tickets are the only credentials that can be forwarded.

Telnet negotiations must complete
  This box should be checked unless Kermit reports a telnet negotiation error when attempting to connect your host. When checked each Telnet option must be fully negotiated either On or Off before the session can continue. This is especially true with options that require subnegotiations such as Authentication, Encryption, and Kermit; for proper support of these options Kermit must wait for the negotiations to complete.

Telnet debug mode
  Check this box to enable Kermit's display of telnet negotiations as they are sent and received.

Telnet subnegotiation delay
  When checked, telnet subnegotiations that transmit data about the local computer or the user are delayed until after all authentication and encryption options are either successfully negotiated or refused so private data can be protected. But some telnet servers (such as the Microsoft Windows 2000 telnet server) misbehave if the subnegotiations are delayed; uncheck this box to work around such problems.

By the way, K-95 comes with a `TELNET.EXE` program that is simply a little stub that runs K-95 as if it were TELNET. So if you like K-95 better than TELNET (who wouldn't?), you can install our `TELNET.EXE` in place of the regular one and then whenever you say "telnet somewhere," you'll be doing it with K-95. Not only that, programs such as Web browsers that use TELNET will be using K-95 without needing any changes, and without knowing a thing about it.

#### 5.6. The SSH Settings Page

[Next] [Previous] [Section Index] [Chapter Index] [Contents] [Top]

> SSH connections are available only in the Windows version of K95; the OS/2 version can not make SSH connections.

If you leave the page in its default state (the one shown in the figure), you can make SSH connections by entering your password locally.

If you want to fill in this page, but don't understand the terminology, you'll need to read the Kermit 95 SSH Client reference.

The four list boxes allow you to specify authentication methods, ciphers, and so forth. By default, all of them are enabled. You can change the selections by clicking the mouse. If you click on a selected item, it is deselected, and vice-versa.

#### 5.7. The FTP Settings Page

[Next] [Previous] [Section Index] [Chapter Index] [Contents] [Top]

FTP Auto-login
  Check this to have K95 send your user ID automatically. If you specify a user ID on the Login page, Kermit sends that; otherwise it sends your Windows user ID.

Passive Mode
  Check to use FTP Passive mode (useful for punching through firewalls); uncheck to use FTP Active mode (if server does not support Passive mode).

FTP Auto-authentication
  Check this to allow Kermit to try to negotiate a secure authentication method with the FTP server. For details about authentication methods, see the Kermit Security Reference.

FTP Auto-encryption
  Check this to allow Kermit to try to negotiate an encryption method with the FTP server. For details see the Kermit Security Reference.

FTP Credential Forwarding
  Check to allow Kermit to forward credentials for authentication protocols that support forwarding, such as Kerberos 5. For details see the Kermit Security Reference.

Protection Level
  Here you can choose different levels of protection for the FTP command channel and the FTP data channel: CLEAR means no protection at all. CONFIDENTIAL means the messages are encrypted but not integrity protected. PRIVATE means the messages are encrypted and integrity protected. SAFE means the messages are integrity protected but not encrypted. For details see the Kermit Security Reference.

Authentication Types
  Several are listed in the list box. Clicking on any item selects it if it is not selected, and vice-versa. For details see the Kermit Security Reference.

FTP Dates
  Check to enable sending of File timestamps to the server.

Send literal filenames to server
  Check to inhibit case-folding, etc.

FTP Verbose Messages
  Check to see FTP protocol messages.

FTP Debug Messages
  Check to see even more FTP protocol messages.

FTP Character-set Translation
  Check to enable character-set conversion during "ASCII" (text) mode file transfers.

Server Charset
  For use when FTP Character-set Translation is enabled; choose the text character used on the FTP server's file system.

CLICK HERE for further information on K95's FTP client.

#### 5.8. The TCP/IP Page

[Next] [Previous] [Section Index] [Chapter Index] [Contents] [Top]

The TCP/IP Settings Page lets you set parameters for the TCP/IP network and transport protocols that underly Telnet, FTP, SSH, and other network application protocols:

Use Default IP Address on Local Machine
My IP Address
  Most computers are assigned only one IP address, and so the box is checked by default. If your PC has two or more IP addresses -- for example, because it has two network adapters (or, say, one Ethernet and one Dialup Networking) -- and Kermit is unable to connect to your host, uncheck the box and fill in the IP address corresponding to the network adapter that must be used for this connection.

TCP Send and Recv Buffers
  The TCP-stack buffer sizes for this connection can be adjusted in case you find that the default sizes (8192 = 8K bytes each) result in suboptimal performance.

Reverse DNS Lookup
  Domain Name Service lookups are performed by K95 whenever you give an IP hostname, but skipped if you give a numeric IP address; this is what the (default) Auto setting means. This is desirable when making connections to host pools; it allows you to see which specific host you have been given. But the extra lookup can make the connection take longer, in which case you select "Off" rather than "Auto". "On" forces reverse lookups even on numeric addresses.

DNS service lookup
  Tells Kermit 95 whether to try to use DNS SRV records to determine the host and port number upon which to find an advertised service. For example, if a host wants regular Telnet connections redirected to some port other than 23, this feature allows Kermit 95 to ask the host which port it should use. Since not all domain servers are set up to answer such requests, this feature is OFF by default. This feature should be turned ON only upon the advice of your network administrator.

SOCKS Server
  Firewall traversal: Address and port of SOCKS server. You can also specify a username and password for SOCKS server access. (Note: Kermit 95 currently supports only SOCKS4, not SOCKS5.)

HTTP Proxy Server
  Firewall traversal: Address and port of HTTP proxy server, plus username and password if needed.

#### 5.9. The Kerberos Page

[Next] [Previous] [Section Index] [Chapter Index] [Contents] [Top]

Reference: Kermit Security Reference

> This section is only for institutions using Kerberos security. In most cases, end-users at such institutions are supplied with preconfigured secure connections. Average users are not expected to understand this section or configure secure connections without assistance from organizational network administrators.

Kerberos is a network authentication protocol designed to provide strong mutual authentication for client/server applications using secret-key cryptographic algorithms. Kerberos was created by the Massachusetts Institute of Technology and has been integrated into numerous applications and operating systems. There are two versions of the Kerberos protocol. Kermit 95 is capable of supporting both.

The Kerberos Page lets configure Kerberos so Kermit 95 can use it to authenticate you to the host for this connection. Check with your system administrator to determine which Kerberos version should be used and values to use for Principal and Realm.

Principal
  Your principal is the name you use to authenticate yourself to the Kerberos server. Since Kerberos is designed to authenticate you to an entire network of computers and not just a single service it is possible that your Kerberos principal is different from your User ID for the host you are logging into. (At Columbia University, for example, users have "Kerberos handles" or "Universal Identifiers" that can be different from their login IDs, and that are used to gain entry to various secure services.)

Realm
  The Kerberos Realm identifies the Kerberos server to which you are authenticating and the network of computers that accept those credentials.

Auto-Get Ticket Granting Ticket
  A Kerberos Ticket Granting Ticket (TGT) is presented by Kermit 95 to the Kerberos server to receive the Service Ticket necessary to authenticate you to the host. A TGT is normally retrieved when you login to the computer, but you can also get one by using a Kerberos Ticket Manager. If you have not retrieved a TGT or your TGT has expired, Kermit 95 can't get a service ticket for you. The Auto-Get feature lets Kermit 95 act as a Kerberos Ticket manager and retrieve a TGT for you if you don't have one.

Auto-Destroy Tickets (at end of session)
  When Kermit 95 is the only Kerberos application you are using and the Auto-Get feature is being used, it is often desireable to destroy the Kerberos tickets when they are no longer needed. This feature when activated instructs Kermit 95 to destroy the Kerberos tickets when the connection to the host is closed.

Ticket lifetime
  Each Ticket Granting Ticket (TGT) is assigned a lifetime by the Kerberos server. The Ticket lifetime field is used to specify the number of minutes Kermit 95 should request when when retrieving a TGT. The ticket lifetime assigned by the Kerberos server will never be larger than the value specified here.

Tickets are forwardable (Kerberos 5 only)
  Kerberos 5 Ticket Granting Tickets may be designated as forwardable. A forwardable TGT may be sent to another host during login. This provides for single sign-on capability: you do not need to request a new TGT from each host you log in to. Kermit 95 requests forwardable tickets from the Kerberos server when this button is checked. Tickets are forwarded to the host only if (a) they are forwardable, and (b) the Forward credentials to host button on the Telnet Page is checked.

K5 ticket request gets K4 ticket too (Kerberos 5 only)
  Kerberos 5 Kerberos servers are often configured to support Kerberos 4 as well. Check this button if you wish Kermit 95 to attempt to retrieve Kerberos 4 Ticket Granting Tickets when Kerberos 5 TGTs are retrieved.

Credentials Cache (Kerberos 5 only)
  Kerberos 5 supports the use of several sets of Kerberos credentials by storing each set in a separate credentials cache. Specify the cache name if you wish to store the credentials you use with this Kermit 95 session in a private cache. The format of the cache name is specific to the Kerberos 5 library installed on your machine. The MIT Kerberos for Windows 2.0 uses a format of: API:ccname. When this field is left blank the default cache is used.

#### 5.10. The SSL/TLS Page

[Next] [Previous] [Section Index] [Chapter Index] [Contents] [Top]

Reference: Kermit Security Reference

> This section is only for institutions using SSL/TLS security. In most cases, end-users at such institutions are supplied with preconfigured secure connections. Average users are not expected to understand this section or configure secure connections without assistance from organizational network administrators.

The Secure Sockets Layer (SSL) and Transport Layer Security (TLS) protocols are quickly becoming a standard way of securing connections between clients and servers using Public Key cryptography for authentication and encryption services. Authentication takes place through the exchange and verification of X.509 digital certificates that represent the host machine and (optionally) the end user. The X.509 certificates contain a public key; a subject name identifying the certificate; an issuer name specifying the issuer's certificate; and a variety of information specifying how the certificate may be used. Certificate verification is performed in three steps:

1. Check the issuer's signature on the certificate against the Certificate Authority (CA) certificates that are kept locally.
2. Check the subject name to ensure that it is not present in a Certificate Revocation List (CRL) kept locally.
3. perform a challenge and response exchange with the presenter of the certificate to verify that the presenter holds not just the certificate but also the private key that matches the certificate's public key.

The items on this page specify the locations of the CA certificates, the CRLs, and the optional client certificate and matching private key, as well as restrictions on the SSLv3 or TLSv3 ciphers to be used and whether certificate verification should be required.

Cipher List
  The Cipher List is a colon-separated list of cipher tags used to restrict the ciphers that can be used to secure the connection. When this field is left blank, Kermit 95 negotiates all non-anonymous ciphers. An anonymous cipher is one that does not require the presentation of a certificate. A list of cipher tags and how they are used is given in the reference material.

Client Certificate File
  This field is used to specify the file containing the X.509 certificate that will be used to authenticate the user to the host. When this field is left blank no client certificate is presented to the host.

Client Private Key File
  This field is used to specify the file containing the public key that matches the public key stored in the Client Certificate File. This field can be left blank if the private key is stored in the Client Certificate File.

CA Verification File
  This field specifies a file that contains one or more Certificate Authority X.509 certificates to be used to authenticate certificates presented by the host.

CA Verification Directory
  This field specifies a directory that contains Certificate Authority files in which each file is named by a hash of the certificate.

CRL File
  This field specifies a file containing one or more X.509 Certificate Revocation Lists used to determine if a presented certificate has been revoked by the issuing authority.

CRL Directory
  This field is used to specify a directory containing X.509 Certificate Revocation List files with each file named by a hash of the CRL's issuing authority.

Certificate Verify Mode
  This list is used to specify how Kermit 95 handles the verification of certificates:
  - Do not verify host certificates.
  - Verify host certificates if presented.
  - Peer certificates must be presented and verified; if not, fail.

Verbose Mode
  Check this button to instruct Kermit 95 to display information about the authentication (the certificate chain) when making a connection.

Debug Mode
  Check this button to instruct Kermit 95 to display debug information about the SSL/TLS connection. When Debug Mode is on, Kermit 95 does not terminate connections when the verify mode is set to FAIL-IF-NO-PEER-CERT and a certificate is presented that cannot be successfully verified; instead each error is displayed.

#### 5.11. The Keyboard Page

[Next] [Previous] [Section Index] [Chapter Index] [Contents] [Top]

Perhaps the most puzzling and frustrating aspect of online communications is knowing what key to press to do so-and-so. That's what the Keyboard Settings page is for.

First of all, note that most keys work as you would expect them to. The A key sends the code for the letter A, the 8 key sends the code for the digit 8, the "/" key sends the code for slash. The confusion comes in when we try to use special keys like Backspace, Up-Arrow, or F7. What should they send? Different computers, services, and applications expect different codes from these keys. That's what the choices on the Keyboard page are for.

Backspace Key Sends
  The Backspace key is the one that is supposed to erase the character left of the cursor. Although it makes no sense and it is truly aggravating, there are two different codes that the Backspace key can send. One code (called Delete) works on some computers or services, the other one (called Control-H) works on others. But usually not vice versa. So you have to pick the one that works on each computer or service you will be connecting too. (A third code, EM or Ctrl-Y, is included for Data General terminal emulations.) How do you know which one to pick? Try one. If one doesn't work, then pick another. Do this by clicking on the desired radio button.

Enter Key Sends
  Sometimes the Enter key does not seem to do anything. Or it might do too much. Normally the Enter key sends the code whose name is Carriage Return (CR), and all's well. If the computer or service you are connecting to seems to ignore the Enter key, however, choose "CR-LF" (Carriage Return and Line Feed). In some cases, however, this might make the other computer think you are pressing the Enter key twice. In that case, try choosing "Line Feed."

Mouse
  Kermit 95 makes its own special use of the mouse, beyond what Windows gives you if you check the On button; see Chapter 7 for details. Kermit 95's mouse actions work only if the console window is configured to use the mouse for marking and copying (Quick Edit in Windows and Mouse Actions in OS/2).

Key Map
  This concerns how the F keys, arrow keys, numeric keypad keys, and editing keys are set up. Complete keymaps are supplied for each terminal type that Kermit 95 supports; switching is automatic when you change terminal types. The default keymaps are listed in the `\v(common)KEYMAPS\DEFAULT.KSC` file.

  You can also write your own custom key map, and you can even have a separate one for each connection. To specify a special key map for this connection, choose "Read from File" rather than "Default for Terminal Type", and then supply the name of the key map file in the text box (or click on Browse for a regular file dialog box). The text box displays the contents of the keymap file, if any, so you can refer to it during your terminal session. You can also type commands directly into the text box; this is similar to text box on the LOGIN page, except these commands are executed just prior to the SET HOST or SET PORT command.

  Key map files are plain-text files that you can read and edit, consisting of a series of `SET` `KEY` or `SET` `TERMINAL` `KEY` commands, as explained in Chapter 7.

Remember that the Dialer Settings pages are for setting up connections. Changes made to these pages while a connection is active have no effect until a new connection is made.

#### 5.12. The Login Page

[Next] [Previous] [Section Index] [Chapter Index] [Contents] [Top]

As veteran online people know only too well, there are often many steps involved in connecting to another computer or service. The Dialer does the first step for you: dialing the phone and checking for a successful connection (or making the network connection).

But what happens when you get there? Usually there is at least a login and password prompt. Sometimes there is a menu to select a specific service. Sometimes you have to negotiate your way through a maze of terminal servers, switches, and other devices before you even get to the login prompt. Usually the procedure is the same each time for each service, and therefore repetitive and boring if done often enough. But if you access a service rarely, you might forget the procedure and spend hours hunting for that scrap of paper where you wrote down the tedious and intricate access procedure.

That's what computers are good for. They can remember the procedure for you and even execute it so you don't have to. The downside of this is that the procedure for doing this is recorded in a computer program. In our case, it is written as a script in Kermit language, rather than Basic or C or Fortran. You can learn all about writing Kermit scripts in Chapters 17-19 of Using C-Kermit. In the meantime, let's just tell you what this page is for.

If you have a script to automate logging in to this service, and you have stored it in a file on your PC, and you wish to use it: check the box marked "Script file name" and write the name of the file in the space provided, or use the Browse button to find the file with a dialog box.

If you don't have a script, you can try the `LOGIN.KSC` file from the Kermit 95 `SCRIPTS` subdirectory, which works on most normal UNIX, VMS, and similar computers that have a user and password prompt (but no guarantees!). If it does not work copy the script file and edit it for your host.

Then fill in the other boxes as follows:

User ID
  Fill in the userid you will be using on the host computer. This userid will be used by Kermit 95 during Telnet negotiations. The userid will also be accessible to the script as a Kermit variable, `\v(userid)`.

Password and Prompt for Password
  If a password is required, you can enter it here, but we don't recommend it. If you do, then anybody who has access to your PC can log in as you automatically, without knowing your password, simply by choosing this entry. Alternatively, you can leave the password blank and check the "Prompt for Password" box, which causes the Dialer to prompt you for the password each time you launch this connection. In both cases, the generated script file will have the password in it, which is a security risk, especially if you save the script file or generate a shortcut. If you leave the password blank and the box unchecked, the `LOGIN.KSC` script file puts you online immediately after sending your user ID, so you can enter the password from the keyboard into the Terminal screen, if one is required. On securely authenticated connections (Kerberos, SSH, SRP, SSL/TLS) you can leave the password blank and the checkbox unchecked and authentication takes place securely, without storing the password on disk in any form. If you enter a password in the Password box, it is accessible in the script as `\v(password)`.

Prompt
  If a password was sent (and accepted), the remote computer usually prints some messages and then gives you a prompt indicating that you may type a command. The `LOGIN.KSC` script file looks for several common prompts, but in case none of them apply on this connection, you can supply one that does. Use backslash notation for control or special characters, as explained in Using C-Kermit, page 35.

When you specify a script file, its contents may be reviewed in the text box. If you do not specify a script file, the text box can be edited directly to specify script commands that should be executed after the connection is made successfully.

#### 5.13. The Printer Page

[Next] [Previous] [Section Index] [Chapter Index] [Contents] [Top]

To choose a printer, click on the little arrow in the Printer Type list box and highlight the desired printer type. If you have chosen Windows queue, then the Windows Printer Queue Name list becomes ungrayed and you can select the desired Windows queue from the menu.

If you choose DOS device, file, or pipe, you can select a DOS device from the DOS Printer device or file name list box. If you choose file or pipe, simply type in the full name of the desired file, or the full pipe specification, into the blank space in the same list box. When entering a pipename, you don't need to put the "|" symbol. If your printer is serial device you can specify the speed, parity, and flow control.

If you want your print jobs to be preceded by a header page, enter its full filename in the next box; otherwise leave the box empty. Note that the "header" page can be any old text, possibly with your name on it (useful for shared printers), or it can be some kind of device-specific information to load into the printer to configure it as you desire. K95 doesn't care what is in this file, it just sends it to the printer.

If you want K95 to send a formfeed at the end of each print job, check the Send Form Feed box. Sometimes this is necessary to force out the last or only page of the print job. Or, if something other than a formfeed is needed, enter it into the End-of-Job String box using regular Kermit notation for strings (backslash notation for control characters, etc).

Sometimes print jobs can be sent in such a way that each line or page becomes a separate print job on your PC. For example, if the host intersperses print material with progress reports for the screen. You can work around situations like this by specifying a timeout value greater than zero. The timeout determines how long Kermit 95 waits before assuming that the print job is complete.

A bidirectional printer is a printer (or other device, such as a barcode scanner) that accepts data from the PC (like a regular printer) but also sends data back to the PC. If your printer is bidirectional (or serial) you can check the Bidirectional box if you have chosen the DOS printer type; otherwise this box is grayed out. Data sent from the printer to the host is sent as if it was typed on your keyboard.

If your printer requires Postscript, check the Output text as Postscript button and specify the width (in characters) and length (in lines) of the printed page.

CLICK HERE for technical details on Kermit 95's printer support.

#### 5.14. The GUI Settings Page

[Next] [Previous] [Section Index] [Chapter Index] [Contents] [Top]

The K95 2.x Dialer has a new GUI settings page, shown below. Each connection can have its own separate GUI settings.

The items on the page are:

`[ ]` Use GUI Kermit 95
  Check to use K95G for this connection (default); uncheck to use the Console version of K95. If you uncheck this box, the rest of the page is grayed out, since these settings do not apply to the Console version.

Facename `[ ]`
  The font to be used on this connection.

Font Size `[ ]`
  The font size, in points.

Resize Mode: `[ ]`
  How Kermit is to react when you resize its window with the mouse. The choices are Scale Font (the default, which keeps the number of text rows and columns on the screen constant and adjusts the font height and/or width) and Change Dimensions (which keeps the font size constant and adjusts the number of text rows and/or columns).

Run: `[ ]`
  You can choose Normal Window (the default), Maximized (full screen), or Minimized (sent to the Windows Task Bar).

Startup Position: `[ ] Default`
  Check this box to let Windows decide where the K95 screen should be located on the desktop when it starts. Uncheck this box to specify a startup location.

X-pos: `[ ]` Y-pos: `[ ]`
  (Only if the Startup Position Default box is unchecked) The horizontal (X) and vertical (Y) positions for the upper-left corner of the K95G window at startup, measured in pixels from the upper-left screen corner. The actual values depend on your monitor and Windows display settings; some trial and error is required to achieve a particular placement, and the coordinates are not necessarily compatible from one PC to another.

`[ ]` Menu Bar
`[ ]` Task Bar
`[ ]` Status Bar
  Checked means that the K95G window should include the given type of bar. These should all be checked by default. Uncheck to eliminate any undesired bars.

The Color Table
  Terminal/Host connections allow the host to control the colors on your terminal screen using "ANSI color" escape sequences. These allow the specification of 16 colors: black, blue, green, cyan, red, magenta, etc. Each of these is defined by a particular mixture of Red, Green, and Blue (RGB) hues whose intensities are specified by a number, 0-255. You can alter the definitions for each "ANSI" color in this table by changing the numbers. The column to the right is reserved; in a future release it will show the actual color of the result.

#### 5.15. The Logs Page

[Next] [Previous] [Section Index] [Chapter Index] [Contents] [Top]

Log files are selected on the Logs page. Normally you would not check any of these, especially not the debug or packet logs, which are used only for debugging and can become very large very fast.

Check Log Connections if you want to record each time you connect to the service specified on the The General Page of this entry.

Check Log Debugging Information if you need to generate a debug log to assist Kermit Tech Support correct a problem you are having with Kermit 95.

Check Log Kermit File Transfer Packets if you need to generate a packet log to assist Kermit Tech Support in understanding the cause of a unexplained file transfer failure.

Check Log Session Input if you want to record your entire terminal session. Session logs record every byte of data that Kermit 95 receives from the host. If you suspect there is a bug in Kermit 95's terminal emulation create a Binary session log and Kermit Tech Support can use it to replicate your session. Text logs remove CR, NUL, and XON/XOFF characters from the logged data. Debug logs contain all of the data stored in the Binary logs but leaves in the negotiations and NVT processing of Telnet connections.

Check Log File Transfer Transactions if you want to keep a record of all your file transfers. Normally, this selects the verbose-form (human-readable) transaction log. If you want the brief form (one line per file, comma-separated fields, suitable for import into a database or spreadsheet), check the Brief Format button.

For each log check the Append box if you want newly opened logs to be appended to existing ones; uncheck it if you always want to overwrite existing logs of the same name. The same log file can not be shared by more than one copy of Kermit 95 at the same time.

## Chapter 6. The Command Screen

[Next] [Previous] [Contents] [Top]

References:

- Using C-Kermit
- K95 Tutorial: The Command Interface

Contents:

- What is the Command Screen?
- The Command Screen and the Terminal Screen
- What Can I Do in the Command Screen?
- Entering and Editing Commands
- The RUN Command
- DOS-Like Commands
- Locus of File Management Commands
- How Can I Customize the Command Screen?
- Using the Mouse in the Command Screen
- Recalling Previous Commands
- Where Do I Put Commands?

When you start a connection successfully from the Dialer, you get a Terminal window in which you can interact directly with the computer or service you have contacted to. The Dialer has taken you to your destination, but now you're on your own.

If your connection is working as expected and you don't need to transfer files, then you probably don't need to read this chapter or Chapter 8. Otherwise, you'll have to learn how to call up the K-95 command screen, how to give commands to it, and how to switch between the Command screen and the Terminal screen.

### What is the Command Screen?

[Next] [Chapter Index] [Contents] [Top]

As we told you in Chapter One, you can issue commands to K-95 without using the Dialer windows and/or menu options at all. You can also issue commands after the Dialer has made the connection for you.

The Dialer is nothing more than an organizer for Kermit commands. It groups them together according to "topic" and lists the possibilities right in front for you, making it easy to set things up. A window pops up; you select an item from the choices, or fill in a value, and then click [OK] (or [Save/Next]) to accept your choices or [Cancel] to change your mind. For example, when you set your terminal type to "VT102" in the Terminal Settings page, it's the same as giving the following Kermit command:

      K-95> set terminal type vt102

### The Command Screen and the Terminal Screen

[Next] [Chapter Index] [Previous] [Contents] [Top]

The Command screen and the Terminal screen share the same window, called the Kermit window. The Kermit window shows only one of these screens at a time.

When you are in the Terminal screen, you are communicating with the other computer that you have connected to. When you are in the Command screen, you are giving commands to K-95 itself on your PC.

Since you have only one keyboard to talk with both your own PC and the computer or service you have connected to, you need a way to switch between the two. Here's how:

1. Click on the K-95 window title bar to bring it up front if necessary. If it already is up front this does no harm. Or use any other method to bring it to the foreground: Alt-Tab, Alt-Esc, or the Taskbar.

2. If the Terminal screen is showing in the Kermit window, use Alt-X to get back to the Command screen. That is, hold down the Alt key and press the X key. This is called "escaping back" to the Command window. Now you should see the K-95> prompt.

3. If the Command screen is showing, the last thing on it is a K-95> prompt, with the cursor sitting just to the right of it (the cursor is a symbol, usually a blinking rectangle, to show where you are on the screen at the moment). This means that K-95 expects you type a command. The command to return to the Terminal screen is `CONNECT`; type `CONNECT` (or just the letter `C`) and then press the Enter key. Or . . . Use Alt-x again, since in fact, Alt-x acts as a "toggle" to switch back and forth between the Command and Terminal screens.

4. In the GUI version of K95, you can also switch back and forth with Toolbar Button 2, the double-pointing arrow.

An alternative method for escaping back is with K-95's "escape character," which is `Ctrl-]` (hold down the Ctrl key and press the right-bracket (`]`) key), and then press the letter "C" key. In fact, the escape character allows a number of different characters to be typed after it, as one-key commands. You can see what they are by typing `Ctrl-]` and then question mark (?). You can change K-95's escape character with the SET ESCAPE command, and you can disable and eliminate it altogether with SET TERMINAL ESCAPE DISABLED.

K-95's prompt shows your current directory. One of K-95's commands is CD, meaning CHANGE DIRECTORY. See how the prompt changes when K-95's directory is changed:

      [E:\LETTERS] K-95> cd nice
      [E:\LETTERS\NICE] K-95> cd ../angry
      [E:\LETTERS\ANGRY] K-95>

That's just one of hundreds of commands. Others, like:

      [E:\LETTERS\ANGRY] K-95> set terminal color term lightred black

. . . have lots of words. But the words usually make some kind of sense. In the example just above, since we are about to write an angry letter, we set the colors of our terminal screen to bright (light) red on black, to match our mood.

### What Can I Do in the Command Screen?

[Next] [Chapter Index] [Previous] [Contents] [Top]

Using C-Kermit describes the Command screen in great detail. But it is worth repeating a few of the basics before we go on. Commands:

- May be entered in either upper or lower case.
- May be edited before entry
- Can be abbreviated
- Can be grouped together into "macros"
- Give you context-sensitive help if you type "?" at any point

K-95 has literally hundreds of commands, built up over the years to handle almost every conceivable situation. K-95's commands can be used to:

- Set up the communication device or network
- Make and break connections
- Select a terminal emulation and customize it
- Control and customize most aspects of a terminal session
- Set up file transfer options
- Transfer files
- Specify character-set translations
- Manage files on the local disk
- Conduct file-transfer and management sessions with a remote Kermit or FTP server
- Execute other programs
- Ask for help about any command
- Execute a Windows (or OS/2) command or program
- Write script programs to automate all of the above

In this manual we only touch on the bare essentials of the Command screen -- the minimum you need to know to be able to use K-95 in common situations. You can find a brief tutorial HERE. Using C-Kermit tells all.

Well, almost all. Of course Kermit 95 has more than a few commands of its own that are not documented in the book because they apply only to Kermit 95; those commands are documented in this manual.

The Command screen also has some properties that might not be immediately obvious from its drab appearance:

- You can use the Page Up and Page Down keys to scroll back and forth in it.
- You can select a color scheme for it, distinct from the terminal window.
- Commands can be recalled using the Up and Down Arrow keys.

And of course you can copy, paste, and so forth. Scrollback is explained in Chapter 7, but it is worth noting here that the Command screen has its own scrollback buffer, distinct from the Terminal window.

Finally, it is important to note that Kermit's command language is the same as its scripting language. If you can type commands in the Command window, you can write scripts (with the help of Chapters 17-19 of Using C-Kermit). Furthermore, Kermit's script language is consistent across many platforms, including DOS, Windows and OS/2 (of course), plus VMS, all varieties of UNIX (Linux, HP-UX, AIX, Solaris, etc), AOS/VS, Stratus VOS, and many others. Learn it once, use it everywhere. If you are connected to the Internet, ClICK HERE for a brief tutorial and lots of examples.

### Entering and Editing Commands

[Next] [Chapter Index] [Previous] [Contents] [Top]

The procedure for entering and editing commands is given in Chapter 2 of Using C-Kermit. It must be noted here, however, that C-Kermit's command parser is portable; it was not designed specifically for PCs. Therefore, the editing keys of the PC keyboard can not be used to edit commands. Instead, use the keys listed in the book:

Backspace (or Ctrl-H)
  Delete the character just left of the cursor.

Ctrl-W
  Delete from the curser back to the previous word boundary.

Ctrl-U
  Delete back to the prompt.

Esc or Tab or Ctrl-I
  Attempt to complete the current keyword or filename.

Enter
  Enters the command, causing it to execute.

Ctrl-L
  Like Enter, but clears the screen first.

Ctrl-C
  Interrupts the current command and returns to the prompt.

Many of the Alt-key combinations that work in the Terminal screen, which are documented in Chapter 7, can also be used in the Command screen. For example, Alt-H pops up a little Help menu, Alt-P prints the current screen, and so on.

### The RUN Command

[Next] [Chapter Index] [Previous] [Contents] [Top]

The RUN command lets you execute a Windows (or OS/2) command or program from the Kermit 95 prompt (or from a K95 command file, macro, or any other command source). Examples:

      K-95> run notepad oofa.txt  ; A GUI program
      K-95> run ipconfig          ; A console program
      K-95> run dir /p            ; A "DOS" command

Most Kermit programs have RUN commands, but several aspects of Kermit 95's are special:

1. In K95.EXE, If the RUN command starts a GUI program, a new window is created. If it starts a text-mode (console) program or DOS shell command, it is executed in Kermit's window. In K95G.EXE, the RUN command always creates a new window. If the RUN command starts a GUI program, it may additionally create an empty console window which will remain open for as long as the GUI program is running (this is a long-standing bug).

2. K95, like all other Kermit programs, waits for the command to complete before issuing its prompt or executing its next command. In K95G.EXE, when the command completes its window closes immediately. In K95.EXE, what happens next depends on Kermit's command level:

   The RUN command was typed at the K-95> prompt
     When the command is completed, Kermit says: "<Press a key to continue>". When you do so, any text placed on the screen by the external command or program disappears (this happens only with console commands). That's because K95 can't actually "see" the external command's text, and therefore has no way of placing it in the command scrollback buffer (by the same token, you can't use K95's mouse actions to copy it; however, you can use the Windows edit menu to do so). The "press a key" prompt gives you the opportunity to read the text before it disappears.

   The RUN command was executed from a command file or macro
     Kermit executes its next command with no user intervention as soon as the external command or macro finishes.

3. In Windows the START command runs a program in a separate window; START completes immediately, but the new program remains in its own window until it exits. In this case, K95 gets control back immediately:

         K-95> run start notepad oofa.txt  ; A GUI program
         K-95> run start ipconfig          ; A console program
         K-95> run start dir /p            ; A "DOS" command

4. In Windows, you can RUN data files as well as programs. This starts the associated application. For example:

         K-95> run budget.doc        ; Starts Word or WordPad
         K-95> run clouds.jpg        ; Displays a photograph
         K-95> run office.ksc        ; New copy of K95 executes this script

5. On Windows 10 version 1809 and newer, K95 supports Pseudoterminals (PTYs) allowing you to run Windows console applications within K95s terminal emulator. For best results, set your terminal type to Linux or VT320, then:

         K-95> pty cmd                   ; Open the windows console
         K-95> pty powershell            ; Open powershell
         K-95> run cmd /c dir && pause   ; Run a "DOS" command (dir) then wait for a key press

   Note that as PTYs are a type of connection, trying to switch back to connect mode after the command has finished will cause Kermit to "reconnect" which in this case really means running the command again! So if the command is something you wouldn't want to run accidentally (like deleting a file), you might not want to run it via a PTY.

This fourth property is especially handy on terminal connections. For example, suppose somebody sent a `.DOC` (Microsoft Word) enclosure to your Unix-based host e-mail account, where you can't read it. You save the enclosure on your Unix disk, download it with Kermit, and then just tell K95 to RUN it; Windows automatically invokes the associated application on the data file. Ditto for spreadsheets, photos, audio or video clips, you name it. (But on the downside, opening enclosures received in e-mail is the most common way to infect your PC with a virus.)

### DOS-Like Commands

[Next] [Chapter Index] [Previous] [Contents] [Top]

K95 has tons of other commands too. One class of commands you might find particularly useful is its DOS-like commands, mainly for managing files: DIRECTORY, DELETE, MKDIR, FIND, and so on. These are generally more powerful and more friendly than the equivalent commands in the Windows (or OS/2) Command window, to the extent that you might find yourself using K95 as your Windows (or OS/2) shell: you can abbreviate K95 commands, use completion on them, recall them, get context-sensitive help with "?", and so on.

Here's a side-by-side comparison of common "DOS" commands on the left and K95 on the right. Slanted square brackets enclose optional fields. Italic words are parameters that you would replace by actual values, for example "disk-letter" might be replaced by "`C`". In case you are wondering why Kermit commands are not identical to DOS commands, it's because (a) Kermit runs on many platforms, not just Windows, and tries to maintain common syntax in all versions, and (b) Kermit predates both DOS and Windows.

      Windows Command                K95 Command
      disk-letter:                   disk-letter: or CD disk-letter:
      CD directory                   CD [[disk:][directory]]
      CD ..                          CDUP or CD ..
      CD                             PWD
      (none)                         KCD symbolic-directory-name
      (none)                         BACK

Notes: In K95, CD given with no operand returns to the default or home directory, whereas in DOS it prints the name of the current directory. Unlike in DOS, a disk letter can be included in K95's CD command. Use PWD to display the current directory. K95 also has a BACK command to return to the previous directory, and KCD to change to various symbolically named directories, like DESKTOP (more about this in the README file). Type HELP CD at the Kermit command prompt for more information.

      Windows Command                K95 Command
      CHKDSK [disk-letter]           SPACE [disk-letter]

Note: K95's SPACE command doesn't check the disk; it shows how much space is used and free without checking the disk. CHKDSK is a true DOS command, not available in most Windows shells.

      Windows Command                K95 Command
      COPY [options] source dest     COPY [options] source dest

Notes: K95 COPY has more options, including some you might not expect, like for Base64 encoding and decoding, byte-swapping, etc. K95 also has a TRANSLATE command, which is like COPY, but it converts the file's character set. HELP COPY and HELP TRANSLATE for more information.

      Windows Command                K95 Command
      DATE                           DATE [date]

Notes: K95 DATE does not set the date, it only shows it (and the time). If you give it a date or time or date-time operand (in almost any format), it gives it back to you in standard format. It can also be used to do date/time arithmetic, e.g. "date 1 january 2002 +1000days". HELP DATE for details.

      Windows Command                K95 Command
      DEL [options] filespec         DELETE [options] filespec
      DELTREE [options] filespec     DELETE /TREE [options] filespec
      DEL /S  [options] filespec     DELETE /TREE [options] filespec

Note: K95 DELETE has more options, including file selection by date and/or size, exception lists, etc. It can also delete selected or all files recursively (i.e. down through subdirectories), and therefore also stands in for DELTREE (DEL /S in newer Windows versions). HELP DELETE for details.

      Windows Command                K95 Command
      DIR [options] [filespec]       DIRECTORY [options] [filespec]

Note: K95 DIRECTORY has many more options, including selection options, listing options, sorting options, and (like DOS DIR /S) can operate recursively. HELP DIRECTORY to read about all the options.

      Windows Command                K95 Command
      HELP [command]                 HELP [command]
      EXIT                           EXIT [ status [ message ] ]
      FIND [options] "string" file   FIND [options] "string" file
      MORE file                      MORE [options] file
      PRINT [options] file           PRINT [options] file
      PROMPT string                  SET PROMPT string
      RENAME source dest             RENAME [options] source dest
      MKDIR directory                MKDIR directory
      RMDIR directory                RMDIR directory
      TIME                           DATE [date-and/or-time]
      TYPE file                      TYPE [options] file
      (none)                         HEAD [options] file
      (none)                         TAIL [options] file

Note: K95 TYPE has numerous options, governing paging, selection of lines, and even character-set translation. The K95 FIND command also searches for patterns, not just literal strings, and has many options, including recursive (subdirectory) searches, and can also be invoked as GREP (as in UNIX) or SEARCH (as in VMS). Type HELP for any of these commands (or any other command) for a description of the syntax and purpose of the command.

K95 also has all the capabilities of DOS Batch (in the following list, commands means one or more commands, separated by commas):

      Windows Command                K95 Command
      CALL file [ parameters ]       TAKE file [ parameters ]
      ECHO text                      ECHO text
      FOR var IN set DO command      FOR var init final increment { commands }
      GOTO label                     GOTO label
      IF condition command           IF condition { commands } [ ELSE { commands } ]
      PAUSE seconds                  PAUSE seconds-or-time-of-day
      REM                            COMMENT or ; or #
      SHIFT                          SHIFT [ number ]
      (none)                         WHILE condition { commands }
      (none)                         SWITCH v { case-statements }

Plus lots more (command recall, keyword abbreviation, filename and keyword completion, context-sensitive help, macros, etc, plus the substantive features of K95 itself: serial and network connections, terminal emulation, file transfer, and so on.

### Locus of File Management Commands

[Next] [Chapter Index] [Previous] [Contents] [Top]

Locus refers to the target of file management commands when Kermit has a connection to a server on another computer. Historically, commands such as CD, DIRECTORY, DELETE, RENAME, and MKDIR have always acted locally in all Kermit programs. To ask a remote server to do these things required a REMOTE or "R" prefix: e.g. REMOTE CD or RCD.

When the FTP client was added to Kermit in 2002, this behavior seemed unnatural to users of text-mode FTP clients. Thus the notion of Locus was introduced: Local means that unprefixed file management commands are executed on the local computer; Remote means they are sent to the remote FTP or Kermit server for execution. By default, Kermit switches Locus automatically every time you make or break a connection, depending on what kind of connection it is. When you make an FTP connection, Kermit switches its Locus to Remote. When you make any other kind of connection, or when you break any connection, its Locus switches back to Local.

Regardless of Locus, you can always force a file management command to execute remotely with an R-prefix: RCD, RDIRECTORY, etc. And you can always force it to execute locally with an L-prefix: LCD, LDIRECTORY.

In K95G, the current Locus is shown in the Status bar, and in all versions of Kermit 95 2.x and newer, automatic Locus switching is accompanied by a popup dialog or prompt, informing you of the switch and asking if it is OK. This is to make sure that you know where commands such as DELETE will be executed! If you would rather not be bothered by the popups or prompts, use the Actions menu to change the Automatic Locus Switching to On or Off, rather than Ask, or put the appropriate SET LOCUS command in your `K95CUSTOM.INI` file. Type HELP LOCUS at the K-95> prompt for details.

### How Can I Customize the Command Screen?

[Next] [Chapter Index] [Previous] [Contents] [Top]

Several commands are useful in the command screen. You can issue them at the prompt, or you can put them in your `K95CUSTOM.INI` file (`K2CUSTOM.INI` in OS/2) or in a macro, or in various other ways as described in Using C-Kermit:

`CLS`
  Clears the Command screen.

`SET COMMAND COLOR foreground-color background-color`
  The normal command screen is light gray on black. Use this command to change the Command-screen colors to any other scheme you prefer. As noted in Using C-Kermit, you can use the question mark (?) key to obtain a list of the possibilities in each field, so:

        [C:\K95\] K-95> set command color ?

  lists the foreground colors.

`SET COMMAND HEIGHT number`
  This tells the height of the Command screen, i.e. the number of lines. The default is 24, which does not include its status line. When Windows 95/98/ME is the operating system we recommend you use 25, 43, or 50 lines. You can use practically any number at all in Windows NT/2000/XP/Vista/7/8/10, provided the product of the height and width is less than 8192.

`SET COMMAND WIDTH number`
  Specifies the width, in characters, of the Command screen. When Windows 95/98/ME is the operating system we recommend you use the default width of 80 columns. You can use practically any number at all in Windows NT/2000/XP/etc, provided the product of the height and width is less than 8192.

  > In K95G, the dimensions of the Command and Terminal screens are always the same and SET COMMAND HEIGHT and SET TERMINAL HEIGHT are synonyms, as are SET COMMAND WIDTH and SET TERMINAL WIDTH. In the Console version, the Command and Terminal screen dimensions can be distinct.

`SET COMMAND MORE-PROMPTING { ON`, `OFF }`
  Some commands might produce more text than will fit on the command screen. Normally when this happens, K-95 pauses at the end of the screen and asks "More?". If you type Y or press the Space Bar, the next screen is printed. If you type "N", the remaining screens are not printed and K-95 returns to its prompt. If you type "G" (for Go), Kermit shows all the rest without pausing. If you tell K-95 to `SET` `COMMAND` `MORE-PROMPTING` `OFF`, it will always print the entire output of every command immediately without pausing, in which case you can use the Scroll bar scrollback keys to view any text that flew past.

`SET COMMAND SCROLLBACK number`
  Specifies the number of lines in the Command-window scrollback buffer, 512 by default.

`SET COMMAND CURSOR-POSITION row column`
  This command moves the Command screen cursor to the indicated position. The row and column numbers are 1-based. Little purpose is served by entering this command interactively, but it is useful in scripts for producing formatted screens.

`SAVE COMMAND SCROLLBACK filename`
  Saves the Command-window scrollback buffer to the given file.

Other `SET COMMAND` commands are described in Using C-Kermit and by HELP SET COMMAND. The `SET COMMAND` values can be displayed with `SHOW COMMAND`.

### Using the Mouse in the Command Screen

[Next] [Chapter Index] [Previous] [Contents] [Top]

You can use the mouse to copy and paste in the Command screen just as you would in the Terminal window. This means you can copy and paste pieces of previous commands and so forth, and perhaps more usefully, it means you can copy the results of commands and paste them elsewhere, such as into the Terminal window when you are sending email to Kermit Technical Support about some problem you are having.

### Recalling Previous Commands

[Next] [Chapter Index] [Previous] [Contents] [Top]

At the `K-95>` prompt, you can recall previous commands by pressing the Up Arrow key, and if you go too far back, you can use the Down Arrow key to move forwards again. You can also use Ctrl-P or Ctrl-B in place of Up Arrow, and Ctrl-N in place of Down Arrow.

The command recall buffer size holds 10 commands by default, but you can change it with:

`SET COMMAND RECALL-BUFFER-SIZE number`
  Specifies the number of commands to be kept in the command recall buffer. This command also clears the recall buffer.

### Where Do I Put Commands?

[Next] [Chapter Index] [Previous] [Contents] [Top]

- If you type a command at the `K-95>` prompt, it is executed immediately, but not remembered (except in the command recall and scrollback buffers).

- If you put a command into your `K95CUSTOM.INI` file (`K2CUSTOM.INI` in OS/2), it is executed every time `K95.EXE` (`K2.EXE` in OS/2) starts, after the standard initialization file, but before you get the prompt. Therefore, this is a good place to define macros that you always want available, or to establish any other settings that you always want to be in effect. For example, if you always want a big cursor:

        SET TERMINAL CURSOR FULL

  Note, however, when starting a connection from the Dialer, the script that the Dialer generates is executed after the initialization and customization files. Therefore, any settings in the Dialer entry that clash with those in the initialization or customization files will take precedence.

- If you put a command into any other file, you can tell Kermit 95 to TAKE the file at any time and the command will be executed. There are two places in the Dialer Settings pages that script files may be specified for a connection entry: the Keyboard Page and the Login Page. The Keyboard mapping script file is executed before the connection is made. The Login script file is executed immediately after a successful connection is established. If you need to execute a Kermit command which does not have a GUI equivalent in the Settings pages, the Keyboard mapping script is an appropriate place to insert it.

- If you put the command in a macro definition, the command is executed whenever the macro is invoked. Macros are declared with the DEFINE command. Macros can be declared and invoked wherever a built-in command can be issued.

When you make a connection from the Dialer, the commands generated by the Dialer are executed after your initialization and customization files, and therefore have the potential to undo them. For example, if your customization file sets small screen dimensions and certain Dialer entry sets large ones, when you launch that connection from the Dialer, it has large screen dimensions.

If you specify a key map script (which can, in fact, contain any commands at all, not just key mapping commands) in the Keyboard Settings page of a Dialer entry, it is executed just prior to making the connection.

If you specify a Login script in a Dialer entry, it is executed last.

## Chapter 7. Using the Terminal Emulator

[Next] [Previous] [Contents] [Top]

References:

- Kermit 95 2.x GUI Features
- K95 Tutorial: Terminal Sessions
- Using C-Kermit, Chapter 8.
- Background: What Is Terminal Emulation?
- Background: Terminal Character-Set Terminology and Mechanics
- The Kermit 95 Terminal Type List.
- The Kermit 95 SET TERMINAL Command Reference.
- The Kermit 95 TELNET Reference.
- The Kermit 95 SSH Client Reference.
- The Kermit 95 SET WIN95 Command Reference.

Contents:

- Terminal Type
- A Quick Tour
- Popup Help Screens
- Screen Scrollback
- Screen Dimensions
- Byte Length
- Local Printing
- Host-Initiated Printing
- Using the Mouse
- Using the Keyboard
- Using Character Sets
- Entering Accented Characters
- Key Mapping
- Special Keyboard Modes
- The PCTERM Keyboard
- The VTNT Keyboard
- MS-DOS Kermit SET-KEY Compatibility
- Automating Actions in the Terminal Screen
- Capturing Terminal Sessions
- Debugging Terminal Sessions
- Tuning Terminal Screen Performance

Kermit 95 offers two kinds of connections: those that provide only command-level access from the Kermit client to the remote server:

- FTP connections
- HTTP connections

and those that allow direct interaction with the remote host, its shell, and its text-based applications through K95's terminal emulator:

- Direct serial connections
- Dialed serial connections
- Telnet connections
- Rlogin connections
- SSL or TLS connections
- Secure Shell (SSH) connections
- LAT, DECnet, or PATHWORKS connections

This chapter concerns the second kind of connection. As long as a connection is active, K95 is emulating a particular kind of terminal: when the Terminal screen is active, (almost) everything you type goes to the other computer rather than to your PC; what the other computer sends to your PC is displayed on your screen formatted according to the terminal type. Your PC screen becomes a window in the true sense, providing a view of another place that is outside your PC, with which you interact directly by typing on the keyboard and viewing the screen.

In addition to emulating a variety of terminals, K-95 offers you "value added" features beyond the capabilities of the original terminal:

- Adjustable screen dimensions
- Screen scrollback
- Color selection
- Printer control
- Mouse functions
- Key redefinition

Each of these features -- and many more -- can be customized and controlled by you: in the Dialer, or with Kermit 95 `SET TERMINAL` commands.

Before proceeding, let's look at a gallery of K95 Terminal screen samples, captured from K95 1.1.21 and 2.0 on Windows XP. Click on any screen to see the full-size image. Most screens are 24x80, but of course K95 can also handle tall or wide screens. A few of the many user-selectable fore- and background color combinations are shown.

> | This screen illustrates new terminal-emulation features of the GUI version of Kermit 95 2.0, K95G, including double-high/wide characters, true underlining, italics, and multiple alphabets on the screen at once.
> | This was one of the nicer BBS graphics we ran across in the early days of K95, the Metropolis BBS in St Louis (the same picture was used with permission on the back cover of the original K95 manual). The emulation is ANSI.
> | This screen shot shows how K95 can display text in many languages and scripts, even in a Console window. The emulation is Linux Console, the terminal character-set is UTF-8, and the font is Andale Mono WT J. If you look at the full size image you'll see West and East European Roman, Greek, Cyrillic, Georgian, Korean, and other writing systems -- even Runes and Ogham -- on the same terminal screen.
> | Many people prefer their terminal screens in black on white, like printed paper. This color scheme, like any other, is selectable in the Terminal Settings page of each Dialer entry, or with K95's `SET` `TERMINAL` `COLOR` command.
> | This picture shows what happens when the message from the previous screen shot is loaded into the full-screen EMACS editor while K95's terminal emulator is in debug mode. Control characters are shown in red (for example, ESC is the same as Ctrl-`[`, so a red left bracket is an ESC). Printable characters that are part of escape sequences are shown in reverse video.
> | This screen illustrates K95's color palette. Console applications are restricted to 16 colors, which correspond to the ANSI-format coloration escape sequences used by BBSs (first screen above), Linux "color ls", etc. In K95G, however, you can change the definition of any or all of the colors if you wish.
> | A Linux terminal emulation session showing Linux coloration in a Lynx Web-browser session.
> | This screen shows how K95's VT320 emulator, by following the VT220/320 specification and the ISO 4873 and 2022 standards, can show ASCII, ISO 8859-1 accented letters, and line- and box-drawing characters on the same screen.
> | This is an IBM mainframe 3270 VM/CMS login screen from Temple University. K95 does not yet include 3270 terminal emulation, but it is still widely used to access IBM mainframes through external 3270 emulators such as the Unix tn3270 program and various terminal servers.
> | This is an ancient Heath-19 terminal "graphics" demo. It looks a bit rough in Lucida Console, but that's only because it does not contain the Heath-19 special graphics characters, which were not added to Unicode until Unicode 3.1, and will take some time to find their way into Unicode fonts such as Lucida Console and Courier New.

### Terminal Type

[Next] [Chapter Index] [Contents] [Top]

Reference: The Kermit 95 Terminal Type List.

The most important point to remember about terminal emulation is that the emulator (Kermit 95) and the host must agree about the terminal type. For example, if Kermit 95 is emulating a VT100, the host must know that you are using a VT100.

You can choose Kermit 95's terminal type in the K95G Toolbar, in the Dialer on the Terminal Settings page for any connection, or in the Command screen with the command:

      SET TERMINAL TYPE name

where `name` is a name from Kermit 95's list of terminals that it can emulate (in other words, you can't just enter the name of any terminal at all and expect K-95 to know how to emulate it; you have to choose one that it knows). To see a list of the acceptable names, open the Terminal-type Combo box on the Toolbar and scroll through the list, or type a question mark (?) in the name field of the SET TERMINAL TYPE command in the Command screen:

      K-95> set terminal type ?

Whenever you set or change terminal types, Kermit 95 loads a complete key map for the selected terminal (so the Arrow, Function, and other special keys send the expected sequences), and sets up the appropriate responses for incoming escape sequences.

The method for telling the host what kind of terminal you have depends on the host and the connection.

- Some hosts only use one terminal type. Or your account on the host might already set your terminal type. In these cases, set K95's to match.

- On most Telnet connections, K95 tells the host what kind of terminal it is emulating. If the host does not recognize it, it negotiates until a type is found that K95 and the host both know about, or if the host does not support this feature, there will be a mismatch and you'll need to take some action manually to achieve a match. It is also possible that the host knows your terminal type by a different name, in which case you'll need to use the `SET TELNET TERMINAL-TYPE name` command to override Kermit 95's name for the terminal (example: when making connections to SCO operating systems, you might have to "set terminal type scoansi" but "set telnet terminal-type ansi").

- SSH and Rlogin connections also convey the terminal type, but if there is no match, there are no further negotiations. The `SET TELNET TERMINAL-TYPE` command can be used for SSH and Rlogin too.

- When connecting to Digital Equipment Corporation VMS systems, on any kind of connection, VMS usually sends a "what kind of terminal are you?" escape sequence. If K95's terminal type is set to any of the VT types, K95 answers accordingly and agreement is achieved. If VMS does not send the "what are you?" sequence, give the `SET TERMINAL /INQUIRE` command at the VMS command prompt.

- When connecting to Data General AOS/VS systems, on any kind of connection, AOS/VS sends a "what kind of terminal are you?" escape sequence. If K95's terminal type is set to any of the DG types, K95 answers accordingly and agreement is achieved.

- Certain BBSs might try to "autosense" your terminal type by sending a series of escape sequences and checking the responses.

- In some cases, you'll have to tell the host what kind of terminal you have. The procedure for this depends on the host and/or shell. See the UNIX, VMS, and AOS/VS appendices in Using C-Kermit for instructions for each of these operating systems.

More about VMS . . .

You can always use VT320 terminal emulation with VMS. The VMS `SET` `TERMINAL` `/INQUIRE` command is essential for synchronizing VMS's terminal capabilities list with the capabilities of the K95 emulator. At most VMS sites this command is issued automatically when you log in. But if it isn't, then even when VMS knows your terminal type, it might print error messages like this:

      %TPU-E-NONANSICRT, SYS$INPUT must be supported CRT

when you attempt to run fullscreen applications like `EDIT/TPU`. In that case, type "`set` `term` `/inquire`" yourself at the VMS command prompt, or add it to your `SYS$LOGIN:LOGIN.COM` file.

### A Quick Tour

[Next] [Previous] [Chapter Index] [Contents] [Top]

Let's take a look at a Terminal screen in action. Here we have a Telnet connection to the FedWorld BBS system of the US National Technical Information Service (`fedworld.gov`):

On top we have the Title bar. In the GUI version, all elements are functional: you can minimize K95G, restore or maximize it, and you can use the `[x]` box to exit cleanly.

The K95G menu bar has four items: File, Edit, Actions, Help. Each of these is simple and should be self explanatory; e.g. the File menu items are Connections (brings up the Dialer), Hangup (closes the current connection if any), and Exit. The Actions menu includes such items as Clear, Compose, Reset, and "toggles" for various important and/or commonly used dual-value (on/off) parameters.

The K95G Toolbar is a mini control panel for the terminal emulator. From left to right:

- The Dial button (invokes the Dialer).
- The Back and Forth button (switches between the Terminal and Command screens)
- The Terminal Emulation Combo Box.
- The Font Combo Box.
- The Font Size Combo Box.
- The Character Set Combo Box.

The Combo Boxes show the current choices for terminal emulation, font, and character set and let you change them.

The Terminal window itself contains the host BBS screen. The bottom line of the the Terminal window is Kermit 95's status line (not visible in all emulations or when the host application has disabled it.) The status line tells you, from left to right:

1. The active type of terminal emulation, such as ANSI, VT100, or VT320.
2. How to get a pop-up help screen (use Alt-H).
3. How to return to the K-95 prompt (use Alt-X).
4. The communication device name or network host name.
5. Additional info depending on the connection type.

At the very bottom is K95G's Status Bar, which tells you which screen you're in, the current Locus for file management commands, the communications protocol (such as TELNET, SSH, or Serial), the current cursor position, and the screen dimensions, exclusive of the Status line.

To get a brief glimpse into the degree of control you have over the terminal emulator, use Alt-X (hold down the Alt key and press the X key) to return to the Command screen and give the SHOW TERMINAL command. That is, type:

      show terminal

at the `K-95>` prompt and then press the Enter key:

This illustration shows the Console version as it appears in Windows 9x/ME, in which the Console window includes its own Toolbar. The terminal screen is bordered by a regular Windows / OS/2 border including Title bar, Max/Min/Close buttons, and Mini-icon access to the System menu. Note, however, that there are (or should be) no scroll bars.

Changing the Font Size
  In the GUI version, K95G, you can change the font and the font size on the Toolbar, CLICK HERE for details. Font changes made in K95G's Toolbar are remembered from session to session.

  In the Console version... Just below the Title bar is a Tool bar (Windows 95/98/ME only). On the left is your font size control. If the writing in the Terminal screen is too small for you, just click on the little arrow button to open up the font-size menu to pick a bigger size. Pick any size you want, even a teeny-weeny size and see the tiny little Terminal screen, just right for a mouse. In Windows NT/2000/XP/etc and OS/2, use the Font..." entry on the System menu. Warning: If you see an "Auto" entry in the font list, do not choose it. See Item 9 in the K95 Bugs List for details.

  Note: Font changes made in the K-95 windows's Font box are only for the current session. Various tricks can be used outside of K-95 to force your preferred font size to be remembered.

Other Console Toolbar Options
  In Windows 95/98/ME (Console version only), the Toolbar includes graphical icons for Edit functions: Mark, Copy, and Paste. Normally, you would use Kermit 95's own built-in mouse functions, explained below. (Note: Toolbar Paste will not work if "Fast Pasting" is selected in the Windows Properties notebook.)

  Then comes the Fullscreen button (Windows 95/98/ME only). Click on this and the terminal screen fills up the entire PC screen. Oops, sorry, no more buttons to click on to get back to Windows! Now what? Hold down the Alt key and press the Enter key to restore the original screen (Windows only).

  The next button in the Windows 9x/ME Toolbar is Properties. Click on this and you get a big fat notebook full of options (including another way to set the font size). You can safely ignore these. Then comes a Background button. If you push it, K-95 might not be able to execute except when it is up front. Finally, the button with the big A on it is the Font notebook, which is yet another way of picking the font size.

  You can change the amount of the window that you can view by dragging the window frame, but you can not actually resize the window (but keep reading). If you reduce the viewable area below the maximum, vertical and/or horizontal scroll bars appear to let you move to the hidden portions.

The GUI version has its own Toolbar, and can be resized by dragging its window frame.

### Popup Help Screens

[Next] [Previous] [Chapter Index] [Contents] [Top]

Like it says in the status line, use Alt-H to get help. That is, hold down the Alt key and press the H key (in most emulations you can use either lower case or upper case letters with Alt keys to invoke K-95 functions, but in some emulations, such as HFT, you must use upper case). In the GUI version, you can also use the menu: Help→Context. Up pops a window labeled "Important Keys":

These are some of the special keys that you can use during terminal emulation. We describe these keys and what they do in the following sections. Bear in mind, however, that you can redefine any keys any way you want. If you move important functions to other keys, the status line and pop-up help screens know this and they use the new key names.

Some pop-up help screens have additional pages. To see the next page, press Alt-H (or whatever you have defined the Help key to be) again; in the GUI version, just press the Space bar or click OK. To make a pop-up screen go away, press (almost) any key besides the Help key, or double-click the left mouse button; in the GUI version, use the Esc key or click Cancel.

The status line changes to different formats depending on your context. For example, if there is a pop-up help screen, the status line tells you how to make it go away. If the screen is rolled back, the status line says how far and how to get help about the scrollback keys. Which brings us to our next topic. . .

### Screen Scrollback

[Next] [Previous] [Chapter Index] [Contents] [Top]

Reference: Advanced Scrollback Features

Don't you hate it when something that you are trying to read scrolls off your screen too quickly? Did you ever wish you could bring it back to read at your own pace? You can with K-95's screen scrollback feature.

Scrollback is simple and intuitive in the GUI version of K95 -- just use the vertical scrollbar or mouse wheel. You can also use the keys described in the following paragraphs, just as you can in the Console version:

Use the Page Up key to go up one screen page and the Page Down key to go down one screen page. If you keep pressing the Page Up key, you'll go farther and farther back in time, until you reach the top of K-95's "scrollback buffer". "Buffer" is one of those techo words; it means "a place to put things." The scrollback buffer is only so big, so when it fills up the oldest material is discarded off the top. The default size is 512 lines. You can specify a different size in the Dialer -- see Chapter 4 -- or with the `SET TERMINAL SCROLLBACK` command.

You can go straight to the top of the scrollback buffer by pressing the Home key. You can go straight to the "bottom" (i.e. Back to the Present) by pressing the End key.

The mouse wheel is also supported in both the GUI and Console versions of K95 allowing you to scroll one line at a time, or one screen at a time if you're holding down the Ctrl Key. The mouse buttons and wheel can be redefined if desired.

Notes:

- Page Up, Page Down, and related functions have a variety of keyboard assignments depending on the terminal emulation or active keyboard modes.

- Scrollback is NOT accomplished using scroll bars. Console applications are not allowed to use scroll bars. The Scroll bar is only supported for scrollback in the GUI version of K-95.

The following screen shot shows a scrolled-back screen in the Console version, with the Console rendition of the popup help screen for scrollback keys:

The picture also illustrates the special message that goes into the Status Line (if there is one) as well as into the Title bar.

Now suppose a long document flew past and now you want to read it. Get to the top the fastest way -- a bunch of Page-Ups, or a Home and then a bunch of Page-Downs (you can even search for it if you wish) -- and then Page Down one page at a time as you read it.

You can also scroll backwards and forwards a line at a time. Just hold down the Ctrl key while pressing the Page Up and Down keys. In the GUI version, click on the little arrowheads at the top and bottom of the scrollbar runway.

While you are scrolled back, newly arriving material is still accepted and placed correctly where it belongs, so when you go back to the end, it is there waiting for you.

Remember that the scrollback keys, and any other keys, can be redefined. In certain terminal emulations, as noted previously, Page Up and Page Down are used to send commands to the host, rather than locally for scrollback. When in doubt, use the Help key (shown in the Status Line) to find out what the Scrollback key is. And then once scrolled back, use the the Help key again to find out which keys do what in this situation.

> Kermit 95 also includes some advanced scrolling features: horizontal scrolling, searching, bookmarks, saving the scrollback buffer, and viewing defunct sessions. CLICK HERE to read about them.

### Screen Dimensions

[Next] [Previous] [Chapter Index] [Contents] [Top]

The normal size for a terminal screen is 24 lines with 80 characters in each line (25 x 80 in ANSI emulations). These are the dimensions of most real terminals, and most computers and services expect your screen to be this size.

But 24x80 is a bad match for a sheet of paper, which usually has about 50 lines. Wouldn't it be nice if your terminal screen did too? Similarly, old timers might remember those big, heavy, and (most of all) WIDE green-striped computer printouts with sprocket holes on the sides. They were 132 characters wide, which is much wider than the normal 80-character screen line. There is still a lot of software that generates these wide printouts, and wouldn't it be nice if we could view them on our terminal screens?

### Screen Dimensions in the GUI Version

In K95G, you can change the screen dimensions by stretching the K95G window with the mouse when Resize Mode in the Actions menu is set to "Changes Dimensions" (but note that holding Shift while resizing always changes screen dimensions and holding Ctrl always changes font size):

- To change the width (the number of columns), position the mouse pointer over the left or right K95G screen border, hold down the left mouse button, and drag the border in the desired direction. As you drag, a little popup shows the changing dimensions as columns × rows (the first number changes). Let go of the mouse when you have the desired number of columns.

- To change the height (the number of rows), drag the bottom screen edge and watch the row count change in the little popup.

- To change the height and width at the same time, drag the lower right corner of the K95G window in the desired (diagonal) direction; watch moth numbers change in the popup.

You can also maximize and restore the K95G window using the the middle button at the right of the Title bar. Maximize (clicking the button when it contains a single box) expands the K95G window to fill the whole screen, adjusting the screen dimensions or the font size (according to your Resize Mode setting in the Action menu) to achieve the best possible fit. Restore (clicking the button when it shows two boxes) puts the K95G back as it was before you maximized it, except that usually the restored is blank since it is shorter than the maximized screen, so the previous contents went into scrollback.

The terminal dimensions (rows × columns) are shown in the rightmost position of the status bar. If the terminal window includes a Kermit 95 status line, this line is not included (since it is not part of the terminal).

### Screen Dimensions in the Console Version

Stretching K95's terminal window with the mouse can't work in a Console screen because K95 never finds out about it. Instead, you have to do it in the Dialer before you make the connection, or by giving commands at the `K-95>` prompt after you make the connection. But before trying all sorts of unusual combinations, you should know:

1. In Console mode, only certain combinations are supported well by PC operating systems, video adapters, and drivers (depending on the exact model and version).

2. Only certain screen widths (namely 80 and 132) might be supported by the computer or service you are connecting to.

The screen dimensions for each connection can be set in the entry's Terminal Settings page in the Dialer, as explained in Chapter 5. You can also use Kermit 95 to set or change them, independent of the Dialer.

The commands to choose the screen height and width are:

      SET TERMINAL HEIGHT number
      SET TERMINAL WIDTH number

These commands accept any numbers at all, within reason, when typed in K-95's Command screen.

### Letting the Host Know K95's Screen Dimension

Now the tricky part is getting the computer on the other end to know what your Terminal screen's new size is. Just because YOU know, and just because K-95 knows, does not necessarily mean the other computer knows, and so it might continue to format your screen using the old or default size (usually 24 x 80). Here are some rules of thumb:

1. Set your height and width before connecting to the service. Then the computer you are calling might be able to "autosense" your screen dimensions. This is generally true of BBS's, and on Telnet, Rlogin, and SSH connections.

2. If (1) didn't do the trick, find out what command to use on the far end to adjust its idea of your screen dimensions. In UNIX, it is usually:

         resize

   or something like:

         stty rows 49 cols 80

   and in VMS it is:

         SET TERMINAL /WIDTH=132 /PAGE=60

When specifying the number of screen rows (lines) to the host, do not include K95's status line.

### Byte Length

[Next] [Previous] [Chapter Index] [Contents] [Top]

Reference: Using C-Kermit, Appendix I.

"Byte length" refers to the number of significant bits in a byte: 7 or 8. Note that bytes might or might not correspond with characters. In character sets like ASCII and ISO Latin-1, one byte is one character; in others like JIS X 0212 or Unicode, one character might be composed of two or more bytes.

By default K95's terminal screen uses the appropriate character size for the terminal it is emulating: 8 for VT220 or higher, 8 for any ANSI-based type, 7 for most others. The 7-bit setting is to protect you in case the host uses parity, a commonly-used scheme in which one bit of each byte is used for error detection rather than data. If you display bytes with 7 data bits and 1 parity bit as if they contained 8 data bits, your screen would be full of garbage.

But you might need 8 data bits because you will be using an 8-bit character set on the host for representation of accented or non-Roman characters, line- or box-drawing characters, or math/technical characters. If your terminal bytesize is 7 in this situation, much of the text on the screen will be legible, but special characters will be garbled and the formatting might be fractured. To use eight data bits in the terminal screen, give the K95 commands:

      SET TERMINAL BYTESIZE 8
      SET PARITY NONE

Kermit 95 1.1.21 and later also support the rather rare combination of 8-bit data bytes with one parity bit. The command for this would be:

      SET TERMINAL BYTESIZE 8
      SET SERIAL 8E1 ; or other

The SET SERIAL command, which also lets you choose the number of stop bits, is documented HERE.

### Color Schemes

[Next] [Previous] [Chapter Index] [Contents] [Top]

> (Click to enlarge)

Kermit 95 has the screen elements shown in the following table, and you can choose the coloration for each separately. The default values shown might vary according to the terminal type; e.g. for ANSI and Linux emulations, the default Terminal Screen is white on black. Of course you can also specify your color scheme for each connection in the Dialer on the Terminal page.

> Element | Default Foreground | Default Background | Command
> --- | --- | --- | ---
> Command Screen | White | Black | `set command color`
> Terminal Screen | Lgray | Blue | `set terminal color terminal`
> Status Line | Lgray | Cyan | `set terminal color status`
> Popup screens | Lgray | Cyan | `set terminal color help`
> Selection | Black | Yellow | `set terminal color selection`

You can also set custom colors for various terminal display effects, including debugging, reverse video, underlining, etc, as described HERE.

The Console version of K95 is limited to 16 colors, listed in the following table:

> Name | Description | Intensity
> --- | --- | ---
> black | Black | Normal
> blue | Blue | Normal
> brown | Brown | Normal
> cyan | Cyan | Normal
> dgray | Dark Gray | High
> green | Green | Normal
> lightblue | Light Blue | High
> lightcyan | Light Cyan | High
> Name | Description | Intensity
> --- | --- | ---
> lightgray | Light Gray | Normal
> lightgreen | Light Green | High
> lightmagenta | Light Magenta | High
> lightred | Light Red | High
> magenta | Magenta | Normal
> red | Red | Normal
> white | White | High
> yellow | Yellow | High

A color-setting command should include the foreground and the background color, in that order. So to specify a black-on-white Terminal screen with a white-on-cyan status line, use:

      set terminal color terminal black lgray
      set terminal color status white cyan

You should avoid using high-intensity colors in the terminal screen as either foreground or background colors, since this can make host-controlled effects like Bold and Dim produce undesirable results.

In the GUI version only, you can change the appearance of each color by redefining its Red/Green/Blue (RGB) mixture. This is most easily done on the Dialer's GUI Settings page:

by changing the numbers in the row for the color you wish to modify, but you can also do with the SET GUI RGBCOLOR command.

### Local Printing

[Next] [Previous] [Chapter Index] [Contents] [Top]

Reference: Printer Setup and Troubleshooting

Whether your PC has a local printer, or access to a network printer, or no printer at all, there are lots of ways K-95 can print. First of all, make sure Kermit 95 has been configured for best results with your printer. In Windows, a printer can be accessed through 16-bit drivers via DOS print device names like PRN and LPT1, or it can be accessed through the 32-bit Windows print queues, via a long printer name like "HP_LaserJet_5L_(PCL)". If you have problems with DOS printers, use Windows printers, or vice versa.

> This section assumes your printer is set up and working correctly. In case it isn't, or if you want to learn the technical details of Kermit 95's printer support, see the Printer Setup and Troubleshooting reference for the full story.

When in the Terminal screen, you can use the following keys for printing:

The Shift-Print-Screen key
  This is a Windows or OS/2 function, not a K95 function. It prints the current terminal emulation screen on the default Windows (or OS/2) printer. This works with both the current screen and with scrolled-back screens. The current window is printed as a bit map.

Alt-P
  This is the K-95 version of Shift-Print-Screen. It uses your `SET PRINTER` selection. All characters on the current screen are copied to the printer without colors or attributes.

Alt-O
  This turns on "autoprint" -- each screen line is printed (copied to the printer or `SET PRINTER` selection) automatically when the cursor leaves it. Typing Alt-O again turns off autoprint. In the GUI version of K95, you can also use the Actions→Copy to Printer menu item to turn autoprint on and off.

Alt-End
  Sends a formeed (Ctrl-L character) to the printer (or `SET PRINTER` file). Most printers eject the current page upon receipt of a formfeed.

Printer-related keyboard verbs, like any others, can be assigned to the keys of your choice (as explained later in the section on key mapping). They are as follows:

`\Kdump`
  Tells K95 to copy the current screen to the printer. Assigned to Alt-P by default. When assigned to a mouse event, `\Kdump` sends the current selection to the printer; if there is no current selection, then it sends the current screen.

`\Kprintff`
  Tells K95 to send a formfeed (page eject) to the printer.

`\Kprtauto`
  Tells K95 to act as if it had received an Autoprint (defined in next section) escape sequence from the host; if the printer is not active, this starts autoprint; if the printer is active, this stops it. This verb is assigned to Alt-O by default.

`\Kprtctrl`
  Tells K95 to act as if it had received a Controller Print (Transparent Print, defined in next section) escape sequence from the host; if the printer is not active, this starts autoprint; if the printer is active, this stops it.

`\Kprtcopy`
  `\Kprtcopy` is just like `\Kprtctrl` except it also sends the incoming bytes to the screen, so you can view them while they are being printed. To our knowledge no real terminals do this, but some people find it useful.

If you want to change the Alt-O key assignment from `\Kprtauto` to `\Kprtcopy`, use these commands:

>     set key \2159 \Kprtcopy   ; Alt-o
>     set key \2127 \Kprtcopy   ; Alt-Shift-O

In the Command screen, at the K-95> prompt, or in Kermit command files or scripts, you can use the following printer-related commands:

`SET PRINTER filename`
  Normally any material to be printed goes to your default printer, referred to in the Command screen as the PRN device. You can use K-95's `SET PRINTER` command to specify a different device, or to send printer material to a file, for example:

        [C:\K95\DOWNLOAD] K-95> set printer d:\temp\print.log

  The `SET PRINTER` command has numerous other options and uses. CLICK HERE for a complete description.

`PRINT filename`
  Prints the specified file by copying it in binary mode to the `SET PRINTER` device, PRN by default.

`LOG SESSION PRN`
  You can log your terminal session to the printer. Every character that arrives at the communication device is also sent to the printer. `CLOSE SESSION` "closes" the session log and should force any unprinted material to come out.

And you can also print with the mouse. That's covered elsewhere.

### Host-Initiated Printing

[Next] [Previous] [Chapter Index] [Contents] [Top]

Reference: Printer Setup and Troubleshooting

Printing orders can also be sent by the other computer (host) to K-95, instead of by you. An example would be if you were using the popular Pine e-mail software in your Terminal window. You press the Y key when it shows in the menu; for example, to print an e-mail message you are reading. This sends a "PrYnt" command to Pine and then Pine sends the e-mail message to K-95 along with a signal that says to print it, and it comes out on your printer. This works because most types of terminals can have a printer attached and define escape sequences to route incoming material to it.

Kermit 95 supports two major types of host-initiated printing:

Controller Printing
  (Also known as Transparent Printing) In this mode, Kermit simply sends the bytes that arrive from the host straight to printer instead of to the screen, which means that you can't view the material on your screen. The bytes are not interpreted in any way. Control characters and escape sequences are sent too (except, of course, the stop-printing sequence). The assumption is that the printer uses the same character set, control characters, and escape sequences as the terminal. This was the case in the days of real terminals, such as the DEC VT220 or the HP2621, which could be attached to compatible printers.

Auto Printing
  In this mode, the terminal emulator acts normally, interpreting and displaying incoming material on the screen. In addition, whenever the cursor leaves a given line (row), that line is sent to the printer, followed by a line terminator. Thus in this case, only visible text characters are sent to the printer -- no control characters (except for line terminators) or escape sequences. No formfeeds either; thus page breaks can not be accomplished by auto-print commands unless the specific terminal type includes some special escape sequence for it, such as the VT100 sequence, `<ESC>[?18h` (explained just below).

Examples of VT100-terminal-specific host-initiated print actions follow. Other terminal types use different sequences. Don't panic, just show this page to whoever is responsible for the application in question, so they can see how to configure it to let you use it with your PC printer (`<ESC>` stands for the ASCII Escape character, decimal code 27):

Print current cursor line
  Sends the line that the cursor is presently on to the printer. Escape sequence: `<ESC>[?1i`

Print current screen
  Sends the current terminal screen to the printer. Escape sequence: `<ESC>[0i`

Set print region
  `<ESC>[?19h` sets the print region (for `<ESC>[0i`) to the whole screen. `<ESC>[?19l` sets the print region (for `<ESC>[0i`) to the current scrolling region.

Formfeed control
  `<ESC>[?18h` means to send a formfeed after every print-screen operation; `<ESC>[?18l` means NOT to send a formfeed after every print-screen operation.

Begin transparent printing
  All characters, including escape sequences and control characters, that come in the communication device are sent straight to the printer, instead of to the screen. Escape sequence: `<ESC>[5i`

End transparent printing
  Escape sequence: `<ESC>[4i`

Begin autoprint
  Print screen lines when the cursor moves off the line because of autowrap, linefeed, or formfeed. Escape sequence: `<ESC>[?5i`

End autoprint
  Escape sequence: `<ESC>[?4i`

Each of these uses the `SET PRINTER` file or device, or if none has been specified, the `PRN:` device name. Use `SET PRINTER NUL:` if you don't have a printer, and you don't want to save printer material in a file.

Kermit 95's `\v(common)PRINTER` directory (see the README) contains some useful utilities for host-initiated printing. For example, there are `PCPRINT` scripts for UNIX and VMS that can be used to print host-resident files on your PC printer.

### Using the Mouse

[Next] [Previous] [Chapter Index] [Contents] [Top]

References:

- Customizing Mouse Buttons
- Web Browser Interface

The mouse has many uses in Kermit 95. The methods for using it might be a bit different from what you're used to because a lot of extra features are loaded onto it.

> This section describes how to use the mouse in the Terminal (or Command) window, and does not apply to Title bar, Menu bar, Tool bar, Scroll bar, or other Windows features outside the central window.

K-95's mouse features are activated when a mouse button is pressed while the mouse pointer is inside the Kermit 95 Terminal or Command screen. Whenever you move the mouse pointer outside the Kermit 95 screen, it's a normal Windows (or OS/2) mouse again. Here is what you can do in the Kermit 95 screen:

- You can select arbitrarily-sized portions of text from anywhere within the current screen OR the scrollback region, and. . .
- The selected text can be copied to the clipboard, transmitted, copied to a file, printed, or passed to a macro for processing.
- You can use the mouse to reposition the terminal cursor.
- You can click on a URL to visit it in your Web browser.
- You can send mouse click and scroll events to the remote host
- The mouse buttons are "remappable", and you can assign any functions (kverbs or macros) to them you like.

Copying
  Try marking some text now: Go to a K-95 Terminal or Command screen. Make sure you have some text on it. Now put the mouse pointer in the K95 screen, hold down the left button, and move the mouse. See how lines are highlighted in yellow. The yellow text is "selected". Now let go of the mouse button. The text is copied to the Clipboard and the yellow disappears. This is faster and easier than the normal Windows and OS/2 methods, in which selecting and copying are separate operations requiring multiple menu accesses. You can copy not only from the current screen, but from previous screens too. To demonstrate: suppose you have a terminal session that has already accumulated some scrollback screens. Put the mouse pointer in the Terminal window, hold down the left mouse button, and drag the pointer to the top of the window. This causes the window to scroll backwards automatically while selecting additional text. (It works in the other direction too when the screen is scrolled back.)

Pasting
  Text that you copy in Kermit 95 can be pasted into other applications using the regular methods (Ctrl-V, Paste from the Edit menu), and text that you copy in other applications, or in Kermit 95 itself, can be pasted into Kermit 95. If you paste into Kermit 95's Terminal window (e.g. with Shift-Insert), the text is transmitted to the host as if you had typed it.

Copying within the Terminal Screen
  Suppose you want to reissue a previous command on the host, or you want to re-enter a long convoluted filename or network address or phone number without actually having to retype it. Here's how: Holding down the Ctrl key, use Button 1 to select the desired text, and then release Button 1. The selected text is sent to the other computer just as if you had retyped it (but faster).

Copying within the Command Screen
  This works the same way as copying within the Terminal screen, except the text is not transmitted to the host. This might be handy for re-issuing Kermit 95 commands that are in your scrollback buffer but not in the command recall buffer.

Copying between the Command and Terminal Screens
  Select the desired text with Button 1. Switch screens with Alt-X. Paste by double-clicking Button 1 or pressing Alt-Insert. This is handy for (e.g.) sending the output of Kermit 95 `SHOW` commands to the Kermit help desk.

Copying from the Kermit 95 Screen to a Printer or File
  To copy text from the Terminal or Command screen (or scrollback buffer) to your printer or to a file, hold down the Ctrl and Shift keys at the same time, then select the desired text with mouse Button 1, then release the mouse button (and the keys). The selected text goes to your `SET PRINTER` device or file.

Pasting from the Clipboard
  If you have text in the Windows Clipboard that you copied in Kermit or other application and that you want to transmit to the host, just double-click Button 2 in the Terminal screen, or use Shift-Insert. The text is sent just as if you had typed it on the keyboard. If you paste into the Command screen, the material is interpreted by the command processor rather than being transmitted to the host.

Positioning the Terminal Cursor
  (Terminal screen only)`` Move the mouse pointer to where you want the terminal cursor to be. Double-click Button 1 (the left button). Arrow-key sequences are sent to the host. If the host and/or application supports arrow keys, the terminal cursor should move to where you clicked (or at least to where it would have moved if the corresponding arrow-key sequence had been used).

URL Hot Spots -- the Web Browser Connection
  Whenever you see a URL in the Terminal or Command screen, you can Ctrl-click Button 1 on it to ask your Web browser to visit it. URLs that Kermit recognizes are highlighted so you can spot them easily. You can also Ctrl-click on non-highlighted text that your Browser might treat as a URL such as www.ibm.com. More info:

  - The "mouse verb" that assigns URLs hot-spot visiting to Ctrl-click is `\Kmouseurl`. You can reassign it to any mouse event of your choice with the SET MOUSE BUTTON command.
  - There is also a keyboard verb for URL hot-spot visiting: `\Kurl`. By default it is unassigned, but you can assign it to the key or key combination of your choice with SET KEY or SET TERMINAL KEY.
  - You can choose the style of URL highlighting with SET TERMINAL URL-HIGHLIGHT ON BOLD (or REVERSE, or BLINKING, etc).
  - You can disable URL highlighting (without disabling the ability to visit the unhighlighted URLs by clicking on them or whatever) with SET TERMINAL URL-HIGHLIGHT OFF.

  CLICK HERE to read the technical details of the interface between K95 and the Web browser, in case K95 has trouble starting your browser, or is starting too many of them, etc.

Pushbutton Text-File Transfer
  Pasting text into the terminal window sends the text out the communication device, just as if you had typed the same text on the keyboard. This is a convenient "pushbutton" way of uploading small text files: Just make sure the other computer is expecting you to "type" some text, and then just paste in any text at all from your PC, for example, that you might have copied from another Windows application. (NOTE: K-95 also has a TRANSMIT command for this; see Using C-Kermit, second edition, Chapter 15.) Conversely, copying text from the terminal window into another application (like WordPad or E) is an easy way to download short text files. Just tell the other computer to display (e.g. TYPE, "cat") the file, then copy it with the mouse into the Clipboard, then paste it wherever you want it.

Mouse Reporting
  K95 can send mouse events (clicking, dragging, and scrolling) to compatible applications running on the remote host, a feature known as Mouse Reporting. This allows you to interaction with terminal applications much as you would a regular GUI application. This behaviour only occurs when it's enabled in K95 (which it is by default), an application requests it, and by default only mouse events not assigned to some action within K95 are sent to the remote application.

  If you'd instead like applications on the remote host to be able to take over your mouse entirely when they need it, you can switch to the Override mouse reporting mode with `SET MOUSE REPORTING OVERRIDE`. This will cause all mouse events to be sent to the remote application instead of doing their assigned action within Kermit. To switch it back to the default, the command is `SET MOUSE REPORTING ENABLED`. If you'd rather turn off Mouse Reporting entirely, you can do that with `SET MOUSE REPORTING DISABLED`.

Customizing the Mouse
  If you don't like Kermit 95's mouse features at all, then check Mouse Off in the entry's Keyboard Settings page in the Dialer, or else add the command:

        SET MOUSE ACTIVATE OFF

  to your `\v(appdata)K95CUSTOM.INI` file (`K2CUSTOM.INI` in OS/2), and then you can use the mouse in the normal Windows way (Edit..Select, Edit..Copy, Edit..Paste, etc). If you want to change the assignment of mouse buttons, CLICK HERE to find out how.

### Using the Keyboard

[Next] [Previous] [Chapter Index] [Contents] [Top]

Reference: Arrow-Key Summary

K95 and K95G (but not the Dialer) differ from most other Windows applications by taking over the keyboard almost completely, thus (in most circumstances) blocking common Windows keys and combinations like F1 to get help, F3 for Find, Alt-F4 to exit from the application, F5 to refresh, etc (except when a GUI dialog is active). That's because the terminals that K95 emulates must be able to use these keys themselves.

The PC's main keypad is the big one with all the letters, digits, and punctuation, along with Shift, Ctrl, Alt, Caps Lock, Tab, Backspace, Enter, and in some locations, Alt-Gr. Most of these keys (the ones that aren't modifiers, like Shift, Alt, and Ctrl) send ordinary printing or control characters and cause little trouble.

The Ctrl, Alt, Shift, and (if any) Alt-Gr keys are modifier keys, which (in Kermit 95) do nothing by themselves (except in PCTERM keyboard mode), but which must be held down when pressing other keys (such as letters, digits, Function keys, etc) to modify their value or function. Caps Lock is a "sticky" modifier key that is not held down, but which toggles the shift state of the letter keys.

Heavy users of PC terminal emulation software sometimes like to "move" the Ctrl and Esc keys to locations that are more accessible, and more like on the keyboards of the emulated terminals. Various utilities are available for this; CLICK HERE for an example. Also, custom PC keyboards are now available, with Ctrl, Caps Lock, and Esc in the "right place", and/or even with user remappable keys (in the keyboard itself, and thus independent of the computer operating system or software). Also, DEC VT220-style (LK250 or other model) keyboards might still be available for those who prefer the DEC layout.

The PC also has several special-purpose keypads:

The Function Key Row
  Here we have the Function keys, F1 through F12, plus several others. Function keys do not have characters associated with them at all, and so Kermit 95 must know what it is supposed to send when you press one. This depends on the terminal emulation; whenever you set or change K-95's terminal type, it loads an appropriate key map automatically. But confusion arises because very few real terminals have exactly 12 function keys. For example, the DEC VT220 and above have F-keys labeled up to F20. How should they be mapped to the PC keyboard? There are many possibilities; none will please everyone. If the F-key assignments are not what you expected, or you don't like them, read the section on key mapping.

The Arrow (Cursor) Keypad
  This one is relatively straightforward, since most terminals also have four arrow keys, Up, Down, Left, and Right. These keys are generally used for moving the terminal cursor, but might also have other uses. As with F-keys, the sequences sent by arrow keys vary from terminal to terminal; the appropriate values are part of the terminal type's key map. However, some rather technical complications can arise; CLICK HERE to read about them.

The Numeric Keypad
  These are "adding machine" keys, usually on the far right. The situation is similar to the arrow keys, but more complicated. Briefly, like arrow keys, the numeric keypad of many kinds of terminals (such as VT100 and above) can be in one of two modes, sending something different in each mode. Furthermore, the local PC keypad itself can be in either of two modes depending on the Num Lock state. By default, Kermit 95 (a) ignores the Num Lock state, and (b) treats Num Lock itself as a regular keypad key, so it can (for example) act as the PF1 or "Gold" key for VT100 and higher.

The Editing Keypad
  Insert, Home, Page Up, Delete, End, Page Down. No two people agree what these keys should do. Should they act locally (e.g. for scrolling back the Terminal window), or should they send something to the host? If they should send something, what should they send? Again, something appropriate to the terminal type is loaded automatically, but if you don't like it, you can change it.

Special Keys
  Print Screen and Pause are intercepted by the operating system; Kermit 95 never sees them. Scroll Lock works as you would expect; it is handled by Kermit 95 itself; it pauses the screen locally and sends the appropriate signals to the host to pause also -- pressing Scroll Lock again "unpauses" the screen and Kermit tells the host to resume.

#### Troubleshooting the Keypads

As noted, numerous difficulties can arise from a mismatch between what a PC keys sends (or does) and what you or the the host application think it should do. Here are the most common cases:

None of the Special Keys Works Right!
  Probably a terminal type mismatch. Make sure Kermit 95's terminal type agrees with what the host or application thinks it is.

The Backspace Key Doesn't Work
  There is no universal standard for what the backspace key should send. You can assign various common values to it in the Dialer, or you can use the SET KEY command to assign the specific value to it that your host expects. The keycode for the Backspace key is \264. The value for DEL is \127. The value for BS is \8. For detailed coverage of this topic, CLICK HERE.

The Function Keys Don't Work
  Check how they are mapped using `SHOW` `KEY`. Perhaps you expected (or would prefer) a different mapping. See the section on key mapping.

The Arrow Keys Don't Work
  Assuming your terminal type is set correctly, there are two likely explanations. First, the host expects the arrow keys to be in a different "mode" than the one they are in (a sign of a sloppy application). You can change the arrow-key mode with:

        SET TERMINAL ARROW-KEYS { APPLICATION, CURSOR }

  The second explanation might be that the host commanded Kermit 95 to use 8-bit controls, but the connection is only 7 bits. The command to fix this is:

        SET TERMINAL CONTROLS { 7, 8 }

The Numeric Keypad Keys Don't Work
  Exactly the same explanation as for Arrow keys, except in this case the command to switch "modes" is:

        SET TERMINAL KEYPAD-MODE { APPLICATION, NUMERIC }

When none of these troubleshooting tips help, the next step is to investigate the host or application; if it has been programmed to expect custom sequences, you'll have to find out what they are and then use K95's key mapping features to make the keys send those sequences.

### Using Character Sets

[Next] [Previous] [Chapter Index] [Contents] [Top]

References:

- Using C-Kermit, Chapter 16.
- Terminal Character-Set Terminology and Mechanics
- Cyrillic Terminal Emulation.
- Hebrew Terminal Emulation.
- Kermit 95 Character-Set List
- Selecting Fonts

The people of earth speak thousands of languages and use hundreds of writing systems. Each writing system can be encoded in various incompatible computer character sets. For example, the encoding used for Greek on the PC is different from the encoding used in Solaris, and both of these differ from the Greek encoding on an IBM Mainframe.

Kermit 95 lets you view text in many languages in its Terminal screen, and also to enter text in most of those languages on your keyboard. To view and enter text in a particular language, you must have an appropriate code page or font loaded or available. Then Kermit 95 can convert between the local and remote encodings, at least for those characters that the local and remote character sets have in common; for example, Kermit can convert between ISO Latin/Cyrillic and various PC Cyrillic code pages, but it can not transliterate between Cyrillic and (say) Hebrew. And in case it is not obvious, Kermit 95 does not translate from one language to another; it only converts character sets.

To do this, Kermit 95 must know:

- Which character set you are using in the window where Kermit 95 is running. This might be a PC code page like CP437, a Windows code page like CP1251, or (in Windows NT only) Unicode. This is the local character set.

- Which character set the host is using, called the remote character set.

The way Kermit finds out this information is from the following commands, which you may give at the prompt or in a command file or macro, or which are issued by the Dialer according to the character-set selections in the Terminal Emulation page:

`SET TERMINAL LOCAL-CHARACTER-SET name`
  Tells Kermit 95 which character set is used in its own window. In most cases this is picked up automatically, so this command is required only in cases where it isn't (mainly in OS/2). If you type question mark (`?`) in place of name, a list of the local character sets known to Kermit 95 is displayed, but in general only the ones whose names beginning with "cp" (Code Page) should be selected, since it is doubtful that the Kermit 95 window could be using a non-PC character set. (This command is ignored for screen output on Windows NT/2000/XP/etc, where Kermit 95 uses Unicode to display all characters, but used for for keyboard input).

`SET TERMINAL REMOTE-CHARACTER-SET name [ { G0, G1, G2, G3 } ]`
  This tells Kermit 95 which character set is used on the other computer, and optionally, invokes it to one or more of the G0 through G3 tables. Kermit 95 converts between this character set and the local character set while in the terminal screen.

`SET TERMINAL CHARACTER-SET name`
  This is equivalent to SET TERMINAL REMOTE-CHARACTER-SET name when all the trailing fields are left off, combined with the default value for SET TERMINAL LOCAL-CHARACTER-SET. In most cases, you can use this command instead of the other two (K95 1.1.21 and later only). The K95G character-set Toolbar combo box corresponds to this command.

`SET TERMINAL FONT name`
  In OS/2 only, this command can be used to load a new code page into the Kermit 95 window.

`SET TERMINAL CODE-PAGE name`
  In Windows NT, 2000, and XP with SET TERMINAL UNICODE OFF, this command tells Kermit 95 which Console code page is in use.

`SET TERMINAL BYTESIZE 8`
  This is needed when characters must be transmitted in 8-bit form.

`SHOW CHARACTER-SETS`
  Displays the current code page and terminal-emulation character sets.

In Windows NT/2000/XP/etc, and on any Windows version with the GUI version of K95, it is possible to display characters from many different writing systems on the same screen at once, since the console screen is Unicode based, but when using the Console version of K95 in Windows 95/98/ME (and in OS/2), where the console uses a regular PC code page, only the characters from that code page can be displayed.

To enter the "special" (non-ASCII) characters of your language or locale, just use the regular methods for switching your keyboard between US mode and the mode for your locale, and when it is in your national mode, use your normal methods for character entry: pressing keys labeled with the desired characters, dead-key combinations, and/or Alt-Gr combinations -- whatever methods your keyboard and driver normally offer.

### Character Sets and Fonts in K95G

Perhaps the greatest functional advantage of K95G over the Console version is its ability to use any Windows font, and therefore to display text in many languages and writing systems simultaneously on the same screen, even in Windows 9x and ME. This is a rather complex topic, but we'll try to summarize it briefly here.

You can select the font to be used by K95G in the Font and Font Size combo boxes on the K95G Toolbar, or with the `--fontname` and `--fontsize` command-line options, or with the SET GUI FONT command. You should experiment with different fonts to find the one that includes all the characters you need, is most readable for you at the desired size, and the least impact on system performance (some fonts can be up to 20MB in size).

When K95G starts on your PC for the first time, it looks to see what fonts are available and picks what it believes is the best one. You can try other ones if you wish. When you exit from K95G, the font and size are remembered for next time.

### Monospace Fonts

Kermit 95 is a terminal emulator, and as such it expects to have a monospace font; that is, one in which each character has the same width, just like real terminals (and like most typewriters before them). Thus its initial font selection is the best populated monospace font it can find on your PC. Examples of monospace fonts include Andale Mono, Andale Mono WT J, Courier, Courier New, Everson Mono Terminal, Fixedsys, Lucida Console, Monotype.com, System, and Terminal. This is not an exhaustive list. Some of these are Unicode fonts, some are ASCII only, some correspond to Microsoft or PC code pages. Some come with Windows, some are freely downloadable from Microsoft or other Web sites; some must be purchased.

Courier New, a Unicode font standard with recent Windows releases, includes Roman, Greek, Cyrillic, Hebrew, Arabic, and a pretty good selection of math, technical, and box- and line-drawing characters. If your PC doesn't have Courier New installed, you can download it from the Microsoft website.

If Courier New is not installed, another common choice is Lucida Console, which supports Roman, Greek, and Cyrillic, plus a limited repertoire of math/technical and line/box-drawing characters.

Third-party commercial fonts are available with much broader coverage. An example is Monotype Imaging's Andale Mono WT J (pronounced as in Spanish: Ándale), which supports practically all there is to support, including Armenian, Georgian, Chinese, Japanese, Korean, Thai, and the Indic scripts: very close to every single character in the Kermit UTF-8 Sampler, plus a wider variety of symbols, including those needed for APL programming.

As a compromise, a new font was developed especially for Kermit 95 2.x by Everson Typography, Everson Mono Terminal (EMT), which supports most of the non-Han characters in the Base Multilingual Plane of Unicode, including Latin, Cyrillic, Greek, Arabic, Hebrew, Coptic, Armenian, Georgian, Runes, Ogham, Canadian Syllabics, Cherokee, Tibetan, Math, Symbols, Line and Box Drawing, Dingbats, and APL (not supported, besides Han, are Indic, Hangul, Ethiopic, Syriac, Thai, Lao, Myanmar, and Braille). This is not a free font so it is no longer included with Kermit 95, but if you previously purchased Kermit 95 v2.x you should still be able to use it with the current version of Kermit 95. CLICK HERE for a sample.

### Proportional Fonts

Kermit 95 lets you choose any font installed on your PC, even proportionally-spaced fonts such as Times New Roman, in which (for example) the letter "i" is narrower than the letter "m". However, K95G is not designed to use proportional fonts and if you use them, spacing won't be correct in most cases.

### Font Resources

- UTF-8 sampler
- K95G screenshots with different fonts
- Unicode Fonts for Windows (Alan Wood)
- Everson Typography (Michael Everson)
- Microsoft font download site
- Monotype Imaging

### Character Sets

The font used by K95G has a particular encoding, either Unicode (many writing systems) or else one of the many PC or Microsoft code pages (one language, region, or writing system each). The host to which K95G is connected is most likely using a different character encoding, such as ISO 8859-1 Latin Alphabet 1 (or one of the other Latin Alphabets); some proprietary host character set like HP Roman8 or Data General Multinational; some national standard set like JIS X 0201; perhaps even Unicode in its UTF-8 format (among many other possibilities). Kermit 95's job is to convert between the two encodings. It already knows its own font and encoding; your job is to inform Kermit 95 of the encoding used on the host. You can do this in the Character Set combo box on the K95G Toolbar, with the SET TERMINAL CHARACTER-SET command, or (when finer-grained control is needed) with the SET TERMINAL REMOTE-CHARACTER-SET command. If host text contains characters that are not also in your current font, K95G displays an empty box or a question mark; in that case, you should try (or obtain) another, more appropriate font.

Note that the character-set combo box does not reflect host-initiated character-set switching since, in certain applications, this could change on a per-character basis, e.g. with ISO 2022 line/box-drawing applications. It shows the latest user-selected character set, either by the combo box or by the SET TERMINAL CHARACTER-SET or SET TERMINAL REMOTE-CHARACTER-SET command, or when implied by a terminal emulation selection (such as ANSI, which expects the host character set to be CP437). You can see the current detailed character set assignments with the SHOW CHARACTER-SETS command.

### Unicode

For a long time, terminals and terminal emulators – and the host applications that they access – used only single-byte 7-bit or 8-bit character sets such as ASCII, ISO 646, or ISO 8859. From the late 90s, there was a movement to make Unicode available in the terminal-to-host setting, in which the Kermit Project was an active participant. The encoding used "on the wire" is called UTF-8 (Unicode Transformation Format 8), which is compatible with ASCII; that is, all ASCII text is automatically also UTF-8 text. Today most host-based applications understand UTF-8, including the Linux Console, xterm, EMACS, Python, Tcl/Tk, etc. (More about UTF-8 in Linux and Unix in general HERE).

It is always best to use a Unicode monospace font such as Everson Mono Terminal, Andale Mono (or Andale Mono WT J), Courier New, or Lucida Console, because it is most likely to contain all the characters that are in the host character set, no matter what the host character set is.

When using UTF8 as your terminal character-set, you should be aware of some new wrinkles. First of all, there is no ISO 2022 character-set switching because (a) UTF8 is incompatible with ISO 2022 (except insofar as ISO 2022 can be used to switch into and out of UTF8), and (b) UTF8 doesn't need to switch character sets, since by definition, it already contains all the characters that are in any set you would switch to. However, this also means that host-based software that uses ISO 2022 to put up forms, math, and so on, doesn't work when your terminal character-set is UTF8. In other words, for anything beyond ordinary plain-text display, UTF8-aware host applications are required.

To illustrate, you can use UTF8 safely to TYPE (cat) files, read email, and so on, but you can't use ANSI X3.64 / ISO 2022 forms-based software with UTF8 as your terminal-character-set. It's also problematic in text editors like EMACS (at least prior to UTF8-aware versions) or VI, because they don't know (for example) that three bytes make one character -- they think it's three characters -- so screen positioning and formatting don't work as you might expect, nor do character deletion or other character operations. Entering UTF8 characters (anything beyond ASCII) into applications might or might not work, depending on the application.

Of course host-based forms-filling applications can be written using UTF-8 rather than ISO 2022, but you probably won't find any, except maybe in new or experimental versions of Linux, or maybe in Plan 9.

### Switching Fonts

If you are displaying text a language or script that is not covered by your font, you will see lots question marks or empty boxes on your terminal screen, which means the font does not contain a character that needs to be displayed. If you change to a more appropriate font, the screen is automatically repainted and the missing characters show up if they are in the font. Conversely, if you change to a more restrictive font, some characters might change into empty boxes or question marks.

The same considerations hold for line- and box-drawing characters, math and technical characters, etc. Some fonts have them, some don't. ANSI terminal emulation (used with BBS's, SCO operating systems, etc), with its "PC graphics" use of single and double lines, borders, "shadows", etc, works with fonts like Andale Mono, Courier New, Lucida Console, and Everson Mono Terminal, but not (for example) with Courier or Terminal.

### Switching Character Sets

To say that a particular host uses a particular character set is an oversimplification. Host computers, in general, are totally ignorant of character sets. They simply store and send bytes blindly. The interpretation is up to the display device, such as a terminal, terminal emulator, or printer. If you set K95G's TERMINAL CHARACTER-SET to LATIN1, and you type text in Spanish, Italian, or German, everything looks right to you. But if somebody else accesses the same files on the same host with some other TERMINAL CHARACTER-SET, the "special" (accented) letters will be wrong. Data does not identify its own character set – it's always up to the display device or application to use the same character set that was used by the creator of the data.

A good case in point is text-based e-mail or netnews, using a client that is ignorant of character sets. When you are using a terminal emulator to read e-mail or netnews on the host, you are very likely to encounter messages with different encodings: Latin-1, Latin/Cyrillic, Japanese EUC, UTF-8. If you're interested in viewing these messages correctly, you'll need to have a Unicode font (so you don't have to be constantly changing fonts), but you will still have to change K95G's character set for each message, which, presumably, is indicated in the message headers, e.g.:

      Content-Type: text/plain; charset="iso-8859-1"

This is a bit inconvenient, especially since MIME (more precisely, IANA) character set names do not necessarily correspond to Kermit names, and because you'll need to redisplay the message after changing to the appropriate character set. But it's still a great leap forward from the old days, when you didn't have a prayer of reading a message in the "wrong" character set, let alone in an entirely different script! To ease the pain somewhat, here's a table showing the correspondence of the Kermit and MIME names (Kermit names predate MIME names):

> IANA | Kermit | Description
> --- | --- | ---
> iso-8859-1 | latin1 | ISO 8859-1 Latin Alphabet 1 (West European)
> iso-8859-2 | latin2 | ISO 8859-2 Latin Alphabet 2 (East European)
> iso-8859-5 | cyrillic-iso | ISO 8859-5 Latin/Cyrillic Alphabet
> iso-8859-6 | arabic-iso | ISO 8859-6 Latin/Arabic Alphabet
> iso-8859-7 | greek-iso | ISO 8859-7 Latin/Greek Alphabet
> iso-8859-8 | hebrew-iso | ISO 8859-8 Latin/Hebrew Alphabet
> iso-8859-15 | latin9 | ISO 8859-15 Latin Alphabet 9 (West European + Euro)
> utf-8 | utf8 | Unicode UTF-8

This is just a sampling, but you get the idea. You can see the list of K95G's available terminal character-set names in the character-set combo box on the Toolbar, or by typing "set terminal char ?" at the K-95> prompt.

### Entering Non-ASCII Characters

When your font and character-set are chosen appropriately, you have four ways of typing "special" (accented or non-Roman) characters:

1. If the characters are on your national keyboard, just type them.

2. Choose the appropriate keyboard driver in Windows and use whatever input method is available. Kermit 95 automatically converts the characters you type to the host character set.

3. For Latin-1 (West European) and Latin-2 (East European Roman alphabet) languages, use K95G's "Compose Key" (Alt-c, also found in the Actions menu).

4. For any language at all, use K95G's Unicode "compose key" (Alt-n, also in the Actions menu).

### Limitations

- K95G does not support Japanese, Chinese, Korean, Indic, Thai, Armenian, Georgian, Khmer, Ethiopic, or many other scripts directly as terminal character sets, in the sense that it can convert between different encodings for them, but you can still have UTF-8 terminal sessions in these scripts. Although Kermit knows how to convert several Japanese character sets in file transfer, it does not handle them in terminal emulation since they require a duospace font, and as far as we know, none is available for Windows.

- Combining characters are not handled in UTF-8 sessions (in the screen shot, this is evident in the Hindi text).

- K95G does not handle bidirectionality, e.g. in Arabic or Hebrew terminal emulation; that is the responsibility of the host application (you can see this in the screen shot too; the Unix "cat" command does not handle Hebrew and Arabic text, thus it comes out backwards in this example, whereas a Hebrew-or-Arabic aware application would send the characters to the terminal in display order).

- K95G's terminal emulator works just like the terminal it is emulating as far as printing is concerned; it does not recode or reformat the host bytes in any way, thus non-ASCII text can be printed only if the printer supports the host character set.

Some of these limitations might be lifted in future releases.

### Entering Accented Characters

[Next] [Previous] [Chapter Index] [Contents] [Top]

References:

- Using C-Kermit, Chapter 16.
- Terminal Character-Set Terminology and Mechanics
- Latin-1 Compose-Key Table.
- Latin-2 Compose-Key Table.
- Cyrillic Terminal Emulation.
- Hebrew Terminal Emulation.

This section explains how to enter accented or other special Roman characters on keyboards that don't have them, when the keyboard driver does not also offer alternative input methods (like "dead keys").

If you are German living in Germany, your PC keyboard probably has keys for all the special German characters: A, E, and U with Umlauts on top as well as German double "s" (Ess-Zet). But suppose you need to type German text and you don't have a German keyboard? The same goes for Italian, Portuguese, Norwegian, Spanish, French, Polish, Czech, Hungarian, and all the other European languages that use the Roman alphabet.

In the world of character sets, these are called the "Latin-1" and "Latin-2" languages, because all of the accented and special letters used in these languages can be found in ISO Latin Alphabets 1 and 2 (listed in Using C-Kermit, Table VII-4, pages 560-563).

- The Latin-1 languages are the West European languages: Italian, Portuguese, Norwegian, English, Spanish, French, German, Icelandic, Dutch, Danish, Swedish, Faeroese, Latin, Flemish, Frisian, etc.

- The Latin-2 languages are the East European languages that are written with Roman letters: Polish, Czech, Hungarian, Romanian, Albanian, Croatian, Slovene, and so on (NOTE: some Slavic languages, such as Serbian, can also be written with Cyrillic letters).

Although Latin-1 and Latin-2 languages share substantially the same alphabet, they use a different set of accents.

Characters that exist in Latin-1 and Latin-2 languages can be entered into K-95's terminal window using Compose-key sequences, similar to those on a VT220 or VT320 terminal. Press the Compose key, which is Alt-C unless you changed it (the keyboard verb is `\Kcompose`), and then two more keys to produce the desired character, for example `'` (apostrophe or acute accent) and A to send A-acute.

Don't hold the Compose key down while typing the two other keys -- it does not work like a shift key. You can watch your progress in the status line, and you can push the help key (Alt-H by default) while a compose sequence is active to get a special help screen reminding you how to enter the compose sequence.

Press the space bar to cancel a compose-key sequence. If you enter a valid sequence, it is translated to your terminal character-set and then sent to the other computer.

The Latin-1 and Latin-2 Compose sequence tables are accessible from the References at the top of this section. If you enter a character combination that is not in the appropriate table, K-95 beeps and ignores it. Notice that case (shift key) matters for letters, but not for most symbols. Also the order of the two characters usually doesn't matter. The Latin-1 compose sequences supported by K-95 are the same as those supported by DEC US-model VT220 terminals in "ISO" mode. There are no "dead keys" (unless your keyboard driver supports them itself). The full repertoire listed in the tables is possible only if your code page contains all the needed characters. If you are using a code page that does not, some of these characters might appear as question marks or without accents because they don't exist in your code page.

Windows 95/98/NT/ME/2000/XP/etc support the installation of multiple keyboard layouts via the Keyboard Control Panel. This feature allows you to install any combination of layouts which is useful if you need to use German for some applications and U.S. English for others. Pressing the Left Alt key and the Left Shift key at the same time switches among the installed keyboard layouts.

K95 1.1.21 and later supports direct entry of 16-bit Unicode UCS-2 values via the new Unicode Compose Key, Alt-N by default. In this case, you must type exactly four hexadecimal digits denoting the code value of the desired character. This feature is useful to those who have Unicode charts handy, either in the Unicode Standard (a book) or on any of various websites including the Unicode one, or a simple one HERE at the Kermit website. As with the regular Compose key, you can use the space bar to cancel a compose sequence and you can use Alt-H while in Unicode Compose mode to get a popup help screen.

### Key Mapping

[Next] [Previous] [Chapter Index] [Contents] [Top]

References:

- Table of Key Codes
- Keyboard Verb List
- Default Key Map
- ASCII Table

Just because a PC key is labeled so-and-so does not necessarily mean that pushing it will make so-and-so happen on the other end when the PC is emulating a terminal. The remote service or application must allow for that function, and K-95's keys must be programmed to send what the application expects. This is especially important when the application thinks it is talking to some particular kind of terminal, say a VT220, but you are really using a PC, which has a completely different kind of keyboard. That's where key mapping comes in.

Each of Kermit 95's terminal types includes a complete built-in key map, which assigns the functions of each of the terminal's keys to the corresponding PC key (or if the keys do not exactly correspond, to a reasonable facsimile thereof). You can use this key map as provided, or you can customize it to any desired degree.

Kermit 95 lets you assign practically anything to practically any key or key combination. This is done at the K-95 prompt or in a command file. To change a key's assignment, you first need to know the key's keycode. This is a number that uniquely represents the key or key combination. CLICK HERE for a table of keycodes.

However, you don't necessarily need a table. You can copy sections from the default key map, the `\v(common)KEYMAPS\DEFAULT.KSC` file and make appropriate changes, or you can use the `SHOW` `KEY` command, explained below.

Here are the commands for making key assignments:

`SHOW KEY`
  Kermit prompts you to press a key (or key combination, such as Alt-x or Ctrl-Shift-3). Once you do this, Kermit shows you the key's keycode and its current definition, e.g.:

        K-95> show key
         Press key: Shift-ESC is pressed
         Key code \539 Shift-ESC (default) => Character: ~ \126
        K-95>

`SET KEY keycode [ assignment ]`
  This form applies to all terminal types; it is "sticky" when you switch between types. The keycode is a number. When entered in decimal notation (such as 368, which is the code for the F1 key) it may be entered "plain" (368) or, for compatibility with MS-DOS Kermit, with a preceding backslash (\368).

`SET TERMINAL KEY type keycode [ assignment ]`
  This form applies only when the given type of terminal emulation or (when a keyboard mode is active.

`SET TERMINAL KEY type /LITERAL keycode [ assignment ]`
  A variation on `SET` `TERMINAL` `KEY` that specifies that the definition characters are to be sent literally, without translation of any kind. Normally, any text (characters or strings, but not escape sequences) generated by keystrokes are translated according to your current terminal character-set selections.

Kermit 95 has complete default keymaps built in for each type of terminal. A copy of the keymap (it is quite large) can be found in the `\v(common)KEYMAPS\DEFAULT.KSC` file. Note that Kermit 95 does not use this file; it was created with the `SAVE` `KEYMAP` command for your reference, and as a model for creating keymap files.

In a `SET` `KEY` or `SET` `TERMINAL` `KEY` command, the keycode is a numeric value unique to each key and key combination, such as A, Shift-A, Ctrl-A, Alt-A, Ctrl-Alt-A, etc. You can find out what the keycode is by typing `SHOW` `KEY` and then pressing the desired key or key combination. Here are some examples:

> Key or Combination | Keycode | Default Assignment
> --- | --- | ---
> A | `\97` | a
> Alt-A | `\2145` | Depends on terminal type
> Alt-Shift-A | `\2113` | None
> Ctrl-A | `\1` | Ctrl-A
> Ctrl-Alt-A | `\3393` | Depends on terminal type
> Ctrl-Shift-A | `\1025` | None
> Ctrl-Alt-Shift-A | `\3905` | Depends on terminal type
> Shift-A | `\65` | A
> F1 | `\368` | Depends on terminal type
> Alt-F1 | `\2416` | Depends on terminal type
> Ctrl-Alt-F1 | `\3440` | Depends on terminal type

Note that some keys, like Shift, Alt, and Ctrl, do not produce keycodes by themselves, but only when they are used with other keys.

For example, to assign the uppercase letter X to the Alt-A key combination:

      K-95> set key \2145 X    (Assign X to Alt-A)

Now every time you hold down Alt and press the A key, K-95 sends "X".

To assign a control character, such as Ctrl-C, to a key, you have to use its numeric ASCII code preceded by a backslash. Ctrl-C is ASCII code 3, so to assign this to Alt-A:

      K-95> set key \2145 \3   (Assign Ctrl-C to to Alt-A)

This is called "backslash notation", which is used to include special characters in commands. Just precede the decimal ASCII value of the character with a backslash to refer to the character. In case of ambiguity, enclose the code in braces: `\{126}`.

A common use for key mapping is to swap PC keys to different positions that you prefer. For example, many people like to swap the Esc and Accent Grave (`) keys. Here is how you would do it. Return to the Command screen first. Then:

      K-95> set key \96 \27    (Assign Esc to Accent Grave key)
      K-95> set key \27 \96    (Assign Accent Grave to Esc key)

But let's not stop there. You can also assign sequences of characters to a single keystroke. Here we assign the word "exit" followed by a carriage return (CR, the control character that is normally sent when you press the Enter key, ASCII code 13) to the F10 key:

      K-95> set key \377 exit\13 (Assign "exit" + CR to F10)

Another kind of thing you can assign to a key is a "Kermit verb" (Kverb for short). Kverbs start with "\K", followed by some more letters. Kermit 95 has hundreds and hundreds of them. CLICK HERE to see the complete list. The most important Kverb is `\Kexit`, which originally meant "exit from the Terminal screen back to the Kermit prompt" (hence its name), but now it means "switch between the Terminal Screen and the Command Screen", so you can use it to go both ways.

This Kverb is normally assigned to Alt-X, as you can see on the Terminal-screen status line. When you hold down Alt and press the "X" key, you are back in the Command screen. Suppose you feel that the F7 key is more intuitive for this purpose. Here's how to assign the `\Kexit` verb to the F7 key:

      K-95> show key                 (Find out about a key)
       Press key: <F7>               (Press the F7 key)
       Key code \374 F7 => Undefined (See keycode and definition)
      K-95> set key \374 \Kexit      (Enter new definition)

Now whenever you press the F7 key while in the Terminal screen, K-95 returns to the Command screen. By the way, in case you don't know the keycode for this key, you can perform this assignment in one step as follows:

      K-95> set key                  (Find out about a key)
       Press key to be defined: <F7> (Press the F7 key)
       Key code \374 F7 => Undefined (See keycode and definition)
       Enter new definition: \Kexit  (Enter new definition)

The definitions shown so far are very simple, but you can create definitions that are more complicated. For example, you can mix text with Kverbs. You can have multiple Kverbs. You can even define your own "hot key" commands by creating a macro and then assigning the macro to the key of your choice:

      define testing echo Hi there!, sleep 2, echo Goodbye..., sleep 1, connect
      set key \368 \Ktesting  ; Assign the macro to the F1 key

This doesn't do anything particularly useful, but it illustrates the technique. You can call the macro anything you like, as long as the name is not the same as any Kverb name.

At any time, you can save your current key settings with the command:

`SAVE KEYMAP [ filename [ { NEW, APPEND } ] ]`
  Saves the current map to a file. If you don't specify a filename, `KEYMAP.KSC` is used. If you don't specify `NEW` or `APPEND` after the filename, a new file is created. If you specify the name of an existing file, and then `APPEND`, the material is written to the end of the existing file. The keymap is written in the form of a series of `SET` `KEY` commands, one for each key that has a non-default definition. Thus you can `TAKE` a `SAVE` `KEYMAP` file to execute all of the `SET` `KEY` commands that are in it.

The `DEFAULT.KSC` file was created by starting Kermit 95, without any keyboard customizations, and giving a `SAVE` `KEYMAP` command.

### Special Keyboard Modes

[Next] [Previous] [Chapter Index] [Contents] [Top]

References:

- Cyrillic Keyboard Mode
- Hebrew Keyboard Mode

As noted, each of K-95's emulations comes with its own built-in default key map and its own set of Kverbs. When you switch emulations, the keymap switches too. In addition, you can also put your Keyboard into various "modes", independent of the terminal emulation:

> Mode | Kverb | Default Assignment | ID | Description
> --- | --- | --- | --- | ---
> NORMAL | `\KkbEnglish` | C-A-S-N |  | English ("normal") mode
> EMACS | `\KkbEMACS` | C-A-S-E | E | For use with the EMACS editor
> WP | `\KkbWP` | C-A-S-W | W | For use with WordPerfect
> RUSSIAN | `\KkbRussian` | C-A-S-R | R | For typing Cyrillic letters
> HEBREW | `\KkbHebrew` | C-A-S-H | H | For typing Hebrew letters

The Kverbs for each of these except "Normal" is a toggle -- it turns on the mode if it is off, and vice versa. C-A-S means Ctrl-Alt-Shift, i.e. hold down the Ctrl, Alt, and Shift keys all at the same time, and press the indicated letter key. The ID letter is shown in the status line after the emulation name when the mode is active, e.g. "VT320-E".

You can also select a special keyboard mode with the command:

      SET TERMINAL KEYBOARD-MODE { NORMAL, EMACS, HEBREW, RUSSIAN, WP }

The special keyboard modes are:

EMACS
  For use with the host-based EMACS text editor. Arrow keys are mapped to move the cursor around in EMACS buffers, editing keys like Page Up assume the expected values, and the Alt key behaves like a Meta key (so, for example, You can use Alt-F instead of Esc-F for "Forward Word"). The complete list of EMACS-mode key assignments can be found in the `KEYMAPS\DEFAULT.KSC` file.

Word Perfect
  For use with host-based versions of Word Perfect on UNIX or VMS. This mode sets up the keys approximately as for PC Word Perfect.

Hebrew
  For entering Hebrew letters on Roman keyboards. CLICK HERE for details.

Russian
  For entering Cyrillic letters on Roman keyboards. CLICK HERE for details.

With the keyboard modes, your global SET KEY definitions, and the terminal-type-specific key map (all customizable), you have three levels of keyboard definitions that interact in a precise way. This structure allows the default keyboard map to be replaced when the terminal type or keyboard mode changes without making you redefine keys each time.

    Kermit 95's Keyboard Map Architecture
                           [Special Keyboard Modes]
    		 +-----------+----------+----------+
    		 |           |          |          |
    	       EMACS      HEBREW     RUSSIAN   WORDPERFECT
    		 |           |          |          |
    		 +-----------+-----+----+----------+
                                       |
                              [SET KEY Definitions]
                                       |
                   [Terminal-Emulation-Specific Definitions]
            +--------+--------+--------+--------+--------+--------+
            |        |        |        |        |        |        |
          VT52     VT100    VT220     WYSE    DG200     TVI      etc...
            |        |        |        |        |        |        |
            +--------+--------+--------+--------+--------+--------+

When processing each keystroke, Kermit searches for the current definition of the key through the hierarchy shown in the figure. If a special keyboard mode (EMACS, WP, Hebrew, or Russian) is active it is searched first. Otherwise, the user's SET KEY definitions are checked, and if none is found, then the current terminal emulation keymap.

#### Setting the Keyboard Mode

These keyboard modes can be selected not only by "hot keys" (which have the corresponding Kverbs assigned), but also with the following command:

      SET TERMINAL KEYBOARD-MODE { NORMAL, EMACS, HEBREW, RUSSIAN, WP }

#### Displaying Mode-Dependent Key Mappings

You can display the assignment of any key (or all keys) in the current mode, or in any given mode with the command:

      SHOW KEY [ { ALL, ONE } [ { DEFAULT, mode } ] ]

SHOW KEY by itself is equivalent to SHOW KEY ONE DEFAULT, i.e. let me press one key or key combo and show me its assignment in the Terminal screen for the current keyboard mode (Normal, EMACS, WordPerfect, Hebrew, or Russian).

### The PCTERM Keyboard

[Next] [Previous] [Chapter Index] [Contents] [Top]

PCTERM is a special keyboard mode all its own, presently available in Windows only (not OS/2). PCTERM is not included with the other Keyboard modes described in the previous section since its behavior is fundamentally different.

> Before you attempt to use PCTERM, please read this entire section.

PCTERM is not a terminal emulation. Rather, it is a way of communicating precise PC keystrokes across the communications connection, independent of the terminal emulation. Conceptually, PCTERM is like disconnecting your keyboard from Kermit 95 and plugging it directly into the other computer.

PCTERM can be used together with any of Kermit 95's emulations, although most often it is used with PC-oriented emulations such as SCOANSI and AT386. Some physical terminals, such as DEC VT520, Wyse 350/370, and Data General, have PCTERM options too, and older PC-based UNIXes (such as early Linux releases) require a full PC keyboard, and therefore PCTERM, for their console.

PCTERM can switched on and off in two ways:

1. (K95G only) In the Menu bar: Actions → PCTERM Keyboard.

2. With Ctrl-CapsLock; that is, by holding down the Ctrl key and pressing the Caps Lock key. This is the only key combination that K-95 does not "ignore" in PCTERM. If your Ctrl and/or CapsLock keys are remapped (e.g. using Ctrl2Cap or Kernel Toys), use the keys that these functions are mapped to. WARNING: Versions of Ctrl2Cap that were distributed with Kermit 95 1.1.16 and earlier remove the Caps Lock function from the keyboard entirely, and therefore PCTERM can not be used with them. The version of Ctrl2Cap that is included with Kermit 95 1.1.17 and later is compatible with PCTERM: the Caps Lock key becomes Ctrl, and the left Ctrl key becomes Caps Lock.

3. If you wish, you can assign an "escape hatch" to a mouse event, e.g.:

         set mouse button 2 alt click \Kexit

   This puts "Switch between Terminal and Command Screen" on Alt-Button-2. But in this case, too, the Alt-Down keycode is sent to the host before the switch takes place. To avoid this, you can assign `\Kexit` to an unmodified button:

         set mouse button 2 none click \Kexit

   but this might conflict with future plans for Button 2.

4. The following command can be used to turn PCTERM on and off:

         SET TERMINAL PCTERM { ON, OFF }

   In the Console version of K95, do not use this command without first checking that you can enter and exit PCTERM with Ctrl-CapsLock; if you can't, then once `SET` `TERMINAL` `PCTERM` `ON` is given and the Terminal screen is entered, there is no way to get back unless you have configured the mouse to do it.

PCTERM is active only in the Terminal screen. It has no effect in the Command screen. When PCTERM is active:

- An appropriate notation appears in the Terminal screen status line.

- A code is sent to the host every time a key is pressed and every time a key is released. These are the same "hardware" keyboard codes that the keyboard itself sends to the PC. The PC keyboard definitely does NOT behave a like a typewriter in PCTERM.

- There is no key mapping in PCTERM. There are no Kverbs. Each key has a unique code. There is no way (or reason) to change it. Every key on the PC keyboard must send its normal code.

- Since keycodes are 8-bit quantities that can have any value at all, the communications connection must be totally transparent to all data patterns (except Telnet connections, where K95 does the appropriate quoting).

- Certain keys or key combinations are invisible to Kermit 95, since Windows traps them first: Pause, Ctrl-Alt-Del, etc. If K95 can't see them, it can't send them.

Since there are no Kverbs, the normal methods for returning to the Command screen do not work. For example, Alt-x, instead of returning to the Command screen sends "Alt Down", "x Down", "x Up", "Alt Up" -- that's what is supposed to happen in PCTERM. So to get back to the command screen, or to use any of the other keys that are special to K95 (such as Page Up for screen scrollback, Shift-Insert to paste from the clipboard, etc), first you must exit PCTERM mode or, if the desired action is in the K95G Actions menu, use the mouse.

Ctrl-CapsLock is the "standard" toggle for PCTERM, and it is used on terminals (such as the VT520 or Wyse with PC Keyboard) that support PCTERM. Remember, however, that when you press the Ctrl key, a "Ctrl Down" code is sent to the host before K95 sees the CapsLock-Down event that toggles it out of PCTERM.

As you can see, PCTERM is not without its pitfalls and hazards. It can be used only with hosts or services that expect it, and only over 100% 8-bit transparent connections.

### The VTNT Keyboard

[Next] [Previous] [Chapter Index] [Contents] [Top]

Unlike PCTERM, which is a special keyboard mode that can be used with any terminal type, VTNT is specific to the Microsoft Windows 2000 and XP Services for UNIX, in which each key event sends a Windows-specific data structure, allowing keystrokes to be interpreted by the server as if they were coming from its local keyboard, with all its locale-specific information about character sets and keyboard layouts. Once the VTNT terminal starts there is no method for returning to the Kermit 95 command prompt since every key event is used by VTNT already.

### MS-DOS Kermit SET-KEY Compatibility

[Next] [Previous] [Chapter Index] [Contents] [Top]

References:

- Gianone, Christine M., Using MS-DOS Kermit, Second Edition, Digital Press (1992).
- MS-DOS Kermit and K-95 Keycode Tables

MS-DOS Kermit and Kermit 95 are both products of the Kermit Project, but they are totally separate software packages. In most ways, Kermit 95 is a "superset" of MS-DOS Kermit, so most MS-DOS Kermit command files and scripts are portable with minimal modifications to Kermit 95, with one major exception.

Since Kermit 95 must access the keyboard through Windows or OS/2 drivers, it sees different keycodes than those seen by MS-DOS Kermit, which goes straight to the PC BIOS. Thus, MS-DOS Kermit and Kermit 95 key maps are not directly interchangeable. To address this problem, Kermit 95 can import (and export) MS-DOS Kermit key maps. The command is:

`SET MSKERMIT KEYCODES { OFF, ON }`
  Controls which set of keycodes is expected by Kermit 95 when processing `SET` `KEY` and `SET` `TERMINAL` `KEY` commands, and when writing key map files with `SAVE` `KEYMAP`. The default is `OFF`, for native Kermit 95 keycodes. Select `ON` for MS-DOS Kermit keycodes.

Suppose you have a file called `OLDKEYMAP.KSC` containing MS-DOS Kermit `SET` `KEY` commands. You can use this file with Kermit 95 as follows:

      set key clear              ; Clear all key definitions.
      set mskermit keycodes on   ; Use MS-DOS Kermit keycodes
      take oldkeymap.ksc         ; Execute a file full of MS-DOS Kermit SET KEYs

Now suppose you want to export these definitions in native Kermit 95 format:

      set mskermit keycodes off  ; Now use Kermit 95 keycodes
      save keymap newkeymap.ksc  ; Save the key map in Kermit 95 format

You can also reverse the process to export Kermit 95 keymaps to MS-DOS Kermit. Kermit 95 includes the appropriate `SET` `MSKERMIT` `KEYCODES` command in the saved file, so the keycodes are interpreted correctly when it is executed again.

### Automating Actions in the Terminal Screen

[Next] [Previous] [Chapter Index] [Contents] [Top]

The `CONNECT` command, by which you tell Kermit 95 to enter the Terminal screen, accepts the following modifier switches:

`/TRIGGER:string`
  One or more strings to look for that will cause automatic return to command mode. To specify one string, just put it right after the colon, e.g. "`/TRIGGER:Goodbye`". If the string contains any spaces, you must enclose it in braces, e.g. "`/TRIGGER:{READY TO SEND...}`". To specify more than one trigger, use the following format:

        CONNECT /TRIGGER:{{string-1}{string-2}...{string-n}}

  Upon return from `CONNECT` mode, the variable `\v(trigger)` is set to the trigger string, if any, that was actually encountered. This value, like all other `CONNECT` switches applies only to the `CONNECT` command with which it is given, and overrides (temporarily) any global `SET` `TERMINAL` `TRIGGER` string that might be in effect.

`/IDLE-LIMIT:number`
  The number of seconds of idle time, after which Kermit 95 returns automatically to command mode; default 0 (no limit).

`/IDLE-INTERVAL:number`
  The number of seconds of idle time, after which Kermit automatically transmits the idle string.

`/IDLE-SEND:string`
  The string to transmit whenever the idle interval has passed.

`/TIME-LIMIT:number`
  The maximum number of seconds for which the CONNECT session may last. The default is 0 (no limit). If a nonzero number is given, Kermit returns" automatically to command mode after this many seconds.

Additional idle controls are available as SET TERMINAL commands, notably SET TERMINAL IDLE-ACTION, which tells K95 what to do when the idle limit is reached: exit, hangup, send specified text, etc.

Other automation features for the Terminal screen include:

Execution of Kermit Commands Sent by the Host
  In VT100 and higher emulation, Application Program Command (APC) sequences are assumed to contain Kermit commands. These are executed if you have enabled this feature in Kermit 95 (normally it is disabled for security reasons). APCs are described in detail Using C-Kermit, pages 278-279.

Host-Controlled Return to Command Mode
  The `CLEAR APC` command allows the host to send an APC sequence that, after execution, does not return to the terminal screen. So (for example) if C-Kermit is on the remote end of the connection and you give it the following command:

        apc echo This is a message, clear apc

  Kermit 95 returns to its command screen, prints "This is a message", and then issues its prompt.

The PRODUCT Macro
  MS-DOS Kermit 3.0 and later includes a feature called the PRODUCT macro, originally introduced to work with host-based Lotus programs, in which an escape sequence is used to pass arguments to a Kermit macro called PRODUCT, if one is defined.

  The original format of this escape sequence was:

        <CSI> P1;P2;...P9 ~

  where P1 through P9 are one or more (up to 9) parameters, separated by semicolons, and `<CSI>` is `<ESC> [` (`<ESC>` is the ASCII Escape character), or its 8-bit equivalent.

  Unfortunately, this format collided with the later DECTME sequence, so K95 and later versions of MS-DOS Kermit support a slightly different format:

        <CSI> < P1;P2;...P9 ~

  ("`<`" inserted before the parameters). When this sequence is received, the PRODUCT macro is invoked with the value of P1 assigned to `\%1`, P2 to `\%2`, and so on up to the number of arguments provided (or 9, whichever is smaller).

A typical use for the PRODUCT macro would be to allow various products to set up the terminal emulator for use with them. Suppose, for example, that P1 is a numeric code that identifies the application, and that 0 is the code for the EMACS editor, 1 is the code for host-based WordPerfect, 2 is the code for host-based Lotus, and 3 is the code for the Hebrew ALEPH library catalog software system:

      define PRODUCT {
          switch \%1 {
    	  :0, set terminal keyboard mode emacs, break;
    	  :1, set terminal keyboard mode wp, break;
    	  :2, take lotus.ksc, break
              :3, set term keyb hebrew, set term char hebrew, break
    	  (etc etc)
          }
      }

Write the PRODUCT macro definition to fit your requirements, and put the definition in your `K95CUSTOM.INI` file (`K2CUSTOM.INI` in OS/2) or host-specific login script.

### Capturing Terminal Sessions

[Next] [Previous] [Chapter Index] [Contents] [Top]

We've already shown you several different ways to capture material from the computer or service you are connected to, most of them involving redirection of printer material to a file, and then using various buttons and keys to cause screens, or parts of them, to be printed or saved. Those methods all result in plain text being printed or recorded. That is, they show what was on the screen after the terminal emulator put it there, and they do not show any special effects.

But sometimes it is desirable to capture exactly what the other computer sent: control characters, escape sequences, and all. This is often needed for troubleshooting. For example, you might want to report a suspected terminal emulator malfunction . You'd probably be asked to send a session log so the problem can be analyzed. A happier reason would be to capture a session so you can replay it at a later time, special effects included. For example, suppose you stumbled upon a terrific BBS and you wanted to convince all your friends to join it too. Here again, a session log is just what you need. To create a session log, get into K-95's Command screen (use Alt-X for this if you're in the Terminal screen) and give the following command at the prompt:

`LOG SESSION [ filename ]`
  Record all characters that arrive during terminal emulation in the given file. If the filename is omitted, a file called SESSION.LOG is created in Kermit's current directory. To stop logging, use `CLOSE SESSION`.

In K95G, you can also turn session logging on and off in the Actions menu, item "Capture", which gives you a file dialog allowing you to specify where to put the log file and what to call it.

To replay a session log, transfer it in binary mode to another computer (after you read the next chapter), and then use the other computer's TYPE command or equivalent (such as "cat" in UNIX) to display it in K-95's Terminal screen. Make sure you have K-95 set to the same terminal emulation and other terminal-related settings as when you made the log.

You can also replay a session log locally, but the method for doing so is not exactly intuitive. Suppose the log file is `SESSION.LOG` and it was captured in a VT320 terminal session. To replay it, start up a fresh copy of Kermit 95 (that does not have a connection). Then:

      SET TERMINAL TYPE VT320
      SET INPUT PACING 50
      SET NETWORK TYPE FILE
      SET HOST SESSION.LOG
      CONNECT

This displays the session, pausing 50 milliseconds between each character so the display does not flash past instantly. Omit the `SET` `INPUT` `PACING` command if desired, or change the number for best results. Once in the terminal screen, you can use Scroll-Lock to pause the input and the Page Up, Page Down, and other screen-scrolling keys in the normal way to move around within the session log.

### Debugging Terminal Sessions

[Next] [Previous] [Chapter Index] [Contents] [Top]

Suppose you want to see with your own eyes exactly what characters are being sent to Kermit. Normally you can't see escape sequences, control characters, APCs, and the like, because the terminal emulator treats them as commands rather than showing them to you. But you can put the Terminal screen into "debug mode," in which all characters, including and escape sequences, are displayed graphically.

The session debugging feature can be toggled on and off while in the Terminal screen with Alt-D (or whichever other key the `\Kdebug` verb is assigned to). In K95G, you can turn debugging on and off in the Actions menu. When debugging is in effect, the word "DEBUG" replaces the terminal emulation name in the status line.

Here's what happens in Debug mode:

- TELNET negotiations are written out in highlighted words.

- Control character codes 0 - 31 are displayed as the corresponding letter (e.g. A for Ctrl-A), but using the underline-simulation color. Carriage-Return/Linefeed pairs are shown as MJ in underline color, and also start a new screen line for readability.

- DEL (127) is displayed as a question mark with underline coloring.

- Control character codes 128 - 159 are displayed literally in the current code page, but using reversed underline color.

- Escape sequences are shown in reverse video.

- All other characters are shown as is. This means that characters 32-126 are shown as normal ASCII graphics; 160-255 are shown as 8-bit graphics in the current code page.

Debug screens can be rolled back for quiet contemplation. K-95's Print-Screen feature (Alt-P) and copy-and-paste features can be used to record terminal debugging screens (even rolled-back ones) on the printer or in a disk file. Of course, the colors and highlighting are lost.

### Tuning Terminal Screen Performance

[Next] [Previous] [Chapter Index] [Contents] [Top]

Reference: SET TERMINAL Command Summary

Due to the wide variety of PC video adapters and Windows and OS/2 drivers for them, and numerous other factors, there can be no single screen update strategy that works best for everyone. Therefore, Kermit 95 includes commands to let you choose and tune the screen update method.

On certain PCs, under certain circumstances, there might be a perceptible delay in scrolling or in echoing of the characters you type. This delay can have several components:

1. Delays in the connection itself;
2. Operating system process and thread scheduling;
3. The Console Agent `CONAGENT.EXE` (if using K95.EXE on Windows 95/98/ME);
4. Value-added features like URL highlighting and autodownload.
5. K95's own screen update algorithm.

Normally K95 refreshes the entire screen every 100 milliseconds, i.e. 10 times per second. This provides good overall throughput, which is always a tradeoff between (a) responsiveness to keystrokes, and (b) speed of displaying large amounts of scrolling text. You can change the balance and the frequency with the `SET TERMINAL SCREEN-UPDATE` command, which chooses the mechanism used for screen updating and the update frequency.

A smaller interval might produce snappier echoing, but probably at the expense of scrolling speed. SMOOTH (only available in K95.EXE) forces screen refresh with every incoming character, and so turns the balance to totally favor fast echoing.

The Console version of Kermit 95 (K95.EXE) normally optimizes screen updates by writing only those cells that changed in situations where it knows this is safe. It appears to be safe in Windows NT/2000/XP/etc and OS/2 (all versions, all screen sizes), and in Windows 95 if the screen size is 80 by 25, 43, or 50; with any other dimensions, this form of screen update could cause a General Protection Fault in the Windows 95 (and maybe 98 and ME) kernel, and thus we don't attempt it in Windows 9x/ME except with the screen sizes listed.

The primary benefits of optimization are:

- Vastly improved performance over "Windows terminal" connections, and probably with any other kind of "remote access solution" such as PCanywhere.

- Usability by most, if not all, screen readers and Braille devices.

The latter is because, in the normal case, the characters that changed since the last screen update are the ones that arrived most recently. Thus, incoming characters will be spoken or converted to Braille in sequence, and once each.

You can override K95.EXE's screen optimization strategy with the `SET TERMINAL SCREEN-OPTIMIZE` command. Optimization is `ON` by default except in Windows 9x/ME when the screen width is not 80 or the height is not 25, 43, or 50. `OFF` means don't optimize; repaint the entire screen at every refresh interval.

You can also disable some of Kermit's computation-intensive special features to see how much this speeds up terminal emulation:

`SET TERMINAL AUTODOWNLOAD OFF`
  Normally K95 watches the incoming data stream for Kermit and Zmodem packets, so if a file transfer is initiated on the host, K95 automatically switches into file-transfer mode. In K95G, you can also turn autodownload on and off in the Actions menu.

`SET TERMINAL URL-HIGHLIGHT OFF`
  Normally K95 inspects the incoming data stream for URLs so it can highlight them for you. In K95G, you can also turn URL highlighting on and off in the Actions menu.

`SET TERMINAL CHARACTER-SET TRANSPARENT`
  This disables all or part (depending on the OS) of Kermit's character-set translation functions. In K95G, there is no such thing as a transparent character set.

`SET TELOPT AUTHENTICATION REFUSED`
  Of course encryption adds a large amount of overhead, and obviously clear-text connections are much faster than encrypted ones.

Most of these features are desirable and most people won't want to sacrifice them. But they don't come without a cost. That's the tradeoff.

## Chapter 8. File Transfer

[Next] [Previous] [Contents] [Top]

References:

- K95 Tutorial: File Transfer
- Using C-Kermit, Chapters 9-16.
- Updates to Using C-Kermit, 2nd Edition
- File Transfer Pipes and Filters.

Contents:

- Choosing a File Transfer Protocol
- Binary versus Text Transfers
- How to Transfer Files
- Performance Tips
- Troubleshooting Tips
- Advanced Topics

> FTP and HTTP are the Internet standards for file transfer. As of version 1.1.21, Kermit 95 includes built-in FTP and HTTP clients. This chapter does not discuss them; rather, it discusses the file-transfer methods (Kermit, XYZMODEM) that can be used within a terminal-emulation session. For complete details about K95's FTP client, see Section 3 of the C-Kermit 8.0 Update Notes. For HTTP, see Section 2.2 of the same document.

Terminal emulation lets you interact directly with any computer or service ("host") you can make a connection to. But there is often a need to send files from your PC to the host, or to bring files from there to your PC so you can use them or work on them in your own familiar environment, or make them available to someone else, etc. Some examples include:

- Telecommuting (working from home by modem or Internet).
- Backing up important PC files by storing them on another computer.
- Collaborative writing
- Downloading software
- Downloading graphical pictures or audio clips
- Maintaining a website from a remote location

You already know that it's possible for you to capture information from other computers (using the mouse, screen print/dump, or session logging) during a terminal session. But, when actual files are involved, you usually need a more dependable method of "moving" them from one computer to another intact, one that:

- Doesn't require you to carry diskettes from one computer to the other.
- Handles binary as well as text files.
- Can send as well as receive files.
- Takes care of creating and naming the new file automatically.
- That corrects any transmission errors that might occur.
- That performs any needed format or character-set conversions.
- That can transfer multiple files in a single operation.
- That can recover from interrupted transfers at the point of failure.

K-95 does all that and more.

### Choosing a File Transfer Protocol

[Next] [Chapter Index] [Contents] [Top]

A file transfer protocol is a formal set of rules, messages, and formats that accomplish the goals listed above. The Kermit file transfer protocol, developed by the Kermit Project at Columbia University, is one such protocol, noted for its reliability. It succeeds under adverse conditions (noisy connections, nontransparent connections, etc) where other protocols fail.

K-95 includes the fastest and most advanced implementation of the Kermit protocol available anywhere. And since Kermit protocol might not be available everywhere, Other protocols -- ZMODEM, YMODEM, YMODEM-G, XMODEM, and XMODEM-CRC -- are also provided via code open-sourced for the Kermit Project by Online Solutions Oy, Jyvaskyla, Finland. You can select the protocol for each of your connections in the File Transfer Settings page. Or, you can use the Command screen. The command is:

      SET PROTOCOL { KERMIT, ZMODEM, YMODEM, XMODEM, ... }

Note that XMODEM, XMODEM-CRC, YMODEM, and YMODEM-G do not work on 7-bit connections, and ZMODEM probably won't either.

When you access a BBS or other service that has a download menu and it does not include Kermit, then choose (in this order): ZMODEM, YMODEM, XMODEM-CRC, XMODEM, YMODEM-G (YMODEM-G does not include any kind of error recovery at all, so if there are any transmission errors, the transfer fails).

If you see "SuperKermit" in the menu, that's just a corny name that somebody (not us) made up for Kermit-tuned-for-speed. It's OK to choose it; if there is a choice between "Kermit" and "SuperKermit", choose SuperKermit.

Some BBS's and other services do offer Kermit protocol, but only the very slowest version of it, or (in some cases) a version that does not even work. In such cases, you are encouraged to refer the proprietors to The Kermit Project to get a good Kermit implementation, and in the meantime choose ZMODEM or one of the other protocols.

### Binary versus Text Transfers

[Next] [Previous] [Chapter Index] [Contents] [Top]

Lucky you, this section has been removed. As of version 1.1.21, K95 detects whether each file is text or binary when uploading, switches to the appropriate mode automatically, and informs its Kermit partner on the other end of the connection of the transfer mode for each file. For details see Section 4 of the C-Kermit 8.0 Update Notes.

When K95 is receiving files, it is the other Kermit program's responsibility to do the same. In case it does not (e.g. because it is old, or because it does not come from the Kermit Project), you should consult its documentation for how to handle file-transfer mode switching.

### How to Transfer Files

[Next] [Previous] [Chapter Index] [Contents] [Top]

Contents:

- Uploading Files the Old-Fashioned Way
- Uploading Files the New Way
- Downloading Files
- Where Did My File Go?
- Character Sets

First make sure that K-95's file transfer protocol selection matches what you are going to use (or have already selected) on the other computer. You must be using the same protocol on both ends.

Let's discuss this briefly before getting started. If you are connected to a menu-driven system such as a BBS or various information services, then you normally select your preferred file transfer protocol when you first sign up for the service. After that, there is usually some menu in which you can change protocols on a per-transfer basis if you want to, and perhaps also change your "default" protocol. The exact procedure depends on the service, and should be evident from its menus or described in its documentation.

If you are connected to a command-driven computer or service such as a timesharing system like UNIX, VMS, VM/CMS, or MVS/TSO, then you select your protocol simply by commanding that system to run the appropriate program.

Commands to start file transfer programs on these computers range from cryptic acronyms like "kermit" to intuitive words like sz, rz, sb, rb, sx, or rx `:-)` (sz/rz, etc, are available from Omen Technology Inc., 10255 Northwest Old Cornelius Pass Road, Portland, Oregon 97231, USA, Voice: +1 (503) 614-0430, Fax: +1 (503) 629-0665, e-mail: caf@omen.com.

Kermit programs generally give you a prompt and then you give them commands. The most widespread example is C-Kermit on UNIX, VMS, etc, as documented in Using C-Kermit. So now you see a hidden bonus in your K-95 package -- you also have the manual for the "other Kermit".

For X/Y/ZMODEM protocols as implemented in the Omen Technology sz package, refer to the following Table, and to appropriate documentation for details. For text-mode transfers with ZMODEM, replace "-b" (binary) with with "-a" (ASCII). The table also shows how C-Kermit can be started (e.g., on UNIX) with "command-line options" rather than giving commands at the prompt. In this case, replace "-i" with "-T" if sending in text mode.

> Sample File Transfer Commands on the Other Computer

> Protocol | Sending | Receiving
> --- | --- | ---
> KERMIT | `kermit -s -i filename . . .` | `kermit -r`
> ZMODEM | `sz -b filename . . .` | `rz -b`
> YMODEM | `sb filename . . .` | `rb`
> YMODEM-G | `sb filename . . .` | `rb`
> XMODEM | `sx filename` | `rx filename`
> XMODEM-CRC | `sc filename` | `rc filename`

#### Uploading Files the Old-Fashioned Way

[Next] [Section Index] [Chapter Index] [Contents] [Top]

To "upload" a file (that is, to send it from your PC to the other computer):

1. Tell the other computer to receive a file. If you are using a Kermit program there, just type "kermit" to start the program; then at its prompt, type "receive". If you are using ZMODEM protocol, just type "rz", etc, as shown in the table above.

   > NOTE: This step is not always necessary. When K-95 is told to send a file, it begins by sending an "autoupload string" for the selected protocol and transfer mode -- in fact the very ones from the Receive column in the table -- and this should start the appropriate host transfer program in the appropriate mode. See Using C-Kermit, pages 275-276, plus all of Chapter 14, for details.

2. Type Alt-X to escape back to the K-95 Command screen (that is: while holding down the Alt key, press the X key).

3. At the `K-95>` prompt, type "set file type binary" or "set file type text", depending on the desired transfer mode, if necessary.

4. At the next `K-95>` prompt, type "send xxxx", where xxxx is the name of the file you want to send; for example:

         K-95> send oofa.zip

5. Watch the file transfer display to monitor the progress of the transfer (screen shot below).

6. When the transfer is done, you'll get a new K-95> prompt. Return to the other computer by giving a CONNECT (or just C) command. Find a new copy of your file there.

If you want to send more than one file in a single step, which you can do using any protocol but XMODEM, you have two choices:

1. Include one or more asterisks (*) in the filename in your SEND command. Filenames that contain asterisks are called "wildcards" because the asterisk can stand for any sequence of letters, just like the Joker (when it is wild) can stand for any other card. So, for example, if you tell Kermit to "send oofa.*", and you have files called `OOFA.TXT`, `OOFA.EXE`, and `OOFA.ZIP`, Kermit will send all three of them:

         K-95> send oofa.*

   > Note that this command sends a mixture of text (`OOFA.TXT`) and binary (`OOFA.EXE`, `OOFA.ZIP`) files. This is permissible in recent versions of Kermit 95, which treats `.TXT` as a text type, and `.EXE` and `.ZIP` as binary types. Type `SHOW PATTERNS` at the K-95 prompt for a complete list of text and binary filename patterns, and read more about them in Updates to Using C-Kermit, 2nd Edition, including how to modify the pattern lists.

2. If you want to send a bunch of files whose names are different, and so can't be matched by wildcards, use the MSEND command, for example:

         K-95> msend oofa.hlp d:\letters\angry.txt a:readme.txt

   as explained on page 274 of Using C-Kermit.

#### Uploading Files the New Way

[Next] [Previous] [Section Index] [Chapter Index] [Contents] [Top]

The regular way of uploading files, which works with all Kermit programs, has many steps and is undoubtedly somewhat tedious, if not baffling for those unaccustomed to it. Here is a much easier way to do the same thing, which works if:

1. You are using Kermit protocol
2. `SET TERMINAL AUTODOWNLOAD` is `ON` (as it is by default)

In the Terminal window, simply tell the Kermit program to GET the desired file or files, for example using C-Kermit with command line options:

`kermit -g filespec`
  Tells the PC to send the given file or files.

Kermit 95's terminal emulator responds the first packet sent by the host Kermit, sends the requested files in the requested mode, and then returns automatically to the terminal screen when done. You can also start the host Kermit program in interactive mode and the corresponding commands to its prompt, such as `GET OOFA.ZIP`.

#### Downloading Files

[Next] [Previous] [Section Index] [Chapter Index] [Contents] [Top]

Downloading files from the other computer to your PC is very easy if:

- You are using Kermit or ZMODEM protocol
- `SET TERMINAL AUTODOWNLOAD` is `ON` (as it is by default)

Just start the file transfer in the appropriate mode on the host; for example:

      kermit -s oofa.*

and Kermit 95 detects it automatically and activates a Kermit or ZMODEM receive, obeying the transfer mode, text or binary, used by the sender, and when the transfer is complete, Kermit 95 returns automatically to its Terminal screen.

If you have disabled autodownload or are using a protocol other than Kermit or ZMODEM, you can download files the Old Fashioned Way, which is like uploading them the Old Fashioned Way, but with the SEND and RECEIVE operations exchanged:

1. Make sure the protocol selections match on both ends, normally "Kermit" for the Kermit protocol. Start up the other file transfer program on the other end.

2. Select the transfer mode on the far end. This might be a menu selection, a command-line switch, or an interactive command. For example, if you using a Kermit program, tell it to "set file type text" or "set file type binary".

3. Tell the remote software to send the file (or files). The procedure depends on exactly what computer or service or application you are connected to (see the comments about this in the Uploading section).

4. Escape back to the K-95 Command screen (Alt-X) and give the RECEIVE command (or just R, or any other acceptable abbreviation):

         K-95> rec

5. Watch the file transfer display.

6. When the transfer is finished, notice the new copy of the file on your PC.

7. CONNECT back to the other computer and you're back where you started:

         K-95> c

A mixture of text and binary files can be downloaded if the other Kermit supports this feature: C-Kermit 7.0, MS-DOS Kermit 3.16, or Kermit 95 1.1.16 are the minimum versions as of this writing. Otherwise you should send files from the remote Kermit in separate groups for text and binary.

#### Where Did My File Go?

[Next] [Previous] [Section Index] [Chapter Index] [Contents] [Top]

Numerous rules affect where a downloaded file is stored, including:

- If you specified an override destination for the file in your `RECEIVE` command, the file goes there. Otherwise . . .

- If you have declared a download directory (in the General page of the Dialer entry, or with a `SET FILE DOWNLOAD-DIRECTORY` command), that's where incoming files go. Otherwise . . .

- If the file was sent with a pathname, and Kermit 95 has `SET RECEIVE PATHNAMES ABSOLUTE` or `RELATIVE` in effect, it goes into the directory indicated by the sender; K-95 creates this directory if necessary. Otherwise . . .

- The file goes in Kermit 95's current directory (as shown in the default prompt, and by the `PWD` command).

But you don't have to remember all this. If you download a file and then can't find it, give the `WHERE` command at the K-95 prompt to find out "where" the file went:

    [C:\k95\] K-95> where

    File most recently...

      Sent:       C:/k95/README.TXT
      Stored as:  /usr/olga/tmp/readme.txt

      Received:   oofa.txt
      Stored as:  C:/k95/DOWNLOAD/OOFA.TXT

    [C:\k95\] K-95>

If the full path is not shown, then the file is probably in your current directory or your download directory (if any - SHOW FILE to find out).

#### Character Sets

[Next] [Previous] [Section Index] [Chapter Index] [Contents] [Top]

References:

- Using C-Kermit, Chapter 16
- C-Kermit 7.0 Update Notes

Conversion of character sets during file transfer is a unique feature of Kermit protocol, and is described thoroughly in Chapter 16 of Using C-Kermit. There are, however, certain Windows-specific aspects that must be covered here.

A Windows text file can be encoded in one of three ways:

An OEM Code Page:
  Also known as PC code pages or DOS code pages. These are used in Console ("MS-DOS Command") windows and in programs like EDIT that run in these windows. Well-known OEM Code Pages include CP437 (the original IBM PC Code Page), CP850 (the so-called Multilingual Code Page, with a repertoire equivalent to the ISO Latin-1 Alphabet but completely different encoding), CP866 (one of several Cyrillic code pages), and so on. OEM code pages generally have 3-digit numbers.

A Windows Code Page:
  These are used in GUI windows and in applications like Microsoft Word, WordPad, NotePad, and so on. They are completely incompatible with OEM Code Pages. They usually have 4-digit numbers, as in CP1250.

Unicode:
  Microsoft Word and certain other applications might also be able to handle documents with Unicode (ISO 10646) encoding in UCS-2 or UTF-8 format. (Unicode file transfer is discussed in Section 6.6 of the C-Kermit 7.0 Update Notes.)

Therefore your terminal local-character set might be different from your file character sets, at least in Windows 95 or 98, and you might need to think twice about how to set up your file transfers, bearing in mind that the default file character-set is the terminal local character-set.

If your PC text is (or is to be) in Unicode, use UCS-2 as Kermit 95's file character-set and either UCS-2 or UTF-8 as the transfer character set (of course this works only if the other Kermit program also supports Unicode; so far only Kermit 95 1.1.19 and C-Kermit 7.0 do). Unicode is well-supported across Windows 2000 / Office 2000 applications, including in Word, WordPad, and NotePad, in both UCS-2 and UTF-8 forms (so in this case you could also use UTF-8 as Kermit 95's file character-set). Unicode is less well supported in earlier Windows versions. UCS-2 works across more Windows versions and applications than UTF-8.

If code pages are (to be) used on the PC rather than Unicode, use the following table as a guide:

> | File Character Set |
> --- | --- | ---
> Family | OEM Code Page | Windows Code Page | Transfer Character Set
> Latin-1 | CP437,850 | CP1252 | Latin1-ISO
> Latin-2 | CP852 | CP1250 | Latin2-ISO
> Latin-9 | CP858 | CP1252 | Latin9-ISO
> Cyrillic | CP855,866 | CP1251 | Cyrillic-ISO
> Greek | CP869 | CP1253 | Greek-ISO
> Hebrew | CP862 | CP1255 | Hebrew-ISO
> Japanese | CP982 (Shift-JIS) | CP982 | EUC-JP

Which one to pick depends on the specific application and version, as well as on the version of Windows.

### Performance Tips

[Next] [Previous] [Chapter Index] [Contents] [Top]

Driving your car at a low speed is very likely to get you to your destination safely, but it will take a long time. Driving your car at top speed is dangerous, but it will get you there faster if you don't crash. But at top speed, you are likely to crash unless the road is smooth, dry, and straight, and there is no other traffic.

The Kermit protocol has controls just like a car -- accelerator, brake, etc. The File Transfer Settings page gives you three simple choices: "Kermit FAST", "Kermit Cautious", and "Kermit Robust". FAST is not exactly top speed, but close to it. Robust is the "slow and steady wins the race" setting. Cautious is in between.

The default setting is FAST. If it doesn't work, choose Cautious. If that doesn't work, choose Robust. If you are a tinkerer, you can achieve finer gradations of tuning by changing the packet length, window size, and control-character unprefixing settings. This is explained in detail in Chapter 12 of Using C-Kermit, and recapitulated briefly here.

#### Packet Length and Window Size

As noted when when we discussed the File Transfer Settings page, there are some knobs you can twiddle to get as much performance out of your connection as it will stand. But, since the Settings page is used only to set up the connection, you can't use it to change things during the connection. But the same knobs are there for you to twist and turn during the connection any time you escape back to the Command screen. You just have to know what the commands are. The two most important are:

      SET WINDOW number
      SET RECEIVE PACKET-LENGTH number

If you notice that you get much faster rates on downloads than you do on uploads, then you probably need to give one or both of these commands to the Kermit program on the other end of the connection, for example:

      C-Kermit> set window 20
      C-Kermit> set receive packet-length 4000
      C-Kermit> receive

That's because window size and packet length are negotiated between the two Kermit programs, and those of the file receiver take precedence.

#### Control-Character Unprefixing

Control-character unprefixing can boost performance by about 25% when transferring compressed files (like ZIP files), somewhat less for text files, somewhat more for uncompressed binary files such as program executables.

Here's the deal: the Kermit protocol normally converts and prefixes control characters rather than sending them "bare" in a packet, because they might interfere with the transfer, or hang up your connection, or worse. This sort of disaster was commonplace in the micro-to-mainframe world where Kermit grew up. But it's a bit less common today. For example, when dialing up BBS's this will happen rarely, if at all. So "Kermit FAST" includes unprefixing of most, but not all, control characters. "Kermit Cautious" unprefixes a somewhat more conservative set.

The nice thing about prefixing is that you don't have to worry about the characteristics of your connection -- does it go through a terminal server, an X.25 PAD, a 3270 protocol converter, etc etc. The file transfer just works, but perhaps at less than optimal speed. If K-95's normal "Unprefix control characters cautiously" setting results in file-transfer failures, then check "Never" and try again. If it still doesn't work, then look in Using C-Kermit, "Solving File Transfer Problems."

If you're the tinkering kind, and you want to squeeze out that extra few percent, you can turn off prefixing of selected control characters, as described in the book. But remember, when you do this, you might wind up tickling some unknown component of the connection and cause bad things to happen. Some say that's the fun of it!

When downloading from a C-Kermit program on the other end to your PC, you will need to give the desired `SET CONTROL` or `SET PREFIXING` commands to it, because this feature is controlled by the file sender.

What about the other protocols? ZMODEM "unprefixes" most control characters unless you tell it otherwise (usually the option for this is "-e" -- "escape all control characters"). So if you select ZMODEM as your protocol in the File Transfer Settings page and then find that it doesn't work, you might try this, and then it might work. YMODEM and ZMODEM implementations vary as to their capabilities in this area. On the other hand, if you use ZMODEM with full unprefixing and file transfers do work, then K-95 could probably also be told to "Unprefix with wild abandon" (or `SET PREFIXING NONE`) on the same connection with equal success.

### Troubleshooting Tips

[Next] [Previous] [Chapter Index] [Contents] [Top]

File transfer problems are the topic of an entire chapter (10) of Using C-Kermit, so please look there for a detailed treatment. Here, briefly, are the Top Seven Quick Answers for Kermit 95 transfer troubles:

1. If your protocol was not not Kermit, try Kermit.
2. Tell K-95 to `SET` `PREFIXING` `ALL` and try again.
3. Tell K-95 to `SET` `PARITY` `SPACE` and try again.
4. Tell K-95 to `SET` `RELIABLE` `OFF` and try again.
5. If Kermit FAST doesn't work, try Kermit Cautious.
6. If Kermit Cautious doesn't work, try Kermit Robust.
7. If the transfer succeeds but the transferred file is corrupt, use text mode if you were using binary, or vice-versa.

If none of these works, consult Chapter 10 of the C-Kermit book. If they work but they make transfers go too slow, consult Chapter 12.

### Advanced Topics

Eight chapters of Using C-Kermit are devoted to file transfer, from the basics to advanced client/server operations, external protocols, automation techniques, and character sets.

In the years since publication of the 2nd Edition of Using C-Kermit, a great deal has been added. The new features are documented in Updates to Using C-Kermit, 2nd Edition. Section 4 of that file covers file transfer and management. Some highlights include:

- File-transfer pipes and filters
- Automatic text/binary mode switching
- File-transfer command switches, e.g. for file selection
- Cross-platform directory tree transfer
- High-speed Streaming protocol

The section on file-transfer pipes and filters is a general treatment of the topic. For supplementary material specific to Kermit 95, CLICK HERE.

Also, remember that the Kermit command language can be used to automate anything you can do by hand. So if you want to create automated procedures for transferring files, be sure to read Chapters 17-19 of the C-Kermit book.

## Chapter 9. Host Mode

[Previous] [Contents] [Top]

> Host Mode is a do-it-yourself method for allowing remote text-mode access to your Windows PC. As of K95 1.1.21, there is a better alternative if (a) connections will come only from the Internet, and (b) your PC is running Windows NT, 2000, or XP. It is called the Windows Internet Kermit Service Daemon (WIKSD). CLICK HERE to read about it.

Contents:

- What Host Mode Is For
- The Hostmode Management Program
- Configuration
- User IDs
- Logs
- Messages
- Starting and Stopping Host Mode
- Summary of Files
- Modifying the Host Mode Program

"Host mode" lets people dial up or Telnet to your PC and transfer files within a secure restricted environment. Kermit 95's host mode is implemented entirely in the Kermit script language, and executed by Kermit itself. You can find all the scripts in the Kermit 95 SCRIPTS subdirectory as `HOST*.KSC`.

The host-mode scripts include the host-mode user interface, a host-mode management program for the PC owner, and some others, plus some configuration, database, and documentation files. A separate program, `K95D.EXE`, the "Kermit 95 Daemon", handles incoming TCP/IP connections and starts up subprocesses to handle them.

For a thorough presentation of Kermit's script programming language, refer to Chapters 17-19 of Using C-Kermit and Section 7 of The C-Kermit 7.0 Supplement.

User documentation for host-mode users is in two separate files:

      HOSTMODE.TXT    A short help file
      HOSTUSER.TXT    A more detailed user guide

The location of the hostmode files depends on which version of K95 you installed originally. If it was 1.1.20 or earlier, the host mode files are in the Kermit 95 program tree (e.g. `C:\K95`), along with all the other Kermit 95 files. However, K95 1.1.21 introduces a new directory layout, described in the README. When a new copy K95 1.1.21 or later is installed (as opposed to patching up from an older release), the hostmode pieces are parceled out as follows:

- The Hostmode scripts and batch programs go into the `\v(common)` tree (see the README for terminology): the Kermit script files into `\v(common)`\SCRIPTS and the batch files into `\v(common)` itself. Exception: On Windows NT, 2000, or XP, if the person installing Kermit 95 lacks administrator privilege or write access to the All Users tree, these files go into the `\v(appdata)` tree.

- The hostmode scripts search for the USERS and INCOMING directories in the following order:

  1. `\v(exedir)`
  2. `\v(startup)`
  3. `\v(appdata)`

  If the USERS and INCOMING directories are not found, the whole hostmode tree, with the exception of the SCRIPTS directory, is created in `\v(appdata)`.

- The directory which contains the USERS and INCOMING directories becomes the value of the `_hostroot` variable.

Kermit 95's host mode feature is entirely self-contained and does not make any use at all of the Windows Registry or Windows or OS/2 user IDs or passwords. Therefore it is not to be run as a Windows NT/2000/XP/etc Service under the Service Manager unadvisedly (if you have Windows NT, 2000, or XP, you should consider using WIKSD instead of host mode).

When you use host mode, you become what amounts to the manager of a multiuser computer system. As such, you need to understand how the system works before you can provide good and reliable service to your users without taking needless risks. So before you jump right in to running the Kermit 95 host, please read this entire chapter.

### What Host Mode is For

[Next] [Chapter Index] [Contents] [Top]

Windows and OS/2 are not multiuser operating systems in the traditional sense that they can be dialed up and logged in to by ordinary terminals or terminal emulators, nor (except for the Windows NT family) that they embody notions of user directories or file ownership and access permission within the PC's file system.

Yet often, the owner of a PC wants to allow other people to be able to dial up her PC from different types of computers and upload or download files. Sometimes even the owner herself needs to do this from a remote location. This could be done simply by leaving a Kermit server running on the desired communication port or TCP socket, but in that case the user gets no cues about what to do. Also, security is an issue -- if you leave your PC in this state, anybody who knows the phone number or Internet address can access it and, potentially, do some damage.

Kermit 95's host mode provides a simple mechanism for access control, and it gives users an easy-to-use menu. The functions are limited: upload and download files within restricted areas, display files, display directory listings, read and leave messages. Multiple authenticated users are allowed, as well as anonymous (guest) access if you (the PC owner) permit it.

Furthermore, there are several levels of privilege, allowing different levels of access to the file system and to the facilities of the operating system.

Cast of characters:

PROPRIETOR
  The PC owner, or "proprietor", is the person who grants access to users by giving them IDs, and the one who configures host mode, and who starts and stops host mode from the PC's console (keyboard and screen). This document is for you, the proprietor.

USER
  A "user" is someone who accesses the PC from a remote location via Telnet or dialup, and who logs in and accesses the PC only via the host-mode menus, providing a username and a password. The Kermit 95 host can have any number of distinct users, plus a "guest" username that can be logged into by anybody without a password if the PC owner wishes.

GUEST
  An anonymous user who can log in without a password, if you allow it. A guest never has any privileges.

### The Hostmode Management Program

[Next] [Previous] [Chapter Index] [Contents] [Top]

Kermit 95 host mode comes with a management program to make it easy for the PC owner (proprietor) to start host mode, manage the configuration, manage user IDs, send and read messages, and so on.

To run the management program, enter a console ("DOS") window and type:

      hostmode

NOTE: "hostmode" is simply a Batch program (`HOSTMODE.BAT`) that starts `K95.EXE` (`K2.EXE` in OS/2) and has it execute the host-mode management script, `HOSTMODE.KSC`. In K95 1.1.21 or later (new installations only, not patched ones), the `HOSTMODE.BAT` program is normally in the `\v(common)` directory and is started most easily from the desktop shortcut that is created by the K95 Install script.

You will see the following menu:

      --------------------------------------------
      K-95 Host Mode Management

       1 - Start host mode
       2 - Display configuration
       3 - Change configuration
       4 - Save configuration
       5 - Read messages from users
       6 - Leave a message for a user
       7 - View/edit current greeting message
       8 - Post a new greeting message
       9 - Manage user database
      10 - Help
      11 - Exit

      Your choice: _
      --------------------------------------------

1 - Start host mode
  This option guides you through starting a host-mode listener. You may choose to start a listener for Telnet connections or for dialup connections. In each case, the relevant parameters are displayed for you and you can choose whether to proceed, or to change the parameters. For Telnet, the only parameter is the socket number. For dialup, the parameters are the dialup device (port) name, the speed, and the modem type. If you wish to change any of these parameters, return to the main menu and choose "Change configuration", and then come back to "Start host mode".

  If you wish to use a TAPI device (in Windows 95, or Windows NT 4.00 or later), specify the port as "{TAPI name_of_tapi_device}". That is, the word TAPI followed by the name of the desired TAPI device, but with each space replaced by an underscore, all enclosed in braces, for example:

        {TAPI US_Robotics_Sportster_28800}

  And specify the modem type as "TAPI".

  Direct serial connections are also offered, but these are a bit tricky. In particular, you have to be very sure you've got a true null-modem connection that cross-connects the receive and transmit wires, the DTR and CD wires, and the RTS and CTS wires. The latter is important or else flow control won't work and there could easily be large amounts of data loss, exhibited as fractured screens and file transfer failures.

2 - Display configuration
  This lists the current host mode configuration -- each variable and its assignment.

3 - Change configuration
  You are prompted for each configuration variable. The current value is shown in [brackets]. If you don't want to change it, just press the Enter key. If you do want to change it, type in the new value and then press the Enter key. You can use Backspace (delete character), Ctrl-W (delete word), and Ctrl-U (delete line) for editing. After entering the new value, you are given a chance to change your mind. After all the variables have been processed, you are returned to the main menu, but the configuration data is not saved, so you still have other chances to change your mind. (Don't worry, if you try to exit without saving the configuration, you'll be warned.)

4 - Save configuration
  Saves the current configuration in the `HOST.CFG` file.

5 - Read messages from users
  If users have sent you messages, this will display them for you.

6 - Leave a message for a user
  This lets you compose and send a message to a particular user. Whenever a user has messages waiting, it says so in the user's main menu. Thus, even if you send a message to a logged in user, they can find out about it and read it right away.

7 - View/edit current greeting message
  This lets you view the current greeting message that all users see when they log in and edit it if you want to. It just runs Notepad on the message file.

8 - Post a new greeting message
  This lets you post a new greeting message for all users.

9 - Edit user database

This is the user ID management feature: add, remove, and change user IDs and passwords. Explained below.

10 - Help
  Displays a brief help message.

11 - Exit
  Exits back to the console window "DOS" prompt.

### Configuration

[Next] [Previous] [Chapter Index] [Contents] [Top]

Your host-mode configuration is governed by a plain-text configuration file, `HOST.CFG`, in Kermit 95's SCRIPTS subdirectory. The configuration variables are listed below, along with their default values -- that is, the values they have if you don't change them. All the various scripts that make up host mode read this file to get the information they need.

You can change the default configuration by editing the `HOST.CFG` file with a text editor like EDIT or NOTEPAD or perhaps more conveniently, by using the "Change configuration" option of the host-mode management program, HOSTMODE. The standard configuration file is shown here in its entirety:

    sessions=1                             ; Maximum simultaneous Telnet sessions
    maxusers=100                           ; Maximum number of user IDs
    inactivity=1800                        ; Inactivity limit (seconds)
    logintime=300                          ; Inactivity limit during login (secs)
    anonok=1                               ; Anonymous logins OK (0 = not OK)
    logging=1                              ; Logging enabled (0 = skip logging)
    dlincoming=0                           ; Downloads OK from INCOMING directory
    msgmax=200                             ; Longest message size (lines)
    hostport=3000                          ; TCP port to listen on
    commport=                              ; Communication port for dialins
    comspeed=                              ; Speed for communication port
    modem=                                 ; Type of modem on communication port
    protocol=kermit                        ; Default file transfer protocol
    xfermode=binary                        ; Default file transfer mode
    owner={THE PROPRIETOR}                 ; For user's MESSAGE FROM... message
    herald={Welcome to K-95 Host Mode}     ; Main menu title
    public=\m(_hostroot)PUBLIC             ; Publicly readable directory
    incoming=\m(_hostroot)INCOMING         ; Publicly writeable directory
    logdir=\m(_hostroot)LOGS               ; Directory for proprietor's logs
    usertree=\m(_hostroot)USERS            ; Root of user directory tree
    tmpdir=\m(_hostroot)TMP                ; Directory for temp files
    userfile=\m(_usertree)/HOST.USR        ; User database file
    greeting=\m(_usertree)/GREETING.TXT    ; Message/greeting text filename
    helpfile=\m(_usertree)/HOSTMODE.TXT    ; Host-mode help file
    msgfile=\m(_usertree)/MESSAGES.TXT     ; Messages for proprietor

Now, in more detail:

`sessions=4`
  The maximum allowed number of simultaneous incoming TELNET sessions. Strictly speaking, the number is either 1 or "more than one". If it is 1, then we simply run host mode in a loop: wait for a connection to come in, have a session, close the session, wait for the next connection to come in, and so on. If SESSIONS is greater than 1, we use a special "daemon" to wait for incoming connections and spawn new, possibly concurrent sessions.

  > IMPORTANT: Only Microsoft TCP/IP allows multiple sessions. If you have FTP Software OnNet-32 or Trumpet Winsock, you must set SESSIONS to 1 because the `K95D.EXE` program cannot pass the socket handles of incoming sessions to the K95 processes that it starts.

`maxusers=100`
  The maximum number of users allowed in the user database.

`inactivity=1800`
  Inactivity limit in seconds. A logged-in user who doesn't type anything in this amount of time is logged out and disconnected. This prevents idle users from tying up resources on your PC.

`logintime=300`
  Inactivity limit in seconds in effect during the login process. People who don't type anything in this amount of time while at the Username or Password prompt are logged out and disconnected.

`anonok=1`
  This means that anonymous (guest) logins are permitted. Change the 1 to 0 if you only want known users (from your HOST.USR file) to log in.

`logging=1`
  This means you want to keep logs of the activities of your host-mode users (see Section 6). Change 1 to 0 if you don't want to keep logs.

`dlincoming=0`
  This means it is not OK for users to download from the INCOMING directory nor to type files or get directory listings from it. If you want to permit this type of access, change 0 to 1. But this carries certain risks (e.g. if they upload copyrighted material illegally, then you might be held responsible for its further distribution).

`msgmax=200`
  Maximum length (in lines) for messages sent by the user to the proprietor or vice-versa.

`hostport=3000`
  The TCP port to be used while listening for incoming Telnet sessions.

`commport=
mspeed=
modem=`
  Communications parameters to be used when waiting for incoming modem calls. If these are left blank, the values from your `K95CUSTOM.INI` file (`K2CUSTOM.INI` in OS/2) are used.

  If you wish to use a TAPI device (in Windows 95, or Windows NT 4.00 or later), specify the "commport" as "{TAPI name_of_tapi_device}". That is, the word TAPI followed by the name of the desired TAPI device, but with each space replaced by an underscore, all enclosed in braces, for example:

        commport={TAPI US_Robotics_Sportster_28800}

`protocol=kermit`
  The default file transfer protocol. The other choices are zmodem, ymodem, ymodem-g, and xmodem.

`xfermode=binary`
  The default file transfer mode. The other choice is text.

`owner={THE PROPRIETOR}`
  This is what is shown to users who receive messages from you. Replace this by your name, your company's name, or whatever you like. Braces are needed if the value contains any spaces.

`herald={Welcome to K-95 Host Mode}`
  This is the title shown at the top of the main menu screen. Replace it with anything you like, up to about 50 characters. Braces are needed if the value contains any spaces.

`public=\m(_hostroot)PUBLIC`
  This is the directory that all users can CD to and download from, but can't upload to. In other words it is the public "read only" directory, intended for you (the PC owner) to distribute files to your users.

`incoming=\m(_hostroot)INCOMING`
  This is the directory to which all users are allowed to upload files, but which they can't download from or see directory listings of. In other words, it is the public "write only" directory, intended for your users to send files to you. Optionally, you can configure this directory to also allow your users to download from it -- see the variable _dlincoming above.

`logdir=\m(_hostroot)LOGS`
  This is the directory where log files are kept (see below).

`usertree=\v(_hostroot)USERS`
  This is the root of the user directory tree.

`tmpdir=\v(tmpdir)`
  Name of a directory that Kermit 95 can use for writing temporary files.

`helpfile=\m(_usertree)/HOSTUSER.TXT`
  Help text that is displayed if the user asks for help. This is a short plain-text file that you can modify if you wish.

`greeting=\m(_usertree)/GREETING.TXT`
  A short text file which, if it exists, is displayed every time each user logs in. You can create it with a text editor, or use the HOSTMODE.KSC script to create it for you.

`msgfile=\m(_usertree)/MESSAGES.TXT`
  Name of the file in which messages from users to the proprietor are placed.

`userfile=\m(_usertree)/HOST.USR`
  This is the user database file, as described above.

### User IDs

[Next] [Previous] [Chapter Index] [Contents] [Top]

As distributed, `HOST.KSC` requires users to log in with a user ID and password. A user ID gives the user access to a private directory with full read/write access. Guest (anonymous) users, if allowed, do not have a private directory.

A failed login causes a three-second pause. Three failed logins cause the host script to hang up the connection. All logins, failed logins, and actions are recorded to a file.

#### Structure of User IDs

User IDs should be composed of letters and/or digits, and should not contain spaces, underscores, backslashes, or other non-alphanumeric characters.

Kermit 95's host mode allows users access to three different directories:

1. The user's own private directory, to which the user has read/write access, but which other users can't access.

2. The PUBLIC directory, to which all users have read access only.

3. The INCOMING directory, into which all users can send files, and, if you permit it, from which all users can also retrieve files.

(In addition, users with "CD Privilege" can also access any (ANY) other directory on the system; more about this later.)

Regular unprivileged users can switch among these three directories, but they can't go anywhere else -- not for reading or writing files, not for getting directory listings. If a file is uploaded containing a pathname, the pathname is stripped upon receipt, preventing users from being able to place or overwrite files in other other areas. Similarly, pathnames are stripped from filenames given by the user in download requests, thus restricting their access to their current directory.

#### Management of User IDs

IDs are created only by the owner of the PC. An ID is associated with an entry in the user database, normally USERS\USERS.DAT (you can change this in the configuration, if you want to), which is a plain-text ASCII file consisting of entries (lines) of the form:

      username_encryptedpassword_privileges_name_address_phone_email_

in which each field is terminated by an underscore, for example:

      jrd_6840DF9017F59B67_0_Joe R. Doupnik_Utah State University__jrd@cc.usu.edu_

The encrypted password can be created or modified only by using the tools provided -- not with a text editor or any other tool, because the encryption method is internal to Kermit 95. The encryption method should be secure enough that no harm would be done if the USERS.DAT file fell into unfriendly hands, but of course there can be no guarantees. In any case, the hostmode system is set up so that UNPRIVILEGED hostmode users will not have access to this file.

Adding a user to the database is sufficient to create the user ID. The host script creates the user's directory automatically the first time the user logs in successfully.

To manage user IDs, select "Manage user database". This presents you with a new menu that looks like:

    --------------------------------------------
      User database management functions...

      Database filename: USERS/USERS.DAT - Not loaded
      Current user:      (none)

       1 - Load user database
       2 - Display user database
       3 - Look up a user / set current user
       4 - Add a new user
       5 - Remove current user
       6 - Modify current user
       7 - Save user database
       8 - Remove lock
       9 - Return to main menu

      Your choice: _
    --------------------------------------------

1 - Load user database
  Before you can do anything else you must load the user database (item 1). If no user database exists yet, item 1 reads "Create user database". In either case, select item 1 first. Then . . .

2 - Display user database
  This lets you look at the user database -- the literal contents of the file.

3 - Look up a user / set current user
  Item 3 lets you look up a particular user. You are prompted for the user's ID or name (either one will work). If the user's entry is found, this becomes the "current user", which is the one affected by Remove and Modify selections. When a user is selected in this way, her ID is displayed in the Current User field above the menu.

4 - Add a new user
  Item 4 lets you add a new user. You are prompted for each field separately: user ID, password, privilege level, user's name, address, phone number, and email address. All but the ID, password, and privilege level are optional. When you have entered the information, it is displayed for you and you are asked for permission to create the user ID, and if you give it, the ID is created. NOTE: The user ID can not actually be used until you save the database (Item 7).

5 - Remove current user
  Item 5 removes the current user ID (obtained from Item 3) from the database. The entry is displayed, your permission is requested, and if you give it, the entry is removed from the database. However, the user's directory and files are not removed. You can do this yourself by hand -- since it is your PC, you might want to see what the user has been storing there and decide what to do with the files. NOTE: The user ID is not actually removed until you save the database (Item 7).

6 - Modify current user
  Item 6 can be used to change the password and/or the privilege level of the current user. NOTE: These changes do not actually take effect until you save the database (Item 7).

7 - Save user database
  Item 7 saves the database, activating any changes you have made to it.

8 - Remove lock
  Item 8 unlocks the user database. This will be necessary in case a host-mode session left a stale lock behind; for example, if they became disconnected while changing their password. You can also remove the lock at the DOS prompt, simply by deleting the USERS.LCK file in the USERS directory. You can also type this file -- it contains the user ID of the user who created the lock. The timestamp on the file shows when it was created.

9 - Return to main menu
  Item 9 returns you to the main menu of the hostmode program.

#### Privileges

There are three levels of privilege:

1. No privilege. Users with this privilege level are restricted to their own directory, plus the INCOMING and PUBLIC directories. It should be safe to give this level or privilege to anybody. GUEST users always have 0 privilege and, in addition, do not have a directory of their own.

2. CD privilege. This lets the user CD to any directory on the computer. This should be given only to persons that you trust utterly and completely yourself, and whom all of your other host-mode users can trust as well. This privilege allows the user to download any file at all, to upload any file into any directory, possibly overwriting critical system files or sensitive personal ones, including the host mode user database, perhaps altering privilege levels of other other users. We recommend that this privilege be granted only to the PC's owner and not to any other users.

3. DOS privilege. This lets the user execute DOS commands. It implies and includes CD privilege, since there is no control over DOS commands, their operands, and what they can do. All the previous cautions apply, and then some.

### Logs

[Next] [Previous] [Chapter Index] [Contents] [Top]

All user actions are written to the hostmode window and, unless you change things, also written to a log file in Kermit 95's LOGS subdirectory. The log file name for each session should be unique:

      user_date_time.log

for example:

      olga_951224_12345.log

where "olga" is the username, the first number is the julian date (yymmdd) and the second is the time in seconds since midnight. These logs should be cleaned out periodically, especially if you have a lot of host-mode users and/or sessions, otherwise your disk could fill up.

### Messages

[Next] [Previous] [Chapter Index] [Contents] [Top]

You can leave a message that all users will see when they log in (even anonymous users) in the greeting file. Use the "hostmode" program to post messages.

You can also use the hostmode program to leave a private message for a particular user.

Users can leave messages for you ("the proprietor") via the "Leave a message" menu entry. All such messages are appended to a single message file, `MESSAGES.TXT` in the root directory of the user tree. You can read them with the hostmode program.

All messages produced by Kermit 95 host-mode scripts are in standard e-mail format:

    Date: date and time message was sent
    From: username (or if from you, the OWNER value)
    To: username (or if a general message, "All")
    Subject: line of text

    message body...
    .

Each message ends with a period alone on a line, and a blank line separates the headers from the message body.

All message reading is done simply by putting the message into the "notepad" editor for you. It is up to you to dispose of it. There is no built-in mechanism for replying to a message -- instead, just choose the "Leave a message" from the main menu.

### Starting and Stopping Host Mode

[Next] [Previous] [Chapter Index] [Contents] [Top]

Using a single copy of the HOSTMODE program, you can run one or more host sessions simultaneously on any combination of serial communication ports or as TCP/IP Telnet servers.

To stop a host script, bring its window to the front and type Ctrl-C, and then "exit" from K-95, which will close any open files, devices, or connections. If Ctrl-C does not bring you back to the prompt (for example, when waiting for an incoming TCP/IP connection), then use the mouse to close the window from its system menu.

By the way, once you interrupt a host script by typing Ctrl-C, the connection is still open so you can (for example) CONNECT and then type characters which the client will see on her screen. You can also use OUTPUT and TRANSMIT and any other commands to send text to the client's screen prior to hanging up and/or exiting.

#### Host Mode on TCP/IP Connections

TCP/IP connections are governed by the SESSIONS and HOSTPORT parameters in the configuration file.

      HOSTPORT=3000

This is the TCP port, or "socket", on which the host session listens for incoming connections.

    SESSIONS=1

If SESSIONS is 1, then only one Telnet host session is allowed at a time. In that case, the HOSTTCP.KSC script is used to wait for incoming connections and then to run the HOST.KSC script for them. This method is required for FTP OnNet-32 and Trumpet Winsock, because these TCP/IP stacks do not allow socket handles to be shared.

If you are using Microsoft TCP/IP, you can set SESSIONS to 2 (or any number greater than 1), which allows multiple concurrent sessions. (The number doesn't matter -- there is presently no way to limit the number of concurrent sessions to a particular maximum.) In this case, the `K95D.EXE` program is used to listen for incoming connections and to spawn a host session for each one.

In OS/2, TCP/IP based host mode is started in a slightly different way than explained in Windows. Rather than using K95D, you place a line like:

      service tcp k2dc d:\k2\scripts\host.ksc

in your `($ETC)\INETD.LST` file, where is the name of an entry in the SERVICES file. `K2DC.EXE` simply converts the INETD-style command-line arguments into Kermit-style ones, and then passing them to Kermit/2.

For this to work, the K2 directory must be in your PATH.

SESSIONS=1 works with all TCP/IP stacks, and so it is the default. Numbers larger than 1 only work with the Microsoft TCP/IP stack.

Users should connect to your PC using a Kermit program that has built-in Telnet capability: Kermit 95, OS/2 C-Kermit, MS-DOS Kermit, UNIX C-Kermit, VMS C-Kermit, etc. They should also enable the APC feature, if they have it, which allows both uploads and downloads to be automatic. So if your PC's hostname were pc.oofa.com, the client Kermit command to make a connection to your PC would be:

      set terminal apc on
      telnet pc.oofa.com 3000

For testing (under Microsoft TCP/IP only), you can run the host and client window on the same PC -- tell the client Kermit program to "telnet localhost 3000".

#### The K95D.EXE Program

`K95D.EXE` can also be used for other purposes. You can run it with a command line, or with a configuration file. The command line format is:

      k95d [ options ] socket "k95 options"

where:

`options`
  Are options, which are (of course) optional:
  `--normal`
    Regular Windows behavior (this is the default)
  `--minimized`
    The K95D window appears minimized but is active
  `--minnoactive`
    The K95D window appears minimized but is not active
  `--maximized`
    The K95D window appears maximized
  `--nodns`
    No reverse DNS lookups

`socket`
  Is a socket number (such as 3000) and is one or more Kermit 95 commands (if more than one, separated by commas), for example:

        k95d 3000 "take scripts/host.ksc, exit"

`"k95 options"`
  Is a program to run (such as K95), together with its options, enclosed in doublequotes.

The doublequotes around the K95 commands cause the multiple words to be grouped together by the Windows shell as a single argument for `K95D.EXE`.

If you start `K95D.EXE` without command-line options, it reads its configuration files, `K95D.CFG`, which contains lines of the same form as the command line arguments, but without the quotes, for example:

      ; This is a comment
      1000  set term echo local, set term newline on, connect
      2000  server, exit
      3000  take scripts/host.ksc, exit

Then, if any connections came in on port 1000, a "chat mode" session would be started. Connections coming in on port 2000 would get a Kermit server, and connections on port 3000 would get a host-mode session.

`K95D.EXE` runs until stopped by hand. If you started it from the HOSTMODE program, then EXITing from the HOSTMODE program does not stop `K95D.EXE`. The way to stop `K95D.EXE` is to bring its window to the foreground and type Ctrl-C. If that doesn't work (it should), click on the Close (X) button in the Title bar. If that doesn't work, type Ctrl-Alt-Del.

#### Host Mode as a Windows NT/2000/XP/Vista/7/8/10 Service

Kermit 95 and K95 Host Mode are not designed to be installed as a Windows service, but this does not necessarily mean it can't be done. The Windows NT Resource Kit includes a SRVANY utility that turns any 32-bit executable into a service. When installing K95 as a service, include the `-#128` command-line option to ignore session logoffs.

#### Host Mode on Dialed Connections

The management program uses `HOSTMDM.KSC` to run the host mode script in a loop, so whenever a user logs out, Kermit 95 waits for the next incoming phone call. Obviously, there can be only one concurrent host-mode session per serial port.

Users make connections to your PC simply by dialing your modem's phone number and then going into terminal emulation mode.

### Summary of Host Mode Files

[Next] [Previous] [Chapter Index] [Contents] [Top]

> File | Location | Description
> --- | --- | ---
> `SCRIPTS\HOST.CFG` | `\v(common)` | The host-mode configuration file.
> `K95D.CFG` | `\v(exedir)` | The K95D.EXE configuration file.
> `HOSTMODE.BAT` | `\v(common)` | Starts the host-mode management program.
> `K95D.EXE` | `\v(exedir)` | Daemon for managing incoming Telnet connections.
> `DOCS\HOSTMODE.TXT` | `\v(exedir)` | This file.
> `SCRIPTS\HOST.KSC` | `\v(common)` | The host-mode script.
> `SCRIPTS\HOSTTCP.KSC` | `\v(common)` | Script to start host mode for TCP/IP users.
> `SCRIPTS\HOSTMDM.KSC` | `\v(common)` | Script to start host mode for dialup modem users.
> `SCRIPTS\HOSTCOM.KSC` | `\v(common)` | Script to start host mode for direct serial connection.
> `SCRIPTS\HOSTMODE.KSC` | `\v(common)` | The host-mode management program.
> `USERS\USERS.DAT` | `\v(_hostroot)` | The user ID database.
> `USERS\GREETING.TXT` | `\v(_hostroot)` | Short greeting text for users when they log in.
> `USERS\HOSTMODE.TXT` | `\v(_hostroot)` | Help text displayed by "Help" menu item.
> `USERS\MESSAGES.TXT` | `\v(_hostroot)` | Messages from users to the proprietor.
> `USERS\username.MSG` | `\v(_hostroot)` | Message(s) to a particular user.
> `INCOMING` | `\v(_hostroot)` | Directory to which all users can upload files.
> `PUBLIC` | `\v(_hostroot)` | Directory from which all users can download files.
> `PUBLIC\HOSTUSER.TXT` | `\v(_hostroot)` | A user guide which users can type or download and read.

The `HOST.CFG` configuration file is shared by `HOSTMODE.KSC`, `HOST.KSC`, and all the other scripts, so you only need to change configuration parameters in one place.

### Modifying the Host Mode Program

Links: [Previous] [Chapter Index] [Contents] [Top]

Since Kermit 95's host mode is written entirely in the Kermit script language and executed by Kermit itself, anybody can make improvements. Here are a few ideas:

- Callback capability for extra security. User logs in with valid password, callback number is looked up in the database (just add one more field), and the host script calls the user back before presenting the menu.

- Ability of users to find out about other users, see who's logged in, etc.

- More-style paging of typed files and directory listings.

- Ability to send messages, as well as TYPE and DIRECTORY material, to the user's local printer.

- File menus.

- Better messaging features, interactive chat sessions, etc.

- Limits on the length of sessions, the number of concurrent sessions, disk quotas, ANSI screen coloration, etc etc... Hey, it's BBS!

Several programming considerations might not be totally obvious. The worst of them is the conflict between the use of the backslash (\) character by Kermit's command scanner, and its use by Windows as a directory separator. In the Kermit script language, backslash is used to introduce variables, function calls, and numerical representations of special characters. Variables, unless you take precautions to the contrary, are evaluated recursively so, for example, if the variable `\%f` contains a Windows filename such as `C:\K95\OOFA.TXT`, then any reference to this variable, such as:

      echo "\%f"

would result in its full evaluation, giving undesired results like:

      "C:K95OA.TXT"

Windows and OS/2, at the API level, can accept forward slash (/) as well as backslash (\) as a directory separator, and therefore so can self-contained Kermit 95 commands such as SEND, MKDIR, etc, that take filenames or directory names. Unfortunately, however, Windows commands and programs such as DIR will not accept forward slashes, and so before feeding a filename to one of them, you'll need to do:

    \freplace(xxx,/,\\)

where xxx is the name of the variable that contains the filename.

On the other hand, if the directory name contains backslashes to begin with, then any unguarded reference to it will result in the backslashes being interpreted recursively by Kermit's command scanner. To avoid this, use constructions like:

      open read \fdefinition(_userfile)

`\fdefinition()` means "return the definition of the macro" without evaluating it further. Similarly for `\%x` variables:

      open read \fcontents(\%f)

A related consideration to be aware of is that you can't start a DOS shell and redirect its input and/or output to the communications channel. It just doesn't work, don't even try it. If it did work, we could easily use (e.g.) REDIRECT on `COMMAND.COM` to give hostmode users an interactive DOS session.

The ability to Telnet to another host is available (more or less) with the following "DOS" command (for host users with DOS capability):

      k95.exe -# 96 -J hostname -C "set term type tty"

No guarantees!

## Trademarks

AT&T Information Systems, Morristown, NJ: AT&T Mail, Easy Link
Compaq Computer Corporation, Houston, TX: All trademarks formerly owned by Digital Equipment Corporation
CompuServe, Inc. (an H&R Block Company), Columbus, OH: CompuServe
Delphi Internet Services, Cambridge MA: Delphi
Digital Equipment Corporation, Maynard, MA: VAX, AXP, Alpha AXP, VMS, OpenVMS, VT52, VT100, VT102, VT220, VT320
Digital Equipment Corporation, Intel Corporation, Xerox Corporation: Ethernet
Dow Jones and Company, Princeton, NJ: Dow-Jones News/Retrieval Service
Henson Associates, Inc., New York, NY: Kermit. The Kermit protocol was named after Kermit the Frog, star of THE MUPPET SHOW television series. The name "Kermit" is used by permission of Henson Associates, Inc., New York.
International Business Machines: IBM, OS/2, OS/2 Warp
MCI Communication Corporation, Piscataway, NJ: MCI Mail
Microsoft Corporation, Redmond WA: Microsoft, MS, MS-DOS, Windows, Windows NT, Internet Explorer
Netscape Communications Corporation, Mountain View CA: Netscape, Netscape Navigator, Netscape Communicator
Omen Technology, Inc., Portland OR: ZMODEM-90
Metropolis Systems, Inc.: Metropolis BBS
Teletype Corporation, Skokie, IL: Teletype
TYMNET, Inc., San Jose, CA: TYMNET
US Sprint Communications Company Limited Partnership, Shawnee Mission, KS: US Sprint, SprintNet, Telenet
Open Software Foundation: UNIX

Other brands or product names are trademarks or registered trademarks of their respective holders.

[Top] [Contents]