1: Introduction, highlights and main topics
Click on any the following links for immediate help or introduction to various important topics:
NEW USERS
TABLE OF CONTENTS
MAJOR FEATURES
HELP ON HELP
FAQ
NEWS SCREEN
USER OPINIONS
Shortcut to All IVT.RC commands
Shortcut to All script keywords
Shortcut to All script function names
Shortcut to All script reserved
variables
Welcome to the HELP-system of IVT. Click on this link if you want to find out what IVT is...
Below you'll find the most important topics in a logical order. There is also a table of contents that lists all chapters and sections. See "about" to get an idea of the size of these manual pages (when printed, the total manual is over an inch thick!).
Overview of topics in order of importance:
Starting IVT | Command line parameters, environment and all that. |
Session Management | Making, managing and disconnecting sessions. |
Status line | Describes how to make most of the bottom line. |
Cutting & Pasting | Yank data into multiple buffers, paste anywhere. |
Supported protocols | Transport protocols and session protocols. |
Special keys | Summary of all IVT special keystrokes. |
Scroll back history | How to view lines that scrolled from the screen. |
Kerberos V5 support | IVT supports this MIT authentication protocol! |
Secure shell (SSH) | IVT supports Secure Shell version 2! |
IVT.RC files | Describes all things you can put in start-up files. |
Setup screens | Changing configuration on the fly. |
Cut/Paste with mouse | How to use the rodent to do the cut/paste. |
Using a printer | How to print to a device or file, auto or manual. |
Keyboard macros | How to make those repetitive tasks easier. |
File transfer | X, Y and ZMODEM file transfer with ALT+F9. |
Crypt IVT.RC files | To hide passwords. |
Screen saver | Timer controlled or manual idle task. |
Locking the keyboard | Automatically after some time or manually. |
IVT Escape Sequences | All recognized VT220 and IVT special sequences. |
Challenge response | How to do secure login over a network. |
Various examples | Example configurations, scripts, etc. |
__ IVT supports serial lines __
Serial communication | Tells you how to use RS232 communications. |
Multiplex protocol | Sorry, no multiplexing in this version |
__ IVT supports a scripting language __
Script language | Describes the major features of this powerful language. |
Using Variables | Global, session, parameter and local variables. |
Expressions | Valid expressions in scripts. |
__ Support programs for IVT __
PRIVT | Print Unix files on any IVT printer. |
EMU_TYPE | Determine type of emulator used at login-time. |
LOGINC | IVT Challenge/Response protocol server for Unix. |
KEYP | Program your (IVT/VT220) keys from Unix. |
IVT.TIC | Terminfo file for IVT. |
IVTCOM | A Unix script to run commands on your IVT PC. |
1.1: Global description
IVT is a multi-session, LAN-oriented (but serial lines
supporting) VT220 terminal emulation program for Windows.
Besides TELNET, this build also supports
the SSH protocol.
The URL to download it from is described here.
If you are a Unix user who normally uses a PC to run some sort of VT100 emulator to contact your Unix hosts, this program is for you! IVT contains many features to make life easier and is meant to be a program you want to spend most of your (working) time in.
"Multi-session" means it supports several simultaneous
connections to one or more hosts in a SINGLE window.
Creating sessions is very easy, and there
are numerous ways to switch between sessions, to monitor
background session activity and to close sessions. The command line parameters can be used to do a
variety of things, including automatic creation of all your
sessions (including login).
There is the session group editor to
allow interactive editing of groups.
When output scrolls from the screen, the history pager can bring it back.
One of the major features is copy and
paste with the mouse and/or the keyboard. Check out the special way to copy words and phrases from
the screen.
This really saves a lot of typing!
IVT is very, very configurable, using IVT.RC files.
This Windows version is also able to save the setup in the
Windows registry.
See "IVT and the Windows registry" for
details.
Also, IVT supports a scripting language.
This powerful language can automate many tasks. It has variables and complex expressions.
It can, for example, automate the login
process, while keeping your passwords hidden by encryption. The standard setup comes with a
password learning system that does this
for you already.
The bottom line of the screen is normally a status line that displays many important bits of information. Click the fields to change them, right-click them for help.
The keyboard is very customizable and programmable. It can automate many tedious tasks for you. You can program keys, for example. It can also lock the keyboard under timer control (or manually with ALT+l).
Almost all settings of IVT can be viewed and changed by using the setup screens.
IVT can drive a printer to save all output (or explicit screen prints) to a real printer or to a file. Printouts are automatically sized to fit the paper.
AUTOLOG is very handy for making transcripts of sessions (log to file).
IVT also transfers files, using X/Y/Zmodem protocols with automatic recognition of a ZMODEM file transfer. If you have RZ on Unix, you can drop a file on the IVT window and it will start the transfer.
There are many more features - see the table of contents for ideas...
1.2: Where can I obtain IVT?
Currently, IVT can be obtained from http://ivtssh.nl/downloads
This is the commercial version of IVT with support for
Kerberos V5 authentication and
DCE/Gradient integration.
It also supports SSH and GSSAPI.
1.3: List of major features.
Throughout the manual you'll find topics that are highlighted as being a "major feature". All such topics have a hyperlink to the previous and next topics. This screen serves as a start and an end of the list.
Follow this list to get a quick impression of the strong
points of IVT.
Follow this link to go to the first such
item.
1.4: Licence agreement
BEARSTAR SOFTWARE PRODUCT LICENSE AGREEMENT
This BearStar Software Product License Agreement (the "Agreement") is made between you, the end user customer ("Customer"), and BearStar Software, a Dutch Corporation ("BearStar").
IMPORTANT - BY CLICKING ON THE "YES" OR "ACCEPT" BUTTON, OR
INSTALLING, DOWNLOADING OR USING THE SOFTWARE, OR OPENING THE
PACKAGE, YOU ARE CONSENTING TO BE BOUND BY AND ARE BECOMING A
PARTY TO THIS AGREEMENT AND ARE REPRESENTING THAT YOU ARE DULY
AUTHORIZED TO EXECUTE THIS AGREEMENT ON BEHALF OF YOUR
COMPANY. IF YOU DO NOT AGREE TO ALL OF THE TERMS OF
THIS AGREEMENT, CLICK THE "NO" OR "DO NOT ACCEPT" BUTTON, DO NOT
USE, INSTALL OR DOWNLOAD THE SOFTWARE, OR IF APPLICABLE, DO NOT
OPEN THE PACKAGE, AND, IF APPLICABLE, RETURN THE SOFTWARE TO
BEARSTAR. IF YOU HAVE EXECUTED A WRITTEN MASTER
SOFTWARE LICENSE AGREEMENT WITH BEARSTAR FOR THIS SOFTWARE AND
THE TERMS AND CONDITIONS OF THE MASTER SOFTWARE LICENSE AGREEMENT
CONFLICT WITH THE TERMS AND CONDITIONS OF THIS AGREEMENT, THE
APPLICABLE TERMS AND CONDITIONS OF THE MASTER SOFTWARE LICENSE
AGREEMENT SHALL APPLY. THIS LICENSE AGREEMENT CONTROLS
AND SUPERSEDES ANY PURCHASE ORDERS ISSUED BY YOU FOR THIS
SOFTWARE.
THIS SOFTWARE IS PROTECTED BY COPYRIGHT LAWS AND INTERNATIONAL
COPYRIGHT TREATIES, AS WELL AS OTHER INTELLECTUAL PROPERTY LAWS
AND TREATIES.
1. Grant of License. During the term of this Agreement, Customer will have a non-transferable and non-exclusive license (without right to sublicense) to: (i) use the specified version of the BearStar Software Product(s) in object code form and associated documentation, if any (collectively, the "Product") for the specified number of machines or servers and in accordance with the terms and conditions of this Agreement and (ii) reproduce the Product as reasonably needed solely for inactive backup or archival purposes.
2. Intellectual Property
Protection; Restrictions. The Product and all
intellectual property rights therein, including code, operation,
architecture, implementation, and look and feel, are and shall
remain at all times the exclusive property of BearStar and its
licensors. The Product is protected by international
and United States copyright laws and treaty provisions.
Nothing contained in this Agreement shall give or convey to
Customer any right, title or interest in the Product, except to
the extent of the license rights expressly granted by this
Agreement. Customer may not modify, translate, reverse engineer,
decompile, disassemble, or create derivative works or emulators
of the Product except to the extent that BearStar is required to
grant such rights under law for the purposes of achieving
compatibility with third-party software or hardware and in such
event Customer shall notify BearStar and BearStar shall have a
reasonable opportunity subject to a reasonable fee for doing so
to create a version of the Product which is compatible with
Customer's platform and environment.
However, BearStar shall not be obligated to create such
version.
Customer may not use the Product in a service bureau or
outsourcing arrangement. Customer may not delete or
alter any copyright, trademark or other proprietary rights
notices of BearStar and its licensors, if any, appearing on the
Product and Customer will reproduce such notices on all copies
made of the Products. Customer may not distribute,
sublicense, rent, lease, sell, transfer or grant any rights for
the Products in any form to any third party without the express
written consent of BearStar.
In the event of any breach of this section BearStar has the right
to seek injunctive or other equitable relief.
3. License Fee;
Payment. In consideration of the rights granted
herein, Customer will pay BearStar the associated license fees
within thirty (30) days of invoice date in U.S. dollars or other
agreed currency to the attention of accounts
payable. If Customer does not pay an invoice(s) when
due, BearStar may charge a late payment fee on the unpaid amounts
equal to the lesser of ten percent (10%) per annum, or the
maximum legal rate. Customer will be responsible for,
and will promptly pay, all taxes of whatever nature (including
but not limited to value added, sales and use taxes) and shipping
charges associated with this Agreement or Customer's receipt or
use of the Product, except taxes based on BearStar's net
income. Such taxes shall not be considered a part of,
a deduction from or an offset against license fees.
At BearStar's option, once per calendar year, an independent
certified public accountant selected by BearStar and reasonably
acceptable to Customer may, at BearStar's expense, and upon
reasonable notice and during normal business hours, and subject
to a confidentiality agreement, audit the appropriate records of
Customer to verify that Customer's use of the Product is in
compliance with the terms of this Agreement and the associated
license fees.
If the associated license fees pursuant to the audit are
different than those paid, Customer will be invoiced or credited
for the difference, as applicable.
4. Termination. This
Agreement is effective until terminated pursuant to this
Agreement. Either party may terminate this Agreement
at any time on written notice to the other in the event of a
material breach by the other party (which includes failure to pay
license fees) and a failure to cure such default within a period
of thirty (30) days following receipt of written notice
specifying that a default has occurred. Upon (i) the
institution of any proceedings by or against Customer seeking
relief, reorganization or arrangement under laws relating to
bankruptcy, insolvency, receivership or liquidation which
proceedings are not dismissed within sixty (60) days; (ii) the
assignment for the benefit of creditors, or the appointment of a
receiver, liquidator or trustee, of any of Customer's property or
assets; or (iii) the liquidation, dissolution or winding up of
Customer's business; then and in any such events this Agreement
may immediately be terminated by BearStar upon written
notice. Upon termination, all licenses granted
hereunder shall terminate and the Customer agrees to cease using
the Product, purge from its electronic memory devices all copies
of the Product and return to BearStar, promptly, the Product and
all related documentation. Termination shall not
relieve Customer from paying all fees accrued prior to
termination.
The provisions entitled Intellectual Property Protection,
Confidentiality, Disclaimer of Warranties, Limitation of
Liability and General Provisions shall continue in force even
after termination of this Agreement.
5. Confidentiality. For
purposes of this Agreement, "Confidential Information" shall mean
any confidential, trade secret or other proprietary information,
including the Product and software code, disclosed by one party
to the other under this Agreement, except for information that:
(i) was previously known by the receiving party free of any
obligation to keep its confidence; (ii) is now or subsequently
becomes generally known to the public through acts not
attributable to the receiving party; or (iii) the receiving party
rightfully obtains from a third party who has the right to
transfer or disclose it. Confidential Information (A)
shall be used by the parties only for the purposes set forth in
this Agreement; (B) shall not be reproduced or copied, in whole
or in part, except as necessary for use as authorized herein; (C)
shall be distributed only to those employees of receiving party
with a "need-to- know" in order to exercise rights and to perform
tasks or services called for under this Agreement; and (D) shall
be treated in confidence by the receiving party, and not
disclosed to any third party without the prior written consent of
the disclosing party.
The terms of this Agreement are deemed Confidential Information
and may not be disclosed without the prior written consent of the
other party, except (i) either party may disclose such terms to
the extent required by law, rules and regulations or as necessary
to enforce this Agreement; (ii) either party may disclose the
existence of this Agreement; (iii) either party may disclose the
terms of this Agreement to such party's auditors, attorneys,
bankers or investment bankers as necessary for their rendition of
services to a party; and (iv) BearStar shall have the right to
disclose that Customer is a customer of BearStar and the Product,
including in BearStar's marketing materials and Web
site. This section shall survive termination of this
Agreement. In the event of any breach of this section
the non-breaching party has the right to seek injunctive or other
equitable relief.
6. Maintenance and Support; Updates. Maintenance and support or updates may be purchased separately by Customer from BearStar in accordance with the BearStar maintenance and support plan and associated fees paid by Customer.
7. LIMITED
WARRANTY. During the initial thirty (30) day period
from the date the Product is shipped, BearStar warrants that the
Product will perform substantially in accordance with the
applicable accompanying published Product
documentation. Customer's sole remedy for breach of
the foregoing limited warranty shall be to have the deficiencies
remedied or the Product replaced or to receive a refund of the
pro rata amount of the fees allocable to the use of the Product,
at BearStar's option. The limited warranty hereunder is void if
failure of the Product has resulted from the misapplication,
abuse or unauthorized modification of the Product. Any
replacement Product will be warranted for the remainder of the
original warranty period.
8. DISCLAIMER OF WARRANTIES.
EXCEPT FOR THE LIMITED WARRANTY SET FORTH HEREIN, THE PRODUCT IS
PROVIDED "AS IS" WITHOUT ANY WARRANTY
WHATSOEVER. BEARSTAR AND ITS LICENSORS DISCLAIM ALL
WARRANTIES, EXPRESS OR IMPLIED OR STATUTORY, AS TO ANY MATTER
WHATSOEVER, INCLUDING, WITHOUT LIMITATION, ALL IMPLIED WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NON-INFRINGEMENT OF THIRD PARTY RIGHTS. WITHOUT
LIMITING THE FOREGOING, BEARSTAR AND ITS LICENSORS DO NOT WARRANT
THAT THE PRODUCT WILL MEET CUSTOMER'S REQUIREMENTS, THAT
OPERATION OF THE PRODUCT WILL BE UNINTERRUPTED OR ERROR FREE OR
THAT ERRORS IN THE PRODUCT WILL BE CORRECTED. IF
IMPLIED WARRANTIES MAY NOT BE DISCLAIMED UNDER APPLICABLE LAW,
THEN ANY IMPLIED WARRANTIES ARE LIMITED IN DURATION TO THE ABOVE
WARRANTY PERIOD. NO BEARSTAR DEALER, AGENT OR EMPLOYEE
IS AUTHORIZED TO MAKE ANY MODIFICATIONS, EXTENSIONS, OR ADDITIONS
TO THIS WARRANTY.
9. Indemnity. BearStar
at its own expense shall (i) defend, or at its option settle, any
claim or suit against Customer on the basis of infringement of
any UK patent, copyright, trademark, or trade secret by the
Product in any country that has a bilateral trade agreement on
intellectual property rights with the U.K. and (ii) pay any final
judgement entered against Customer on such issue or any
settlement thereof; provided (a) BearStar has the right to
control and direct the defence and/or settlement, (b) Customer
notifies BearStar promptly in writing of each such claim or suit
and gives BearStar all information known to Customer relating
thereto, and (c) Customer cooperates with BearStar in the
settlement and/or defence. If all or any part of the Product
is, or in the opinion of BearStar may become, the subject of any
claim or suit for infringement of such intellectual property
rights, BearStar may, and in the event of any adjudication that
the Product or any part thereof does infringe or if the use of
the Product or any part thereof is enjoined, BearStar shall, at
its expense, have the option to: (i) obtain the right to continue
use of the Product; (ii) replace or modify the Product so that it
is no longer infringing and has substantially equivalent
functionality; or (iii) if none of the foregoing remedies is
commercially feasible, refund the license fees paid by Customer
hereunder, if any, less depreciation for use assuming straight
line depreciation over a five (5)-year useful life and terminate
this Agreement. Notwithstanding the foregoing, BearStar shall
have no liability under this section if the alleged infringement
arises from (i) the use of other than the current unmodified
release of the Product, (ii) use of the Product in a manner other
than that specified in this Agreement, or (iii) modification of
the Product or combination of the Product with other equipment or
software not provided by BearStar, in each case if such action
would have been avoided but for such use or
combination. Notwithstanding anything to the contrary
in this Agreement, the foregoing states BearStar's entire
liability and Customer's exclusive remedy for proprietary rights
infringement relating to the Product.
10. LIMITATION OF
LIABILITY. EXCEPT FOR A BREACH OF SECTION 5
(CONFIDENTIALITY), NEITHER BEARSTAR NOR ITS LICENSORS SHALL BE
LIABLE TO CUSTOMER OR TO ANY THIRD PARTY FOR CONSEQUENTIAL,
INDIRECT OR INCIDENTAL, SPECIAL OR EXEMPLARY DAMAGES, INCLUDING,
WITHOUT LIMITATION, DAMAGES FOR LOST DATA, RE-RUN TIME,
INACCURATE INPUT, USE OF DIGITAL CERTIFICATES OR DIGITAL
SIGNATURES, WORK DELAYS, INABILITY TO ACCESS THE INTERNET,
TELECOMMUNICATIONS FAILURES, HACKERS, BUSINESS INTERRUPTIONS OR
LOST PROFITS, EVEN IF CUSTOMER HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES, ARISING OUT OF THIS AGREEMENT OR USE
OF THE PRODUCT OR SERVICES PROVIDED BY
BEARSTAR. EXCEPT FOR A BREACH OF SECTION 5
(CONFIDENTIALITY), UNDER NO CIRCUMSTANCES SHALL BEARSTAR'S
LIABILITY TO CUSTOMER OR TO ANY THIRD PARTY ARISING OUT OF OR
RELATED TO THIS AGREEMENT OR THE PRODUCT OR SERVICES, EXCEED THE
AMOUNT PAID BY CUSTOMER HEREUNDER, REGARDLESS IF ANY ACTION OR
CLAIM IS BASED ON CONTRACT, WARRANTY, INDEMNITY, NEGLIGENCE,
STRICT LIABILITY OR OTHER TORT OR OTHERWISE.
Customer acknowledges that no computer system or software can be made completely secure, and that the use of the Product does not guarantee the safety or security of Customer's systems or information. Customer is responsible for implementing and monitoring appropriate security procedures and for making appropriate back-up copies of all data.
11. Export Compliance and Foreign
Reshipment Liability.
THE PRODUCT IS SUBJECT TO EXPORT, REEXPORT AND IMPORT
RESTRICTIONS. CUSTOMER SHALL NOT EXPORT, REEXPORT, OR
IMPORT, DIRECTLY OR INDIRECTLY, THE PRODUCT OR INFORMATION
PERTAINING THERETO TO ANY COUNTRY TO WHICH SUCH EXPORT, REEXPORT
OR IMPORT IS RESTRICTED OR PROHIBITED BY THE GOVERNMENT OF THE
UNITED STATES OF AMERICA OR THE LOCAL LAWS OF CUSTOMER'S
JURISDICTION, OR AS TO WHICH SUCH GOVERNMENT OR ANY AGENCY
THEREOF REQUIRES AN EXPORT OR IMPORT LICENSE OR OTHER
GOVERNMENTAL APPROVAL AT THE TIME OF EXPORT, REEXPORT OR IMPORT
WITHOUT FIRST OBTAINING SUCH LICENSE OR APPROVAL.
12. U.S. Government End
Users. For any Products acquired directly or
indirectly on behalf of a unit or agency of the United States
Government, this provision applies. For civilian
agencies: the Products were developed at private expense; are
existing computer software and no part of them were developed
with government funds; are a trade secret of BearStar for all
purposes of the Freedom of Information Act; are commercial items
and thus, pursuant to Section 12.212 of the Federal Acquisition
Regulations (FAR), the Government's use, duplication or
disclosure of the Products is subject to the restrictions set
forth in this Agreement and is incorporated into the contract or
purchase order between BearStar and the
U.S. government agency; in all respects are
proprietary data of BearStar; and are unpublished and all rights
are reserved under the copyright laws of the United
States. For units of the Department of Defense
("DoD"): The Products are commercial computer software (and
commercial computer software documentation), and pursuant to DoD
FAR Supplement Section 227.7202, use duplication or disclosure of
the Products is subject to the restrictions set forth in this
Agreement and is incorporated into the contract or purchase order
between BearStar and the U.S. Government agency.
13. General
Provisions. This Agreement shall be governed by and
construed in accordance with the laws of the Netherlands,
irrespective of its choice of law principles. The
parties agree that the United Nations Convention on Contracts for
the International Sale of Goods shall not apply to this
Agreement. Except as otherwise provided herein, this
Agreement shall be binding upon, and inure to the benefit of, the
successors, executors, heirs, representatives, administrators and
assigns of the parties hereto.
Notwithstanding the foregoing, Customer shall not have the right
to assign this Agreement, by operation of law or otherwise,
without BearStar's prior written consent, not to be unreasonably
withheld. Any such purported assignment of this
Agreement without obtaining written consent shall be void and of
no effect. If any provision of this Agreement shall be
found invalid or unenforceable, the remainder of this Agreement
shall be interpreted so as best to reasonably effect the intent
of the parties hereto. The failure of a party, at any
time or from time to time, to require performance of any
obligations of the other party hereunder shall not be deemed a
waiver and shall not affect its right to enforce any provision of
this Agreement at a subsequent time. Any purchase
orders or similar documents relating to the Product issued by
Customer or otherwise will have no effect on the terms of this
Agreement. This Agreement constitutes the entire
understanding and agreement of the parties hereto with respect to
the subject matter hereof and supersedes all prior and
contemporaneous agreements, understandings, or purchase orders
between the parties. Any term or provision of this
Agreement may be amended, and the observance of any term of this
Agreement may be waived, only by writing signed by the parties to
be bound thereby.
Except as otherwise provided for in this Agreement, any notice,
demand, or request with respect to this Agreement shall be in
writing and shall be effective on the date received (unless the
notice specifies a later date) only if it is sent by a courier
service that confirms delivery in writing, or if sent by
certified or registered mail, postage prepaid, return receipt
requested, addressed to the respective address of the party,
attention to Legal Department. Any party may change
its address for such communications by giving notice thereof to
the other party in conformity with this Section.
In any action to enforce or interpret any part of this Agreement,
the prevailing party shall be entitled to recover, as an element
of the costs of the suit and not as damages, reasonable
attorneys' fees to be fixed by the court (including without
limitation, costs, expenses and fees on any appeal).
Snipweg 33,
7331 LS Apeldoorn, The Netherlands.
1.4.1: Copyright for Open Source parts of IVT
For the HIGHLIGHT and history search functions that use regular
expressions, IVT uses the PCRE library (Perl Compatible Regular
Expressions), details of which can be found at
http://www.pcre.org.
As the website says: "The PCRE library is free, even for building
proprietary software", and thank you very much for providing this
excellent package.
The documentation for the Perl expressions can be found at: http://perldoc.perl.org/perlre.html
The PCRE library is released under the BSD license, which reads:
THE "BSD" LICENCE
-----------------
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
End of quote.
1.5: Copyright Notice PuTTY
Much was learned from studying the source of PuTTY, an
SSH/TELNET client that is open source. Bits were copied and
modified, improved and merged with IVT, as permitted by the
licence as long as it is stated clearly and the text of the
licence is copied. Unicode character handling and full-screen
mode are examples of such derived code. So:
Start quote:
------------------
PuTTY is copyright 1997-2018 Simon Tatham.
Portions copyright Robert de Bath, Joris van Rantwijk, Delian Delchev, Andreas Schultz, Jeroen Massar, Wez Furlong, Nicolas Barry, Justin Bradford, and CORE SDI S.A.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
AND NONINFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
------------------
End of quote.
And I would once more like to thank the authors of PuTTY for making this available. IVT also borrowed most of the SSH code from PuTTY, which was modified to support the multi-session feature of IVT and extended in various ways to integrate better with the rest of IVT. Having the source of a working SSH client for Windows made this a *lot* easier.
1.6: Command line parameters of IVT
IVT accepts the following parameters on the command line (click on any of the hyperlinks for more information):
VERSION: xx.yy. USAGE: IVT [{-|+}<options>] [VARS] <host>
<loginname> [args]
-A : Automatic startup from
CREATE statements in IVT.RC
Use
+A to disable automatic creation of sessions on startup.
-agrp : Automatic startup, use group code 'grp'.
This
option can be repeated to start multiple groups.
Note:
No space is allowed between the -a and the group name.
-B : Suppress display of
graphic introduction (banner) screen.
See
also SPLASHTIME.
The
banner is always suppressed if there is a "nosplash" file in
the
current directory.
-C<scr> : Call script scr when
connection to host established (see ONCONNECT).
-c<file>: Use 'file' as the ONLY IVT.RC file.
Note:
No space is allowed between the -c and the file name.
-h : Enter hypertext manual of
IVT (complete on-line documentation!)
-I : Ignore Windows startup
mode (MAXIMIZED/MINIMIZED)
See
also IVT_SHOWNORMAL environment
variable.
-n : No attempt to do autologin.
-p : Secure
mode - No sub-processes started ever
-s : Secure
mode - No multiple sessions, no sub shell
-T : Turn startup Tips off.
-Q : Do NOT start the "Start group on startup" groups.
-u <url>: Parse URL and open a new tab
in a running instance (or starts IVT).
-x : Turns status line off
-L : Suppress appending of
.LOGIN to NetBios hostnames
-N : Use NetBios protocol stack
-P<prof>: Select prof as startup PROFILE.
Note:
No space is allowed between the -P and the profile name.
-S : Use serial protocol
-D : use DUMMY protocol.
-W : Use WINSOCK/TELNET protocol.
-2 : Use SSH Version 2 protocol.
-4 : Force use of IPv4
-6 : Force use of IPv6
File transfer available.
Scripting language available.
Receive file (ESC g) and Run command (ESC R) available.
Support for encrypted .RC files
available.
Challenge/response protocol available.
1.7: Version number of IVT
IVT is under continuous development. New features get added regularly and the few bugs that may exist get fixed real fast.
When problems exist, it is important to be able to identify
the version used.
Therefore, the version number is displayed when IVT is invoked
with bad parameters (see usage).
It is also displayed in the about
screen.
Furthermore, the support e-mail address is displayed there too,
so you know where to send questions for support.
See the news screen for a detailed description of new features.
Compile time features are shown when you invoke IVT with bad parameters.
1.8: The news screen explained
The F4-N screen documents the development of IVT.
The BUILDNR uniquely identifies each
build of IVT. Every time something significant is changed in the
functionality, the change is documented in the news screen,
identified by date and IVT version
number.
The idea is that, every time you get a new version of IVT, you
use F4-N to read up on the changes and extensions in
functionality that might affect you.
When you run a new version for the first time, IVT will show this
news screen automatically (but see NO_SHOWNEWS).
The last character of the version number is changed every time
an executable is released (bug fixes, very minor changes).
The minor digit of the version number is changed every time
something significant is changed (new features, changed
functionality).
The major digit of the version number is changed after major
overhaul.
1.9: Passing command line options
As shown in the usage screen of IVT, it is possible to specify a lot of different options on the command line. The options can either be preceded by a + or by a -. Using a - will turn an option ON, using a + will reverse the meaning of an option.
So -s will turn secure mode ON and +s will turn it off.
Some options take an argument. This must NOT be separated by spaces from the option letter itself, so:
-cc:/my/startup.rc
must be used to force IVT to read only the specified start-up file and no others (the option is -c and the argument is c:/my/startup.rc).
You can also use the OPTIONS keyword in an IVT.RC file to change the options that were specified on the command line.
Currently, options are not stored in IVT variables so there is no easy way to find out (in a script) what options are in effect.
1.10: Assigning script variables from the command line
Between the last option and the hostname on the command line, you can specify multiple arguments in the form of:
Variable=value
"Variable=Value with spaces"
IVT will GSET all variables to the specified values, making these variables available in all subsequent sessions (unless destroyed using UNSET).
This way, you can pass information into IVT from the command
line.
See also ONCONNECT, to start a script as
soon as the session is established.
See also BATCHMODE, to specify you are
using IVT as a batch application.
See also $ENV_ variables to reference the
environment.
1.11: Specifying a hostname on the command line
The hostname IVT is to connect to initially, is either specified on the command line directly or specified using a CREATEGRP statement combined with the -A or -agrp options on the command line.
Hostnames depend on the protocol that you use to contact a host. For example, when you use a serial line connection there really is no 'host', but only a communications device that you must specify (a modem port). So a command line might look as follows:
IVT -S
com2,9600,n,8,1
This will direct IVT to use a serial protocol, and the initial connection should be to COM port 2, with a given baud rate, parity, data bits and stop bits setting. Once IVT is started, you can create other sessions (either to another serial port, or by changing the PROTOCOL, to an entirely different type of host).
I'm very proud of the multi-protocol support of IVT - it will run anything over anything, and different sessions are supported on different protocols simultaneously. I have used TCP/IP sessions from my home-PC to my home Unix box while at the same time using the modem to dial out to another Unix box that used IVTMUX to enable me to run several sessions there also.
You can read more about these protocols in this chapter.
1.12: Passing a URL on the command line (-u)
IVT is integrated with a browser (like Chrome, Firefox or
IE).
A browser can follow a link of type:
ivt://hostname/[Statement[;Statement;...]]
The code you need in the HTML would be something like:
<A href="ivt://somehost">Login to
somehost with IVT</A>
This will cause IVT to be executed, passing it the URL with a
preceding "-u" option. This new instance of IVT will not create a
window or a session, but first determine if there is an instance
of IVT already running and available for a new session. If no
instance is running, or the instance found is busy in some way,
IVT continues with normal startup.
If an instance is available, the URL is passed to it.
Either way, the URL is interpreted as a command to open a new
session.
If that instance of IVT is viewing the built-in manual, or using
setup, or using some other dialog or feature, the user will have
to return to normal session mode before the session can be
created.
The hostname can be any form of hostname IVT normally accepts, and if that is the only information in the URL, IVT will open a session to that host with default settings. The "hostname" can even be the name of an IVT session group, in which case all the sessions described in that group are created.
Additional information can be passed in the URL.
As an example:
"ivt://rohan.snipweg.wxs.nl/PROTOCOL DUM;NO_GUI_RESIZE"
Would cause IVT to behave as if those commands were read as
part of a script, so the protocol will be DUMMY and resizing will
be disabled.
There is no limit to the number of statements that can be passed
this way.
All statements have to be separated using semicolons (;).
IVT understands escaped characters in the URL of form %XX (two
hex digits) to encode a single ASCII character. So the above can
be written as:
ivt://rohan.snipweg.wxs.nl/PROTOCOL%20DUM;NO_GUI_RESIZE
All commands are synthesized into a script that is executed
just like a PRECONNECT script - before
the session is established. The same rules apply.
Another example:
ivt://rohan.snipweg.wxs.nl/USER=ruurdb
This will connect to the given host and attempt to login as
the given user.
By default (when no user is given), IVT will use the auto login system, which will select a default
user for the host.
Note that this can be used from a command file (shell script) to cause new sessions to be opened inside a running IVT, or have an HTML page with links to your machines that IVT will connect and login to by clicking on those links.
For this to work, there must be a HKEY_ROOT_CLASSES\IVT key in
the registry of Windows with the appropriate values to point the
browser to the IVT executable.
IVT will attempt to insert those values into the registry every
time it is started and when it is installed. However, this
requires admin privileges, so depending on your environment, this
may or may not work.
The -u command line option is always available from a command file, however.
If you have multiple copies of IVT running, the first one
returned by Windows is asked to open a new session (the others
are ignored).
It is, however, against the design idea to have multiple
instances of IVT, the multi-session features of IVT make this
unnecessary.
See also $IVT_URL_STARTUP and
$URLUSER.
You are viewing this in a browser. If this feature works on your
PC, clicking here:
ivt://DummySession/PROTOCOL "DUM";BEEP;Call
NonExistingProc
should open a session to a host called DummySession using
the DUMMY protocol. It should also BEEP and emit an error message about a CALL to a procedure that does not exist.
Every time you click it, the same IVT instance should open a new
tab with an identical session.
1.13: Integration with password managers (like SecretServer)
Programs such as SecretServer manage secrets (like passwords)
and often have a method of starting an external program to open a
session to a certain host.
The password manager will then start that external program,
passing it the name of the desired host, the user to login as,
and the password.
When IVT is configured as the external program, you do NOT want a separate instance of IVT started for every session, but rather a new tab should appear for such a session. IVT can already do this using a URL, to integrate with a password manager is a matter of translating the command to start a session into a URL command. IVT has the "-u" command line option for that. For example, when "$h" is the host, "$u" is the user and "$p" is the password as provided by SecretServer, starting IVT like this will open a new tab to that host, log in as that user and will use that password when the host prompts for it:
C:\path\IVT.exe -B2 -u
ivt://$h;SecretUser=$u;SecretPasswd=$p
The "path" must be the full path to IVT, normally like:
"C:\Program Files\BearStar Software\IVT Secure
Access\ivt.exe"
A little scripting in the standard util.ivt module of IVT will intercept this command and make the proper arrangements for the tab to open.
This is an important feature, others are prev/next
2: Several useful facilities of IVT
2.1: The scroll back buffer
IVT can store text that has scrolled from the top (or bottom) of the screen. This is one of the major features of IVT, and one that you quickly learn to rely upon. Long running make's with lots of output, error messages that get displayed to be cleared immediately by broken software - IVT can bring it back to the screen.
The amount of memory that is used can be specified using
HISTORY.
The default number of saved screens is 10.
IVT can page through the history screens by entering the pager, which is accomplished by typing one of the commands below. Once in paging mode, the ALT is optional, and the keys move the screen in the expected direction:
(ALT)-PageUp | One screen up. |
(ALT)-PageDown | One screen down. |
CursorUp | One line up. |
CursorDown | One line down. |
Home | To first remembered line. |
End | To last remembered line. |
ALT+s | Save history screens to file. |
F3,^F,/,? | Search through the buffer (see also COLOR_SEARCH). |
Using the scrollbar is an even easier
way to access this history data.
Also, you can use the mouse wheel to scroll.
NOTE: When you use the mouse wheel, an extra feature is
available. If data arrives on the session while you are viewing
history, older versions of IVT would display all that data in a
flash when you exited from the history viewer.
Starting with version 23.0 of IVT, this data silently becomes
part of the history, so when you use the mouse to scroll to the
end, more and more of this new data is displayed just as if it
were part of the history data all along.
This works only when you use the mouse to scroll. When you use
the keyboard and try to keep up with incoming data, some of the
PgDown or Cursor-Down keys would be seen as history-viewing
commands (and handled locally by IVT), but when you actually
catch up with the incoming data and IVT exits the viewer, all
these keystrokes would suddenly go to the remote host, with
unpredictable results. So, when you use the keyboard, only ESC
exits the viewer and all data that has arrived in the meantime is
displayed as fast as IVT can manage.
Of course, you can also cut from the
screen or print it (F2).
This can also be combined (use mouse or ALT+c to select
part of the screen, then use F2 to print just the selected
part).
Typing ESC exits the pager. Typing any data-generating
key other than ESC will also exit the pager
and send that keystroke on the session.
If you use the scrollbar or mouse wheel, the pager exits
automatically when you reach the end (i.e. current screen) part
of the history.
You can search through the history buffer using the same method as in the IVT manual pages, which may look familiar to users of VI:
Searches can also be started from the pager menu bar. Normally, a search uses regular expressions. If you are not familiar with those, or you need to search for a string that contains special characters, you can use the 'search plain text' option, which will search for the literal string instead of a regular expression.
Incoming data on a session is blocked while you are viewing history.
You can switch to another session
from the history-pager! However, the session stays blocked
until you return it to normal mode. This allows you to view
error-messages from (say) a compiler on one session while fixing
them on another.
For reasons of efficiency, duplicate lines are filtered from
the history file.
For example, when the Unix 'vi' editor starts, it clears the
screen, then prints a ~-character at the start of every line.
Only one blank line and one line with a ~ are stored in the
history file. This may sometimes distort the images of screens,
but usually nothing important is lost this way.
The entire contents of the history buffer (for the current
session only, of course) can be saved to a file. This makes it
easier to search or edit it outside of IVT. This is only possible
when the secure option is disabled.
To save the file, type ALT+s while in the
pager (or use the menu).
The "Edit" menu on the menu bar contains two items to manipulate the scroll back buffer:
Note that the 'Extra' menu on the session menu bar has a command to print the contents of the clipboard.
This is an important feature, others are prev/next
2.2: Using the mouse
I have gone through considerable lengths to make the mouse
usable in IVT.
The following possibilities exist:
Click on any of the above for more information.
2.2.1: Configuring the default mouse action.
The default action for the mouse can be programmed with the
MOUSE command in your IVT.RC file.
The default is CUTPASTE, which means the LEFT mouse button
will initiate a CUT operation, the RIGHT mouse button will paste
the default buffer.
The default buffer is the clipboard.
You can, of course, change the mouse-action from this setup-screen and save the new setting into the
registry.
Furthermore, the MOUSE_KEY command
can be used to program actions that are initiated when a mouse
button is clicked in combination with keyboard keys.
Such actions can be programmed for individual sessions (MOUSE_KEYLOC) or for all sessions (global
MOUSE_KEY statements).
2.2.2: Simple cutting and pasting with the mouse
The basic mouse-driven CUT operation is started by
clicking the LEFT mouse button (see MOUSE command to change this behavior).
At the start of the CUT, you have a select window (the
colors of which can be set with the COLOR_CUT command).
Drag the mouse around to select the part of the text you wish to
copy.
When the mouse nears the top or bottom of the screen, it will
auto scroll up or down to show history data, see COPYSPEED. Pressing SHIFT will triple the
scroll-speed.
Release the mouse button, the window will disappear (DO NOT BE
ALARMED).
X-windows leaves the selection on-screen, which I think is wrong,
since it alters the display more or less permanently. IVT will
restore the application screen when you have finished a
CUT operation.
Update: see the LEAVE_COPY_SELECTION to change this
behavior.
Update: see the MOUSE_SELECTION
make IVT behave like PuTTY/XTERM.
The selected area is now stored in the default buffer. It can be viewed by typing F4-K. It is also stored on the Windows clipboard, so you can paste the contents into other applications.
Pasting is accomplished (by default) by using the RIGHT
hand mouse button.
This will actually paste the Windows clipboard again (in case you
have used another application to modify the clipboard).
The contents are pasted into the current session.
For people with a minimalist mindset, this is all you need to
know.
However, IVT supports various advanced actions to cut words and
sentences in various efficient ways. See below for details. Please take the time to
read that, it can save you lots of time in the long run!
2.2.3: Advanced copying and pasting with the mouse.
A common action is to select words and phrases from the screen. This can be done with the simple cutting, but there are quicker ways:
The F1 key can be used to toggle between
BLOCK-select and LINE-select.
In the default BLOCK-select mode, IVT selects a rectangular block
of characters. In LINE-select mode, all lines between the first
and last are selected entirely (like most word-processors
do).
The default behavior can be changed using the CUTMODE keyword.
All these keys allow you to quickly select a particular area of the screen using the default paste-buffer. See below for a description of MULTIPLE buffers.
Note: You can configure various levels of Putty compatibility using the MOUSE_PUTTY_WORDS and MOUSE_PUTTY_SELECT options.
2.2.4: Using multiple cut/paste buffers with the mouse.
The previous paragraphs describe how text can be selected and stored in the default paste-buffer. However, sometimes a single buffer is inadequate. An editor like VI maintains multiple (named) buffers to store text in. IVT can do the same.
During a CUT operation you can type a single alphanumeric key. This will end the CUT-operation and store the selected text into a paste-buffer with that name. A PASTE can be done either with the mouse or from the keyboard:
Special feature: When the alphanumeric key you type is
in UPPER case, IVT will APPEND data to the buffer with the
lower-case name, rather than replacing data. This is similar to
what VIM (Vi Improved) does.
You can use this to grab bits and pieces of text into the same
buffer. You cannot append data to the default (unnamed) buffer
this way.
See also ESC<space>e, which
allows the host to control the contents of the clipboard and the
named IVT copy/paste buffers.
The current contents of all named (and default) paste buffers
can be viewed on the F4-K screen.
Use F4-K-W to save them to a file. F4-K-R will read
such files.
See also the LOAD keyword in IVT.RC files.
2.2.5: Programming the mouse in combination with the keyboard
It is possible to configure the mouse to send data on a
session, or even to interact with the host in complex ways by
means of a SCRIPT.
See the MOUSE_KEY statement, which
allows you to configure this, either as the default action for a
mouse button or an action that happens when you press a keyboard
key in combination with a mouse button.
2.2.6: Cutting and pasting with the keyboard.
Normally, you would perform cut and paste operations with the
mouse.
However, you can also perform cut/paste operations using the
keyboard. You enter cut-mode by typing ALT+c. As a bonus,
you can also edit the screen contents while performing a
keyboard-driven cut-operation. This allows you to edit mistyped
commands in environments that do not support command-editing.
The idea is to first move the cursor to the position on the
screen that is the start of the area to cut (using cursor keys,
HOME/END, etc). Then you press control (and keep it down) and use
the same keys to extend the selected area. Press RETURN to
terminate the cut-operation. Press ESC to abort.
When you do a SHIFT+RETURN, you can type a key to store the named buffer.
Valid keys while cutting with the keyboard are listed below:
Cursor-keys | Move the upper left-hand corner of the cut-window |
HOME/END | Move to Begin/End of line |
PageUp/Down | Move to Begin/End of screen |
TAB | Move to next tab position |
SHIFT+<move> | Triples the number of characters/lines moved. When you use Shift+PgUp or Shift+PgDown, it moves to the very top of the buffer (Up) or to the end (Down) immediately. |
CTRL+<move> | Extends the cut-window in the move-direction |
DELETE | Delete the current character from the screen. |
Any character | Written to screen in either Insert or Replace mode. |
INSERT | Toggles between Insert and Replace mode. |
RETURN | Yank the cut-window into default buffer, ends cut mode. |
SHIFT+RETURN | Waits for a key and stores contents in this named buffer. |
F1 | Toggles the cut mode. |
F2 | Print the current selection. |
F10 | Interpret selection as host names and connect to them all. |
F12 | Select the current word, use again to select current line. |
F11 | Undoes last select-action. |
ESC | Abort cut mode (all paste buffers remain intact). |
A keyboard paste is done by typing ALT+p (default
buffer).
See also SHIFT+ALT+p for pasting
named buffers.
2.2.7: Resizing the terminal window with the mouse.
The window can be resized in the normal Windows ways.
The new size will also be communicated to the remote host if the
current protocol allows it (TELNET and
MULTIPLEX, for example).
The upshot of this is that, when for example VI is running in a
TELNET session, it will receive a notification from Unix that the
window size has changed. This will cause VI to redraw the screen
according to the new number of rows and columns.
The new window size will be the default for sessions created
from the resized one. Different sessions can have different
window sizes and positions, IVT will try to make the behavior of
these sessions 'logical' (position of the window when switching
between sessions of different sizes).
You can also choose to propagate a size change to all sessions
using the SIZE4ALL feature (normally,
every session's size is independent of the others).
The new size can also be saved into the registry by typing F3, followed by a click on <SAVE>. The chosen size is now the default terminal size for future invocations of IVT.
2.2.8: Clicking on the various parts of the status line.
The status line in an IVT session is mouse-aware. The following possibilities exist:
When you hover the mouse over the various parts of the status
bar little tooltip windows try to make you aware of the
possibilities.
These can be turned off using NO_TOOLTIPS.
2.2.9: Selecting a session in the F4-S screen with the mouse.
The F4-S screen allows session maintenance. It is entered by either typing
the F4 key followed by an 's', or by clicking on the appropriate part of the
status line.
Another way is to use the WINDOW item on the session menu bar, select the "Session overview" item
there.
All existing sessions are displayed here. Simply double-click on the line that describes the desired session and IVT will switch to that session.
You can also rearrange the order of the sessions here by using the up/down buttons.
2.2.10: Interpret selection as host names and connect to them all
If you select text on the screen using either the mouse or the keyboard and press the F10 function key while selecting, IVT will interpret all words in the selection as host names and will create an instant group of sessions to them all. This can be very convenient if you have some selection of hosts on screen that you need to correct some problem on.
This function is also available from the "Edit" menu, so you can use some other application to store information on the clipboard and let IVT interpret the contents of the clipboard as host names.
This function will use the current value of $URLUSER as the name of the user to login. When
not set, the password learning system will attempt to find a
default user. If you have disabled password learning, you will
have to login manually.
You can also use a PRECONNECT script to
set the value of $URLUSER dynamically.
When the number of hosts in the selection is less than 4, a failed connection is treated normally (error messages, the session is kept so you can read the errors and close the session manually). For a larger number of sessions, the failures are quietly deleted, so if you select a large number of words, some of which are valid host names and many are not, the result will be that you end up with sessions (tabs) for the valid hosts only.
2.2.11: Store text on clipboard from a script
The IVTFUNCTION "Copy String to
Clipboard" takes a string parameter.
The contents of that string are stored on the Windows
clipboard.
This allows a script to control the contents of the clipboard:
use with care.
Passing an empty string will clear the clipboard.
Example:
IVTFUNCTION("Copy String to Clipboard","WAIT", "My Example string");
2.2.12: Kill all session but this one
The IVTFUNCTION "Kill all sessions
but this" can be used to perform the same function that the
context menu of the session tab provides: Close all sessions
except the current one.
Handle with care, as all other sessions are forcefully
closed.
2.3: Themes (manage color themes)
Themes are a new feature in IVT 26.1 (July 2018).
IVT is now shipped with 50 different color themes, which have
been borrowed from Putty. Choosing and activating a color theme
in Putty requires manually loading a bunch of settings into the
registry and it has no preview of a theme.
In IVT, working with these themes is much easier:
That is all.
Note: The "Solarized Light" and "Solarized Dark" themes are
particularly attractive.
Under the hood, a theme is an IVT script that can be called
like any other.
So you can have custom scripts that can activate themes as they
see fit, for example, in a default setup file:
Script STARTUP
Call
THEME_COLOR_Solarized_Dark()
NO_COLOR_FOR BOLD
FOREGROUND # But overrule the
bold color
BOLD_STYLE
SHADOW #
I like boldness
END
will activate the "Solarized Dark" theme, but with a tweak. Most themes will arrange for bold characters to be shown using a color, and the Solarized theme uses a color that is almost the same as the default foreground (so you can hardly distinguish bold text from normal text). Personally, I like it better when bold is truly bold, so I disable the color-for-bold, and change bold display to a shadowed font. Likewise, any setting set by the theme can be tweaked or overruled by subsequent commands.
All themes are coded in a new plugin, see the "Plugins" directory of IVT for the details.
If you find a Putty theme that you want to use and is not part
of IVT: In the "Support Programs" directory of IVT is the Perl
script that I have made to convert the cryptic Putty registry
names into IVT themes.
The script is meant to be self-explanatory.
2.4: Locking the keyboard
It is possible to lock the keyboard either explicitly or under
timer control.
Unlocking the keyboard is done by typing the password
followed by a RETURN.
First, the password must have been defined. This can be done by
using the PASSWORD directive in an
IVT.RC file. The password can be:
An encrypted password can be obtained by using the 'IVT-locking password' on this basic setup-screen. When a password is typed here, the one-way encrypted version is displayed. This 13-character long string must be used as the parameter for the PASSWORD directive in the IVT.RC file.
For your convenience, the encrypted version of the password is placed on the Windows clipboard, so it can be pasted into a PASSWORD statement in your IVT.RC file.
The keyboard is locked by typing ALT+L. A lock-icon (keys) will appear on the status line.
Another possibility is to use the LOCKTIMER keyword in the IVT.RC file (or by setting it using setup). This specifies the number of minutes that must pass before the keyboard is locked automatically when no keyboard activity is detected. 30 seconds before the keyboard is locked, IVT will beep and start a countdown in the status line. Type a key to abort the countdown.
2.5: The "Scripts" menu
IVT has had the possibility to create a "Custom" menu for many years. This allows you to have a
home-rolled entry on the menu bar that contains entries to start
scripts of your own making. Few people use this powerful feature,
so in release 21.1 is has been made more prominent.
In release 23 the option was added to have MULTIPLE menus.
The standard configuration file of IVT now uses this to define an entry called "Scripts", and creates several menu-entries in there:
By editing the IVT.RC file, or - better - overriding or
extending the default configuration in your own local IVT.RC file you can start your own scripts with
just a few mouse clicks, too. The standard IVT.RC file uses
INCLUDE_OPT on the HOMEDRIVE/HOMEPATH
environment variables to load a personalized configuration file
(normally C:\Documents and Settings\YOUR NAME\ivt.rc).
That file is typically intended to extend/alter (or suppress)
such a menu and alter other settings of IVT.
The scripts menu bar contains an entry to start NOTEPAD on that
file.
See the stock IVT.RC file for more examples, and the MENU keyword.
See also DELSCRIPT to delete a loaded
script from memory so you can load a new version, convenient for
development.
2.6: Project files
IVT is very configurable, through very many means, and can be used for very large projects, large groups of users, and is able to provide all sorts of powerful features to make life easier for those large groups of users.
Unfortunately, all this power is not always easy to find, or
to use.
A script called "Projects.ivt" tries
to make configuration of IVT in such complex environments
easier.
In short, a "project" presents itself to the user as magically
appearing entries in the address book, and magically appearing
"Create groups" in the GROUP menu. Projects can also add
custom menu to the menu bar.
Connecting to a host will use a proxy when required, and "knows"
how to connect and login (ssh, telnet, special attributes,
special login constraints like OS hardening, etc).
In more detail, what a "project" tries to achieve is:
The project files themselves must be written using a text editor. Every project has at least:
# This is the ACME example project
The rest of the file is intended to have at least a bunch of HOSTLIST commands to list and describe the hosts of the project, and all settings and scripting required to manage the hosts of the project. See this example file for suggestions.All files of a project (acme.rc, acme.hosts and acme.ssh) must
be in the same directory. There is one directory built into the
projects.ivt script where IVT will look for project files
($IVTDIR/Projects).
The standard distribution of IVT has an example project there.
But that directory is private, and one of the major benefits of
projects is that they can be shared by all people who work on a
project.
To facilitate this, the projects.ivt script will use a
FORALL on variables named
"PROJECTSDIR_*".
Every such variable is assumed to name a directory that is
searched for .RC project files. For example:
GSET PROJECTSDIR_ACME_GENERAL =
"Q:/Program files/IVT/Projects"
GSET
PROJECTSDIR_ACME_SALES =
"P:/Sales/IVT/Projects"
would cause IVT to look in those (network) directories for
projects.
It is not an error to have variables for non-existing
directories, the script will simply look for valid files and
ignore bad directories, bad files or empty directories.
So, to summarize:
So, this tells the projects.ivt script where to FIND project files, but these files are not READ (loaded) automatically. There are various ways to get a project loaded:
IVT PROJECT_1=AcmeMain PROJECT_2=AcmeSales1
This would scan all project directories for projects named AcmeMain and AcmeSales1 (identified by at least an AcmeMain.rc and AcmeSales1.rc file) and load them at startup.PROJECTSMATCH_1="*Sales*"
Would select all projects in all project-directories that have the word "Sales" in them.See the example file in the distribution directory ($IVTDIR/Projects) for an example project. Since the whole project feature is not built into IVT itself but handled entirely by scripting, you are also free to modify or extend the scripts itself to better suit your needs.
See also the example script to provide a context menu per host, that demonstrates a real-life project example.
One of the things the project scrip arranges is the management of the special $HOSTLIST_EXTRA variable. You can use this to assign a bunch of attributes to a specific host (and the attribute vocabulary is easily extended). The standard script has support for:
As an example, consider this:
HOSTLIST bamboo root "My favourite" EXTRA="TERM=ivt\nDIR=/tmp" SSH
When a session is established to the "bamboo" host, it will login as root and set the TERM variable to "ivt" and change directory to /tmp after login.
For more details, study the "projects.ivt" file in the IVT distribution.
NOTE: Set the global variable PROJECTS_DEBUG to 1 if you want to see what the system is actually doing below the covers. Very convenient for troubleshooting complex projects setups.
This is an important feature, others are prev/next
2.7: The session groups editor
A major new feature was introduced in version 16.1a of IVT -
the group editor.
Before, the very powerful CREATEGROUP
statement was available only to people who took the trouble to
read the manual, understand what it was trying to say, then use a
text editor to edit the IVT.RC file and add
the proper incantations. The reward would be the creation of
multiple sessions with a single mouse click, all of them logged
in and ready for action (if you are new to creation groups, you
are urged to read this).
However, it appeared only a small percentage of the user base
actually found this functionality, so 16.1a adds a number of
dialogs which require only the use of a mouse and a few
keystrokes to add and maintain group definitions.
These definitions are stored in the registry, are loaded on
start-up and can be modified and deleted at any time.
Obviously, CREATEGROUP and CREATE statements in the IVT.RC file still work as
before, but these cannot be edited with this interface (if you
try you will get an error message, but interactively created
groups and groups from the IVT.RC file are all shown together and
are started the same way).
The editor is available from the F4-G
screen (or the <GROUPS> button from the login
dialog, and various other ways).
It contains <ADD>, <EDIT> and
<DELETE> buttons.
The <ADD> and <EDIT> bring you to a
dialog that allows the maintenance of a single group. A group is
identified by its name and an optional description which will
appear in the F4-G screen.
You can also specify an optional script and parameters here. When
given, the script is executed before the first session in the
group is created. It can be used to set global variables to be
used by all sessions in the group. The parameters are parsed
before being used, for example:
"First parameter" "Second parameter"
will pass two parameters to the script. Use quotes to protect parameters with spaces in them.
For descriptions of the "Preconnect" and "Onconnect" scripts, see the details at the CREATEGROUP manual page.
A group can have the "Start group when IVT starts up" option
set.
If you check this box, IVT will pretend you have used the
"-agroupname" command line option, and
start all the sessions in the group automatically every time you
start IVT. The saves you the trouble of having to create a
special shortcut with special options to start IVT in a special
way, at the price of ALWAYS having the sessions created when you
start up (unless you start IVT with the +A
option, which suppresses this).
Multiple groups can have this option set, all of them will be
created when IVT starts up. Similarly, the "-a" command line
option can be used multiple times to start multiple groups.
Use the -Q option to suppress the starting
of these special groups, in case you have misbehaving groups or
need to edit the definition of a complex group.
A group can contain zero or more CREATE statements, of which the most important attributes are shown in the dialog box. Choose <ADD> or <EDIT> to get a dialog to define a single CREATE statement. The attributes are:
These last 2 items offer very interesting possibilities. Take,
for example, the script from the IVT.RC standard distribution
called DirCmd (for change DIRectory and run a CoMmanD). It
takes 3 parameters, the first being a directory, the second being
a command to start after changing to that directory, the third
the optional name of yet another script.
The DirCmd script looks like this:
Script DirCmd dir cmd ScriptNm
LOCAL x
DESCR "Use this in a session create, params are
Dir and Command"
# Give a decent error message when this script
does nothing...
x = Call IvtWaitLoggedIn
IF $x == 0 THEN {
ECHO Concat("DirCmd: Cannot do ",
\
($dir
!= "") ? "CD $dir " :
"", \
($cmd
!= "") ? "do $cmd " :
"", \
"because
login failed or is disabled.\n")
RETURN
}
WAIT_ONCONNECT("SetUnixEnv");
WAIT_ONCONNECT("AutoPromptSetPrompt");
# Highlight with edit-in-tab does this...
WAIT_ONCONNECT("StartEditOnConnect");
# When we get to this point, all known scripts
that want to change the
# working environment of the shell have done
their thing.
# When CMD is a Clearcase Setview that must
PRECEDE the cd.
LOCAL CmdDone = 0;
if (substr($cmd,0,17) == "cleartool setview")
THEN {
send "$cmd\r"
Call WaitPrompt();
CmdDone = 1;
}
# When a directory is passed, CD to it.
IF $dir != "" THEN {
Send "cd $dir\n"
Call WaitPrompt();
}
# When an initial command is given, execute it
(and not done yet)
IF $CmdDone == 0 && $cmd != "" THEN
Send "$cmd\r"
# If an IVT scriptname is given (3rd param),
call it
IF $ScriptNm != "" THEN CALL $ScriptNm
END
So, you could set the "Script" field to "DirCmd", and the "Params" to e.g.: /tmp "ls -lab\r" MyScript
Note that the parameters are parsed as if they occurred in an
IVT.RC file, so they can be string expressions, reference
variables, and so on.
Quotes are significant and important when you have spaces in
arguments!
The example will change directory to /tmp, run ls -lab there, and then call the MyScript script (this will have to be written with a text editor, but it is optional, i.e. normally you will pass only two parameters to DirCmd).
After defining any number of entries for the group, click OK and you will return to the F4-G screen. All definitions are automatically saved for you.
The defined group can now be launched by double-clicking it (or select it and click the <LAUNCH GROUP> button).
2.8: Fixing broken groups
As explained in the previous chapter, a CREATEGROUP is a very powerful way to quickly create and initialise a number of sessions. If you use this feature often, you'll find that you rely on the fact that certain sessions are in certain logical positions (session 1 for your editor, 2 for the compiler, 3 for test runs, etc). However, sometimes one or more of these sessions can be lost due to network outage, machine crashes, accidental logout, etc. This leaves you with one or more "holes" in your logical ordering of sessions: a broken group.
One way to fix that would be to manually create the missing
sessions and drag them to the proper position using the tab bar
or the session re-ordering dialog. A better
and quicker way is to use the "Fix" button in the create session
groups dialog (Sessions->Start groups of
sessions).
If you select a group there that has one or more sessions
missing, but at least ONE session of a group left, clicking it
will re-create the missing sessions in the proper sequence and
place, restoring the normal situation.
When zero sessions of the current group are left, or all sessions of the current group are still intact, the "Fix" button will be disabled (you can't fix it if it ain't broken).
If you have a CREATEGROUP script, it will be run again with an adjusted value of the $IVT_GROUP_COUNT variable (the number of missing sessions).
The current state of a group can also be queried using the QuerySetting function with an argument of GROUPSTATE.
When you use IVTFUNCTION to start a group fix, the 3d parameter must specify the name of the group to fix.
2.9: Starting a session in a new window.
The CREATEPROT statement (used in an IVT.RC file) and the interactive session group editor both allow you to specify the "NEWWIN" option, indicating that a particular session should be started in a separate instance of IVT (in a new window).
Actually, this feature goes against the general design of IVT,
which is a "multi-session terminal emulator". The multi-session
features allow you to create and manage many sessions in a single
instance of IVT. The idea behind its design is that you have one
large window to view all that goes on in all sessions. Still,
some users are so used to having a window-per-session that they
have trouble working any other way. This NEWWIN feature is
intended to allow such users to use the session-group features of
IVT, so they can still create many sessions with a few
mouse-clicks.
Of course, you can always start multiple copies of IVT and run
single sessions in them, but this is tricky to manage that
properly when you have many sessions.
In a normal session group, all sessions have the same size and color scheme, and share a single window position. You switch between the sessions by using the tabs bar, the keyboard or the mouse.
When you want to start a group of more than two or three
windows, it becomes necessary to automatically position and size
the various windows on your monitor. The easiest way is to assign
a profile to each session that you start
in a group. For example, suppose you have a group of 5 sessions,
and you want to run each of those sessions in a separate window.
You want each window to have its own size and position, and
possibly color scheme.
To set this up, do:
You have now created a session profile (called "group-1") for the first session in your group. This profile stores all the ALTERED setup attributes of the session. Repeat as required for the other sessions, uniquely naming the profile (like group-2, group-3, etc). For each profile, make sure you size and position the window where you want it, and use the 'Copy current' button to obtain the proper coordinates. Save those coordinates and size as part of all the profiles.
Now create the group. If you use the interactive group session editor, enter the name
of the profile (group-1, group-2) in the "Profile" text field and
check the "Start in a new window" checkbox.
If you use CREATEPROT statements in an
IVT.RC file, use the PROFILE=group-x clause and the NEWWIN
option.
All other attributes in the CREATE can be used as well: Host
name, user name, scripts, parameters and so on.
Now you can start the group. Every session that has the
NEWWIN attribute will start in a new window and gets the
specified profile assigned to it.
The profile will load and apply all settings (size, position,
etc.) for that session. If something is not OK for a session,
just use setup for that session, alter it, and re-save
(overwrite) the profile.
When you start an IVT with the name of your group on the command
line, or start IVT and just type the name of the group in the
host name field, IVT will create all the other instances and the
'empty shell' that is left behind will terminate
automatically.
Note that all your profiles are based on the default profile. So, if you change a setting in the default profile which is not explicitly set in the group profiles, the group-profiles will inherit the new default setting. That can save lot of work when you want to change a default setting and you have many profiles.
This way, a whole array of windows can popup with a single mouse click, every window can have 1 or more sessions, every session can connect to a host and start programs there.
This is an important feature, others are prev/next
2.10: Learn mode & Keyboard macros
It is possible to store a number of keystrokes under any key so when that key is pressed the pre-recorded keystrokes are 'played'. A key can be programmed in learn mode. Programmed keys can be saved in the F4-K screen and loaded upon IVT start-up by the LOAD command in an IVT.RC file.
Alternatively, programmed keys can be saved as part of setup,
either as the default profile or a special
profile.
Before using the interactive key macro feature, you might want to
have a look at KEYMACRO, which allows you to write keyboard
macro's in the form of a script, which is more easy to view and
alter.
Interactive setup mode is easier to use, though.
Learn mode is entered through this setup screen (choose the button labelled <Keyboard macros>) in setup.
SUMMARY:
Every programmed key can either:
Type F3 and click on "Keyboard macros" to bring up a
dialog that allows you to treat one key at a time.
First, you have to choose the key to program (or handle
otherwise). Click on the button marked <Choose key to
program>. The key you type next is always treated "raw",
so if there is an action associated with that key it will not be
executed when you type it now.
The original dialog will now show the full name of the key you typed, according to the options selected below.
There are a quite a few options you can choose:
Various fields and buttons will be enabled or disabled according to this choice. All selections are retained between various macro-definitions so you can quickly create many similar definitions.
Type of programming.
When you type a programmed key, the action the macro can take
depends on this setting. It can be 4 different actions:
For the "Fixed string" or "Script call" types you will have to click <OK>.
When you click on the <Start recorder> button,
programming will start for the other types.
You will now be returned to your session. Everything you type
will now be remembered 'under' that key. The status line will show an icon to indicate
learn mode ON.
Programmed keys can be nested (when recursion is in effect) up to ten levels deep. There is no practical limit to the length of the recording. Mouse action is NOT recorded.
Ending learn mode can be done by clicking on the menu bar
(Keyboard, Stop recorder), or by going to setup and clicking on
the <MACRO> button again (which will now be labelled
<END MACRO>.
You can also type SHIFT+CTRL+END.
You can also click on the recorder icon in the status line, and
it will disappear (and stop the recorder).
The macro can be triggered simply by typing the key again. As
explained before, you may have to use the exact same keys
(left/right shift, ctrl and alt), and optionally have to match
the Capslock, Numlock and Scroll-lock keys.
By default, all the distinctions are turned off, so any way to
produce the same character executes the macro.
All the macro's you program can be saved to the registry by saving setup.
Keys can also be saved to file using F4-K-W. The
resulting file can be read using F4-K-R or the LOAD keyword in an IVT.RC
file.
For your convenience, the <Read/Write macro files>
button is a shortcut to the F4-K screen, where you can
click on <Save keys>.
Files can be loaded interactively there by clicking on
<Read keys>.
There is no way a key can be edited, but it can always be re-programmed or restored to the standard meaning by clicking on <Delete key>.
The Unix keyp program can also be used to program keys. This allows per-session function keys AND keyboard macros to be defined by a UNIX application.
See also KEYBOARDMOD for simple key
translations, and BIND to bind scripts to a
key from an IVT.RC file.
Most of all, see KEYMACRO to allow
complex key-combinations to be defined in the IVT.RC file.
2.11: Help on help - The IVT manual system
IVT comes with its own built-in hypertext manual. You can get into the help system in many ways:
Exiting the manual-page system is done by typing ESCape. Click here for a list of valid keys in the help system.
You can scroll through the manual using the normal
means (Cursor Up/Down, PageUp/Down, Home and
End will do the expected things). You can also use the
mouse to click on the appropriate places on the status
line.
You can, of course, also use the vertical scroll at the right of
the screen.
This bar also shows the size of each item.
Use F5 to go to the previous topic, F6 to go to the next topic.
The manual is a hypertext manual, which implies that
there are words on the screen that are links to other parts of
the manual. A link has to be selected first (by using the
TAB key until that word is highlighted). The link is then
followed by typing RETURN. This will take you to
the appropriate part of the manual.
You can, of course, also simply CLICK on a link with the
mouse.
Pressing BACKSPACE or clicking the RIGHT button of
the mouse will return you to the previous place in the manual.
IVT maintains a list of places when you follow hyperlinks, so you
can backtrack your links.
You can, at any time, find where you are located inside the
manual-system by typing an l for (Location) a w
(for Where) or an F8. This will show a popup with the name
of the chapter, topic (if any) and paragraph (if any).
This is taken from the table of contents which
can also give you an idea about the contents of these
manual-pages.
You can also search the entire manual for a word or
phrase. Type a ?, or a / will prompt you for a word
or phrase (just like VI!).
CTRL+f also works (just like Internet Explorer).
F3 also works (just like many Windows programs).
IVT will first check any word you type against the known list
of keywords and topics in this manual. When a match is found,
that topic will be jumped to.
This first topic-matching search is case insensitive. So, for
example, if you type 'if', this will get you to the manual page
of the IF statement, rather then one of the
2106 occurrences of the string 'if' in these manual pages :-)
If no match is found, the search restarts at the start of the
manual, looking for a not-so-strict match.
Typing an n will take you to the next occurrence of the
word or phrase, typing an N will take you to the previous
occurrence (looks like VI!).
When no (more) matches are found, you will get a message stating
this.
Normally, searches are case-sensitive, but you can toggle this
with a C or c (for case). A popup will show
the current setting.
The nearest hyperlink to the search-phrase will be automatically
selected.
You can save the current topic to a file using ALT+s.
This is especially handy for the examples - save them and they
are ready for use in your own IVT.RC
files.
Finally, you can print the entire manual (or parts of it) by
typing F2.
You will be prompted to select the appropriate part to print.
Printing will be done on whatever printer
is selected.
You can print the entire manual, the current chapter (with all
the topics and paragraphs it includes), the current topic (with
all the paragraphs it includes) or the current paragraph (all the
pages it includes), or just the current screen.
Whenever the printed output covers more than a few items, IVT
will automatically generate a printed table-of-contents with
correct page numbers.
Every page will also have a header showing the chapter, topic and
paragraph names where appropriate. Topics are separated from each
other by a solid line.
2.12: Hypertext help keyboard commands
TAB | Position cursor on the next hyperlink. |
RETURN | Follow currently selected hyperlink. Can also be done by left-clicking on this link. |
BACKSPACE | Return to previous place (return from hyperlink). Can also be done by clicking the right-hand button of the mouse. |
F6 | Next topic. |
CursorRight | Next topic. |
F5 | Previous topic. |
CursorLeft | Previous topic. |
/ | Search for a string in the manual pages. Case sensitivity can be toggled using the C command. |
? | Alias for / (search string). |
c (or C) | Toggle case-sensitivity of the / command. Default off. |
n | Search Next search-string (set via / command). |
N or P or p | Search Previous search-string). |
l | (lower case L). Show current Location in popup (generated from the Table of contents. |
w | Where am I (alias for l). |
F8 | Another alias for l command. |
F1 | Jump to Help-On-Help screen (or THIS screen). |
F2 | Print part of a manual (screen, topic, chapter, manual). |
ALT+c | Enter CUT mode (to cut from manual pages). |
Spacebar | Scroll down one page. |
PageDown | Scroll down one page. |
PageUp | Scroll up one page. |
CursorDown | Scroll down one line. |
CursorUp | Scroll up one line. |
HOME | Jump to start of current topic. |
END | Jump to end of current topic. |
H | Jump to start of manual (HOME). |
ALT-s | Save current topic to a file. |
2.13: Save current help-topic to a file.
One of the nice(r) features of the help-system is that it
allows you to save the current topic to a file.
This is achieved by typing ALT+s while viewing a
topic.
A popup will appear showing the description of the current topic
(as taken from the table of contents).
When you acknowledge this popup with a RETURN (ESC
aborts), you will be asked for a filename. When a valid filename
is given, IVT will write the topic to the file you specify. Since
I assume you want to use this feature to save examples of
configurations and/or scripts, the following modifications are made to
the output in the file:
Note: Saving files is impossible in secure mode.
2.14: Encrypting .RC files
IVT.RC files can contain passwords as part of logon-scripts.
To avoid readable passwords in such files, IVT can read
DES-encrypted files. Also, you might have other reasons to
make your IVT scripts non-human readable.
This is, by the way, how the IVT password
learning system works.
To set this up, do the following:
Upon start-up, IVT will ask for the proper password whenever
it encounters an encrypted .RC file. When you do not know the
proper password, type ESC (this will skip that particular
.RC file). When you have multiple encrypted files, IVT will
attempt to use the same password for all of them, and
automatically prompt for all files that have different
passwords.
Of course, IVT will always FIRST try the 'default' password, and
if that works, it will not ask for a password at all.
The encrypt/decrypt feature can be used to encrypt ANY file. The algorithm is a slightly modified DES, and a proprietary IVT file format (i.e. pretty safe).
You can also manipulate encrypted files using SCRIPT functions:
2.15: Secure mode
When you pass the -s option on the command line or use the OPTIONS command in an IVT.RC file, IVT switches itself into secure mode.
This mode is intended to lock users into a particular session
on a particular host without possibilities to create extra
sessions, invoke sub shells or otherwise change the environment
in which they work.
See also IVT_DIALOGSTATE.
This more or less assumes that you use IVT on an MS/DOS PC without windows, since on Windows PC's there are plenty of other ways a user may gain access to the environment. Anyway, when IVT works in secure mode the following things are not allowed:
In other words, everything to do with files and processes is forbidden. Also note IVT_DIALOGSTATE, which allows you to disable buttons, menu items or any other part of the IVT dialogs and menus.
See also the NO_STATUSCLICKS option.
2.16: Challenge response protocol
The LOGINC program can be incorporated
into most modern Unices.
It is part of the distribution kit of IVT. It should be
substituted for "/bin/login", at least for sessions initiated
from IVT (TELNET/RLOGIN and/or serial connections you want to
protect). Usually, you can specify the login program on the
command line of "telnetd" in your inetd.conf file.
When used, LOGINC will do a normal prompt for a user name. It
will then prompt for a "Password:" (which will appear on screen)
and issue the challenge.
IVT will recognize the challenge. The next line of input you type
is used to calculate the response. When you hit ENTER this
response is transmitted back to LOGINC, which will check it. When
OK, it is accepted as a normal password would have been, when
not, it will ask again for a password (just like a normal login
program would).
The upshot is that login using challenge/response is totally
transparent.
I have changed IVT to issue a message Challenge received
so you can see that it actually happens!
2.17: Show current cursor position
Sometimes, when you have a very large screen and a relatively
small font and cursor, it is hard to find where the cursor
is.
The IVTFUNCTION "Show current cursor
position" briefly flashes a large red cross through the cursor so
you can easily locate it.
The idea is to use a KEYMACRO to bind this function to a key you find easy to remember so you can hit that key to find the cursor.
3: IVT FAQ: Frequently Asked Questions
This chapter lists the answers to the most commonly asked
questions about IVT. This is intended to be as complete as
possible.
Please mail to support@ivtssh.nl if you find anything
missing.
How do I start a new session?
How do I exit a session?
How can I select words/phrases on the screen
with the mouse?
How do I view scrolled-away data?
I want to use colors. Can IVT do it?
How do I change and save the configuration of
IVT?
The status line of IVT is hidden by the Windows
taskbar. What to do?
CAPSLOCK seems to have no effect!
IVT beeps every time I touch a key
Password learning does not work if I don't
HAVE a password
Can I use ALT as meta-key for EMACS?
Could IVT be used to emulate the MS Windows
command prompt?
Why is there no Linux (or Unix) version of
IVT?
Host-printing (controller mode) does not seem
to work
HP-UX bizarre one-line display on bottom line
problem
IVT fails VTTEST tests it claims to
pass!
3.1: How do I start a new session?
QUESTION
I hear IVT is multi-session. How do I create an extra
session?
ANSWER
Lots of ways.
3.2: How do I exit a session?
QUESTION
How do I quit sessions? How do I get out of IVT?
ANSWER
Normally, NO_RECONNECT is in effect,
which means that logging out of your host will normally make the
session disappear. Quitting the last session will cause IVT to
exit.
When RECONNECT is in effect, IVT will
automatically reconnect to the same host whenever the session is
normally terminated. Use ALT+F4 in this
case to force a hang-up.
Another way is to use F4-S (or click on the
hostname part of the status line)
and use the DEL key. You will be asked to confirm the
kill.
When the last session is deleted, IVT will exit. However, see
EXPLICIT_EXIT to change this.
Yet another way: Click the close button. IVT will cleanly kill all sessions and exit ASAP.
3.3: How can I select words/phrases with the mouse?
QUESTION
How can I quickly select words or phrases for pasting?
ANSWER
Configure the mouse for CUT/PASTE
(default).
Point the mouse somewhere in the word. Click-AND-HOLD left mouse
button.
While holding the left button, click-and-release the right-hand
button.
Every time you do a right-click, IVT extends the definition of
'word'.
Release left button to finish cutting, the selection is removed
from the screen (unlike X, which leaves the selection
visible).
Click right-hand button to paste (or type ALT+p).
See here for more info.
See also MOUSE_SELECTION, which allows a more traditional multiple-click selection mode to be configured.
3.4: How do I view scrolled-away data?
QUESTION
When data has scrolled of the screen, how do I get it back? What
if I want to store more lines?
ANSWER
Type Alt+PgUp or Alt+CursorUp or Alt+Home or
Alt+End to enter the viewer. The status line shows the amount
of history data.
The scrollbar or mouse wheel is a better way in newer versions of
IVT.
The HISTORY command can be used to
configure the number of retained screens.
3.5: I want to use colors. Can IVT do this?
QUESTION
I have this application (like Midnight Commander or the
vim editor) that normally displays beautiful colors on the
console. It looks drab in IVT.
ANSWER
To be compatible, IVT transmits 'vt220' as the terminal type to
hosts.
The host thinks a vt220 is a monochrome terminal, thus it will
not send color commands. The solution is to install the
ivt.tic file from your distribution on your Unix box (it
must be compiled with the terminfo compiler called tic).
This will add an ivt terminal-type to the terminfo
database of the host.
Next, instruct IVT to transmit 'ivt' as the terminal type:
TELNET_TTYPE "ivt,vt220"
SSH_TERM "ivt" # When you use SSH
instead of TELNET
The vt220 is used as fallback in case you connect to
some other host that does not have the 'ivt' terminfo entry - see
TELNET_TTYPE.
Now, you should see 'ivt' in your TERM environment
variable.
Unix curses programs supporting color should now work.
NOTE:
An alternative is to set 'xterm' as the terminal type. All hosts
will know that terminal type and that supports color, too.
BTW: Midnight commander can be forced into color mode using 'mc -c'.
3.6: How do I change and save the configuration of IVT?
QUESTION
I want to make changes to the setup of IVT but can't be bothered
to learn all that complex IVT.RC stuff.
ANSWER
Use F3 to get to the setup screens (or use
the menu bar).
Try the myriads of settings there.
Modifications will only affect the current session.
When you are satisfied, click on SETUP and "Save into registry".
Choose the default profile to change
default startup settings.
Save as another profile allows you to select that profile when
creating a new session.
See "IVT and the Windows registry" for details.
3.7: The status line of IVT is hidden by Windows. What to do?
QUESTION
When the screen size of IVT is set to 100% using the WINDOW_SIZE command, it can happen that the
resulting window is slightly too large for the physical screen.
Part of the TITLEBAR or the status line is obscured by the Windows task
bar at the bottom of the screen.
ANSWER
Option 1: Use 98%, or 95% instead of 100% for the screen size. IVT will calculate the number of rows
based on the font and such, and should end up with one fewer
row.
Option 2: Use the WINDOW_POS command with a small negative value for the Y coordinate. This will position the top of the window off-screen, making the bottom of the window visible. A value of -6 (six pixels) usually suffices.
3.8: CAPSLOCK seems to have no effect!
QUESTION
CAPSLOCK is on, yet IVT still produces lower
case! What gives?
ANSWER
It's not a bug - it's a feature - see CAPSLOCK!
3.9: IVT beeps every time I touch a key
QUESTION
Every time I type something, or every time the host sends
something, IVT rings the bell. How do I turn the noise off?
ANSWER
You probably typed ALT+a (toggles Alert Mode). Again, it is a feature, not a bug,
meant to wake you up if the machine is quiet for a long time
before producing some output. Another ALT+a disables
it.
3.10: Password learning fails if I don't HAVE a password
QUESTION
The password learning system does not
recognize that I am already logged in, it keeps waiting for a
"Password:" prompt until it times out. This account has no
password...
ANSWER
Correct. It is surprisingly difficult to analyze all different
responses hosts can give when logging in. Therefore, you have to
tell the system explicitly to set an empty password. Use F4/X, choose the password learning configuration.
From the menu, choose "Add a user manually". When prompted for
the password, type RETURN.
Of course, not having a password is not such a good idea...
3.11: Can I use ALT as meta-key for EMACS?
QUESTION
I use EMACS extensively, how can I get IVT to send meta- commands
(i.e. M-x <command>). I can, of course, use ESC-, but is
there I way to get the ALT key to function as a meta key?
ANSWER
Yes. IVT supports keyboard macros that can
be used to customize the keyboard.
Newer versions of IVT support the EMACS
command.
3.12: Could IVT be used to emulate the MS Windows command prompt?
QUESTION
Could IVT be used to emulate the MS Windows command prompt?
ANSWER
Short answer: No.
Long answer: Just because a Unix (or VMS) prompt looks like the CMD prompt of Windows does not mean they are the same thing. IVT uses some sort of transport protocol to connect to a host (telnet, rlogin, ssh) and the host talks back in a well-defined way. There is no such protocol to connect to a command prompt on Windows. There *do* exist telnet servers for Windows which turn the Windows machine into something that IVT can connect to, but then it is not IVT doing the hard work. Depending on how well such a telnet server works, you may be able to run multiple IVT sessions to it and use IVT's session switching and cut/paste.
But even then, if you start anything on the CMD prompt that
requires a GUI interface (and even NOTEPAD needs that), it won't
work, since the TELNET interface is restricted to text only.
On the other hand, if you install Unix-like text-utilities such
as available from Cygwin, that might provide a workable
environment.
See also the next FAQ: Why is there no Linux (or Unix) version of IVT?
3.13: Why is there no Linux (or Unix) version of IVT?
QUESTION
Why is there no Linux or Unix version of IVT?
ANSWER
IVT is a VT220 emulator for the Windows platform. When you run on
Linux (or Unix), a text-mode application is already running on a
terminal (such as a console). Emulating a terminal is done by the
operating system, so IVT would be solving a non-existent problem.
Even if IVT were ported (for example because its emulation of a
VT220 is better and more complete than what an Xterm has to
offer), a platform like Linux already offers multi-session
(multiple windows), TELNET, RLOGIN and serial lines
support.
What people usually mean is "I would like to use the session switching and cut/paste possibilities of IVT in my Linux
environment". I consider that a compliment, since this indicates
that these mechanisms are better in IVT than in operating systems
such as Linux.
Porting IVT to Unix is possible, but it is a huge amount of work:
In other words, it would be a re-write, not a port, and I have not got the time to do it in, so sorry.
3.14: Host-printing (controller mode) does not seem to work?
QUESTION
When the host tries to print data on an IVT-connected printer, it
produces a print job but the printer prints nothing.
ANSWER
Your printer driver probably does not support RAW-mode printing.
Turn on COOKED mode with PR_CONTROLLER (for all printers) or in
this setup-screen for individual
printers.
3.15: HP-UX bizarre one-line display on bottom line problem.
QUESTION
When IVT is used to login to an HP-UX machine, all output gets
printed on the bottom line of the display. Scrolling is
broken.
ANSWER
The problem is the TERMINFO entry for a vt220 terminal on
HP-UX.
There is an "is2" command in there to reset the terminal
(initialization string 2). That command contains the wrong
sequence "\E[1;24r".
What that INTENDS to do, is to reset the scroll-region of the
terminal to the entire screen. The assumption there is that the
terminal has 24 lines. The error is that the command "\E[r"
explicitly means "reset scrolling region to entire screen", so it
works for ANY size screen. That error has been there since
forever. Other terminal emulators work because either their
default screen size is 24 lines, the TERM environment variable is
set to vt100, or both.
When the IVT window is larger than 24 lines, setting a scrolling region from 1 - 24 means that NO scrolling occurs on lines outside the scrolling region (defined by VT220 emulation rules). Thus, everything displayed there gets hammered on the same line(s), over and over again.
Various solutions:
This is an important feature, others are prev/next
4: How to create, close and switch between sessions
IVT can handle multiple, simultaneously
active sessions. Sessions behave like completely independent
virtual terminals.
F4-S gives an overview of existing
sessions and a re-ordering possibility.
Here you can also change the name of the host in the status line and the status comment.
These functions are easily accessed from the session menu bar.
You can create or close a session at any time and hot-key between them.
To CREATE a session you use:
Menu bar | Click on the sessions menu. |
TABSBAR | Double-click in an empty part of the tabs bar, or right-click there for the session overview. |
CTRL-PgDown | Create a session and perform auto-login when possible. |
CTRL-PgUp | Create a session. |
CREATE | Statements in IVT.rc, combined with -A or -agrp flag. |
CREATEGROUP | Create a group of logically related sessions quickly. |
A session can be cloned, which means that the current session
is used to find the host, username and protocol and IVT attempts
to create an identical session and do auto-login there. It also
copies the window size, font, and all other possibly modified
settings of the current session.
Cloning uses the ORIGINAL hostname and username, so when you use
scripts to modify the hostname and/or username, those scripts
will work correctly for the cloned session, too.
Also, see the PRECONNECT statement
to execute a script before a connect is made (to redirect
connections, for example).
See also the ONCONNECT statement to
execute a SCRIPT after successful
connect.
See also WAIT_ONCONNECT to
synchronize multiple ONCONNECT scripts.
The panel can be modified by setting the $HOSTPROMPT variable.
For a SERIAL connection, type a DEVICE (e.g. COM2,9600,n,8,1). Only the port name (COM1, COM2, etc) is required, the baud rate defaults to 19200, the parity to none, data bits to 8, stop bits to 0.
For TCP/IP, type HOST[:port].
HOST can be an IP address, port is optional.
You can, of course, also specify the name of a host. See the
RESOLVE statement on ways to configure IVT
to use non-standard ways of translating hostnames.
To SWITCH TO an existing session you can use:
ALT+1 to ALT+9 | Switch to session with that number (1-9) |
CTRL-Cursor-key | Switch to previous (UP/LEFT) or next (DOWN/RIGHT) (actually switches to the next member in the group). See SESWRAP to configure what happens when you reach the last (or first) session. |
ALT+t | Toggles between two sessions. |
Shift+CTRL+Cursor | Switch to FIRST (UP/LEFT) or LAST (DOWN/RIGHT). Also see the SESWRAP command to alter this behavior. |
Use the menu bar. |
To CLOSE a session (after logout) use ALT+F4. Exiting the LAST session will cause IVT to exit. You can also set the NO_RECONNECT feature, this will cause sessions to be closed automatically when the host disconnects.
Using EXPLICIT_EXIT will close all but the last session.
See also NO_GUI_CLOSE, which can force you to do a clean log off instead of forcibly killing sessions.
See also BATCHMODE, to prevent errors under certain circumstances.
Don't use ALT+F4 as the normal way to log off - some hosts or applications get upset when you force a hang-up this way!
F4-S will display a screen that shows all
existing sessions. Here you can edit various attributes.
You can also quick-select the F4/S screen by clicking the mouse
on the slash in between the current and maximum session
numbers.
An even easier way is to use the menu
bar.
This is an important feature, others are prev/next
5: IVT and the Windows registry
5.1: Saving IVT setup to the registry
Configuring IVT can be done in two basic ways:
Saving setup parameters can be done in 2 ways:
If there is a current profile in the registry, IVT will ask if
you want to overwrite it.
After saving a setup, IVT will make that setup the global default
(you do not have to exit and restart IVT).
During start-up, IVT will first read all IVT.RC files in the normal way.
Then, if the NO_REGISTRY keyword has NOT
been used, it will attempt to find a saved profile in the
registry. When found, the settings from the registry are loaded
"on top of" those from the IVT.RC files.
The upshot is that you no longer need to worry about the syntax of IVT.RC files. You experiment in the setup screens until you find a setup that works for you. Then, you save that. That's all.
However, there is a problem with having two different mechanisms to accomplish the same thing. If you modify IVT.RC settings after you have saved your setup to the registry, that would have no effect since the registry overrules the IVT.RC file setup. This can be very confusing.
Therefore, whenever you save the setup to the registry, IVT will also save the result of your IVT.RC commands in the registry. During start-up of IVT, the CURRENT results of your IVT.RC settings are compared with the saved copy in the registry. When a difference is found, you have used BOTH mechanisms (IVT.RC files AND registry) to modify the SAME value. In that case, IVT will warn you with a popup saying that you should either re-save or delete the registry settings to resolve the conflict.
As a consequence it is best to stick to one configuration
mechanism.
When you use the NO_REGISTRY directive,
the menu bar entries for manipulating
the registry will be greyed out, and the buttons in the setup
screens for the same functionality are greyed out, too.
5.2: Removing IVT setup from the registry
As described in the previous topic,
the setup of IVT can be saved to the Windows registry. This can,
however, give conflicts with your IVT.RC files.
As you grow to appreciate the power of IVT's setup files you
might want to abandon the simplicity of saving a setup in the
registry and write your own configuration
files, scripts and so on.
When you click on DELETE in this
setup screen, IVT will remove any saved settings from
the registry.
It will then use the current IVT.RC settings as the current
defaults, and restore those for the current session as well.
In other words, deleting a setup is the exact reverse of saving one, and making that work properly is harder than it sounds :-)
Another way to delete the registry setup is to use the SETUP menu on the menu bar, and select "Delete from registry".
This is an important feature, others are prev/next
6: The IVT keyboard guide
6.1: Summary of special IVT function keys
IVT has a lot of special keys that do the most wonderful
things. Many of these things can make life a lot easier. Also,
all keys can be programmed.
Last, but not least, the HOST can program keys, see the 'keyp' program.
The complete list of special IVT keys is:
F1 -
Hold Screen (but see also F1F4).
F2 -
Print Screen. Also usable during a
CUT operation.
F3 -
Setup. Changes IVT configuration on the
fly.
F4 -
Help. See also help-on-help.
CTRL+F6 -
Obtains a sub shell when not in secure mode.
CTRL+CursUp - Switch to the previous session.
CTRL+CursLeft - Switch to the previous session.
CTRL+CursDown - Switch to the next session.
CTRL+CursRight - Switch to the next
session.
CTRL+SHIFT+Curs - Switch to FIRST (up/left) or LAST
(down/right) session.
ALT+1 to ALT+9 - Switch to session 1
- 9.
ALT+0 -
Type a (hexa)decimal or octal (unicode) character code.
ALT+t -
Toggles back to previously active session.
ALT+g -
Switch to the next group.
CTRL+PageDown - Create a new
session (auto logon)
NOTE:
Combine with shift and it CLONES a
session.
CTRL+PageUp - Create a new session (no auto-logon)
See
also the $HOSTPROMPT variable.
CTRL+SHIFT+END - Ends learn mode
(key programming).
CTRL+BREAK - Sends a ^C on the
session.
CTRL+DELETE - Sends a DEL
character.
CTRL+BACKSPACE - Sends a DEL character.
CTRL+@ -
Sends a NULL character.
ALT+F4 -
Session hang-up (immediate abort of
session).
SHIFT+ALT+s - Invoke screensaver immediately.
HOME -
VT220 'FIND' key. Also
CTRL+F7.
INSERT -
VT220 'INSERT' key. Also CTRL+F8.
DELETE -
VT220 'REMOVE' key. Also CTRL+F9.
END -
VT220 'SELECT' key. Also CTRL+F10.
PageUp -
VT220 'PAGE UP' key. Also ALT+F1.
PageDown - VT220
'PAGE DOWN' key. Also ALT+F2.
CTRL+F7 -
VT220 'FIND' key (if you lack a HOME key).
CTRL+F8 -
VT220 'INSERT' key (if you lack an INSERT key).
CTRL+F9 -
VT220 'REMOVE' key (if you lack a DELETE key).
CTRL+F10 - VT220
'SELECT' key (if you lack an END key.
ALT+F1 -
VT220 'PAGE UP' key (if you lack a PageUp key).
ALT+F2 -
VT220 'PAGE DOWN' key (if you lack a PageDown key).
ALT+Enter -
Flip Full screen mode.
ALT+Shift+M - Maximize/restore
window.
ALT+PgUp - Enter
history pager, one page back.
ALT+PgDown - Enter history pager, one page down.
ALT+CursUp - Enter history pager, one line up.
ALT+CursDown - Enter history pager, one line down.
ALT+HOME - Enter
history pager, start of history buffer.
ALT+END -
Enter history pager, end of history
buffer.
Using
the mouse wheel is easier...
ALT+F9 -
Invoke IVT file transfer functions.
ALT+a -
Toggle ALERT mode.
ALT+c -
Enter CUT mode.
ALT+L -
Lock keyboard.
ALT+p -
Paste the default buffer (clipboard).
Shift+Insert - Same as ALT+p
SHIFT+ALT+p - Paste a named buffer.
ALT+s -
Slower output. Repeat as necessary.
When
used from the PAGER or this help system, it
saves text
to
a file on disk.
ALT+q -
Speed up output (Quicker). Repeat as
necessary.
6.2: CTRL+F6: Escape to operating system (Sub Shell)
Using CTRL+F6 will give you a shell (command prompt) on
the Windows operating system.
The command is only valid when secure mode
is off.
It can be that the administrator has disabled access to the
command prompt.
See also SHELLEXECUTE, SYSTEM and COMMANDOUTPUT script functions.
6.3: Application/Numeric keypad mode
A VT220 terminal can operate the numeric keypad in two modes:
IVT shares this multiple use with Windows, where the extra numeric keypad can be operated in numeric mode and as an alternative for PgUp, PgDown, cursor keys and so on. Furthermore, the top row of the numeric keypad (the Num Lock, /, * and - keys) can be configured in IVT to be the VT220 PF1 - PF4 keys (not to be confused with F1 - F4). Then there is 7 or 8 bit mode, which further determines what actual codes will be sent.
All of this can be a bit confusing, since there are many different sets of codes emitted by the keys on the numeric keypad:
Confused? Just experiment with the various settings until you get what you desire. Please note that the current setting in "Setup" CANNOT be saved into the registry, since a VT220 is expected to be in "Numeric" keypad mode by default. When an application requires the "Application" mode, it should set this by means of this escape sequence explicitly.
When absolutely necessary, things can be forced out of kilter by:
ONCONNECT * ForceApplicationMode
Script ForceApplicationMode
VTECHO "\1B="
END
Add this to your IVT.RC file, and it
will make IVT think that every host it connects to sends the
string to switch into application mode as the very first
thing.
BTW, "\1B>" will switch back into numeric mode.
6.4: ALT+t: Toggle between two sessions
This is one of the handy features of IVT that you quickly become very fond off. Whenever you switch between sessions, the number of the session you came from is remembered by IVT. When you use ALT+t, IVT switches back to that session (and again remembers where you came from).
This toggling between two sessions is very handy when you have
many sessions active but find yourself switching between two of
them many times.
For example, having error messages from a compiler on one session
and doing something about them on another.
It is also usable as a quick screen-at-a-time DIFF program. When there are small differences between two screens, lean on the ALT+t. IVT will rapidly switch between two sessions, which will make the differences apparent.
6.5: ALT+a: Alert mode (ring bell on activity)
This is a very useful feature of IVT when you have to wait for a long time before the host is going to respond.
Typing an ALT+a will toggle alert-mode. This will cause
IVT to ring the bell as soon as a character is received from the
host (actually, once for every received network packet).
When the receiving session happens to be in the background, the
activity indicator will show a red
background and the bell will sound muffled.
Typing another ALT+a will turn the alert-mode off
again.
The current setting can be made visible from this setup screen.
There is no way to initialise this setting from an IVT.RC file.
However, using IVTFUNCTION this
function is accessible to a script.
6.6: ALT+0: Generate any character.
Most Windows programs allow you to enter a special character
by holding down the ALT key and then typing a decimal
character code on the numeric keypad.
Even old DOS programs allowed you to do that, and long ago people
used to enter diacritical characters in WordPerfect or Word using
this technique.
IVT reserves the ALT+number keys for very fast and convenient switching between sessions. To allow you to enter such special characters anyway, the unused ALT+0 is used to bring up a dialog in which you can conveniently enter a decimal, hexadecimal or even octal character code.
When you use a normal codepage, the
resulting code must lie between 0 and 255 (inclusive), and is
transmitted to the host if you choose OK.
When you use UTF-8, the character code can
be any valid Unicode character point.
Note that the simple display of the character is only one of the possible results! For example, if you send a "3", which is ^C, most Unix hosts will consider this an interrupt. If you send 127, it is a DEL character, usually that will cause either a backspace or an interrupt. Depending on the settings on the host, it may either accept 8-bit characters or reject them, or change them. Even if a character gets displayed, the result depends on the selected CODEPAGE in IVT, and a number of other related settings...
In other words: Your Mileage May Vary.
The important thing is that this allows you to send any character value to the host, just like other programs allow you to do...
When an invalid string is entered, the BELL will sound if you click OK.
6.7: Names of the VT220 programmable keys
In an IVT.RC file, a key can be
programmed using the KEYNAME
directive.
Valid names for these keys are:
PF1 - PF4 - Normally
CTRL+F1 to CTRL+F4, but see F1F4.
PF1 - PF4 - In Windows,
top row of numeric keypad.
PF5 -
A VT220 lacks this key, but IVT maps the F5 key there.
F6 - F10 -
Same as on a PC. You can also use F11 and F12 when available.
F11 - F20 - These are
mapped from SHIFT+F1 to SHIFT+F10
FIND -
The HOME key or CTRL+F7.
INSERT -
The INSERT key or CRTL+F8.
REMOVE -
The DELETE key or CTRL+F9.
SELECT -
The END key or
CTRL+F10. See also the KEYBOARD.
PRVSCR -
The PageUp key or ALT+F1.
NXTSCR -
The PageDown key or ALT+F2.
The VT220 "DO" key is a fancy name for F16 (so you have to use SHIFT+F6).
So for example:
NXTSCR "ls -lab\r"
Will program the PageDown and ALT+F2 keys of the
PC to the Unix command "ls -lab" followed by a return.
When such a statement occurs inside a script, the key is programmed for the current
session only (after normal variable-substitution).
It is also possible to redefine any key using keyboard macros or to start a
script when you press a key.
The newer KEYMACRO command is even more
powerful.
Last but not least, the keyp program can be
used on Unix to reprogram the keyboard.
See also MOUSE_KEY, which allows you to
bind scripts to mouse actions.
Since a possible action is the SEND
statement, this allows you to send data to the host when you
press a mouse button.
This is an important feature, others are prev/next
7: The status line and what it can do for you
7.1: Introduction to the status line
The (optional) status bar of IVT shows lots of information about the current status of the foreground session, plus general information about the other sessions and groups of sessions.
The status bar uses icons to indicate various conditions, such
as printer active, keyboard lock, autolog
active, security, etc.
The various parts of the status bar can be clicked to perform
actions on them (such as editing the hostname and comment
parts).
A right-click will display help about any item.
It looks like the example below, click on any part to get more info:
______________________________________________________________________________
M x/y/G HOSTNAME HH:MM NNxYY 123456789 G Comment Icons
______________________________________________________________________________
Explanation of the various fields:
M | Is the modem indicator (serial lines only). It can have several values, and is usually displayed with a red background. |
x/y | The current session number (x) and current total number of sessions (y). |
/G | Optional group code of the current group. A + indicates that other groups exist. Clicking it performs an ALT+g function (next group). |
HOSTNAME | The name of the remote machine (editable by clicking it). |
HH:MM | The STATMIDDLE command can be used to configure this field. The default is the current time. Click to alter. |
NNxYY | The current session size (NN=Rows, YY=Columns). |
123456789 | Current activity on other (background) sessions. |
G | A G appears to indicate activity in other groups. |
Comment | Free session comment (See F4-S screen). Clicking it will enable you to edit it. |
Icons | Icons show for the LEDS (1-4), a key for a locked keyboard, a padlock for an SSH or Kerberos session. Also a recorder icon for a keyboard macro, printer icon for an active printer and a notebook icon for AUTOLOG. Last but not least, an IPv6 icon indicates that the current connection uses IPv6. There is no icon for "normal", IPv4. |
All parts of the status line can be clicked with the mouse:
See also STATUS, STATMIDDLE, STATBORDERS, STATUSCLICKS and PRSTATLINE.
7.2: Status line Modem indicator for serial lines
When the current session is a serial one, the leftmost position of the status line can show the following values:
7.3: The status line indicators and icons.
These icons indicate various important aspects of the current
status of IVT.
The following ones can appear:
7.4: Status line hostname
This part of the status line shows the name of the host the session is connected to. Initially, this is whatever was used from either the Create session dialog or the command line.
It can also be edited using the F4-S
screen (type an 'E' there) or using a STATUSHOST command from a script.
An easier way is to click on the host name in the status line,
which brings up the edit dialog immediately.
Yet another way is by right-clicking the tab of the session and
choose 'Edit'.
For serial lines, this field will show the name of the COM port, baud-rate and such. In this case, when you use F3-SERIAL to change any of these settings, the host name will be updated automatically.
7.5: Status line clock
Traditionally, the middle part of the status line was used as a simple clock that could be turned on or off using the CLOCK keyword or the setup screen.
Later, functionality was added to show the current cursor
position in this place, or to show the current position of the
mouse instead. This allows you to measure the exact position or
length on the screen of certain objects.
In one of these modes it will show two numbers; the first is the
line number, the second the column number.
Finally, the "connected" time of a session can be displayed
here.
Changing the display of this middle part of the status line can be accomplished in 3 different ways:
7.6: Status line size indicator.
This shows the current session size in rows and columns.
When the window is too narrow, this field is omitted to make room
for the other fields on the status line.
Currently, the field is display only.
When you interactively resize the screen, the indicator shows the resulting size. Note that the title bar does the same, but many people overlooked that.
7.7: Status line activity indicator
IVT supports two kinds of activity indicators. Such an activity indicator is intended to alert you to a status change of a background session (a session you are not currently looking at). The two forms are:
The default in newer versions of IVT is to use the tab for this, but if you liked the status line indicator it can be turned on using TABSBAR NO_ACTIVITY configuration option.
These are:
7.8: Status line comment
The session comment can be typed in the initial dialog
when you create a session.
It can also be set from the host using the ^[ Ctext;
escape sequence (ESC-SPACE-CanytextSEMICOLON, see example).
This allows the host to automatically identify the session.
It can be typed directly using F4-S
<Edit>.
Also, you can click on the comment in the status line, which
allows you to edit it (use ESC to abort the edit).
Alternatively, you can use a right-click on the tab of the
session and choose 'Edit' from the menu that appears.
Use it to describe the purpose of the session. Especially when
you have many sessions to the same host, this comment is ideal to
tell them apart. The F4-S screen lists all
comments, to give you an overview of all your sessions and the
possibility to edit the comment, change
the order of sessions etc.
Also, the WINDOW menu on the menu bar
shows the session comments.
It can be set from a script using the STATUSTXT and STATUSTXTFIX commands.
Any comment longer than the maximum of 60 positions is silently
truncated.
See also the TITLEBAR command, which
will show this comment in the IVT applications title bar.
See also the XTERM set window
title command.
8: IVT menu bars and panel dialogs
8.1: Introduction
Menu bars and the create dialog are a late addition to IVT. For
over 10 years, IVT was a program with many powerful features
accessed with the keyboard only.
All those things were described in detail in these manual pages,
but these days few people take the time to read all of this, even
in spite of Tables of Contents, lists of important
topics, FAQs, read-me-firsts and whatever
else I tried :-(
After releasing version 11.3 of IVT to the Web in August 1999,
I got many questions about IVT that were answered in the manual,
the FAQ and read-me files, but were not noticed by the people
asking the questions. Thus, many powerful features of IVT went
unnoticed by many users - a great pity.
Therefore, I added the menu bars in
January 2000. Every important part of IVT now has an optional
menu bar on top of the screen (sessions, history pager and this help
system).
Since November 2005, this menu bar can now be displayed as a normal Windows menu bar, instead of the original IVT text-mode one.
The next item was to make creation of sessions easier and more
intuitive.
For this, the create session dialog
was made which allows you to switch protocols, edit items, click buttons and so on.
All the code for this is - like the rest of IVT - home
rolled.
Once this was working properly, December 2001 was used to rewrite
the setup system entirely, so from version 14.1e onwards the
setup is mouse-driven and usable by novices, too.
For more details on using and customizing the menu bars, click
here.
For more details on using and customizing the create session
dialog, click here.
For setup, see here.
This is an important feature, others are prev/next
8.2: Menu bars
All important functions in IVT have been given an entry in one
of the menus that can be pulled down from one of the menu
bars.
Menu bars can be enabled and disabled by using the MENUBAR directive in the IVT.RC configuration file.
The menu bar can also be activated by pressing and releasing
the ALT key.
The normal Windows way (F10 or ALT+shortcut key) does NOT work,
as both these key combinations are reserved by IVT for terminal
emulation purposes. The one exception was for the lone ALT key,
which would normally do nothing in IVT.
Every menu item also has a context-sensitive help, accessed by typing F1 while that entry is highlighted, or by right-clicking it (even when greyed out).
There is even a set of customizable
entries in the session menu bar.
Normally invisible, these can be configured from the IVT.RC file. This allows the user to launch IVT
scripts and generate keystrokes using the
standard menu bar interface of Windows.
8.2.1: Using the menu bars
The menu bar can be activated as follows:
When a menu is activated, an item can be chosen by clicking on it with the mouse. The keyboard can be used to navigate the menus as well:
Most items in the menus also display the associated keyboard shortcut. Use these to quickly access common features.
8.2.2: Setting menu bar colors
MENU_COLORS ...
No longer supported in this version of IVT, this used to set the colors of the text-mode menu bar.
8.2.3: Configuration of the CUSTOM menus
One of the nice features of the session menu bar is that it has configurable menus.
Normally, these menus are empty and invisible. They can be
activated from the IVT.RC file by using
several MENU statements which have to be
called from a SCRIPT. Normally, you would write a "startup" script to do this.
There can be up to 10 custom menus on the menu bar, number 0 to
9.
Number 0 is reserved by IVT, it is used for the 'Scripts' menu
entry.
You select a menu by using "MENU SELECT x", where x is a single
digit (0 - 9).
Note: These menus can support multiple languages, just like
the rest of IVT.
See the ONLANGUAGE statement and
NLS() function for details.
First of all, the menu must be given a name using the
TEXT directive.
This string will appear on the menu bar
itself.
It is your responsibility to have a properly formatted string
here, a very long string, or one containing odd characters will
produce a variety of unpleasant effects...
An "&" character can be used to indicate a shortcut
character. If you do not assign a shortcut, IVT will assign a unique one for you (if
possible).
Next, the menu must be filled with entries, of which there are
different types (detailed below). Every item has a description
(the text which will appear in the menu). An '&' in that text
can be used to indicate the highlighted shortcut character for
that entry (see below for an example).
Again, these shortcuts will be chosen automatically if you omit
them.
The different types are:
Lastly, the menu must be enabled, which will make it visible. It can also be disabled. The "MENU ENABLE" and "MENU DISABLE" commands accomplish this.
The menu can also be cleared using the RESET command. That way, a script can redefine the menu later (for example when switching to a different national language).
The order in which the statements are executed determines the order in the resulting menu. Time for an example:
Script Startup
MENU
SELECT
1 #
Choose a private menu
MENU
RESET #
Clear any previous menu
MENU TITLE
"&Favourites"
MENU CALL "Start
my favourite &editor" Start vi
MENU CALL "Start
&mail
program" Start
elm
MENU LINE
MENU STRING "Show my
&processes" "ps -fu johnb\r"
MENU ENABLE
END
The TITLE command will create an entry on the menu bar
called "Favourites".
The F will be the shortcut key for that menu (GUI menu bar
only).
The first two entries will call the "Start" script (which has to
be defined elsewhere). It will be passed one parameter (vi
or elm in the example).
The shortcut character will be 'e' and 'm' respectively.
Then, a separating line is drawn.
The next entry will send the "ps" command when chosen (shortcut
is 'p').
The idea is that you can create entries for common tasks in your own personalized menu...
8.3: Start-up general help
Welcome to IVT, a powerful multi-session LAN terminal
emulator.
Click on any of the following links for more information
(right-click returns from a link):
There is also Help On Help...
For the (slightly) more advanced user, the following links may be worth reading:
8.4: The create session panel interface
IVT used to be a "text-mode only" program until the beginning
of 2000.
Mouse mode cut/paste was an early
feature, but for the rest you used the keyboard. Creating sessions, scroll-back
history, file transfer and many other functions were accessed
through ALT and CTRL key-combinations.
My home page even used to say that IVT was
meant to be used by people who use a terminal emulator as a
primary tool, and that anyone who only used Unix through TELNET
once in a while was better off with other products.
After releasing IVT to the Internet in September 1999, I got
many requests for features that already were a part of IVT, but
were unnoticed because they were hidden behind some obscure key
combination.
Menu bars were added as the first thing
to give pull-down menus which make most of the significant
features available to novice users.
Afterwards, it was rewritten to be a normal Window GUI
application.
Right-clicking any part of the dialog will bring you to a
context sensitive help screen of IVT.
While the create session dialog is active, you can also click on the menu bar and choose SETUP to change all kinds of settings.
By clicking on the MORE and LESS buttons you can extend (or limit) the choices IVT displays in the dialog. You can also use the CRDIALOG directive in an IVT.RC file (or from this setup screen) to set the default interface.
8.5: Repeat count
The "Repeat" field in the create-session panel allows you to create a
number of identical sessions in one operation.
You will have to select the maximum panel (click on More
until it appears).
All sessions are to the same host and will be logged in (when
requested) with the same user-id.
When there is room in the comment field of the session, an
automatic sequence number will be appended to be able to
distinguish between them.
The Automatic Login system will use the $IVT_REPEATNR variable to do the same, too.
See also the R=Count option of the CREATE statement, which allows another way of
specifying a number of repeated sessions. These two cannot be
combined, a CREATEGROUP cannot be
created multiple times automatically.
See also MERCY_MODE, to prevent
excessive stress on hosts.
8.6: List with previous host & users
The address book icon at the end of the hostname prompt in the "Create Session" panel can be used to access a list of recently used and predefined hostnames, user names, profiles and so on.
The list consists of 2 parts. The first part are hostnames,
usernames and other data typed into the login dialog by the user.
IVT remembers the last 25 typed names (but see MAXTYPEDHOSTS to configure this).
The second part is configurable with the HOSTLIST command in an IVT.RC file, or using the address book editor
available from the "extra" menu.
Double-clicking on an entry in the dialog that opens will
select that entry.
You can also single-click followed by <OK>.
You can even select MULTIPLE entries in ONE operation and IVT
will create multiple sessions at once!
Entries can be deleted from the list one-by-one or all
together.
The resulting list is saved in the registry and thus survives
starting and stopping IVT.
The option is enabled only when at least two different hosts and
users have been typed by the user. The last entry typed by the
user automatically appears in the login dialog.
A more powerful way to automatically start sessions for particular users and hosts is the session group mechanism of IVT.
See also the host list filter.
8.7: Host list filter expression
When you use the address book together with project files, the
number of hosts to select from can grow uncomfortably large.
By typing a partial name into the "filter" box, the listing is
adjusted to contain only matching hosts. Actually, the value you
type here can be a regular expression (see the MATCH function).
The string that is matched is the combination of the hostname and
description (comment field) of the address book entries (so you
can search on arbitrary parts of the hostname, description, or
combination). The search is case insensitive.
Before a selection is shown, IVT will first force an expansion of all groups in the address book (like clicking on "Expand all").
The value in the filter box is not cleared automatically by IVT. If you want to view the complete address book again, you will have to clear it manually, click on the "Clear" button.
9: F3: IVT Setup dialogs
9.1: Introduction to setup dialogs
For help on any individual item, use a right-click on that
item (or select the item and press F1). Click on the question
mark in the title bar of windows and drag the icon to any line to
get help on that specific item.
Right-click anywhere in the blank area of the dialog to get help
on the panel itself.
To navigate through the various items, just click on them, or use the following keys:
The old setup shortcuts of IVT also still work:
F3 - Apply changes, end setup;
R - Reset terminal;
C - Abort all scripts on this
session;
D - Dump incoming data;
F - Flush printer;
L - Start (or end) Learning a
macro.
New ones are:
A - Apply changes and exit setup;
P - Printer setup
W - Windows setup
H - Help
? - Help
The <Save to registry> button is enabled only
when the REGISTRY setting is in effect
(when NO_REGISTRY is used, the button is disabled).
When clicked, the current setup is saved into the registry, see
here for details.
The <Delete> button will delete any settings from
the registry and will make IVT revert to the setup that result
from the IVT.RC file settings.
It will ask for confirmation first.
See here for details.
9.2: Setup propagation
The setup dialogs allow you to change the look and feel of the current session, and to save the settings of the current session so all future sessions will have the new look and/or feel. See also SIZE4ALL.
The "Propagate" function uses the current session parameters and copies those to all currently existing sessions. So all sessions get the look and feel of the current session with regards to:
and so on and on (everything that you can change in setup).
The "propagate" function is available from the main session menu bar (the "setup" menu there) and
through the IVTFUNCTION and KEYMACRO functions, which allow you to propagate
setup either under script or keyboard control.
There is also a button in Windows Setup.
There are a few reasons why a session will not change its look & feel:
This is for various technical and practical reasons.
Note that if you have not changed any setting, using the
"Propagate" function has no visible effect, except that IVT will
force a screen resize, font adjustment and so on for every
session, which can cause network activity, screen redrawing and
so on (even if it ends up looking exactly the same).
In other words, do not use it unnecessarily.
See also SIZE4ALL.
9.3: Protocol setup
This dialog allows you to choose the basic transport and
session protocols that IVT is going to use for future
sessions.
The transport protocol is the low-level way IVT sends data from A
to B, this can be a serial line, TCP/IP or NetBios.
This also chooses the basic session
protocol.
A session protocol runs "on top of" a transport protocol. It can
be TELNET, SSH, RLOGIN, VTP or MULTIPLEX.
Transport protocol :
[WinSock ]
Session protocol :
[Telnet ]
IP
version :[Both ]
TCP no delay
option : [X]
TCP keep alive option: [X]
Socket
timeout : [ 20]
Trace name resolving : [ ]
Search
domains : [acme.com ]
<Configure proxy >
<Configure delays>
9.4: Proxy setup
The Proxy panel allows you to configure IVT to use various
types of proxy in order to make its network connections. The
settings in this panel affect the primary network connection
forming for your SSH, TELNET or RLOGIN session.
Below you'll find more information on each separate topic.
In case you are unfamiliar with proxy servers: it is a server
that connects to a host on behalf of IVT because your PC cannot
reach that host directly.
IVT connects to the proxy server and asks it to connect to the
destination host. After the connection is established, the
connection is transparent.
Proxy
type : [None ]
Show proxy debug messages: [ ]
Proxy
host:port : ........................................
Timeout in
seconds : 15...
Exclude
host/IPs : ........................................
Proxy local
connections : [ ]
Proxy understands
IPv6 : [ ]
DNS lookup at proxy
end : [Auto]
User
name : ruurdb..................................
Password : ****....................................
Telnet
command : connect $HOSTNAME_ONLY $PORT\n..........
IVT script
name : ........................................
9.5: Configure delays
The Delays panel allows you to configure various delays
that IVT will perform on purpose to prevent overloading hosts and
networks.
Click on any of the links below for more information.
Mercy mode after #sessions :
[4 ]
Mercy mode
delay : [500 ]
TCP flood protect #sessions:
[10 ]
TCP flood protect
delay : [1500 ]
Paste maximum
lines : [3 ]
Paste maximum
bytes : [10000]
Maximum wait for
response : [10 ]
Send CR
separately : [ ]
9.6: IVT Tunnel setup
The ivttunnel program can be used to
traverse firewalls and so on. This dialog allows you to configure
the tunnels and various supporting details.
This dialog can be reached from Setup->Protocol->Configure
IVT tunnels, or from the dialog: Setup->SSH
setup->Configure IVT tunnels.
This is because these tunnels can be over any sort of connection,
even serial ones.
Current session only : [ ]
Type of
forwarding : [Local ]
Tunnel
protocol : [TCP]
Source
[host]:port : ............................
Destination
host:port : ............................
Accept all
hosts : [ ]
Tunnel
program : .........................
Debug
file : .........................
Config
file : .........................
Escape
chars : .........................
Start
minimized : [X]
See ivt tunnels for details.
9.7: Telnet setup
The TELNET setup dialog allows you to
modify the settings for future sessions and to inquire the status
of the current TELNET session.
When no current session exists, or the current session is not of
type TELNET, the "inquiry" functions are all greyed out.
Below you will find more information on each option.
Show option negotiation : [ ]
Offer extra
options : [X]
Use New Env (RFC
1592) : [ ]
Send NUL after
CR : [X]
Terminal
type : ivt,vt220,vt100.....
Terminal
speed : 38400,38400.........
X Display
value : NL-ARN-L60278:0..............
Send IP-address in Xdisp: [ ]
Keep-alive delay (0=off): 0
<Send
AreYouThere >
<Send
break >
<Send Interrupt Process>
<Force
Logoff >
<Show remote
status >
<Toggle binary
mode > Local=Off Remote=Off
Suppress Go
Ahead :
Local=On Remote=On
Local flow
control : Enabled, Restart
XON
9.7.1: Telnet setup: Send Are You There
When you are using a TELNET connection
to a host, and the host does not seem to respond to your input
anymore, you can click on this button.
This will send a special command called "Are You There" to the
remote end of the TELNET connection. A host should respond with
something along the lines of "[YES]", or "I AM HERE". Some hosts
only ring the bell to avoid corrupting the screen. The idea is
that a life sign is given. When no response is received, the
problem lies (probably) in the network connection itself.
However, your BELL might also have been set
to OFF...
9.7.2: Telnet setup: Send break
When a TELNET host is not responding, you might first want to try and send an "Are You There" to see if anything is still alive at the other end of the connection. If there is, and the program you are talking to seems to be dead (or cannot be stopped by normal means for whatever reason), you might try to send a TELNET BREAK. This is a friendly way to ask the program to stop.
Simply click on the appropriate button in the TELNET setup
dialog.
A more unfriendly way is the interrupt
process, described below.
Not all TELNET host implementations honor this request. Your last
recourse is to hit ALT+F4 to kill the
session (or use the TABSBAR close
icon).
9.7.3: Telnet setup: Send Interrupt Process
The TELNET protocol supports an application independent way to
terminate processes. Even when your host has disabled all normal
ways to interrupt applications, TELNET clients can request an
"Interrupt process".
This is the last resort if all else fails.
See also "Send TELNET break".
9.7.4: Telnet setup: Force Logoff
This is a request from IVT to the TELNET host to disconnect
the session.
I have not found many hosts that honor this request, most ignore
it.
Another way to disconnect forcibly would be to use ALT+F4 or use the TABSBAR close icon.
See also "Send TELNET break" and
"Send Interrupt process".
9.7.5: Telnet setup: Show remote status
This is a request from IVT to the TELNET host to send its idea of the current status of all TELNET options. All options that are marked DO (the host thinks IVT should do this option) or WILL (the host will do that option) are sent back and displayed (on the normal session screen) by IVT.
Since all these options are negotiated when the session is established,
both ends of the connection should have the same idea on the
current status. When IVT receives the status from the host, it
compares that to its own ideas on the status. When it matches, it
is displayed as "Correct". When a mismatch is found a
"MISMATCH" message is displayed.
Use this when in doubt on the correct implementation of the
telnet host.
9.7.6: Telnet setup: Binary mode
This requests binary transmission on the session. It is used
internally by the file transfer functions of IVT but not used
much otherwise. Enabling this mode will prevent certain character
translations and local flow control.
The setup will show the current status, clicking the button will
toggle that setting from on to off and back again.
9.7.7: Telnet setup: Suppress Go Ahead
This is display only, you cannot change the setting.
A standard TELNET connection is actually
half-duplex, when one side of the connection is done
transmitting, it should send a message to the other side saying
"I'm done, you go ahead now". In these modern days of full duplex
connections and applications that can send unsolicited output
there is not much use for such a message. Any side that does not
want these messages can send a "DO Suppress Go Ahead" message to
the other end. IVT will send such a message to a TELNET host
during session initialization. The host might respond with "DONT
Suppress Go Ahead" when it actually wants the protocol.
If the host does not want to see any "Go Ahead" messages, it will
say "WILL Suppress Go Ahead" and (probably) send a message to IVT
which says "DO Suppress Go Ahead" to which IVT will respond "WILL
Suppress Go Ahead".
The result of these negotiations will be shown in the TELNET setup dialog.
When the Go Ahead is sent by the host, IVT will ignore it (it can't force you to type something) and when it is required by the host, IVT will send a "Go Ahead" after you finished typing.
9.7.8: Telnet setup: Local flow control
This is display only, you cannot change the setting.
Local flow control is a way to stop the display of characters received by the host, by typing a special character (usually XOFF, generated by typing a CTRL+s key). When local flow control is enabled, typing an XOFF will make IVT stop immediately (normally, the XOFF would be transmitted to the host which would respond eventually, but there might be lots of buffered data in the network which could make XOFF pretty useless).
There are two ways to restart the flow: RESTART_ANY and
RESTART_XON.
When the first is enabled, any typed character will resume
output.
When the second is enabled, you have to type an XON (Ctrl+Q).
When local flow control is enabled, Ctrl-S and Ctrl-Q are
transmitted to the host, and also handled locally. IVT
immediately stops displaying output (same as using F1).
9.8: Kerberos setup
This panel allows you to configure the Kerberos features of IVT.
Kerberos is a security protocol that allows TELNET connections to
be secure in both authentication and data transport. SSH is more
common, but Kerberos has a few powerful properties like a central
point of administration and mutual authentication.
Enable
negotiation : [X]
Automatically forward credentials :
[Forwardable]
Automatically negotiate encryption:
[X] (to host)
Automatically negotiate decryption:
[X] (from host)
Debug Kerberos
encryption :
[ ]
Realm : ....................
Support for DES
CFB64 : [Input/output]
Support for DES
OFB64 : [Input/output]
Enable use of PC-DCE
.DLL : [X]
X-Windows port
forwarding : <View/configure>
Encrypt current
session : [X]
Decrypt current
session : [X]
<Show status for the current
session>
<Kerberos licence
management>
9.9: X-Windows port forwarding
This panel allows you to configure the X-Windows port forwarding protocol and view some statistics about the number of packets and bytes transmitted for the X-Windows protocol over a secure channel. This secure channel can be either SSH or Kerberos, or even both at the same time.
The value of the DISPLAY variable can be changed only BEFORE a session is established, since part of that value is transmitted to the host when the session is established initially. For the same reason the other settings that are used only during session establishment are disabled afterwards.
The statistics shown are global values (all sessions, all X-traffic).
X-display
forwarding : [Auto ]
DISPLAY
variable : :0.0...................
SSH authorization mode : [MIT Magic Cookie
1 ]
XAUTH delay
(Ms) : 750
Number of open channels: 0
Packets from hosts : 0
Bytes from hosts :
0
Packets from X-server : 0
Bytes from X-server : 0
<Refresh> <Reset>
The Refresh button refreshes the statistics to current
values.
The Reset button forces all statistics to zero.
9.10: SSH Setup
This panel allows you to configure the settings for the Secure Shell version 2 protocol. It looks as follows:
Debug SSH protocol negotiation: [
] Use timestamps:
[ ]
Log SSH packet data to IVT.LOG: [ ]
X-Windows port
forwarding : <View/Configure>
IVT
tunnels : <View/Configure>
Kerberos/GSSAPI : <View/Configure>
Allow interactive
passwords : [X]
Don't allocate pseudo terminal: [
]
Allow use of
Pageant : [X]
Enable authentic.
forwarding : [X]
Agent hijack
protection : [X]
Enable
compression : [X]
Show SSH debug
messages : [X]
Allow non-standard use of DES : [ ]
Accept host
keys : [Ask user ]
Keep-alive delay
(0-off) : 0
Terminal type for
SSH : vt220....................
Data to send to
server : .........................
Private key file for
SSH : .........................
Pathname of PAGEANT executable:
.........................
Automatically start
PAGEANT : [X]
<SSH Port
Forwarding >
<Configure SSH Key
Exchange >
<Configure SSH
ciphers >
<Configure SSH bug
detection >
<Manage stored SSH
keys >
<Start KEYGEN (makes key
pair)>
<Start PAGEANT
now >
Most of the core SSH code was borrowed from PuTTY. Thanks!
9.11: SSH Port Forwarding
This panel allows you to setup SSH port forwarding. It looks like:
Current session only : [X]
Type of
forwarding : [Local ]
IP
version : [Auto ]
Source
[host:]port : ..................................
Destination host:port:
..................................
Accept all
hosts : [ ]
[ Add ] [ Remove ]
The SSH protocol has the ability to forward arbitrary network connections over your encrypted SSH connection, to avoid the network traffic being sent in the clear. For example, you could use this to connect from your home computer to a POP-3 server on a remote machine without your POP-3 password being visible to network sniffers.
In order to use port forwarding to connect from your local machine to a port on a remote server, you need to:
BTW: The above dialog is equivalent to: SSH_FORWARD LOCAL 3030 popserver.example.com:110 in your IVT.RC file.
Now start your session and log in. Port forwarding will not be
enabled until after you have logged in; otherwise it would be
easy to perform completely anonymous network attacks, and gain
access to anyone's virtual private network. To check that IVT has
set up the port forwarding correctly, you can turn on 'Debug SSH
protocol negotiation' before logging in.
IVT should say something like this:
SSH: Forwarding local port 3030 to popserver.example.com:110
Now, if you connect to port 3030 on your local PC, you should find that it answers you exactly as if it were the service running on the destination machine. So in this example, you could then configure an e-mail client to use localhost:3030 as a POP-3 server instead of popserver.example.com:110. Of course, the forwarding will stop happening when your IVT session closes down.
You can also forward ports in the other direction: arrange for a particular port number on the server machine to be forwarded back to your PC as a connection to a service on your PC or near it. To do this, just select the 'Remote' type instead of the 'Local' one. The 'Source port' box will now specify a port number on the server (note that most servers will not allow you to use port numbers under 1024 for this purpose, unless you are logged in as 'root' there).
An alternative way to forward local connections to remote hosts is to use dynamic SOCKS proxying. For this, you will need to select the 'Dynamic' type instead of 'Local', and then you cannot enter anything into the 'Destination' box (it will be greyed out). This will cause IVT to listen on the port you have specified, and provide a SOCKS proxy service to any program which connects to that port. The SOCKS protocol negotiates the actual destination with the client.
The source port for a forwarded connection usually does not accept connections from any machine except the SSH client or server machine itself (for local and remote forwarding respectively). This can be changed in several ways:
(Note that if you're using Windows XP Service Pack 2, you may need to obtain a fix from Microsoft in order to use addresses like 127.0.0.5).
See also SSH_FORWARD.
IVT will show an interchange icon in the status bar when IVT is actively forwarding data.
The icon does not appear when channels are set up but not in
active use.
9.12: SSH Key-exchange configuration
This panel allows you to configure how IVT handles SSH-2 key
exchange.
See also the IVT.RC command SSH_KEX.
Key exchange occurs at the start of an SSH connection (and occasionally thereafter); it establishes a shared secret that is used as the basis for all of SSH's security features. It is therefore very important for the security of the connection that the key exchange is secure.
Key exchange is a cryptographically intensive process; if either the client or the server is a relatively slow machine, the slower methods may take several tens(!) of seconds to complete.
If connection start-up is too slow, or the connection hangs periodically, you may want to try changing these settings. If you don't understand what any of this means, it's safe to leave these settings alone.
IVT supports a variety of SSH-2 key exchange methods, and allows you to choose which one you prefer to use.
IVT currently supports the following varieties of Diffie-Hellman key exchange:
If the first algorithm IVT finds is below the 'warn below here' line, you will see a warning message when you make the connection, similar to that for cipher selection.
Repeat key exchange.
If the session key negotiated at connection start-up is used too
much or for too long, it may become feasible to mount attacks
against the SSH connection.
Therefore, the SSH-2 protocol specifies that a new key exchange
should take place every so often; this can be initiated by either
the client or the server.
While this renegotiation is taking place, no data can pass through the SSH connection, so it may appear to freeze. Usually the same algorithm is used as at the start of the connection, with a similar overhead.
You can control how often IVT will initiate a repeat key
exchange (rekey).
You can also force a key exchange at any by using the Rekey
now button.
Max minutes before rekey.
This specifies the amount of time that is allowed to elapse
before a rekey is initiated. If this is set to zero, IVT will not
rekey due to elapsed time. The SSH-2 protocol specification
recommends a timeout of at most 60 minutes.
You might have a need to disable time-based rekeys completely
for the same reasons that keep-alives aren't always helpful. If
you anticipate suffering a network dropout of several hours in
the middle of an SSH connection, but were not actually planning
to send data down that connection during those hours, then an
attempted rekey in the middle of the dropout will probably cause
the connection to be abandoned, whereas if rekeys are disabled
then the connection should in principle survive (in the absence
of interfering firewalls).
For these purposes, rekeys have much the same properties as
keep-alives (except that rekeys have cryptographic value in
themselves, so you should bear that in mind when deciding whether
to turn them off).
Note, however, the SSH server can still initiate rekeys.
Max data before rekey.
This specifies the amount of data (in megabytes) that is
permitted to flow in either direction before a rekey is
initiated. If this is set to zero, IVT will not rekey due to
transferred data. The SSH-2 protocol specification recommends a
limit of at most 1 gigabyte.
Disabling data-based rekeys entirely is a bad idea. The
integrity, and to a lesser extent, confidentiality of the SSH-2
protocol depend in part on rekeys occurring before a 32-bit
packet sequence number wraps around.
Unlike time-based rekeys, data-based rekeys won't occur when the
SSH connection is idle, so they shouldn't cause the same
problems.
See also the IVT.RC command SSH_KEX.
9.13: SSH bug detection
This panel allows you to configure how IVT should detect and avoid bugs in various SSH-2 implementations.
Miscomputes SSH2 HMAC
keys : [Auto detect]
Miscomputes SSH2 encryption
keys : [Auto detect]
Requires padding on SSH2 RSA
signatures: [Auto detect]
Misuses the session-ID in PK
auth : [Auto detect]
Handles SSH-2 key re-exchange
badly : [Auto detect]
Only supports pre-RFC4419
GEX : [Auto detect]
Ignores SSH-2 maximum packet
size : [Auto detect]
Replies to requests on closed
channels : [Auto detect]
Normally, IVT will attempt to detect the bug automatically, based on the name and version number of the remote SSH server. When a bug is present in a server IVT does not know about and the bug causes problems, you can set it to "Force on". When IVT thinks there is a bug when there in fact is none, you can set this to "Force off".
9.14: Stored SSH host keys
This dialog shows you all received SSH host
keys. It is reached from the main setup screen, <SSH
settings>, <Manage stored SSH keys>.
Such SSH keys are sent by a host when a connection is made
through the SSH protocol. IVT will store the key and its
fingerprint.
The next time a connection is made to the same host, the
transmitted key is compared to the stored copy. If it does not
match, a warning is issued (because this may be a host that
pretends to be somebody else).
If you have many hosts that come and go, these keys can
clutter up your registry. Also, you may want to check the
fingerprint of a particular host key. This panel allows you to
inspect and delete individual keys. By clicking on <Delete
all>, IVT will remove all stored keys from the registry.
Mind, no confirmation is asked. Losing your keys is no disaster
though, since the next time you connect to a host it will be
stored again.
See also the AUTO setting of SSH_ACCEPT.
You can also export the keys to a file with <Export to
file>.
Such files can be used through the SSH_HOSTKEYS directive in an IVT.RC file, to limit IVT's connections to known
hosts only.
Note: PuTTY does not have this functionality :-)
9.14.1: GSSAPI Authentication over SSH connections
This setup screen configures Kerberos authentication over SSH, using the GSSAPI protocol. This feature was introduced in IVT 24.0 in 2014.
Attempt GSSAPI authentication:
[X]
Prefer GSSAPI over
others : [X]
Allow credential
delegation : [ ]
Use OS user as default login :
[X]
Reverse lookup of host names
: [X]
Preference order for GSSAPI
libraries:
MIT Kerberos
GSSAPI < Up >
User specified
GSSAPI.DLL < Down >
Microsoft SSPI SECUR32.DLL
User-supplied GSSAPI
DLL : [ ] <Browse>
9.15: Serial setup
This panel allows you to configure the settings for serial
ports.
Depending on whether the current session is a serial one, you can
modify the current port or (when the current session is not
connected yet or is not of a serial type), change the global
defaults that will affect future serial sessions.
Baud
rate : [19200]
Parity : [None ]
Data
bits : [ 8 ]
Stop
bits : [ 1 ]
CTS output
control : [X]
DSR output
control : [ ]
DSR input
sensitivity : [ ]
DTR
control : [ Enable ]
RTS
control : [ Handshake ]
XON/XOFF output control: [X]
XON/XOFF input control : [X]
XON
limit : [128 ]
XOFF
limit : [0 ]
BELL on phone
RING : [X]
Show Carrier
Detect : [X]
Write
timeout : [0 ]
<Short BREAK (250ms)>
<Long BREAK (1.5 sec)>
Total char
overruns 0
Current
overruns 0
There are a number of buttons in the "Preset" section which
will select logical combinations for flow-control. By clicking
them, the relevant options will automatically be updated.
When you use an IVTFUNCTION to access
this (using "Serial preset" as a parameter), you must specify a
3rd parameter that specifies which button must be simulated:
RTSCTS: Select Request-to-send/Clear-to-send flow
control DTRDSR: Select Data-terminal-ready/Data-set-Ready
flow control.
XONXOF: Selects XON/XOFF flow control in both
directions.
NONE: Turns off all forms of flow
control.
9.16: RLOGIN setup
RLOGIN is not as popular a protocol as TELNET, but IVT supports it.
This dialog allows you to configure the values that will be used
for future sessions of this type.
Be warned: RLOGIN transmits passwords in clear text over the
network.
Local user name :
....................
Remote user name:
....................
Terminal
type : vt220...............
9.17: VT220 (basic) setup
This basic setup dialog manages the main characteristics of the VT220 emulator. Click on any of the links for more information.
Screen
size : [60x145 (Dflt)]
Allow
resize : [X]
Allow
ALT-screen : [X]
One size for
all : [X]
History : [X]
Screens : [10 ]
Timeout : [0 ]
7 or 8-bit
mode : [7]
Auto reconnect
LAN : [ ]
Retain
sessions : [ ]
Line
wrap : [X]
LF implies
CR : [ ]
Screen save
after : 10 minutes
Lock keyboard after : 0 minutes
Smooth scroll delay :
0 Ms Pixels: 1
Keyboard lock passwd: ********
Answerback
string : \06...........................
Terminal
speed : [Turbo ]
(see also ALT-S)
Highlight
strings : <View/Configure>
9.17.1: VT220 basics: Linefeed implies CR
When this option is turned on, IVT will automatically add a Carriage Return character after every received Linefeed character. This means the next displayed character will be at the start of the next line, rather than at the same column position on the next line. The host can control this with an escape sequence.
NOTE:
Older versions of IVT refused to save this setting, since it
causes an incompatibility with a true VT220 when you do. Starting
with version 23.1, it is the users' responsibility to make sure
of the setting: IVT saves it when you save setup, along with the
all other settings. when the host alters the setting using
an escape sequence, it is marked as
VOLATILE and will not be saved
accidentally, which was the original reason to skip saving this
option.
See also CSI 20 h.
A number of users have reported trouble with this setting.
Sometimes there are hosts which force this setting to ON and then
produce screen corruptions because of that, sometimes they expect
it to be turned on but do nothing to actually set it. In that
case, just set it to ON and save it.
In the former case, a little IVT script can be used to force the
setting, like so:
ONCONNECT *
SetLfImpCrOff
Script SetLfImpCrOff
SECRET
FOREVER
WAIT "\1B[20h" # Wait for a command to turn it
on
IGNORE_ESCAPE # Ignore it.
NEXT
END
This script launches a background script for every session,
which just sits around monitoring everything received from the
host. When a command is seen that turns this setting ON, it
ignores it.
The SECRET means there won't be an annoying
red S in the status line to show that a script is active.
Note that this is a hack: the host is just plain wrong in sending
the command and then still assuming it is off. instead of working
around the problem in IVT, it is better to fix the host.
9.18: VT220 (more) setup
This dialog combines a mishmash of other VT220 terminal characteristics, besides the ones in the VT220 basic setup dialog.
Alert
mode : [ ]
Bell
action : [Sound tune ] Bell
abuse settings
.WAV
file :
........................... Browse
Flash
action : [Flash screen ]
.WAV
file :
........................... Browse
Backspace
key : [Backspace ]
F1-F4
keys : [Normal ]
Cursor key
mode : [Normal ]
Keypad
mode : [Normal ]
Create sess
dialog : [Medium ]
SCO-ANSI compatible : [
] Keyboard [ ]
Cursor
height : 16
Blinks: [X] <Color>
Local
echo : [ ]
Screen debug
mode : [Off ]
Packet bounds trace : [ ]
Explicit
exit : [X]
Function keys locked: [ ]
Session switch wraps: [X]
9.18.1: Setup: Bell abuse settings
This dialog allows you to set the BELL_ABUSE parameters.
This is a way to prevent excessive noise when the host sends many
BELL characters or a binary file to the screen.
Disable bell when
overused : [X]
This many
bells : [5 ]
In this many
seconds : [2 ]
Seconds of silence required :
[5 ]
9.18.2: Setup: Local echo mode
A late addition to IVT, this will simply echo everything you type to the screen. If the host is also echoing, you will see everything twice.
If the host is not echoing, you can use this to make the things you type visible. It can be turned on and off from this dialog.
This is also handy if you want to try the effect of some function keys and such within IVT. This feature can also be turned on and off by the host by using the CSI 12 l/h command. When you want to turn on local echo for a session automatically, use a small script such as:
ONCONNECT *
LocalEchoOn
Script LocalEchoOn
HIDE
VTECHO
"\1B[12l" # Send CSI 12 l, turns local echo on.
END
9.19: Mouse setup
This dialog allows you to configure the actions taken by IVT in response to various mouse actions in the sessions screen and history pager.
Mouse
mode : [Cut/Paste]
Cut
mode : [Block]
Hide while
typing : [X]
Copy scroll
speed : 4..
Wheel scroll
factor : 1
Wheel scroll page
size : 24
Leave selection
visible : [X]
Word/phrase
selection : [IVT (double button) ]
Putty-separators : [ ] <View/Configure>
Extend to full
line : [X]
Copy to clipboard in RTF, too: [X]
Use strict CUT
mode : [X]
Paste trailing
newline : [X]
Trim trailing
spaces : [X]
Unicode smart
paste : [X]
Show usage in
status : [X]
XTERM2 same as
XTERM : [ ]
IVT uses the mouse very extensively, please have a look at the special mouse chapter, especially the advanced possibilities.
9.20: Color setup
Colors can be specified multiple ways. Some forms go all the way back to the first MS/DOS version of IVT. The preferred syntax is the 2nd column.
0 Black
1 Blue
2 Green
3 Cyan
4 Red
5 Magenta
6 Brown
7 White
8 Grey
9 Brightblue
10 Brightgreen
11 Brightcyan
12 Brightred
13 Brightmagenta
14 Yellow
15 Brightwhite
-- Default
Actually, any combination of "bright" with a color is valid, so you can also specify "brightblack" (grey) and "brightbrown" (yellow).
The special 'Default' is used when you use the COLORATTRIBUTE function to code a color to be used in a DIALOG. The default will select either the default dialog foreground or background color, whatever that is.
All color statements in IVT.RC can take either the name or the number as a specification of the desired color. See also COLORS.
Note that IVT will swap the selected background color with the
VT220 default (black), so that when a program explicitly selects
black, IVT will use whatever background you select, and when the
application selects your background color, IVT will use black.
This will keep color displays readable (and I know of one
application that selects black foreground color to hide passwords
by making them black-on-black so they would show when the
background color of IVT was white...
See also SOFTBLINK.
Session foreground
RGB : 0 0 0 <Modify>
Session background
RGB : 255 255 255 <Modify>
Cursor foreground
RGB : 0 0 0 <Modify>
Cursor background
RGB : 0 255 0 <Modify>
Reverse
CUT : [ ]
Cut foreground
RGB : 255 255 255
Cut background
RGB : 0 0 255 <Modify>
Search foreground
RGB : 0 0 0 <Modify>
Search background
RGB : 255 255 0 <Modify>
Tooltip foreground
RGB : 0 0 0 <Modify>
Tooltip background
RGB : 255 255 0 <Modify>
Marker foreground
RGB : 0 0 0 <Modify>
Marker background
RGB : 255 255 0 <Modify>
Automatic color contrast: [ ]
Xterm 256 color
mode : [X]
Monochrome
screen : [ ]
Help
screens : [White ] [Blue ] Example
Selected
hyperlink : [White ] [Green ] Example
Unselected
hyperlink : [White ] [Red ] Example
Ready
indicator : [Black ] [Green ] Example
Blink Color
Foreground : [ ] Background [ ]
Default only
Underl. Color Foreground: [
] Background [ ]
Inverse Color Foreground: [
] Background [ ]
Bold Color
Foreground : [ ] Background [ ]
<Redefine ANSI colors>
<Redefine attribute
colors>
When you want to use colors instead of true underlining, use the checkbox on the "Underline" items (just before the "Modify" button) to enable this feature. Similarly for colors instead of true blinking.
9.21: Font and Keyboard
This panel controls the main look & feel options of IVT,
the font, code page and the way the keyboard behaves.
Also, bi-directional text is configured using the button
here.
Also, the language of IVT itself can be configured here.
Current
font : Face=Lucida Console,Points=9
Font
quality : Default
Poorman's
linedraw : [ ]
Display
zero : [Normal ]
Bold
style : [Auto ]
Autom font
resize : [ ]
8-bit char
display : [Codepage] [DEC ]
8-bit command
mode : [Executed]
Received data character set: [ISO-8859-1:1998
(Latin 1, West Europe) ]
Treat ambiguous CJK as wide: [
]
Bi-directional
text : <View/Configure>
National
replacement : [US ASCII ]
IVT
language : [English ]
Input
language : [Use system default ]
CAPS lock
mode : [Allowed ]
Keyboard
map : [VT220] [Exceptions]
[ ] EMACS ALT is META
[X] CAPS+SHIFT is lower case
[X] PF1-PF4 on top row numpad
[X] ALT by itself activates menu
[X] Recognize ALT-0/9 on foreign
keyboards
[ ] Key click
[ ] Keyboard debug
9.22: Keyboard map exceptions
This panel allows you to configure how certain IVT reserved
key strokes are handled when the keyboard is in XTERM mode (which conflicts with those IVT
reserved keys).
You can reach this setup panel from: Font/Keyboard, Keyboard map
exceptions.
[ ] Alt-Cursor switches
sessions
[X] Alt-Cursor enters pager
[X] Alt-T toggles sessions
[X] Alt-Digit switches sessions
[X] Ctrl-PgUp/Down creates
sessions
9.23: BIDI Settings
This panel allows you to configure the bi-directional text
features of IVT.
By default, IVT will handle scripts like Arabic and Hebrew that
go from left- to-right on the screen (LTR) instead of
right-to-left (RTL).
Various options can be turned on or off, including automatic
switching of the Windows keyboard input language when the host
sends an explicit RTL command.
Bi-directional
text : [X]
Arabic text
shaping : [X]
Enable ESC%0 and
ESC%1 : [X]
Input language for
RTL : [Use system default]
Input language for
LTR : [Use system default]
9.24: Log settings
This dialog controls the creation of log
files of session data.
The top of the dialog shows the current logging settings.
Auto logging is a powerful feature of IVT that allows you to
configure an automatic log file for all your sessions to a unique
name, optionally organized in directories per day, or per host,
or any other scheme you can think of. An icon in the status bar
allows control over logging.
Autolog
name : .............................................
Autolog
mode : [Off ] Suspend Resume
Timestamp lines : [X]
Write file header: [X]
Show in
status : [X]
Start
mode : [Ask user ]
Automatic logging can also be combined with a script, see this example.
9.25: Windows setup
This panel allows you to configure many of the look and feel options of IVT, all sorts of screen furniture like status bar, tabs bar, scroll bar and so on can be turned on or off, sized and configured.
Advanced user interface : [X]
Menu
bars : [X]
Vertical scroll
bar : [X]
Status
line : [X] Borders : [X] Middle: [Clock]
TABs
bar : [View/Configure]
Full screen
scrollbar : [X] Menu bar [X] Statusline [X]
Extra vertical
border : 2 Horizontal: 0
Delay before
tooltips : 300 Keep for : 3000
Address book
size : 25
Auto complete
hosts : [Any ]
Name list: [All hosts] Sort: [X]
Import PuTTY
hosts : [X]
Show start-up
tips : [ ]
Window
position : [Last known]
Window
coordinates X : 10 Y: 20 <Copy
current>
Always on
top : [ ]
Alt+Enter is full screen: [X]
Window
transparency : 0 (0
disables)
IVT title bar
displays : [Session comment]
Fixed title bar
text : Test comment.......................
Software blink
speed : 400
<Propagate
settings> <Show IVT splash
screen>
9.26: Printer setup
This dialog allows you to add, delete and modify printers. You
can also assign a specific printer to the current session, change
the default printer and modify the way the manual pages are
printed.
If you make changes to Windows printers, these changes can be
saved to the registry. When IVT starts
up, it will re-apply the changes to those printers.
When printers are removed, the IVT extra settings will be
discarded the next time you save the setup.
Not all items below are visible for all printers. There are two different types of printers:
The first type is detected automatically, the second is added using the button below (Add a printer-to-file-).
Printer : [hp deskjet 930c series (Dflt) ]
Font : Facename=Lucida Console,Points=9
Open
for : [Append ]
Timeout : [10 ] <Properties>
Print mode :
[Off ]
Auto landscape : [X]
Auto Form
Feed : [X]
Font
scaling : [X]
Black/white only: [ ]
Prompt if exists: [X]
Controller mode :
[Raw ]
print
mode : [Off ]
<Make this printer the default>
<Add a printer-to-file>
<Delete this printer >
Print screen with statusline: [X]
Confirm print
screens : [X]
Confirm print
selections : [X]
Print screen with timestamp :
[X]
Manual prints
lines/page : [61 ]
Manual prints
indents : [10 ].
With this, you can control the logical printer for the current
session, or add new (logical) printers for the current (and
future) sessions.
IVT will show all your Windows printers here, with their normal
names. You cannot delete such printers, and you cannot set a page
length for them (this depends on the paper size and it
automatically determined at print time).
You can click on the FONT line to
change the font used for all text output to printers. Click on
the <Properties> button to change the default
properties for the printer.
All other printers are files, and treated as such.
If you just want to print a Unix file, check out the privt support program! This prints Unix files on your Windows printer!
IVT can manage multiple printers (each 'printer' can be any
writable file).
A session can be connected to one of these printers. A printer
may be shared by several sessions (output will be intermixed from
all sessions). Of course, different sessions may have different
printers, which can all be simultaneously active.
A printer is selected in this setup screen. Logical printers
can be added by clicking on this
button. A newly created printer becomes the default for the
current session only.
By clicking on the <Make this printer the default>
button, the selected printer will become the default printer for
all new sessions.
The PRINTER keyword can be used in an
IVT.RC file to define the default
printer.
Every printer has an overwrite/append flag that determines how
the printer will be opened. When 'overwrite' is selected, any
existing file is overwritten.
When 'append' is selected, output is appended to that file. For a
true device the setting is (usually) irrelevant.
There is also a timeout associated with each printer. When the
specified number of seconds has elapsed without activity for the
printer, it will be closed automatically.
A printer is 'opened' by the first session that sends something to that printer. This can be done by:
When a printer is active for the session, a icon will show in the status line. The printer is not closed until a "FLUSH PRINTER" button is used from the main setup screen, or the specified PRTIMEOUT value elapses without activity. A click on the icon also closes the printer.
Closing will cause actual printing to start on spooled (network) printers (this prevents every PrintScreen from becoming a separate spooled print job, thus saving paper, banner-pages and aggravation).
Using the black & white feature will suppress color printing.
Also, you can record an entire session to a printer without generating many individual print jobs every time nothing happens for a few seconds (but see also AUTOLOG for better ways of logging sessions).
See also PRINTER, PRTIMEOUT , AUTOLANDSCAPE, PRINTER_FONT_SCALE and PRBLACKWHITE.
9.27: Keyboard macros
Keyboard macros allow you to program keys manually (learn mode). You choose a key you want to program,
and start the recorder. IVT will switch you to the session screen
and will start recording every keystroke. You end learn mode
(which is indicated in the status line by an icon) by returning
to setup and choosing the <Keyboard macro> button
again (which will read "END MACRO" in that case). Alternatively,
type Shift+Ctrl+End or use the menu bar.
See LEARN for details, or click on any of
the links below for detailed help on that particular option.
Macros are saved into the registry when you save your setup
settings.
<Choose key to program>
This session
only : [ ]
VT220 key
only : [ ]
Match LEFT/RIGHT Shift : [ ]
Match LEFT/RIGHT
Ctrl : [ ]
Match LEFT/RIGHT
Alt : [ ]
Match CAPSLOCK
key : [ ] <Read/Write
macro files>
Match
NUMLOCK key : [ ]
Match SCROLL LOCK
key : [ ] <Delete
all macros>
Match Scan
Code : [ ]
Recursive
expansion : [X]
Type of
programming : [Keyboard recorder ]
Fixed string
value : ..............................
Script to
invoke : ..............................
Function to
perform : ALT-0 (any key)...............
<Start recorder> <Delete
key> <Cancel> <OK>
For a detailed explanation on key macros and their many options, see the special chapter on learn mode.
9.28: Encrypting files
Filename :
.............................................
<Browse for file>
Use default password: [ ]
Password :
........
Password (retype) : ........
<Encrypt> <Decrypt>
This panel allows you to encrypt or decrypt files with either
a default key or a password you supply. When a default key is
chosen, the file can never be decrypted (!), but can be read by
IVT during start-up without prompting for the password. However,
see also CRYPTPWD, which allows you to
store keys in a file which is encrypted with the default key (so
IVT can decrypt that file, learn your passwords, and decrypt
other files without prompting for the password).
See Encrypting .RC file for more
details.
9.29: ZMODEM setup
IVT supports file transfer. The easiest way to send a file to the host is to install "rz" on Unix and drop a file on the IVT window: transfer will be automatic. Typing "sz file" on Unix will send the file to your download directory which you can configure here.
Download
directory : C:/tmp/transfer....................
Upload
directory : ...................................
Host has buggy
binary : [ ]
Autodetect ZMODEM transfer: [X]
Maximum &packet
size : [1024]
9.30: Setup: Reset terminal
When you type an F3-R sequence (or click on the "Reset Terminal" button in the main F3 setup panel), the virtual terminal will be reset to default settings. Use this when the session has gotten stuck or in an inoperable state due to (for example) sending a binary file to the terminal (cat-ting an executable is an oft made Unix error that can bring a terminal in such a state). F3-R will do everything that a host initiated reset command does, and will also:
The last feature is useful if you want to do a simple sort of file transfer. You can first clear the history pager buffers, then start a command sending a lot of output to the terminal, then use ALT+s in pager mode to save the entire buffer contents to a file.
By the way, also look into F3-D for a quick way of getting rid of unwanted output sent by a host.
Note: F3-R resets the current terminal to the
terminal defaults. If you have made configuration changes that
affect all sessions (like the title
bar setting or the status line
settings), they are NOT restored.
For that you'll have to change them back or exit IVT and
restart.
9.31: Setup: Cancel scripts
The F3-R command resets an entire terminal. One of the results of this is that any running script is cancelled.
The F3-C command (either typed or by clicking on the
"Cancel Scripts" button in the main F3 setup panel) is less
destructive - it ONLY terminates all scripts and threads that are
active for the current session. Use this if a complex chat-script
runs into difficulties due to unexpected responses from the
host.
Aborting a script also undoes any DISPLAY
OFF command, and restores any temporary status text set by a
STATUSTXT command.
All existing WINDOWs are killed.
See also the CANCEL statement, by which a script can protect itself from termination by either F3-R or F3-C. Such a script can only be stopped by
See also the IVTFUNCTION with argument "Restore config". That will reset all private session configuration data to the startup defaults, but will leave the history and current screen untouched, will not alter VOLATILE settings and so on. This can be used, for example, to reset all theme settings.
a KILL, termination of the session or its own free will.
9.32: Setup: Dump data
Sometimes, a host is given a wrong command and starts sending
tons of binary garbage to the terminal. In Unix, cat-ting an
executable file is a well-known example of this. Normally, you
would interrupt this with ^C, but sometimes the network has
accumulated tons of data in buffers that IVT has to wade through
because the buffers are not always cleared when you use ^C.
Normally, this is not a problem because IVT is so fast, but
binary data can contain a lot of garbage that causes a lot of
processing in IVT - the most obvious example is a BELL character
which will cause IVT to ring the bell for a substantial fraction
of a second. For some unknown reason, there are a lot of BELL
characters in the average executable :-)
Whenever a host starts doing this, you can use the F3-D command - IVT will start throwing away everything that arrives on the session without actually looking at the data - it only counts the number of characters discarded this way and displays this counter on the screen. It will keep doing this until:
In both cases, IVT will then switch back to the session. Afterwards, the F3-R command may be needed to get rid of side effects of the garbage that got processed before you managed to type an F3-D.
9.33: Setup: Flush printer
Printers are usually not attached
physically to a Windows PC anymore.
Instead, you will have a network connection to a printer. When
the printer is opened, all output is accumulated in a file which
gets printed when the printer is closed. This is different from a
real VT220, where a physical, noisy printer could be attached to
the back of the VT220 terminal, and every line (or character)
would get printed immediately.
When IVT opens a printer, a printer icon shows in the status line. The printer stays active until:
Only then will your job actually start printing (or the file is closed in case of a (manually added) printer that is actually a file).
See also AUTOLOG.
9.34: Setup: Highlight strings on the session
This screen is reached from either the 'Extra' menu or from the VT220 settings panel in setup.
This setup screen allows you maintain a list of regular expressions that will be highlighted on the session screen when data
appears that matches those expressions. There is an overview screen
that shows the most important characteristics of the current
setup, with an ADD, REMOVE and VIEW buttons and a 'disable all'
option.
The ADD and VIEW buttons will bring you to the maintenance panel
for a single HIGHLIGHT item that will
show all the details of a single entry:
Enabled : [X]
Current session
only : [ ]
Regular
expression : [IVT is great ]
Exclude
expression : [ ]
Description : [A simple truth ]
Case
insensitive : [X]
Trim spaces on
right : [ ]
Blink : [ ]
Underline : [ ]
On default colors only: [ ]
Tooltip
text : [Get it now! ]
Script on button
1 : [ ]
Script on button
2 : [ ]
Script on button
3 : [ ]
Automatic script call :
[ ]
Predefined
action : [None ]
Foreground
RGB : [255] [255] [255] Default:
[ ]
Background
RGB : [ 0] [ 0] [255] Default:
[ ]
9.35: Setup: TABS bar properties
This setup screen is reached from Setup->Windows setup->View/Configure tabs bar. It can be used to configure the appearance of the TABSBAR.
TABs bar
enabled [X]
Tabs in full
screen [X]
Show '+'
tab [X]
Enable multiple TAB
lines [X]
Close icon per
tab [X]
Confirm
close [X]
Sequence
number [X]
Tab
contains [User@Host ]
Font [Facename=System,Points=9]
Extra pixels under
tabs [2 ]
Extensions (color, animation) [X]
Activity
indicator [X]
Tab base
color [240] [240] [240]
Selected tab
foreground [0 ] [0 ] [0 ]
Selected tab
background [255] [255] [255]
Deselected tab
foreground [0 ] [0 ] [0 ]
Deselected tab
background [181] [181] [181]
Error tab
foreground [255] [255] [255]
Error tab
background [255] [0 ] [0 ]
This is an important feature, others are prev/next
10: F4 - Help & Various functions
10.1: F4-S: Session ordering
Using F4-S(essions) will take you to a panel that shows all existing sessions and their primary attributes. These attributes are:
While in this panel, you can perform the following actions:
Click on the "Edit/details" button to view or change the session details. This will bring up a new dialog with the following fields:
You can also quick-select the F4-S screen by clicking
the mouse on the position of the hostname or comment-parts of the
status line.
Yet another way is to select the WINDOW menu on the
menu bar.
This is an important feature, others are prev/next
10.2: F4-G: Create a named group of sessions
The CREATEGROUP statement can be
used in an IVT.RC file to describe a
logical group of sessions. The group has a name and a
description.
Your setup may have multiple CREATEGROUP statements, each
group presumably describes a group of sessions you want to create
in a single operation.
Such a group of sessions can be created by typing the name of the group at the Ctrl+PgDown prompt, but this screen offers an even easier way.
The F4-G screen shows all such named CREATEGROUP groups (name and description).
The standard cursor keys can be used to select an entry, the
ENTER key can be used to select the current entry.
Even easier is to simply click on one of the lines.
There is an entry on the menu bar in
the SESSIONS menu too.
IVT will immediately create the bunch of sessions that belong
to the group.
When you use the password learning and
autologin system, all these sessions can log in and perform
some task after logging in too! This means you can create a whole
bunch of sessions with only a few mouse-clicks that will start
your mail, news etc. programs for you on demand.
Using the -A or -agrp command line options
allows you to do this from a shortcut on your desktop or your
start-up folder.
10.3: F4-X: Managing scripts
Scripts can be written and stored in IVT.RC files. IVT will read these files at
start-up. You can also explicitly read files using F4-X-R,
which is convenient when you are developing scripts.
A script is parsed and loaded into memory, from where it can be
executed by using F4-X, selecting the proper script, and typing
ENTER.
Alternatively, you can simply click on the appropriate line.
A script can be removed from memory from the F4-X screen by
typing DEL there.
Scripts come in two types: Visible and HIDDEN ones. Visible means that the F4-x
screen will show them and the user can invoke them. HIDDEN
scripts can only be called by other
scripts.
When a script is not hidden, a DESCRIBE
statement can be used to describe the purpose of the script. This
will be shown in the F4-X screen, too.
When complex series of scripts are developed (such as the modem dialer example) it can be convenient to have them in separate files, which can be INCLUDEd from your main IVT.RC file.
Any of these files can be encrypted, IVT will prompt for the password when none of the passwords it has remembered work.
Scripts can take parameters. The F4-X screen does not offer any interface to pass parameters, however. When required, you will have to write a wrapper script that interactively asks for these parameters (e.g. using KbdLine or PROMPT) and then calls the function actually desired.
10.4: F4-K: Managing macro's
All keys in IVT are programmable in various ways:
This is an important feature, others are prev/next
11: Protocols supported by IVT
11.1: Overview of supported protocols
One of the major features of IVT is that it can run several sessions simultaneously, even over different transport (low-level) protocols and several built-in session (higher-level) protocols. See the PROTOCOL IVT.RC statement for a description of how to select these protocols.
IVT supports the transport protocols listed below. However, IVT can be compiled with or without support for any of them. See the PROTOCOL documentation for a list of protocols actually supported by THIS version of IVT:
When you use a network protocol, the hostnames you use must
match the convention of that protocol. This means that hostnames
typed in on the command line, CREATE
statements or the CTRL+PgDown prompt depend
on the protocol that will be chosen by IVT for the new session.
This can be set using either the setup
screen or the PROTOCOL statement.
Each section below describes the possible hostnames you may use
for that particular protocol.
IVT also supports several session protocols to run on top of the transport protocols. For example, on top of TCP/IP you would have to use either RLOGIN or TELNET to get a login session with a Unix machine. The session protocol determines how to interpret the data sent by the host. Currently, IVT supports:
TELNET | The classic TCP/IP network terminal emulation protocol. |
Kerberos | An authentication and encryption layer on top of TELNET. |
RLOGIN | A simple system based on (unwarranted) trust. |
SSH | Secure shell which encrypts network traffic. |
MULTI | This is a special IVT multiplex protocol that can run on top of anything and can be used to have multiple sessions on a single connection (usually, a serial connection). |
See the appropriate sections for further details.
11.2: Transport protocols
11.2.1: The NetBios transport protocol
When the NETBIOS protocol is chosen,
IVT will check to see if NetBios protocol stacks are available on
your computer. The NetBios interface is actually only an API
(application program interface) that will usually use NetBeui or
TopNetBios or some such protocol as the actual transport. But it
is also possible to use another transport (such as TCP/IP)
"underneath" a NetBios API.
As a good example, Win'95 provides this by default. As far as IVT
is concerned, the Win'95 machine offers several logical NetBios
adapters, which (in olden days) were used to connect PC's to
several LAN's using several physical network adapters.
On Win'95 (or NT) one of these "adapters" is actually
NetBios-over-TCP/IP, allowing IVT to make (limited) use of the
TCP/IP protocol, which is now in much wider use than Netbeui.
IVT will check for the presence of logical adapters and
broadcast a unique name on each network it finds (a necessary
ritual on NetBios networks).
When a connection needs to be established, it will attempt each
network in turn. When a successful connection is established, IVT
will remember what network it found this host on, and the next
session will be attempted at that network first (since a failed
attempt can take many seconds and you will usually talk to hosts
on one network only).
NetBios hostnames are typically names (just one word), such as
"SERV01".
Sometimes, these names end in ".LOGIN", so a typical name might
be SERV01.LOGIN. OliNet LAN was the birthplace of IVT, so IVT
still appends this .LOGIN as a default to every NetBios hostname
unless you tell it not to by using the -L command line option or the OPTIONS statement in an IVT.RC file.
This protocol has fallen out of use ever since 1995 or
thereabouts.
WinSock is now the protocol of choice.
11.2.2: The TCP transport protocol
Sorry - this MS/DOS protocol is not in this version of IVT.
The second protocol to be supported by IVT was FTP Inc's TCP/IP implementation for MS/DOS based computers. This commercial package offers a TCP/IP stack together with a package to develop applications on top of this stack.
IVT uses the 'telnet' library offered by this package to
enable it to make direct login connections using the telnet
protocol.
Actually, this introduces a design problem, since IVT ought to
support its own TELNET session-protocol on top of any transport
protocol (such as the socket interface also offered by this
development package). But time was short and the functionality
was important, so the IVT transport "TCP" is actually a transport
+ session protocol rolled into one.
Later, this was rectified with the introduction of the WINSOCK transport protocol and RLOGIN and TELNET session
protocols.
You need to purchase Ftp Inc's DOS stack to be able to use IVT with the TCP protocol. IVT will automatically detect this protocol and use it when no other LAN interfaces (such as NetBios) are detected.
When you specify a hostname to connect to, you must either specify a name that can be resolved by your TCP/IP setup (using the hosts files and/or DNS name services) OR a dotted-address style internet address (like 145.72.248.60).
Optionally, this address can be followed by a : and a
port number. The default port number is 23 (telnet), but
you can connect to other ports this way (the SMTP port 25 being
the most popular one).
This notation can be used in CREATE
statements, too.
The current telnet protocol also allows a few special TELNET functions, accessible via this setup screen.
11.2.3: The WINSOCK transport protocol
Adding the WINSOCK interface to IVT was no small feat. IVT was a DOS program, and WINSOCK is a Windows Socket interface (Sockets being a way to interface to TCP/IP networks).
After a brief and disappointing experiment with Winsock for
DOS and the DJGPP C-compiler I discovered I could compile large
hunks of IVT with the visual C++ environment for Windows. The
result was a text-mode Win32 application, which has full access
to all the Windows calls without the GUI overhead.
This enabled me to write an IVT WinSock layer, on top of which I
wrote a TELNET engine (from scratch).
The other protocols (NetBios and Serial) were also rewritten for
Windows.
I had to make many modifications to the video and mouse
system, just about rewrote the keyboard handler and many more
small modifications to make IVT run happily under Windows 95 and
Windows NT.
New commands were added to take advantage of the Windows
possibilities.
The color handling is now much nicer, variable window sizes are
used, sound files can be played, etc.
We are talking several months of work here!
IVT is now a fast, flexible, native Win32 application.
In the summer of 2002 I decided to make IVT a GUI application. Trouble with the mouse, keyboard, the latest versions of Windows and the clumsy resize of IVT windows, no font support, no scroll bar and so on finally bothered me enough to do something about it. Version 16.1 is a true GUI program, has true underlining, a scroll bar, font support, true double-wide and double-high characters, and so on. Internally, that meant making IVT a multi-threaded application, yet another rewrite of keyboard and mouse handling, and several thousand extra lines of code to deal with the extra possibilities.
Anyway, WinSock is the underlying transport protocol for (in this build):
In the fall of 2010, IPv6 support was added. The code for resolving addresses needed a rewrite for this, and many changes to the code for connecting sessions (when a host has multiple addresses with a mix of IPv6 and IPv4 then IVT will try them in sequence. Port forwarding, proxy support and so on all had to be made IPv6 aware.
11.2.4: The SERIAL transport protocol
Support for serial communications was introduced in version
7.3 of IVT and was the third way to connect to hosts (next to
NetBios and TCP/IP).
Serial lines are really very different from LAN-connections. They
are much slower, you can have only one connection on them, and
the host you connect to depends on where the physical wire goes.
A direct connection is used to connect your PC running IVT to a
serial port on another computer, or you can use a modem to dial
into other computers via the telephone network.
See the dialer example for further
info.
When you are a LAN-user of IVT, the slowness and single-naturedness of these connections is something you have to get used to. To overcome the limitations of these serial connections, IVT comes with two extensions:
When the initial connection to a serial "host" is made, IVT only opens the serial port of the local computer. Therefore, the hostname specified on the command line must take the form of:
COMn[,baud[,parity[,databits[,stopbits]]]]
Where all these fields have the following meaning:
n | The port number (1 - n). This version of IVT supports port numbers larger than 4. Internally, the necessary work is done to support port numbers over 10. |
baud | Baud rate (110, 300, 1200, 4800, 9600, 14400, 19200, 38400, 56000 or 112000) |
parity | None, Even, Odd, Space, Mark |
databits | 7 or 8 |
stopbits | 1 or 2 |
Example: COM2,19200,n,7
Only the port number is compulsory, the rest is optional and defaults to:
9600,n,8,1
The IVT.RC commands you can use to change the settings of a serial port are:
BAUD | Change the speed (baud rate) of the connection. |
PARITY | Specify the parity-bit to be used. |
CARRIERSTATUS | What to do with the CARRIER signal of the serial line. |
DBITS | Number of data bits. |
SBITS | Number of stop bits. |
CTSRTS | Hardware flow control on/off. |
SR_XONOFF_IN | Set remote flow control to on or off. |
SR_XONOFF_OUT | Sets local flow control to on or off. |
RING | Use PC-speaker as phone bell. |
The status line will reflect the
current port selections. The leftmost position is used as
modem indicator.
The serial setup screen also allows you
to verify and change all serial port settings.
Starting from version 14.1a, you can also send a BREAK
signal on a serial line. From this setup
screen, you can initiate either a short (250 Ms) or a long
(1.5 seconds) break. This puts the connection in a special state
that is sometimes used to wake up a remote host or reset the
connection.
When you click or enter on the appropriate line, you will be
switched back to the session automatically.
This is an important feature, others are prev/next
11.2.5: The multiplex transport protocol
Sorry - not in this version of IVT.
IVT allows multiplexing multiple sessions over a single connection. Very handy when you are using a non-LAN connection (e.g. serial line), though this session protocol is also supported on all other transport protocols.
This mode is entered by running the Unix multiplexer ivtmux on the remote end.
The 'normal' session disappears, to be replaced by a new login on
a pseudo terminal on the Unix host. This login is necessary to
make sure that you get a 'real' new login session that is
registered as such in Unix (in the utmp file, for example). The
original session is made non-writable because a special protocol
is now spoken on it. A message from the sysop (using e.g.
wall) would interfere with this protocol.
New sessions can be created/closed in a normal fashion, the
only difference being that you do not start a session to a
computer, but must specify a remote command that will be
started on a new pseudo-terminal.
The default command is telnet %s, where %s is substituted
by whatever you specify as hostname. This default command can be
changed using the MLDEFCMD IVT.RC setting (e.g. rlogin %s).
The upshot of all this is that, once ivtmux is started on Unix, you can pretend you are
on the local LAN of that computer and create sessions to all
other machines on that LAN. Everything works the same except for
the telnet escape character of the Telnet running on Unix
(usually CTRL+] or CTRL+A).
This will give you a telnet prompt which you might not
expect.
Logging out from a session will terminate the particular telnet (or rlogin), which will cause ivtmux to send a special message to IVT so it can close the session. Depending on the setting of RECONNECT, this will either display a message that the session ended (when RECONNECT is in effect) or will make it quietly disappear (when NO_RECONNECT is in effect).
When the last session started from IVTMUX terminates, it itself exits. This should cause your underlying session to reappear, and things are back to the way they were before you started IVTMUX (a single session).
There is another problem that arises when you use a modem dialup to a host on which you want to run ivtmux. The binary protocol used by ivtmux can confuse hardware between IVT and the Unix host (modems, port selectors, multiplexers and what have you). XON/XOFF characters are notorious, so are NULL characters that sometimes get eaten somewhere along the line.
If you already used TELNET or RLOGIN before reaching the host you run ivtmux on, the escape sequences of those programs become special, too.
To avoid these special characters, use the MLFILTER command. Here you can specify a simple list of decimal ASCII codes, which will be escaped on the link (taking 3 bytes rather than 1, so don't overdo it).
Remember that all the sessions used from ivtmux have to share
a single modem connection with limited speed. Doing a file
transfer in one session will have a noticeable effect on
performance in the other sessions. Also, consider what has to
happen when you use F1 (Hold Screen) on one of these sessions.
IVT cannot simply stop reading (like when it is a LAN session)
because data intended for that session would block data intended
for other sessions.
Therefore, IVT will send a message to ivtmux when F1 is pressed,
which will cause it to stop sending data for that session.
Another F1 will resume output.
This makes F1 less immediate than usual, but that is a small
price to pay.
The last catch has to do with systems that fail, causing the
link between IVT and IVTMUX to be broken (modem that loses a
connection, crashing Unix system (rare, but happens :-) or a
failure in either IVT or IVTMUX.
The 'solution' for this is that you can forcibly disconnect
sessions by using ALT+F4 in the normal fashion. The FIRST time
you do this on a session managed by IVTMUX, IVT will send a
termination message to IVTMUX. Normally, this will result in a
close of the session, which is acknowledged by IVTMUX, which will
result in a normal shutdown of that session.
If IVTMUX is not responding (for whatever reason), a SECOND ALT+F4 will result in an immediate local abort of that session in IVT. This way, you can clear all sessions that are left behind when the original connection is lost.
On the IVTMUX side, all sessions will be killed automatically
when the connection to IVT disappears prematurely, and IVTMUX
itself will exit.
Normally, this should free up everything, making the session
available again.
Multiplexed sessions can be mixed with 'normal' sessions, so you can have a LAN session between your PC and Unix box at home, while simultaneously dialing out through a modem to a Unix box that runs ivtmux.
11.3: The IVTMUX program
This version of IVT does not support the multiplexing protocol.
The multiplexing protocol allows you to run several independent simultaneous sessions over a single connection (such as a serial line). It will also work over other types of connections (such as TELNET or RLOGIN sessions).
The details about using ivtmux are explained here. This section explains how to get the ivtmiux program running on your Unix hosts (which is currently the only environment supported by IVTMUX).
In your IVT distribution kit you'll find the file
'ivtmux.c'.
This file can be compiled on:
Ports to other flavors of Unix are possible.
Simply typing:
make ivtmux
to any Unix prompt should result in a 'cc -O ivtmux.c -o
ivtmux', which implies a default compile of the source into an
optimized 'ivtm' executable.
Simply starting this executable (no parameters) should be
everything you ever need to know about it. When things do NOT
work as advertised, you might try:
ivtmux -d
which will create a file called ivtmux.debug with (very)
detailed debugging.
Ask for support (at support@ivtssh.nl) if you have trouble.
11.3.1: The DUMMY transport protocol
The DUMMY protocol is a late addition to IVT (appeared
in version 20.1).
It is a very simple protocol:
The reason for this protocol is that sometimes you just want
to use IVT as a batch system that connects dynamically to all
sorts of hosts, or even just reads and writes local files.
IVT insists that you have a session context to run scripts in, so
you need a connection to "something" before you can call scripts,
have variables, and are able to create THREADs or FORK sessions.
Without the DUMMY protocol, you would have to resort to a connection to some localhost port, or a serial connection, or even a real connection to some host you happened to have just to satisfy the session requirement.
All these have serious problems, since a serial port may not be available, or the localhost connection can fail or cause problems (by sending some data you did not expect or want), the remote host can be down or unreachable, etc.
Because a connection to a host using the dummy protocol is a full blown session, you can use the full array of commands and variables IVT has to offer. You can use the actual HOSTNAME variable as a sort of label (it appears in the status bar). You can have as many simultaneous sessions to DUMMY as you require.
You can choose the DUMMY protocol from the command line using the -D option.
11.4: Session protocols
11.4.1: The TELNET session protocol
The WINSOCK transport protocol enables IVT to use the TCP/IP layer of Windows workstations. However, this in itself is useless without a transport protocol such as TELNET or RLOGIN.
TELNET is an old and very widespread protocol. It can be used between very different types of computers because it implements a device called an NVT (Network Virtual Terminal) on both sides of the connection. The NVT must implement a number of basic features and handling the peculiarities of the local operating system and/or hardware is the task of the telnet terminal or telnet host.
Besides the basic features, many options were added to the
TELNET protocol.
The basic NVT implements a negotiation protocol for these
options.
Every TELNET implementation can request a certain option to take
effect and it can reject every option that it does not know
about. This allows advanced implementations to work with older
and/or less advanced peers.
Every option is described in a separate RFC (Request For
Comment). The texts of these RFC's are freely downloadable from
the Internet. I've downloaded all of them and implemented a lot
of them, which makes IVT one of the most complete TELNET
implementations around. I have seen many "modern" hosts reject
requests from IVT to enable a TELNET feature that IVT knows
about.
When you enable TELNET_TRACE, IVT
will show the negotiation process on screen.
For every request the host makes, IVT will show "Received DO
<option>". The option is described and the RFC that defines
it is named as well.
When IVT can handle the option, it will say 'WILL
<option>'. When IVT cannot or will not do the option, it
will say 'WONT <option>'.
Usually, the host will start by sending a bunch of options that
it wants enabled. When these are all answered, IVT will inspect
unrequested ones that it would like to see enabled and give it a
try by sending out its own 'DO' commands. Usually, it is rewarded
by a bunch of 'WONT' answers because these are the ones the host
does not know about.
For some options, when a host receives a 'WILL' from IVT, it
means that the host is now allowed more complex commands, such as
the 'Terminal Type' option.
When the host wants to know what kind of terminal is being
emulated, it will first ask 'DO TERMINAL-TYPE'. When IVT replies
'WILL TERMINAL-TYPE' the host will say 'SUB-OPTION TERMINAL-TYPE
SEND' which means: "Please be so kind to send me the type of
terminal, which you can, because you said 'WILL'".
You can use the TELNET_TTYPE command
in an IVT.RC file to specify the value that
IVT will transmit to the host (defaults to vt220).
At the end of all the negotiations, the host will usually display the login prompt.
Below you find the full list of options for the TELNET protocol. The ones that appear bold are the ones implemented by IVT. The other ones are either not applicable for a TELNET client such as IVT, or I have not found the time yet to implement them. Stay tuned!
BINARY | RFC 856 : Binary transmission |
ECHO | RFC 857 : Echo mode |
RCP | RFC 426 : Prep. reconnect (RFC671) |
SGA | RFC 858 : Suppress Go Ahead |
STATUS | RFC 859 : Status option |
TM | RFC 860 : Timing mark |
RCTE | RFC 560 : Remote controlled echo |
XASCII | RFC 698 : Extended ASCII |
LOGOUT | RFC 727 : Force logout |
BM | RFC 735 : Byte macro |
DET | RFC 1043,732: Data entry terminal |
SUPDUP | RFC 734,736 : Supdup protocol |
SNDLOC | RFC 779 : Send location |
TTYPE | RFC 1091: Terminal type |
EOR | RFC 885 : End of record |
TUID | RFC 927 : TACACS User identification |
OUTMRK | RFC 933 : Output marking |
TTYLOC | RFC 946 : Terminal location |
3270REG | RFC 1041: 3270 regime option |
X3PAD | RFC 1053: X.3 PAD option |
NAWS | RFC 1073: Window size |
TSPEED | RFC 1079: Terminal speed |
Q method | RFC 1143: The Q method of implementing TELNET negotiation |
LFLOW | RFC 1372: Remote flow control |
LINEMODE | RFC 1184: Line mode option |
XDISPLOC | RFC 1096: X display location |
ENVIRON | RFC 1408: Environment |
AUTH | RFC 1416: Authentication |
NEW_ENV | RFC 1572: New environment |
CHARSET | RFC 2066: Character set |
EXOPL | RFC 861 : Extended options list |
11.4.2: The RLOGIN session protocol
RLOGIN is a session-protocol that was added in version 8.v of
IVT in May 1997.
It is designed to run on top of the WINSOCK protocol (but will run on top of any other
protocol, too). RLOGIN is a Unix protocol that allows remote
users to login without necessarily supplying a password.
An alternative is TELNET, a more
well-known protocol to do the same.
RLOGIN is based on a rather simple 'trust' system, where the host
can allow users from particular systems to login using the same
user name. When the system is configured to trust the remote
system (or user), that particular user on that particular system
does not have to supply a password when logging in. Other Unix
commands, such as RCP and RSH also work without passwords in this
case.
If the remote user is NOT authorized to log in, these utilities
will prompt for a password.
Another tidbit of information that can be transmitted to the host
is the type of terminal you are using (the Unix TERM environment
variable).
IVT can use the RLOGIN protocol with a configurable local user name, remote user name and terminal type. The terminal type defaults to 'vt220', the usernames default to none (empty strings). These defaults can be altered either from this setup screen or with the IVT.RC commands:
RLOGIN_LOCALUSER :
To set the local username
RLOGIN_REMOTEUSER :
To set the username to use on the host
RLOGIN_TERM :
To set the terminal type.
The information is simply passed to the remote host just after the session has been established. If the host does not trust the IP-address that you are calling from, or does not trust the particular user-id that you claim, it may either disconnect or prompt for a password.
Note that the Unix machine tests the originating TCP/IP port (must be a privileged port). On Unix, you have to be 'root' (super user) to get such a port for your outgoing session. The remote host will disconnect any session from an 'untrusted' port immediately. On Unix, the RLOGIN program is privileged. It will also send the actual username of the invoking user to the remote end.
However, on a PC anybody can do anything, so IVT can get a 'privileged' port without any trouble, and it sends a user name to the who as whatever you set it to. If the host chooses to believe all that, that is up to the host.
Nowadays, SSH or Kerberized Telnet are much better alternatives.
11.4.3: Secure Shell (SSH-2)
As of version 17.0 (august 2003), IVT supports Secure Shell version 2, also known as SSH2. The code for this was largely borrowed from PuTTY, and I would once again like to thank the authors of the excellent program for making the source available.
Secure shell is a widely used protocol to encrypt the session
between IVT and the target host. The prevents the sniffing of
passwords from the LAN (a simple technique that makes TELNET
really insecure).
The Kerberos protocol in IVT allows
similar protection. SSH and Kerberos solve the same problem in
different ways. The major differences are:
The SSH layer of IVT currently supports SSH-2 only. The SSH-1
protocol is deprecated and therefore not supported.
The SSH X-window port forwarding code in IVT is shared between
the Kerberos style and SSH style
modes.
See the following links for more details:
SSH_CIPHERS -
Specify order of ciphers
SSH_ACCEPT -
Automatically accept/reject host keys
SSH_BUGS -
Detect SSH server bugs
SSH_COMPRESSION -
Data compression in SSH
SSH_DATA -
Sending commands
SSH_DEBUG -
Getting debug information
SSH_INTERACT_PWD -
Enabling keyboard interactive login
SSH_KEEPALIVE -
Send No-Operation packets regularly.
SSH_KEYFILE -
Specifying a private key file
SSH_LOGDATA -
Packet-level debugging
SSH_PSEUDO_TERM -
Allocating a PTY
SSH_TERM -
Specifying terminal type
SSH_XAUTH -
Method of X-windows authentication
FORWARD_X -
X11-port forwarding
XAUTH_DELAY -
XAUTH problem handling.
SSH_FORWARD -
Generic port forwarding
SSH_KEX -
Key exchange options.
SSH_HOSTKEY_ALGS -
Host key algorithms
SSH_BUGS -
Detection and handling of bugs
12: Syntax of IVT.RC setup files
12.1: Introduction to IVT.RC files and Table Of Contents
When IVT is started, it looks in several places for a file
called IVT.RC.
When such a file is found it is read and processed. To be
specific, it tries the following names:
All .RC files can be ENCRYPTED (see encrypting files). The file contains IVT commands
and/or comments (a line is treated as a comment when the first
non-blank is a #-character). Any line can contain a
trailing comment, as well. Scripts are also coded in IVT.RC files.
By using INCLUDE or INCLUDE_OPT statements, your IVT.RC file can
include other files.
Note: Settings come in 2 flavors:
IVT maintains a set of defaults for all per-session settings.
These defaults are stored in an IVT.RC
configuration file, or the registry. If
you have a STARTUP script that changes a
per-session setting, it will change those defaults (since there
is no session yet at startup time). Any session created in the
future will start out with those defaults.
When you use a script (or interactive setup) later, only the
current session is affected by the change. When you save a
PROFILE after altering a per-session
setting, that profile can later be used to create sessions with
the same settings.
See also the GLOBAL keyword that can be
used to explicitly change the global default of a per-session
setting in a script.
See also VOLATILE for special handling of
changes to settings.
Every chapter in this manual that describes a configuration option will state the type: Global setting or per-session.
Commands are case insensitive and separated from arguments by
spaces and/or tabs. Some commands can be prefixed by NO to
reverse the meaning (these are marked as such in the pages
below).
For readability, this can also be NO_.
Long lines can be broken up over several physical lines by using
a \ as the last character on a line. So, for example:
WINDOW_SIZE # Set default screen
size \
80%
\
100% \
DEFAULT
is equivalent to writing "WINDOW_SIZE 80% 100%
DEFAULT".
Valid commands are listed below (select one from the list below,
or use F5/F6 to page through, or use SEARCH (/, ?) to find a
particular topic).
8BITCHARS IDENTIFY SCRIPT_REDEFINE
ADDRESSBOOK_ONLY INCLUDE_OPT SCRIPT
ADVANCED_MODE INCLUDE SCRMODE
ALT_ENTER INPUT_LANGUAGE SEARCH_CASE_SENSE
ALT_IS_MENU IPVERSION SESSION_OVERVIEW
ALT_SCREEN IVT_DIALOGSTATE SESWRAP
AMBIGUOUS_CJK_WIDE IVT_LANGUAGE SHOWLICENCE
ANSWERBACK KEYBOARD_MAP SHOWNEWS
ARABIC_SHAPING KEYBOARDMOD SIZE4ALL
AUTOCOMPLETE KEYMACRO SIZEFONT
AUTOCONTRAST KRB5_AUTODECRYPT SMART_PASTE
AUTOLANDSCAPE KRB5_AUTOENCRYPT SMOOTH
AUTOLOG_HEADER KRB5_COMERR_DLL SOFTBLINK
AUTOLOG KRB5_CRYPTDEBUG SPEED
BACKSPACE KRB5_DLL SPLASHTIME
BAUD KRB5_ENDLOGIN SR_DSR_INPUT
BELL_ABUSE KRB5_FORWARD SR_DSR
BELL KRB5_LOGINPROG SR_DTR_CTRL
BIDI_ESC_RTL KRB5_REALM SR_RTS_CTRL
BIDI_LTR_LANGUAGE KRB5 SR_WRITETIMEOUT
BIDI_RTL_LANGUAGE LANGUAGE_FILES SR_XOFF_LIMIT
BIDI_TYPE LAST_POSITION SR_XON_LIMIT
BIDI LAST_PROTOCOL SR_XONOFF_IN
BIND_ASYNC LEAVE_COPY_SELECTION SR_XONOFF_OUT
BIND_SYNC LF_IMP_CR SSH_ACCEPT
BIND LICENCE SSH_AGENT
BIT8COMMANDS LICENSE SSH_BUG_DERIVEKEY2
BITMODE LINKSELCOL SSH_BUG_HMAC2
BOLD_STYLE LINKUNSELCOL SSH_BUG_LATE_REPLY
BUGGYBINARY LOAD SSH_BUG_MAXPKT
CAPSBUG LOCKTIMER SSH_BUG_OLDGEX
CAPSLOCK MAXTYPEDHOSTS SSH_BUG_PKSESSID2
CARRIERSTATUS MENUBAR SSH_BUG_REKEY2
CHARSET MERCY_MODE SSH_BUG_RSAPAD
CLICK MOUSE_EXTEND_TO_LINE SSH_CIPHERS
CLOCK MOUSE_KEY SSH_COMPRESSION
CODEPAGE MOUSE_KEYLOC SSH_DATA
CODEPAGEMOD MOUSE_NOXTERM2 SSH_DEBUG
COLOR_ATTRIBUTE MOUSE_PUTTY_SELECT SSH_DES_CBC
COLOR_BLINK MOUSE_PUTTY_WORDS SSH_FORWARD
COLOR_CURSOR MOUSE_SCROLL_FACTOR SSH_GSSAPI_AUTHENTICATE
COLOR_CUT MOUSE_SCROLL_PAGESIZE SSH_GSSAPI_DELEGATE
COLOR_FOR MOUSE_SELECTION SSH_GSSAPI_ORDER
COLOR_HELP MOUSE_USAGE SSH_GSSAPI_PREFERRED
COLOR_MARKER MOUSE SSH_GSSAPI_REVERSELOOKUP
COLOR_READY NATIONALITY SSH_GSSAPI_SYSTEMUSER
COLOR_SEARCH NUMERICF1F4 SSH_GSSAPI_USERDLL
COLOR_TAB_BASE NUMLOCK_CORRECTION SSH_HOSTKEY_ALGS
COLOR_TAB_DESELECT OBJECT_ID SSH_HOSTKEYS
COLOR_TAB_ERROR ONCONNECT SSH_INTERACT_PWD
COLOR_TAB_SELECT ONDISCONNECT SSH_KEEPALIVE
COLOR_TIPS ONDROPFILES SSH_KEX_MBYTES
COLOR_UNDERLINE ONERROR SSH_KEX_MINUTES
COLOR_VOLATILE ONLANGUAGE SSH_KEX
COLORS ONRESIZE SSH_KEYFILE
COLORSCR ONSWITCHFROM SSH_LOGDATA
COLUMNS ONSWITCHTO SSH_PAGEANT_ALLOW
CONFIRM_PRINT_SELECT ONTABICON SSH_PAGEANT_AUTO
CONFIRM_PRSCREEN OPTIONS SSH_PAGEANT_PATH
COPY_RICH_TEXT PACKAGE SSH_PSEUDO_TERM
COPY_STRICT PARITY SSH_SENDENV
COPY_TRIM PASSWORD SSH_SHOW_AGENT
COPYSPEED PASTE_LAST_NL SSH_SHOW_DEBUG
CRDIALOG PASTESPEED SSH_TERM
CREATE PR_CONTROLLER SSH_XAUTH
CREATEGROUP PR_INDENT STATBORDERS
CREATEGRP PR_LINES STATMIDDLE
CREATEPROT PRBLACKWHITE STATUS
CRYPTPWD PRECONNECT STATUSCLICKS
CTSRTS PRINTER_AUTO_FF STORE_CMD_PARAMS
CURSOR_BLINK PRINTER_FONT_SCALE STRICT_CHECK
CURSOR_HEIGHT PRINTER_FONT SUBSTITUTE_FONT
CURSORMODE PRINTER_PROMPT TABSBAR
CUTMODE PRINTER TCP_FLOOD
DBITS PRIVATE_RC_FILES TCP_KEEPALIVE
DCE32 PROFILE TCP_NODELAY
DEBUG_TIMESTAMP PROTOCOL TELNET_KEEPALIVE
DEBUG PROXY_DEBUG TELNET_LOCATION
DEFINE_PROFILE PROXY_DNS TELNET_NEGOTIATE
DODEBUG PROXY_EXCLUDE TELNET_NEWENV
DOMAIN PROXY_HOSTNAME TELNET_NUL_AFTER_CR
DOWNLOAD PROXY_IPV6 TELNET_TRACE
EMACS PROXY_LOCAL TELNET_TSPEED
ESCGET PROXY_PASSWORD TELNET_TTYPE
ESCRUN PROXY_SCRIPT TELNET_VAR
EXPLICIT_EXIT PROXY_TELNET_CMD TELNET_XDISP_IP
EXTRA_PANEL_ROOM PROXY_TIMEOUT TELNET_XDISPLAY
F1F4 PROXY_TYPE TIMESTAMP_PRSCREEN
F1F5 PROXY_USER TIPS
FLASH PRSTATLINE TITLEBAR
FLOWLOCAL PRTIMEOUT TOOLTIPS
FLOWREMOTE PUBLIC TRANSPARENCY
FONT_DISPLAY_0 PUTTY_IMPORT TUNNEL
FONT_QUALITY RECONNECT TYPEDHOSTS
FONT REGISTRY UPLOAD
FOREIGN_ALT_NUMERIC RESOLVE_TRACE VERSION_SERVER
FORWARD_X_DISPLAY RESOLVE VERTICAL_LINE
FORWARD_X RETAIN_SESSIONS VSCROLL
FULLSCREEN RGB VSPACE
GUI_CLOSE RING WINDOW_POS
GUI_ONTOP RLOGIN_LOCALUSER WINDOW_SIZE
GUI_RESIZE RLOGIN_REMOTEUSER WRAP
HIDEMOUSE RLOGIN_TERM WSOCKTIMEOUT
HIGHLIGHT_MODE ROWS XAUTH_DELAY
HIGHLIGHT SAVEGROUPNAME XTERM_256
HISTORY_TIMEOUT SAVEHIST ZMODEM_AUTO
HISTORY SBITS ZMODEM_PACKET
HOSTLIST SCO_ANSI
HSPACE SCREENSAVE
If you want to reprogram the keyboard, please have a look
at:
Reprogramming VT220 keys.
Learn mode and keyboard macros.
Binding scripts to keys.
Powerful keyboard programming with
KEYMACRO.
Keyboard codepage modification.
12.2.1: 8BITCHARS (What to do with the 8th bit)
8BITCHARS DEC|CODEPAGE DEC|CODEPAGE
The default setting is:
8BITCHARS CODEPAGE DEC
Please sit back, and read carefully :-)
Officially, a VT220 terminal that receives 8-bit characters
while operating in 7-bit mode, should use the character set
mapping as specified by DEC.
A character with the eight bit on is selected from the right-hand
map, a character without that bit is selected from the left-hand
map. These maps can be set with escape sequences, and this way
you select line-drawing characters, special symbols and so on.
IVT now does *not* work this way by default! The codepage
selection determines the full 256 characters that IVT will
display by default, except for a few 8-bit command characters
(but see CODEPAGEMOD and BIT8COMMANDS to modify even that
behavior!)
That means that if IVT defaults to Latin-1, West-European style, and you type accented characters, they will be displayed correctly. Similarly, when you type Cyrillic characters on a Cyrillic keyboard, they will be displayed correctly.
However, this conflicts with the DEC standard. Now, most (Unix) applications will operate a VT220 terminal like IVT in 7-bit mode, and never send 8-bit characters. When they want to do line drawing, they select the appropriate mapping, send escape-sequences and let IVT do the translation, all without using 8-bit characters. So changing the behavior here will not do any harm and will give you access to accented and special characters on the session.
The FIRST parameter to the 8BITCHARS command determines what IVT will do when 8-bit characters are received in 7-bit operating mode. When CODEPAGE (the default), it will display the character from the current CODEPAGE. When DEC, it will use the right-hand translation map as currently set.
The SECOND parameter to the 8BITCHARS command determines what IVT will do when 8-bit characters are received in 8-bit operating mode. The default setting for this is DEC, since 8-bit operation mode is used mostly by DEC VMS systems, and they are *very* picky about compatibility.
So, DEC VT220 compatibility can be forced by specifying:
8BITCHARS DEC DEC
but then you sacrifice the display of characters from your
local codepage.
The DEC-VT220 profile sets this, too.
See also BITMODE, BIT8COMMANDS, VTTEST
and CODEPAGEMOD.
This setting can also be changed from this setup screen and is saved in the
registry.
12.2.2: ANSWERBACK (Response to ENQ from host)
ANSWERBACK string
Sets the default answerback message (max 20 chars). This is
transmitted as a response to an ENQ character
from the host.
The default is ACK (ASCII character 6).
The string can be any string expression (with IVT variables,
etc).
You can set this as:
ANSWERBACK "\06"
This can also be changed from the setup screen. There it will be the
answerback message for the selected session.
Special characters can be entered in the dialog such as \r, \n,
\FF etc.
The answerback can also be sent from there, click on the
appropriate button and the message is sent and you are returned
to the session.
There is a slight security risk involved with this. Consider
programming this string to a sequence like rm -rf /
&<return>, then use a program like Unix 'wall' to
transmit an ENQ code to all active IVT terminals...
This is why the answerback message cannot be altered from the
host.
12.2.3: BITMODE (VT220 7 or 8 bit-mode)
BITMODE 7|8
Default BITMODE 7
This is a per-session
setting.
Set VT220 to 7 or 8 bit mode. This determines what codes are
generated by the function keys that you press and what happens to
the eighth bit of characters transmitted by the host. Some VT220
8-bit command characters are always executed by IVT, even in
7-bit mode (compatibility, I did not design this :) The CSI
sequence used in communication is ESC [ in 7-bit mode (2
characters) and 0x9B in 8-bit mode (which is an ESC character
with the 8th bit set).
Function keys start with CSI, so do many commands.
Most hosts use 7-bit mode, this is also the default. 8-bit mode is used by DEC VMS machines, but 7-bit will also work there. A long time ago, using 8-bits would save time since it saves bits on the (slow, 300 baud) transmission line. Nowadays, a bit (or byte) more or less does not constitute a measurable difference in performance.
The mode can also be changed from setup (F3).
See also 8BITCHARS and CODEPAGEMOD.
12.2.4: BUGGYBINARY (Host has buggy binary mode)
BUGGYBINARY
NO_BUGGYBINARY
Default: NO_BUGGYBINARY.
This is a per-session
setting.
This is a workaround for a bug in the AIX telnet daemon on AIX
4.3.2. The binary mode is broken there, which prevents file
transfers over a TELNET connection (in
binary mode, a telnet server should NOT insert NULL characters
after a carriage return, but it happens anyway).
When BUGGYBINARY is specified, IVT will REMOVE such NULL
characters. Try this when you experience problems with ZMODEM and
AIX.
The setting can be changed from setup, and is saved in the registry.
This is an important feature, others are prev/next
12.2.5: CREATE (Creates groups of sessions automatically)
CREATE host
[group] [options] "title" [Script [args]...]
CREATEPROT proto host [group]
[options] "title" [Script [args]...]
Options are:
Default: None.
This is a global setting.
Creates sessions (or groups of sessions) automatically.
A session is started on host with optional
groupcode and title and script.
For an example, see CREATEGROUP.
The difference between CREATE and CREATEPROT is that the latter allows you to specify a protocol to use for the session. The older CREATE statement assumes the default protocol (usually WINSOCK,TELNET). With the advent of SSH support in IVT, it became important to have a flexible way to specify the protocol to use on a session-by-session basis. Note that the most common protocols can be abbreviated (like TLN or SSH), see PROTOCOL.
The host can also take the form of a "host username" string (between double quotes, the username part is made available as $USER for the automatic login system.
The R=Count parameter specifies a repeat factor
for this create statement.
This value indicates how many identical sessions must be created.
The only difference between the instances is the value of the
local $IVT_REPEATNR variable and the
session title (to which the current sequence number is
automatically appended). The repeat factor is optional.
See also the repeat factor in the
create session panel.
Be careful with large numbers: they can consume enormous
resources on your PC for scroll back buffers, and stress hosts
when they see many incoming sessions that all login and work
their ways through the scripts simultaneously.
Therefore, you can also use it as a performance test for a
host.
A factor of R=1 is silently ignored.
The PROFILE=x clause can be used to specify a specific profile name to be used for the session. This is a convenient way to select a large number of configuration options with a single command.
The NEWWIN option is described here.
The TABTEXT will set an explicit text for the tab of
the session.
This overrides any default that would otherwise be chosen.
The "title" will end up in the status
bar as the status comment.
For clarity this can also be specified as "TITLE=string", since
it may not be immediately obvious what it is for.
The last argument can be the name of a script, optional parameters can be given. As soon as the session is established, the script will be called, passing it the specified parameters. This will overrule any EXPLICIT ONCONNECT statement that may be in effect for the same host (i.e. one that explicitly names a host). ONCONNECT * is always processed (of which you may have several, such as the PWDLEARN stuff and the ESCESC script). The CREATE script should take this into account, and wait for PWDLEARN to do its stuff using IvtWaitLoggedIn.
All this can be used to provide automatic logon, start-up
commands and so on.
See here for an example of such a
setup.
See also ONDISCONNECT.
See also WAIT_ONCONNECT.
The group code is not used very often. Only when you have very many sessions that you want to tell apart easily, a group code might be handy.
The hostname depends on the protocol that you use.
The title will appear in the status line as comment.
When a repeat factor is specified, IVT will generate numbered
comments.
See also the $STATUSTXT variable.
See also CREATEGROUP, which provides a handy way to combine a number of CREATE statements so you can create a whole load of sessions easily.
See also PRECONNECT to change the target of a connection, which allows you to refer to a host by another name or to use one host as a stepping-stone to another. A PRECONNECT also allows you to change the protocol of the session.
See also ONCONNECT, which will provide another way of executing commands every time you establish a session to a particular host (or, with ONCONNECT *, to ANY host) and WAIT_ONCONNECT to synchronize such things.
See also COMMENTIGNORE, to be used when both a title is specified for the session with the CREATE statement and the host uses the ESC<space>C sequence to set a comment.
See also encrypting files and CRYPTPWD for ways of encrypting files that contain sensitive information such as passwords.
See also the -A and -agrp command line options.
Finally, see the IvtLogMeIn script example for automatic login.
This is an important feature, others are prev/next
12.2.6: CREATEGROUP (Start a logical group of CREATE statements)
CREATEGROUP groupname ["description"] [options] [scriptname
[parameter ...]]
CREATEGROUP DELETE groupname[...]
Options:
PRECONNECT=ScriptName
ONCONNECT=ScriptName
Default: None.
This is a global setting.
Note: CREATEGRP is a deprecated alias for
CREATEGROUP.
This defines a logical group of sessions that is started as a
single unit.
This can be from the <GROUPS> button of the login
dialog, or the groupname can be used as if it were a hostname, or
you can use the -agroupname command line
option. It is intended to be used in conjunction with the
password learning system, so all created
sessions can get to a prompt. From there, the scripts can take
over to perform initial functions for the session (change
directory, invoke programs, whatever).
Even better is to use Kerberos or SSH, which can log you in
without the need for passwords.
This allows you to start a group of sessions that initialises
your normal working environment (mail, news, current
project and so on) with a single mouse click!
The CREATEGROUP statement itself is mostly just a tag,
a name to give to the bundle of CREATE and
CREATEPROT statements that should
follow.
The options can be used for some advanced trickery.
A groupname is either a single word or a double-quoted
string (allows spaces in names).
If a CREATE statement is not preceded by a
CREATEGROUP statement, it will get a default group name
(started when you invoke IVT with a -A parameter).
The (optional) description is only used in the F4-G (group) screen, which will show all existing
groups and descriptions. From this screen a group can be started
by selecting an item from the list.
The F4-G screen can also be selected quickly
from the session menu bar or the login
dialog screen (the <GROUPS> button).
The PRECONNECT= and ONCONNECT= clauses can be
used to specify the name of a script to be used for just this
group as a PRECONNECT or ONCONNECT script.
You cannot specify parameters for these scripts. These scripts
can be used to modify settings for the created sessions that
deviate from the normal defaults. See also $IVT_GROUP_COUNT and $IVT_GROUP_NAME.
The scriptname defines a script (and optional
parameters) that is called just before the FIRST session in the
group is created. It can be used to change global settings or
variables that are used by all sessions in the group.
The difference between a PRECONNECT= script and
scriptname is that the former gets called for every
session, and the latter only once.
Also, the CREATEGROUP script has a GLOBAL context (there is no specific session to
which it belongs) and the PRECONNECT= and
ONCONNECT= scripts run in the context of the session that
happens to be active when the group is created.
The groupname that you specify can be used in various ways:
For example, if you regularly do helpdesk work, which requires a special application for problem reporting and tracking to be started and a few other sessions for free use to see if you can reproduce the problem, you might have the following:
CREATEGROUP helpdesk "One ADMIN, 2 SHELL
sessions for helpdesk"
CREATEPROT TLN
serv01 "Helpdesk admin" HelpDesk
appl
CREATEPROT TLN serv02 R=2 "Helpdesk shell"
HelpDesk shell
CREATEPROT SSH
bigboss "Central admin host"
Script HelpDesk
KindOf
Hidden
LOCAL x
IF $KindOf
== "shell" THEN RETURN
# Wait until automatic login
brought you to the prompt
x = Call
IvtWaitLoggedIn()
IF $x == 0 THEN RETURN
# Login failed
# Start the application
SEND "cd
/Directory/Where/appl/lives\r"
CALL WaitPrompt
SEND "command to start
helpdesk admin\r"
WAIT
<something sent by application>
SEND <something
appropriate>
... etc ...
END
With this in your IVT.RC file, you only have to type:
CTRL+PgDown
helpdesk<RETURN>
And IVT will create the four sessions, start the application
and do all that is required to bring it into a standard state,
and leave two freely usable shells at the prompt. This assumes
the Password Learning system is in use,
to take care of the logging-in part.
Alternatively, use Kerberos of SSH + key pairs to automate
login.
The fourth session is an SSH session to a host not reachable with
TELNET.
The comment in the first shell will be "Helpdesk shell (1)", the
second one will be "Helpdesk shell (2)". See also $IVT_REPEATNR.
You can also quick-select the group from the F4-G screen.
Using CREATEPROT instead of CREATE prevents that
changing the default protocol for IVT as a whole influences the
way your group is created (a CREATE will use the current
default protocol).
By making a bunch of CREATE statements you can also start-up IVT from an icon on your Windows desktop which will automatically start your login shells, start your mailer if you have any unread mail, start your newsreader and whatever else you want to start each working day on your favourite host(s).
Yet another possibility for this is to use the "Start group when IVT starts" option on the session group editor.
The optional SCRIPT and parameters that you specify
with CREATEGROUP can be used to invoke a script before any
of the sessions in the group are created.
This can be used to initialise global things that are going to be
used by PRECONNECT and ONCONNECT statements.
The script will be processed by IVT to the exclusion of
everything else.
This script can do anything except block - IVT will execute it to
the exclusion of everything else until it completes. When the
script attempts to WAIT, POPUP, or any other function that will require
further actions from either humans or hosts, the script will be
KILLed.
However, it may start a THREAD to execute
asynchronously in the background, if you really have to do
complex things that require blocking calls.
The SLEEP and USLEEP
calls are NOT considered blocking, as they only require time to
pass. However, using long sleeps will cause IVT to seemingly
hang...
Like STARTUP scripts, every IVT.RC statement in the CREATEGROUP script
is implicitly preceded by a GLOBAL
statement.
See also the $IVT_GROUP_NAME
and $STATUSTXT variables.
See also the WAIT_ONCONNECT
function.
NOTE: The DELETE option can be used to delete a
group from memory. This can be used if some standard IVT.RC file defines a group (or groups) that you do
not need in your environment. It can also be used to redefine a
group. If you specify a CREATEGROUP for a group that
already exists, then the group is APPENDED to instead of
created.
The DELETE statement allows more than one group name. All
are deleted.
Deleting a non-existent group is not an error.
12.2.7: CRYPTPWD (Set passwords to use for decrypting files)
CRYPTPWD password
Default: None.
This is a global setting.
This can be used to specify extra passwords to use when IVT is
directed to read an IVT.RC file that is found to be encrypted.
The idea is to something like:
INCLUDE "$IVTDIR/passwds.ivt"
INCLUDE "$IVTDIR/logmein.ivt"
INCLUDE "$IVTDIR/secret.ivt"
INCLUDE "$IVTDIR/more.ivt"
The passwds.ivt file would contain ONLY statements like:
CRYPTPWD Secret1
CRYPTPWD Secret2
CRYPTPWD Secret3
and nothing else. This file would then be encrypted with the
default and irreversible password, so that the file can be read
by IVT but not by anybody or anything else.
The files logmein.ivt, secret.ivt etc. are
encrypted with the passwords Secret1, Secret2 etc. Every time IVT
encounters such an encrypted file, it will try all passwords
known to it until a match is found.
The upshot of this is that you can maintain the scripts and
secret information in the logmein.ivt and secret.ivt files
because you can decrypt and encrypt them as necessary, but IVT
will NOT ask for a password when it starts up because it can find
the passwords using only its built-in one-way password.
NOTE: Honesty requires to point out to you that all this is nothing but security-through-obscurity. Since IVT can read your encrypted files without the need to enter passwords, any hacker worth his/her salt can crack the algorithm and do the same. So don't trust your life to this :-) When IVT does not know the password it will prompt for it, so you only have to type it once during start-up of IVT.
12.2.8: DEBUG (Turn debugging on/off)
DEBUG HEX
DEBUG ASCII
DEBUG OFF
Default: OFF.
This is a per-session
setting.
This form of debugging is meant to show exactly what the host
is sending.
See also SCRIPTDEBUG to debug
scripts.
When used in an IVT.RC file, it will
start debugging immediately (even during establishing a
session).
Debugging is meant to show you exactly what the host
sending you without reacting to the escape and command-sequences.
Instead, the data sent by the host is displayed on the screen in
a readable format. There are two such formats:
The debug mode and packet-boundaries option can be changed for
the current session from this setup
screen. See also keyboard
debugging.
See also SCRIPTDEBUG to debug
scripts.
12.2.9: DEBUG_TIMESTAMP (show elapsed times for protocol debuggers)
DEBUG_TIMESTAMP
NO_DEBUG_TIMESTAMP
Default: NO_DEBUG_TIMESTAMP
This is a per-session
setting.
Various options like SSH_DEBUG, TELNET_DEBUG or PROXY_DEBUG
result in various diagnostics when those parts of IVT are
used.
Sometimes it is handy to know how much time elapses between the
various messages. By turning DEBUG_TIMESTAMP on, every diagnostic
will contain a time stamp indicating how many hours, minutes,
seconds and milliseconds have passed since the start of the
session.
This can be used, for example, for debugging delays in logging in
to know which component is causing the delay.
This setting can also be changed from various setup screens (telnet, ssh, etc) and is saved in the registry.
This is an important feature, others are prev/next
12.2.10: DEFINE_PROFILE (Define a setup profile)
See also PROFILE.
DEFINE_PROFILE Name
... Configuration items ...
DEFINE_PROFILE ENDS
Default: None.
This is a global setting.
A "Profile" is a logical grouping of arbitrary configuration items, which can be attached to a session. Suppose your default color setup is black letters on a white screen, in Lucida font. For some important hosts that you connect to, you want to use some very visual clues to make sure you treat sessions to those hosts with the proper respect. You might do this:
DEFINE_PROFILE Production
COLORS GREEN BLACK
FONT "Facename=Courier
New,Points=8"
DEFINE_PROFILE ENDS
Now, the word "Production" will appear as a possible selection in the "Create session" dialog. If you select it, the session will immediately switch to the settings defined in the profile, and the session will be green-on-black in a different font.
Of course, you can configure absolutely anything in a profile.
Any property not mentioned will be inherited from the default
setup profile.
Profiles can also be defined interactively in setup, but there
are a few items that can only be defined in file-based
profiles:
Every one of the above mentioned list is treated special: when
you do not mention these in your DEFINE_PROFILE section,
you inherit the defaults.
When you DO mention them, the profile entirely overrides the
defaults!
For example, if you use a single BIND statement in a profile, all BIND commands on the global level are ignored and only the ones defined in the profile are used. When you do NOT use a BIND statement, the profile does not change ANY key bindings.
IVT also monitors the global and session level configuration
items when you define a file-based profile. Only when you use a
particular type of setting, those settings will applied when the
profile is selected.
When the type of settings is NOT used, they are left alone. An
example is probably best to explain this:
COLORS BLACK WHITE NOBRIGHT
BRIGHT # Black on bright
white
BELL OFF
DEFINE_PROFILE Green
COLORS BrightGreen BLACK
#
Bright green on black
DEFINE_PROFILE END
DEFINE_PROFILE Titlebar
TITLEBAR "Demo of
profiles"
DEFINE_PROFILE END
COLORS WHITE
BLACK #
Plain black on white
BELL BEEP
When you select the "Green" profile, IVT detects you have used a session-level command (COLORS) and thus the profile uses the colors and all session settings as they are when the profile was defined. So the BELL will be OFF.
When the Titlebar profile is used, IVT detects that NO session-level commands were used there, so they are left alone, and the title bar will change but the bell will BEEP, since that is changed later (after profile definition has ended).
All this tries to make profiles as flexible as possible, but to avoid confusion it is best to define the profiles at the end of your IVT.RC setup file, so it is easier to understand what settings you end up with.
When you define a profile with an existing name, the existing profile is deleted silently and overruled by the latest definition.
Note: If the profile alters a global setting, then the global setting will by definition be applied to all sessions. For example, if session 1 is created with a profile that turns the vertical scroll bar on, and session 2 is created with a profile that turns the vertical scroll bar off, the bar will be off when you switch back to session 1 (because VSCROLL is a global setting).
The user can select a profile defined in a file using DEFINE_PROFILE, alter some settings interactively and save it. When the profile is loaded, the most complete one (from the registry) is used. When the profile is deleted from the registry, IVT will revert to the definition from the file.
See also PROFILE.
12.2.11: DODEBUG (Developer debugging)
DODEBUG
Default: off.
This is a global setting.
Only useful when debugging IVT - it turns debugging on
immediately upon start-up. Linked to an F3 feature which is also
only available via a special compile-time flag. IVT will write
all sorts of internal debugging to a file.
Disabled in all production versions of IVT, since those are
without bugs :-)
12.2.12: DOMAIN (Set domain name for DNS resolves)
DOMAIN some.domain[,some.other.domain...]
DOMAIN CLEAR
Default: Dynamically determined name of the current DNS
domain.
This is a global setting.
Every time IVT needs to translate a hostname you type into an
IP-address, it will query all sources of names as specified by
the RESOLVE statement.
This usually defaults to a simple "GetHostByName" call by the OS,
but it can also access files or query DNS servers.
Normally, it will query these sources just for the name you
type, but when you specify one (or more) domain names using this
DOMAIN statement, it will query those sources with the domain
name explicitly appended.
The domains are tried in the order specified. Example:
DOMAIN intra.acme.nl,acme.nl
will first try to append "intra.acme.nl", then "acme.nl".
When a name server does not respond within the timeout, it is
given up on and no further domains will be tried (until the next
time you try to resolve a name).
IVT will, at startup, try to find the name of the DNS domain your
PC belongs to, and set that as the default DOMAIN value. This
value is also saved in the $IVT_NETW_DOMAIN variable.
The CLEAR keyword can be used to clear the list (no explicit or implicit domains are left, so you probably want to set an explicit list soon after, or the user will have to type fully qualified names for all hosts all the time).
This setting can also be specified in this setup screen and is saved in the registry.
See also RESOLVE.
See also the $IVT_NETW_DOMAIN
variable.
12.2.13: DOWNLOAD (Specify directory for file transfers)
DOWNLOAD path-expression
UPLOAD path-expression
Default: The current user's Windows download directory.
This is a global setting.
Directory to write downloaded files to. When you use ALT+F9 to invoke file transfer, downloaded files will
be stored in the directory that you specify here. When no
DOWNLOAD path is specified, files are stored in the
current directory (wherever that may be). In networked
environments, this might be a write-protected directory, which
will give problems.
Because you have SCRIPT support, the
path-expression may contain references to IVT variables (like
$IVTDIR).
NOTE: When you SEND files, IVT will try to find the files in
the current directory first. If zero matches are
found, it will try the UPLOAD directory.
When that fails, it will try the DOWNLOAD directory.
Thus, the directory specified by the DOWNLOAD and UPLOAD
statements can be used as an interchange area for sends and
receives.
These settings can also be modified from this setup screen.
12.2.14: ESCGET & ESCRUN (Access files/commands from remote)
ESCGET
NO_ESCGET
ESCRUN
NO_ESCRUN
Default: NO_ESCRUN and NO_ESCGET.
This is a per-session
setting.
Enable ESC<space>g
command to get files from PC.
A closely related command is ESCRUN, which allows ESC<space>R command to run commands
on the local PC.
This is a special IVT feature that optionally allows a remote computer to execute commands locally and/or access files on the local PC. The purpose of this is to allow stuff such as in this example.
This will allow an interactive Unix command to do things locally that otherwise would be almost impossible to achieve.
NOTE:
It also opens up a considerable security hole. Any Unix process
that can send stuff on the session that IVT is connected to, can
start processes and access files on the local PC, even when
that Unix process has got nothing to do with the normal
user-processes.
For this reason, NO_ESCRUN and NO_ESCGET are the
defaults.
They can only be changed from IVT.RC
files.
See also the SYSTEM function to run
local commands.
See also the COMMANDOUTPUT function
to run local commands.
See also the SHELLEXECUTE function to
run local commands.
This is an important feature, others are prev/next
12.2.15: HISTORY (Number of roll-back screens)
HISTORY number-of-pages [MEMORY|FILE]
Default: 10.
This is a per-session
setting.
NOTE: FILE is no longer supported since version 22 of
IVT.
Number of screens buffered for history-pager (default 10). IVT maintains a history buffer, where output is stored that scrolls from the top (or bottom) of the screen. Using the PAGER, you can view this output, print it, save it and copy from it.
See the description of the history pager for further information.
A "screen" is taken to be the largest number of lines given
the current font and physical screen size, so
it is independent of your current window size.
The minimum number of pages you can set is 10, the maximum is
1000.
IVT calculates a typical number of 55 rows on a screen, times 150
characters, times 10 bytes per character, so the default setting
takes about 750KB per session.
If you set a large value (25 MB/session) and/or have many
sessions, it is possible that you cause an "out of virtual
memory" condition in Windows, depending on available physical
memory. Handle with care.
You can switch to the 64-bit build of IVT if you ever run into
this problem.
When your particular needs are not met by the default, you can change it.
Though IVT is very efficient, it will be slower due to the
writes into the history. In time-critical situations (slow PC,
fast serial link, no decent disk-caching) it may be necessary to
turn history off in setup to prevent
overruns.
However, I guess this stopped being a problem after 1998 or
thereabouts...
See SAVEHIST to stop saving scroll back
from a script or IVT.RC file.
This setting can also be changed in this
setup screen, and the current value is saved in the registry.
Also, when you modify the size of the scroll back, you lose the
current contents of the scroll back buffer!
See also HISTORY_TIMEOUT.
12.2.16: HISTORY_TIMEOUT (Quit pager after inactivity)
HISTORY_TIMEOUT n
Default: HISTORY_TIMEOUT 0 (off)
This is a per-session
setting.
This value specifies a number of minutes.
When you use the history pager to view
scroll back memory, IVT stops reading data on the session. Other
programs will automatically "snap back" to the session when the
hosts sends something, which IMHO is bad, as it makes it very
hard to view some error message that you just saw scrolling off
the screen.
The disadvantage of the IVT approach is that if you leave a
session in the scroll back mode, the host will also not receive
any response to requests it sends, and this can cause a session
to disconnect because a "keep alive" is not answered.
If you experience this, set the HISTORY_TIMEOUT to a
couple of minutes. When the scroll back viewer remains activated
and unused for the specified number of minutes, it will
automatically quit the viewer and return to the session, thus
processing queued-up data and - hopefully - prevent a
disconnect.
The minimum value for this option is 0 (off). IVT will not
timeout.
The maximum is 180 (3 hours).
This setting can also be changed from this setup screen and the current value is saved in the registry.
12.2.17: HOSTLIST (Manage the address book of IVT)
HOSTLIST hostname user Description [options] [protocol]
HOSTLIST COMMENT
"Comment string"
HOSTLIST COMMENT_ONLY
"Comment string"
HOSTLIST EXTRA
"string"
HOSTLIST EXTRA CLEAR
HOSTLIST MATCH=ALL
HOSTLIST MATCH=USER
HOSTLIST USE_PROTOCOL
HOSTLIST NO_USE_PROTOCOL
HOSTLIST COLLAPSE
HOSTLIST EXPAND
HOSTLIST SETMARKER
"MarkerName"
HOSTLIST DELMARKED
"MarkerName"
HOSTLIST CLEAR
Options can be:
EXTRA=string
MATCH=ALL
MATCH=USER
PROFILE=name
SHORTNAME=name
HOSTLIST adds entries to the address book of IVT. This
list of predefined hosts with optional descriptions and various
extra information can be accessed by the user by clicking on the
icon after the hostname field in the "Create Session" panel. IVT
automatically remembers the names of the last 25 hosts you enter,
but the list can also contain any number of predefined entries.
See also TYPEDHOSTS and MAXTYPEDHOSTS though.
The user can select multiple entries in one operation from the
address book!
The idea is that you can describe all your servers, routers
and other targets you connect to, and the description allows you
to explain the purpose of that specific target (so a user does
not have to remember which specific cryptic hostname he needs to
type to access some remote database server).
Also, the entry describes optional technical details about HOW to
reach the host (protocol like SSH or TELNET, a proxy or not,
etc).
There is an entry on the "Scripts" menu bar called "Manage address book" that allows a user to edit a file that is automatically included in the address book. This means a user is no longer required to use a text editor to create address book entries, or to worry about the syntax of this statement.
The various special features are:
COMMENT and COMMENT_ONLY:
Using COMMENTs, the list can have headers to
group hosts logically.
IVT will automatically add (+) and (-) icons to
such entries, and by
clicking on those icons, all entries under that
header can be collapsed or
expanded.
This allows you to efficiently manage (very)
large groups of hosts.
The COMMENT_ONLY entries will lack such
an icon, they can be used to
add empty lines and other separators to the
list to make it more
readable.
The COLLAPSE/EXPAND options can be used to set
the default state of all
sections in the address book.
SHORTNAME:
The optional SHORTNAME= string can be
used to attach a short, easily
remembered name to the entry. When the user
types that name as a hostname
in the "Create session" dialog, all information
from the relevant entry
is copied to the main dialog (host, user,
comment) and the profile (when
applicable) is selected. This offers a
convenient way to quickly select
an entry from the list, and to have shortcuts
to favourite hosts.
The string can actually be a list of
(comma-separated) names, each name is
recognized as a short name (so you can have
multiple aliases for the same
host). The used value is stored in $HOSTLIST_SHORTNAME.
EXTRA:
The optional EXTRA=string can be used to
describe extra information
about the host, user or connection. When the
entry is selected by
the user, this EXTRA information is copied to
the session variable
$HOSTLIST_EXTRA,
to be used by scripts as they please. For example,
a dialer could use this information to dial a
phone number, or the
AUTOLOG statement could
use it to generate a specific log file for
the session, or any other general purpose. The
data is not shown in the
selection dialog. Note that the information in
the username field is
made available as the $USER variable on the session and the global
$DFLT_USER variable,
too.
Note: The information in these
variables is ALWAYS copied to
$HOSTLIST_EXTRA
and $HOSTLIST_DESCR when a session
is created
to the host, even when the user does not
explicitly use the address book
to select the host.
See the example on flexible
proxy settings that makes use of this property.
There are various ways to set the EXTRA
information.
When you use one or more separate EXTRA lines,
these are concatenated, and
every HOSTLIST entry that follows will get a
copy of the resulting value.
An EXTRA clause on a HOSTLIST entry get
concatenated, too.
Example:
HOSTLIST EXTRA "Part 1\n"
HOSTLIST EXTRA "Part 2\n"
HOSTLIST somehost1 someuser1 "This
is SOME host1" SSH
HOSTLIST somehost2 someuser2 "This
is SOME host2" EXTRA="Part 3\n" SSH
HOSTLIST EXTRA CLEAR
HOSTLIST somehost3 someuser3 "This
is SOME host3" SSH
HOSTLIST somehost4 someuser4 "This
is SOME host4" EXTRA="abc\n" SSH
Here, the first 2 lines set up a default of
"Part 1\nPart 2\n". Somehost1
gets this value. Host somehost2 ends up with a
value of:
"Part 1\nPart 2\nPart 3\n" (combination of the
default plus host-specific
value).
The CLEAR resets the default to nothing,
so somehost3 will not have an
EXTRA attribute set. Somehost4 ends up with
just "abc\n".
PROFILE clause:
When you use the optional PROFILE=name
clause, the name appears in the
PROFILE list of the
entry, and that profile is chosen when the entry is
used. Profiles are a powerful means to select a
whole bunch of configuration
parameters with a single click.
Description:
This value is made available in the $HOSTLIST_DESCR variable.
This can be used to set session comments or session title bars.
The default pwdlearn
script does this, actually.
It is also set as the default 'Comment' in the
Create Session dialog.
The description can be longer than the comment,
it is automatically
truncated. It can be used to describe the host,
or provide any sort of
extra info to the user.
Note: The description MUST be enclosed
in double quotes!
Matching specific users or all users:
The optional MATCH=ALL and
MATCH=USER is a tricky one.
Using the EXTRA options, you can code all sorts
of information about the
entry which is interpreted by scripts (the
PROJECTS feature uses this a
lot, and see also the
context-menu example).
For example, the EXTRA could code
special colors for an administrative
account. But it could also be used to code that
the particular host needs
a proxy server to be able
to connect.
In the FIRST case, if you simply type the host
name in the "Create Session"
panel and a normal account name, you do NOT
want IVT to use the EXTRA
information (you'd end up with the wrong
session colors for the user).
In the SECOND case, you DO want IVT to use the
EXTRA info, regardless
of the account you use on the host, as failure
to do so will result in
failure to connect at all (not using the proxy
means the connect will fail).
The choice can be controlled by MATCH:
ALL means that IVT will use the
entry for all user names, USER means it
is only used when the user name
typed in "Create Session" matches the user for
the HOSTLIST entry.
By using "HOSTLIST MATCH=ALL" or "HOSTLIST
MATCH=USER" on a line by itself,
you can set a default for all subsequent
HOSTLIST entries.
Using the option as part of a normal HOSTLIST
line you can make an entry
(overrides any default).
The default setting for this is HOSTLIST
MATCH=ALL.
Using protocol specified in entries:
This feature can be turned on using HOSTLIST
USE_PROTOCOL or turned off by
using HOSTLIST NO_USE_PROTOCOL.
When on (which it is by default), and the user
types a hostname that is
also listed in the address book, IVT will
silently use the protocol
specified in the entry. So, if your default
protocol is SSH, but the
address book specifies TELNET for that host,
typing the hostname will
result in a TELNET session. When you explicitly
click on SSH or select
some other protocol, that will be used, of
course.
Older versions of IVT did not do this, if you
want to restore that
behavior, use the HOSTLIST
NO_USE_PROTOCOL directive in a configuration
file somewhere. Currently, there is no
interactive setup item for this
setting.
Protocol:
The (optional) protocol can be used to
specify which protocol to use.
The syntax is the same as for the PROTOCOL statement, and the value will
default to whatever the IVT default protocol is
at the time the HOSTLIST
statement is seen (WINSOCK,TELNET or
WINSOCK,SSH being normal choices,
TLN and SSH being the normal
abbreviations).
It is good practice to always specify the
protocol, so things keep working
properly when you gradually switch from an old
protocol (like TELNET) to a
new one (like SSH).
Addressbook state:
The address book has a (+) or (-) icon for
every section (which are created
by using the COMMENT entries). When you have a
small address book, it is
convenient to have all entries immediately
visible when the user opens the
address book. When you have a (very) large
list, it is more convenient to
have everything collapsed, so the user sees
only the section headers.
The COLLAPSE statement changes the state
of all sections to collapsed.
The EXPAND statement changes
the state of all sections to expanded.
This is the same as clicking on the "Collapse
all" and "Expand all" buttons
in the address book dialog.
Markers (manage parts of the address book):
The SETMARKER option allows you to add
and delete sections of the
address book.
A "marker" is simply a tag that is attached to
all subsequent HOSTLIST
entries. The only purpose of that
marker is to find and delete entries with
a given tag using the DELMARKED command
which must be passed the same
marker. See the hostlist.ivt script that is
part of the standard
distribution for an example. Every time you
save the address book contents,
the previous entries are deleted (using
DELMARKED) and the new version
is loaded (using the READRC function).
Use SETMARKER without a tag to reset the
feature (subsequent HOSTLIST
entries will not be tagged).
Note: A session remembers that it was
created from a HOSTLIST entry, so when
you clone a session
it can use the exact same entry. That association
is removed when the host list is (partially)
cleared, so a clone-operation
then tries to find an entry based on the host
and user name in the then-
current address book, but in complex situations
this may yield an
unexpected result.
Clearing the address book:
The CLEAR entry simply discards all
stored host names and comments.
Use this when you have a private IVT.RC file which "inherits" a hostlist
definition from some central IVT.RC file that
you do not like for whatever
reason. First use a CLEAR, then specify
your own HOSTLIST commands.
See also the SETMARKER option and DELMARKED to
delete marked parts of the
address book.
See also this note.
Examples:
HOSTLIST MATCH=ALL
HOSTLIST COMMENT "Database servers"
HOSTLIST
tr1z "" "Database server
Manhattan"
HOSTLIST tr2z "dba" "Database server
Chicago"
HOSTLIST
tr3z "" "Database server
Washington"
HOSTLIST COMMENT_ONLY ""
HOSTLIST COMMENT "Application servers"
HOSTLIST
tr9a "" "Application
server New York Central" PROFILE=Green
HOSTLIST
tr4a "" "Application
server Manhattan" SSH
HOSTLIST
tr9b "" "Server Oude
Pekela" EXTRA="+311234567"
SERIAL
HOSTLIST COMMENT_ONLY ""
HOSTLIST COMMENT "Miscellaneous"
HOSTLIST far.away.server.com ruurdb "My favourite server"
SHORTNAME=fav TLN
...
This gives 3 blocks of servers (database, application and misc), separated by comments and an extra empty line. The non-empty comment lines will get the collapse/expand icon. Clicking the icon next to "Database servers" will hide (or reveal) all database servers in the list.
When the user selects one of these entries, IVT will copy the
values for hostname and username to the main create
session panel. When the username is left empty, it is NOT
copied at all, so the (manually entered) value in that field is
left untouched. The description will appear as comment in the status
line.
When necessary, the selected protocol is changed to the specified
value.
Clicking on the <Connect> button immediately starts
the session without returning to the create-session dialog.
Double-clicking an entry has the same effect.
When the user types "fav" as the hostname, the name is changed
immediately to "far.away.server.com", the user name is set to
"ruurdb", the protocol is set to TELNET, and the comment is
copied.
Make sure your short names do not conflict with real
hostnames.
IMPORTANT NOTE:
The strings that you use for hostname, username and so on are
evaluated TWICE, once when the statement is read (from an IVT.RC
file) and once more when the entry is used (or displayed). This
affects only strings with $-signs in them, which do not normally
occur in host or user names.
This allows you to change the contents of the address book
dynamically. For example, like this:
Script STARTUP
GSET Usr =
$ENV_USERNAME # Take name from windows
END
Script SwapUsr
IF $Usr != "root" THEN GSET
Usr = "root" : RETURN
GSET Usr $ENV_USERNAME
END
KEYMACRO "F10-Shift-Ctrl-Alt"
SYNCFUNCTION SwapUsr
HOSTLIST host1 \$Usr
HOSTLIST host2 $Usr
The value of the "Usr" variable can be switched from
root to the name of the Windows user and back again by
pressing F10.
The FIRST entry will appear in the list with the CURRENT value of
Usr (because of the backslash in \$Usr that delays
interpretation).
The SECOND entry will appear in the list with the value of
Usr as it was during the reading of the HOSTLIST
statement (the startup value, so that would be the Windows user
name).
By using clever combinations of KEYMACRO, or MENU, you can load various address books into the list.
See also the TYPEDHOSTS and MAXTYPEDHOSTS keywords.
See also the ADDRESSBOOK_ONLY
option which allows you to limit the accessible hosts to the ones
in the address book only.
12.2.18: IDENTIFY (Sets response to CSI c inquiry command)
IDENTIFY string
Default: See below.
This is a per-session
setting.
This command can be used to set the response that IVT will
give to the inquiry command CSI c that can be sent from a
host (CSI is ESC [ in 7 bit mode, and 0x9B in 8-bit
mode).
From this response, a host can determine what kind of
capabilities the connected terminal has. IVT will, when no
IDENTIFY command is used, respond with some appropriate
characteristics that allow the host to determine whether or a
status line is in use:
To be precise:
Note that the 24/25 is a VT220 thing - IVT will support any number of lines using the WINDOW_SIZE command, but the responses to this inquiry are standardized by DEC and it is not up to me to make up my own :-)
If, however, the host will only talk to you if it likes the
response it is getting, the IDENTIFY is necessary. Setting
it in a global IVT.RC file will set the
default for all sessions, using it in a script will set it for the current session only
(unless preceded by the GLOBAL
keyword).
VMS is notoriously particular about a proper response, which is
why the DEC-VT220 profile that ships with IVT sets it
properly.
IVT will automatically generate the CSI part of the response.
In 7 bit mode, that will be ESC[, in 8-bit, it will be the
single character 0x9B.
The rest of the response is the specified string.
This string can, of course, use special characters and may refer
to IVT variables. If, for example, IVT is to pretend it is an
X-terminal, use:
IDENTIFY "?1;2c"
The setting of the IDENTIFY will survive a RESET command sent by the host, but NOT an F3-R command that is issued locally.
For completeness sake, here are the official meanings of the codes:
62 VT200 series terminal
63 VT300 series terminal
64 VT400 series terminal
1 132 columns
2 Printer port
3 ReGIS display
4 Sixel graphics
6 Selective erase
7 Soft character set (DRCS)
8 User-defined keys (UDKs)
9 National replacement character sets
11 Status line
13 Local editing mode
14 8-bit interface
15 Digital Technical character set
16 Locator device port
17 Terminal state reports
18 Windowing capability
19 Dual sessions
21 Horizontal scrolling
If you use VMS/VAX, the default setting of IVT will make VMS think IVT is a lowly VT100 (and the function keys won't all work). In that case, use:
IDENTIFY "?62;1;2;6;7;8;9c"
and all will be well. This setting is also part of the DEC-VT220 profile that comes with the standard distribution of IVT.
12.2.19: INCLUDE (include files in an IVT.RC file)
INCLUDE file
INCLUDE_OPT file
Includes a (possibly encrypted)
IVT.RC file. Nesting allowed (as far as the
operating system permits).
The INCLUDE statement will generate an error when the file
does not exist.
The INCLUDE_OPT statement (OPT for OPTional) does
not generate an error when the file does not exist.
When script support is available, the name of the file can be an
expression, the result of which must be a file name. Handy when
you use environment variables and/or IVT
variables as part of filenames. Example:
INCLUDE_OPT "$IVTDIR/$ENV_USERNAME.rc"
INCLUDE_OPT
"$ENV_HOMEDRIVE/$ENV_HOMEPATH/IVT.RC"
is used to include optional personal settings (the
USERNAME environment variable contains the user-id in a
Windows environment).
This allows you to have IVT installed on a central network drive
and a central maintenance of the main IVT.RC file while still
allowing individuals to overrule the defaults.
All IVT settings have an on/off setting and you can use DELSCRIPT to delete standard scripts and define
your own versions instead.
Another example:
INCLUDE "$IVTDIR/ivt/dial.ivt"
The variable $IVTDIR is the name of the
directory where IVT found its own executable. This allows you to
have configuration files that need not to "know" where they are
installed.
INCLUDEs are very handy to configure complex facilities
into IVT with a single line.
When an INCLUDE file is opened, it is checked for
encryption. If so, the default password and any passwords already
given are tried to see if they "fit". If not, IVT will prompt you
for a password. See encrypting files.
See also setup screen, encryption and CRYPTPWD.
This command cannot be called from a script. If you use this in the body of a script, the file will be read only once! However, see the READRC function to read files dynamically.
12.2.20: IPVERSION (Choose IPv4 or IPv6)
IPVERSION AUTO|BOTH|IPV4|IPV6
Default setting: AUTO.
This is a per-session
setting.
Support for IPv6 is new in version 23.0 of IVT (February 2011).
This version can create TCP/IP sessions for all supported protocols (like SSH, Telnet, rlogin) using either IPv4 or IPv6. Usually, you will not have to worry about this, as IVT will automatically connect to a host using IPv6 when it can, and IPv4 when it must. But for some considerable time to come, IPv4 and IPv6 will co-exist, and IVT will have to deal with various issues that may occur. The possible settings are:
In various places where you can type a hostname, you can also type a dotted- decimal IPv4 address (like 10.0.0.75) or an hexadecimal IPv6 address (like 2001:610:600:7d7::3). You can also specify a port number in an IPv4 address like 10.0.0.75:22. Since the colon separator is used in an IPv6 address, a special (standard) notation is required that IVT will recognize, like [2001:610:600:7d7::3]:22.
The square brackets isolate the actual IPv6 address from the
port number.
This notation can also be used in the "Create session" panel.
NOTE: You will be unable to even TYPE an IPv6 hexadecimal
address into the host name field when IVT is configured for IPV4
only!
Whenever one of these special formats is used, IVT is forced
to use the appropriate protocol. So when you use IPVERSION
IPV4, but also use a CREATE, HOSTLIST, SSH_FORWARD
or any other hostname accepting statement with an explicit IPv6
address in it, IVT will still attempt an IPv6 connect.
Similarly, when you use a dotted-decimal address as a hostname,
IVT will always set up an IPv4 session.
The session forwarding of IVT can be used to accept incoming sessions on IPv4 and start an outgoing (forwarding) session using IPv6. This can be used as a proxy servers to allow non-IPv6 applications to connect to IPv6 addresses.
The socks4FW Unix program can be used to do the same on Unix.
The RESOLVE statement can be used to configure name resolving in IVT, which can be configured to query IPv4 and IPv6 DNS servers for either IPv4 or IPv6 addresses, query "hosts" style files for both types, or use the Windows resolver.
The $IVT_NETW hash is initialized by IVT with all the DNS servers configured on the PC, both IPv4 and IPv6 addresses.
The RESOLVENAME_EX function can be used to resolve names in a script.
12.2.21: MAXTYPEDHOSTS (Number of typed hosts stored in address book)
MAXTYPEDHOSTS number
Default: 25.
This is a global setting.
IVT stores the information you type in the "Create session"
dialog in the address book (which you can access by clicking on
the button after the host name). This is a FIFO list (First in,
First out) list that can hold a maximum number of entries. That
number is by default 25, but can be set to any other number.
Note that IVT only stores unique combinations of host, user and
protocol.
This setting can also be changed from this setup screen.
It is saved in the registry.
See also HOSTLIST and ADDRESSBOOK_ONLY.
12.2.22: MERCY_MODE (Show hosts some mercy)
MERCY_MODE NrOfSessions MsDelay
NO_MERCY_MODE
Default setting is: NrOfSessions 4, MsDelay
500.
This is a global setting.
The multi-session feature of IVT brings out weaknesses in some
implementations of TELNET and SSH servers. When you have a
CREATEGROUP with many sessions to the
same host, or enter a largish value in the "Repeat" box of the
"Create Session" panel, IVT can create dozens of sessions in a
few fractions of a second.
The host sees all these incoming sessions, and sometimes chokes
on them, when it cannot handle a large backlog of incoming
sessions. The result is that some of the sessions are rejected,
or immediately disconnect.
OpenSSH has this problem, for example, starting at 10 sessions.
Of course, IVT is not to blame for this (but gets blamed anyway),
so it tries to work around this limitation by default.
The default for IVT is to show some mercy on hosts, and not
create more than NrOfSessions in any MsDelay
interval to a specific host.
So if you create 4 sessions in parallel (assuming the default
setting of 4 for NrOfSessions is in effect), nothing
special will happen.
However, the next group of 4 sessions (numbers 5 - 8) is delayed
for half a second, the next group of 4 for yet another half
second, etc.
In practice, this will prevent the problem from occurring.
When you use a proxy server, the same mercy is shown.
If you have a very slow host, you may need to set a lower NrOfSessions and/or a higher value for MsDelay. For example:
MERCY_MODE 1 1000
will never allow more than 1 session per second to be
connected to the same host.
Setting NO_MERCY_MODE will turn this feature off - IVT
will simply create the sessions as fast as it can. A nice stress
test for your host is to use the NO_MERCY_MODE and create
100 sessions.
This setting can also be changed from this setup screen and the current setting is saved in the registry.
See also TCP_FLOOD, which implements
a very similar delay.
See also XAUTH_DELAY, which works
around another bug in SSH.
12.2.23: MLDEFCMD (Set default command for multiplexer)
MLDEFCMD "any command"
Default:
MLDEFCMD "ssh -p \$HOSTNAME_PORT \$USER@\$HOSTNAME_ONLY"
This is a global setting.
Note: This IVT is compiled without the multiplex protocol,
so this command is ignored in this version.
This sets the default command to be used by the
multiplexer shell on Unix (e.g. ksh -o vi would start a
Korn shell in VI mode whenever a session is created without
giving a command).
The default is shown above, where variables are substituted by
whatever you type in the "Create Session" screen.
This sort of simulates the creation of a new session.
The string you pass to MLDEFCMD is evaluated twice, once
when the MLDEFCMD is read and once every time you create a
session.
So if you want to have $HOSTNAME_ONLY expanded by the host you
type you have to protect the $ by prepending it with a
backslash.
This great feature of IVT deserves in own chapter on multiplexing.
See also MLFILTER.
12.2.24: MLFILTER (Avoid certain bytes on multiplex links)
MLFILTER a,b..
This is a global setting.
Note: This IVT is compiled without the multiplex protocol,
so this command is ignored in this version.
Avoid sending codes a, b over multiplex link. The
codes must be the decimal codes of the ASCII characters. For
example:
MLFILTER 0,21,23
would escape the NULL, XON and XOFF characters on the link
(these are the most likely to generate trouble).
The default is to escape the NULL and the 1 character (the NULL
is notorious, the 1 is used internally by ivtmux to send
control messages to IVT).
Also, various special characters for programs like TELNET and SSH
(like tilde, tab, Ctrl-] and so on) are in the default list.
This great feature of IVT deserves in own chapter on multiplexing.
See also MLDEFCMD.
12.2.25: OBJECT_ID (Show names of internal IVT objects)
OBJECT_ID
NO_OBJECT_ID
Default: OBJECT_ID.
This is a global setting.
IVT is very configurable, one of the more hidden features is
the fact that every dialog item (buttons, drop boxes, menus, etc)
can be disabled or hidden so you can make (parts of) setup and
configuration inaccessible to the user.
See the IVT_DIALOGSTATE command
for details.
To be able to configure those states, IVT can show the internal name of every object by shift-right-click on such an item (and a few other ways, see the IVT_DIALOGSTATE statement for details).
To prevent users from querying such names, the
NO_OBJECT_ID keyword can be used in an IVT.RC file to
disable all methods that IVT has to show such names.
This item cannot be configured interactively in setup, only in a
setup file.
This is an important feature, others are prev/next
12.2.26: ONCONNECT (Script to run after 'Session Established')
ONCONNECT hostname script [parameters]
ONCONNECT * script
[parameters]
NO_ONCONNECT * script
[parameters]
See also the -C command line
option.
This is a global setting.
Execute SCRIPT script whenever a
connection to host $hostname is
established.
When you specify * as hostname, it will match any
host.
The comparison is case insensitive.
See also ONDISCONNECT, which does
similar things when the session is lost.
The NO_ONCONNECT can be used to cancel a previous
ONCONNECT. The statement must match the ONCONNECT
exactly (same host, script and parameters).
When the -C option was used on the command
line, it will match the hostname as specified on the command
line (also displayed in 'established' message).
This allows you to use the script language of IVT to perform
various sorts of tasks on the host by specifying different script
names on the command line.
When a CREATE statement is used, any script specified for that particular session will overrule the one specified in the ONCONNECT.
You can specify multiple ONCONNECT statements for a
single host. They will all be kicked off simultaneously. However,
they will be started in the order specified and it is guaranteed
that they all "see" all the data from the session when you use
WAIT or CAPTURE
statements.
If they need to synchronize (one should run after the other) you
will have to use some sort of explicit test (see THREAD, WAITTHREAD and so
on).
Threads can communicate using global
variables and KILL statements.
NOTE: New: See also WAIT_ONCONNECT for a flexible way to arrange this.
The purpose of this command is to automatically login to a
host whenever a session to that host is established and
optionally "do things" on that host once the session is
established and a shell is running. See also PRECONNECT.
Using the "*" you can customise the settings for the session any
way you want.
The $HOSTNAME is available to give the
name of the host actually connected to.
The trick is to make this flexible and secure (and since
logging in to a host will normally require a userid/password
combination this will involve encrypting
the files that contain your passwords). To prevent this from
making your IVT.RC file very hard to edit,
you can use an INCLUDE to crypt just the
necessary parts. See also CRYPTPWD.
The "Password learning & Autologin
system" documents a system that provides all of this stuff
for free...
Also, passwords are outdated technology: SSH keypairs, GSSAPI and Kerberos are much
better alternatives to provide automatic authentication.
NOTE:
The IVT scheduler treats ONCONNECT scripts specially.
Normally, a script can only run for some 500 statements before
the scheduler switches to other tasks.
This would cause complex ONCONNECT scripts (such as the password learning and playback system) to be
rescheduled several times while it was seeking through the
database to find the password for the current session. That would
cause it to miss the first few characters sent by the host, so a
host that sends a "Login:" prompt without any preceding banner or
text would not be recognized.
Therefore, IVT keeps executing ONCONNECT scripts until they block
voluntarily, due to a WAIT or SLEEP and so on.
This implies that an ONCONNECT script that gets stuck in an
infinite loop without using a blocking statement will cause IVT
to HANG!
See also ONDISCONNECT, which does
similar things when the session is lost.
See also PRECONNECT, which does similar
things BEFORE the session is made.
See also WAIT_ONCONNECT to
synchronize multiple ONCONNECT scripts.
12.2.27: ONDISCONNECT (execute script when host disconnects)
ONDISCONNECT hostname [PRIORITY=N] script [parameters]
ONDISCONNECT * [PRIORITY=N]
script [parameters]
NO_ONDISCONNECT * [PRIORITY=N]
script [parameters]
Execute SCRIPT script whenever a
connection to host hostname is lost.
When you specify * as hostname, it will match any
host.
For a description of PRIORITY, see PRECONNECT.
See also ONCONNECT, which does
similar things when the session is established.
The NO_ONDISCONNECT can be used to cancel a previous
ONDISCONNECT. The statement must match the
ONDISCONNECT exactly (same host, script and
parameters).
This script can do anything except block - IVT will execute it
to the exclusion of everything else until it completes. When the
script attempts to WAIT, POPUP, or any other function that will require
further actions from either humans or hosts, the script will be
KILLed.
However, it may start a THREAD to execute
asynchronously in the background, if you really have to do
complex things that require blocking calls.
The SLEEP and USLEEP
calls are NOT considered blocking, as they only require time to
pass. However, using long sleeps will cause IVT to seemingly
hang...
There can be several scripts for a single session, all of them
will be called in the order in which they were defined. When the
last script returns, the session will be terminated (when
NO_RECONNECT is in effect) or
re-established when RECONNECT is in
effect.
It is NOT possible to communicate on the session, usually the
host has already disconnected and WAIT
statements are impossible anyway (they block).
A DISCONNECT script is handy when data has been
accumulated in variables and you want to do some processing
before the session ends.
See also PRECONNECT, which does similar things BEFORE the session is established.
12.2.28: ONDROPFILES (action for drag/drop operation)
ONDROPFILES Scriptname
[arguments]...
NO_ONDROPFILES Scriptname [arguments]...
This is a global setting.
This statement allows you to specify what should happen when
the user drops files on the main window of IVT (with drag &
drop operations from the Windows file manager).
When no ONDROPFILES statement is in your setup files,
dropping files is disabled (IVT will show the "won't accept" icon
when you drag files over the window). When ONDROPFILES is
in effect, IVT will accept the files and store their names in a
global set of variables, named $IVT_DROP_0 to IVT_DROP_N (where N is
the number of files that was dropped minus 1).
It also stores the number of files in the global variable
$IVT_DROP_COUNT.
Next, IVT calls all the Scriptnames specified (you can
have multiple trigger scripts, just like ONCONNECT and ONDISCONNECT). Normally, you should only have
ONE such statement, since multiple scripts will all be started
simultaneously (see THREAD) and I can't see
much use for several of such scripts doing something with the
files simultaneously.
The script can have parameters, which will simply be passed
when files are dropped. The script can then process the dropped
files in any way it cares to.
The most useful thing to do with such files is probably to
transfer them using the ZMODEM protocol, like
this example does...
Actually, that script is included as part of the IVT.RC file in the standard IVT distribution kit.
The script will even transfer a directory structure recursively using FindFiles and IsDir.
The NO_ONDROPFILES can be used to cancel a previous
ONDROPFILES.
The statement must match the ONDROPFILES exactly (same
script and parameters).
12.2.29: ONERROR (call script when errors occur)
ONERROR host Scriptname
[arg]...
ONERROR * Scriptname
[arg]...
NO_ONERROR * Scriptname
[arg]...
This is a global setting.
See also ONCONNECT and ONDISCONNECT, which have similar syntax.
The ONERROR statement allows error trapping in scripts.
Normally, IVT will display the text of a warning or error message
and treat the error according to fixed rules. ONERROR
scripts allow you to change this behavior.
This allows you to make IVT react to any error in a programmable
way.
Information on the current error is passed to the script in these variables:
The rules are as follows:
Perhaps a small example will help:
ONERROR * CheckTimeout
Script CheckTimeout
HIDE
# Session could not connect -
timed out?
IF
$IVT_ERR_LEVEL == 1 && \
$IVT_ERR_STR
== "WINSOCK: Command timed out" \
THEN RETURN 2 # Kill
session NOW
RETURN 0 # All
others default treatment
END
This simple script will kill the session when it could not
connect to a host because it did not respond.
An alternative would be to check $IVT_ERR_NR, which would
be 10060 in this case (WinSock on Win32, your mileage may
vary).
The NO_ONERROR can be used to cancel a previous
ONERROR. The statement must match the ONERROR
exactly (same host, script and parameters).
A cancellation of a non-existent trigger is silently ignored.
See also CalledBy.
12.2.30: ONLANGUAGE (Call script when user-language changes)
ONLANGUAGE Scriptname [arg]...
NO_ONLANGUAGE Scriptname [arg]...
This is a global setting.
IVT is a multi-lingual program that can switch between
languages without a need to restart the program.
Not only the main IVT program itself is multi-lingual, the
scripts that come packaged with the main product can use
translation tables as well.
If you write your own scripts, they can use the NLS() function for national language support in those
scripts.
Because a script can have a permanent visibility in the status bar, tabs and menu bar, it may be necessary to update those items when the user switches to another national language. Such a switch can be done interactively through this setup item, or a script can use the IVT_LANGUAGE statement.
This is what the ONLANGUAGE trigger is for: you can
specify a trigger script that will be called whenever the current
language changes.
In your script, you can use the QuerySetting function to see what the new
language has become. In the main IVT.RC file you can find an
example where the "Scripts" menu is updated when the user changes
the language.
It looks like this:
ONLANGUAGE UserMenuLanguage
Script UserMenuLanguage
...
MENU SELECT 0
MENU RESET
MENU TITLE NLS("MN1_TITLE","Scripts")
MENU CALL NLS("MN1_1","Key-broadcast
on/off") DoBroadcast
...
END
That says: When the user changes language, call the
UserMenuLanguage script.
The script removes menu number 0 (the 'Scripts' menu) from the
menu bar, and then creates a new menu. The NLS
function is used to translate the very word "Scripts" that
appears on the menu bar itself to the new national language.
Similarly, all the entries in the menu are generated in the
current language.
For further details, see IVT_LANGUAGE (that details where to store the
various actual translations).
Also, see the various DIALOG examples in
the manual. The scripts that come bundled with IVT all have
multi-lingual, script-generated dialogs.
12.2.31: ONRESIZE (Call script when window resizes)
ONRESIZE Scriptname [arg]...
NO_ONRESIZE Scriptname [arg]...
This is a global setting.
The named script is called (with any optional arguments) when the session has just changed size. This is when either the size of the window or the number of rows and/or columns has changed (see SIZEFONT).
The script can use the $COLS and $ROWS variables to find the new size of the session. It can, for example, use the TITLEBAR and STATUSTXT commands to show the new size.
It can use QUERYSETTING to query the new font or the current size of the session window.
The NO_ONRESIZE can be used to cancel a previous ONRESIZE. The statement must match the ONRESIZE exactly (same script and parameters).
See also GUI_RESIZE, SIZE4ALL and QUERYSETTING.
See also ALT_ENTER.
12.2.32: ONSWITCHFROM/TO (Call script when session switch occurs)
ONSWITCHTO [PRIORITY=N] Scriptname
[params]
ONSWITCHFROM [PRIORITY=N] Scriptname [params]
NO_ONSWITCHTO [PRIORITY=N] Scriptname
[params]
NO_ONSWITCHFROM [PRIORITY=N] Scriptname
[params]
This is a global setting.
This causes a script to be executed when IVT switches between
sessions.
The session that loses the foreground will get the
ONSWITCHFROM scripts executed (this happens first).
The session that becomes the foreground one will get
ONSWITCHTO scripts executed (after all ONSWITCHFROM
scripts have finished).
There can be multiple ONSWITCH scripts of both the TO and
FROM kind.
For a description of PRIORITY, see PRECONNECT.
Such a script can be used to change global settings that depend on the current session - a rare case since you usually can handle this with normal per-session settings. But an example might be the custom menu bar entry, like in the extended context menu per host example.
NOTE: The scripts are started and IVT waits for such a
script to finish before starting the next one. If the script is
very slow, this will cause noticeable delays in switching
sessions, so make sure they are fast enough.
The script cannot do blocking statements and will be killed if it
tries.
However, a SLEEP or USLEEP is not considered a blocking statement, and
a script can always start a THREAD to do
something blocking in a separate script which does not delay the
session switching.
When the user switches, IVT will first start the ONSWITCHFROM scripts, then switch to the selected session, then start the ONSWITCHTO scripts.
The NO_ONSWITCH can be used to cancel a previous
ONSWITCH. The statement must match the ONSWITCH
exactly (same script, priority and parameters).
This will stop the scripts from being called when the user
switches sessions.
See also PRECONNECT, ONCONNECT, ONDISCONNECT, ONRESIZE, ONERROR,
ONDROPFILES.
See also MYSESSID(), FGSESSID() and MYSESSNR().
See also WAIT_ONCONNECT.
12.2.33: ONTABICON/TO (Call script when user clicks tab bar icon)
ONTABICON Scriptname [params]
NO_ONTABICON Scriptname [params]
This is a global setting.
The TABSBAR command can be used to
enable a tab for every session that contains a customizable text
and an optional icon.
The default icon that IVT can supply is a close icon, but you can
use the SetTabIcon() function to supply
a different icon.
When the user clicks the icon, this ONTABICON statement
can be used to start a script on the session to handle the
click.
When no ONTABICON is specified and the user clicks on the CLOSE icon in the tab, IVT will terminate the session (after an optional confirmation with (NO)CONFIRM_CLOSE.
When an ONTABICON script is specified, ALL handling of ALL clicks becomes the responsibility of the script. This allows you to associate arbitrary icons with arbitrary sessions that cause arbitrary things to happen when the user clicks on them.
You can query the name of the icon associated with a tab using the QuerySetting function with "ICONTAB" as a parameter.
The NO_ONTABICON can be used to cancel a previous ONTABICON. The statement must match the ONTABICON exactly (same script and parameters).
12.2.34: OPTIONS (Specify command line options in IVT.RC file)
OPTIONS options
This is a global setting.
The OPTIONS keyword can be used to set/unset command-line options. This is useful if you always want certain options to be in effect regardless of how IVT is invoked. The options takes the same form as on the command line. Use a preceding hyphen (-) to turn an option on, and a preceding plus (+) to reverse the meaning. Examples:
OPTIONS -ns (acts
as if 'IVT -ns ...' was used)
OPTIONS +n +s -B (space separated, multiple
options allowed)
OPTIONS +ns (acts
as if 'IVT +ns ...' was used)
OPTIONS
-s (forces
security on)
OPTIONS
+s (forces
security off)
OPTIONS "+s" (forces
security off, quotes are optional)
Another way to specify options to IVT without typing them every time is to define an environment variable called IVTRC. You could, for example, say:
SET IVTRC=+ns
And that would have the same effect as an OPTIONS
statement.
If you use a -B (no banner) option, IVT will remove the
splash screen when it is currently displayed as soon as it sees
the option.
There are two other environment variables that determine how IVT starts up.
12.2.35: PACKAGE (Logical groupings of scripts)
PACKAGE "name" [DEVELOP]
PACKAGE "NONE"
This is a global setting.
When you write complex scripts in IVT, you quickly end up with lots of helper functions (small scripts that perform some dedicated function). You have to name these scripts, and then you have to make sure you come up with a unique name that cannot conflict with other similar scripts in (someone else's) complex scripting package. This quickly becomes ugly.
A similar problem exists with variables: some session or global variables are required to be accessed from outside your scripting, most are for internal use only. Older versions of IVT had no scoping directives: any script can be called from anywhere, any session or global variable can be accessed by any script. Starting with version 23.1, IVT now has "packages". They are intended to solve this problem and allow information hiding in the IVT scripting language. A "package" is:
The following statements and constructions of IVT are now "package aware':
All these can only call scripts in the same package, or PUBLIC scripts, or scripts that are not part of any package.
See also PUBLIC.
See also variables explained.
See also GSET, GPSET,
LSET and LPSET.
See also the MyPackage() function.
12.2.36: PUBLIC (Publish items of a package)
PUBLIC SCRIPT|GLOBAL|SESSION namelist
This is a global setting.
The namelist is a comma-separated list of names.
A PUBLIC statement is only valid inside a PACKAGE. A PACKAGE is a
logical group of scripts that can communicate with the outside
world only through defined (public) interfaces. The PUBLIC
directive is used to indicate which scripts and variables are
visible to things outside of the package.
All non-PUBLIC things are private to the package (with the
exception of variables created through GPSET
and LPSET.
See also PACKAGE.
See also variables explained.
See also GPSET, GSET,
LSET and LPSET.
See also FORALL and $FORALLTYPE.
12.2.37: PUTTY_IMPORT (Import Putty setup data)
PUTTY_IMPORT
NO_PUTTY_IMPORT
Default: PUTTY_IMPORT
This is a global setting.
By default, IVT will import all saved data from your Putty
environment, if you have any. This will make the hosts, users and
all other configuration stored as Putty hosts available as
entries in the address book of IVT.
This data includes:
The upshot is that the host and configuration data from Putty
appears as hosts in the address book of IVT (the icon after the
host name in the "Create Session" dialog of IVT). Every host has
an entry with the data and a special imported Putty profile that contains all the configuration.
When such a host is selected, a session will appear looking very
close to what it would look like in Putty, but with the tabs,
status, highlighting, scripts and other
features of IVT as a bonus.
The import is done when IVT starts up. If you make changes to the Putty settings, the next time you start IVT it will import the altered data.
If, for some reason, you do not want the import to happen, use a NO_PUTTY_IMPORT command in an IVT configuration file.
Note: The putty-imported HOSTLIST entries are used only when
you select them from the address book. Normal host list entries
are also used when you type the name of a host interactively in
the "Create Session" dialog, so all special attributes are used
without having to think about them. However, the putty imported
profiles are so different from the standard IVT configuration
defaults that these must be chosen explicitly.
So click the address book icon, and select the proper entry
there.
See also REGISTRY, HOSTLIST, ADDRESSBOOK_ONLY and PROFILE.
This setting can also be changed from this setup screen and is also saved in the
registry.
12.2.38: PRIVATE_RC_FILES (Allow/deny private configuration)
PRIVATE_RC_FILES
NO_PRIVATE_RC_FILES
This is a global setting.
When IVT starts up, it will usually attempt to read an IVT.RC
file on the private HOME directory of the user (as indicated by
the HOME environment variable of Windows). Sometimes this is
undesirable, for example when you have a special IVT
configuration in some network directory, where the IVT.RC file is
used to configure some specific application.
In that case, the NO_PRIVATE_RC_FILES command will prevent
the processing of those private files.
The default is, of course, PRIVATE_RC_FILES.
However, see also the "-c" command line option.
This is an important feature, others are prev/next
12.2.39: PROFILE (Load configuration)
PROFILE "name"
This is a global setting.
See also DEFINE_PROFILE.
Older versions of IVT could only save ONE setup configuration.
This version of IVT can use multiple setup-configurations called
PROFILES.
A profile defines the entire look and feel and all
configurable options of IVT under a simple name. When a
session is created, the name of a profile is associated with that
session, and all the settings in the profile are applied before
the session is actually created.
When a profile name has the SAME name as the current host, that
profile takes precedence over anything else.
Profiles can be created in two ways:
IVT defines one default profile. This appears in the "Create
session" dialog as the first choice. Initially, this profile is
the result of the IVT.RC file setup (or, lacking such a file,
from the built-in defaults of IVT).
You can overwrite the default profile as you like, changing the
look and feel with which IVT starts up.
The default distribution kit of IVT adds other profiles:
DEC-VT220, which configures IVT to be as close as possible to a
true VT220 terminal, and a PuTTY profile which makes IVT look as
much as possible like PuTTY.
A profile can be attached to a session in many ways:
PRECONNECT * ChangeProfile
Script ChangeProfile
# Only modify profile when current setting is default
IF LOWER(QUERYSETTING("PROFILE")) == "default"
\
THEN PROFILE "MyProfile"
END
There a few rules governing profiles:
There is an option in the interactive save-to-registry dialog
that allows you to specify "Save size". By default, this is
unchecked, and IVT will not save the current window size as part
of the profile. When checked, it will be saved (and therefore
used when you load the profile). Set this option when you create
specific profiles to position and size IVT a certain way
depending on the profile. When you load a profile that was
created with "Save size" not set, the size will remain whatever
it was when the profile is loaded.
When "Save size" was checked, using the profile will size the
window to whatever it was when the profile was saved. If you also
want to save the current position of the window, se the
WINDOW_POS function as part of the profile.
This is most useful when used in a session group that has the
"Create in a new window" checkmark for various sessions. When
the group is created, a bunch of windows can be created that size
and position themselves as desired, each window logging in
automatically and starting some application.
When you have many windows that way, it may be wise to disable
the tab bar, status bar and other things to save room on your
screen.
Similarly, there is a "Save font" option. When on, the current font in use on the session is saved as part of the profile (and thus loaded when the profile is used). When unchecked (the default, the font remains whatever it is when the profile is used).
12.2.40: PROFILE with same name as host
A convenient way to have different setups for different hosts
is to save a profile with the same name as
a host.
Such a profile takes precedence over most other mechanisms of
selecting a profile.
The "Save profile" dialog has a button to copy the host name of
the current session to the name text box. The idea is to tune the
settings for a host until they are to your liking, go to "Save
As", use the "Copy host name" button and click "Save".
the next time you initiate a session to that host, the profile
will be loaded.
12.2.41: PROTOCOL (Specify the type of protocol to be used)
PROTOCOL transport[,session]
This is a per-session setting.
NOTE: This statement can also be used in a PRECONNECT script to change the protocol of a session that is about to be created.
This version of IVT supports the following transport protocols (which is a subset of all existing protocols):
In addition to these transport protocols, you can "push" one of the following session protocols on top of this:
For your convenience, IVT recognizes a number of handy abbreviations for common combinations. These are:
NET - NETBIOS
VTP - Vtp hack.
TLN - WINSOCK,TELNET
SSH - WINSOCK,SSH
RLN - WINSOCK,RLOGIN
SER - SERIAL
DUM - DUMMY
Examples:
PROTOCOL
SSH
PROTOCOL
WINSOCK,SSH # Same as "SSH"
PROTOCOL
SERIAL
PROTOCOL
NETBIOS,VTP
PROTOCOL
WINSOCK,RLOGIN
PROTOCOL
WINSOCK,TELNET
When no protocol statement is used to force IVT, it
will determine which protocols are compiled in and available at
runtime, and use one that seems 'logical'. Use the command line or a PROTOCOL
statement to force the choice.
You can, of course, also use the setup
screen to change both the transport and session
protocols.
The setup-screen allows you to change the protocol for the NEXT
session you are going to create.
A script can query the current effective protocol by using the $PROTOCOL and $PROTOCOL_SESSION.
12.2.42: REGISTRY (Load start-up config from registry yes/no)
REGISTRY
NO_REGISTRY
Default: REGISTRY.
This is a global setting.
When the setup screens are used to change the configuration of
IVT, the resulting configuration can be saved into the Windows
registry using setup.
See "IVT and the Windows registry" for
details.
If, for some reason, you want to ignore the current contents
of the registry without deleting it, you can specify
NO_REGISTRY in your IVT.RC file.
IVT will then not attempt to read the registry during
start-up.
Also, the button to save the setup to the registry will be
disabled, so users are unable to make permanent changes to the
IVT setup.
See also secure mode and IVT_DIALOGSTATE.
See also the IVT registry functions REGCREATEKEY, REGDELETEKEY, REGDELETEVALUE, REGQUERYENUM, REGQUERYSTR, REGQUERYDWORD, REGSETVALUEDWORD and REGSETVALUESTR.
12.2.43: RESOLVE (Set name resolution sources)
RESOLVE "NameSource[,...]"
NO_RESOLVE
Default: Use the Windows name resolver (HOSTBYNAME).
This is a global setting.
Note: This ADDS to the list of resolvers, use NO_RESOLVE to clear any existing list, or QuerySetting to obtain the current list before changing it.
Resolving is the process of translating hostnames into
IP numbers (the numbers that identify a host on a TCP/IP
network).
In this version of IVT, this can be an IPv4 or IPv6 address.
This option is only used for the TCP/IP (WinSock) transport protocol.
See also the DOMAIN statement, to specify a
number of domain names to append to the hostname. The default
domain of the PC you run IVT on is used automatically.
NameSource can be one of:
For example, the name of a host (like www.ibm.com) must be
resolved to an IP address (like 129.42.58.212) before a session
can be established.
The translation of names into numbers can be achieved in a number
of ways:
1) Using a HOSTS type file (containing numbers and their
names).
2) Using DNS (Domain Name Server).
3) Using WINS (a Microsoft way of doing DNS).
A HOSTS file contains lines with IP numbers and one or more names for that address. For example, you could have a file called C:/WINDOWS/HOSTS that contains lines like:
193.79.171.11 atf.cmg.nl mailgate
2001:200:dff:fff1:216:3eff:feb1:44d7 www.kame.net kame
fe80::a00:27ff:fe8d:54f2 moria-u
the IPv4 line gives two names for one address. Either can be
used as the name when you establish a session. Fields on a line
are separated by white space (spaces or tabs). Lines can be empty
or end in a comment.
A comment is introduced with the # sign.
The lines with all the colons in them are IPv6 hexadecimal
addresses, which this version of IVT understands as well.
A DNS server (Domain Name Service) is a computer on the
network that resolves names into IP numbers.
IVT has to know the IP-address of one (or more) of such servers
to be able to query them. Normally, the server can be reached on
the well-known DNS port (number 53), but you can specify another
port.
The DNS IP-address can be an IPv4 or IPv6 address, IVT can query
both types of servers.
See also the DOMAIN statement.
IVT can also use the standard "gethostbyname" function, which
will simply use the configuration of your PC to translate the
name into the desired address.
This can use files, query DNS or WINS servers or whatever.
From IVT version 22.2 onward, DNS calls are no longer synchronous
(which would block IVT if the DNS server was slow), but
asynchronous (handled in the background). This solves a number of
annoying issues.
The RESOLVE statement takes a list of sources to
query.
Each source is either:
The sources are queried in the order you specify them.
A filename is simply the (full) pathname of the file.
A DNS server must be the dotted-decimal address of a name
server, optionally followed by a / and a decimal timeout
in seconds, optionally followed by a second slash and a port
number.
IVT will wait for the specified number of seconds for an answer
from the DNS server. When no reply is received, the next name
source is tried.
The timeout defaults to 20 seconds. The port number to 53
(DNS).
During the timeout, IVT WILL respond to input from other
sessions, the keyboard, scripts, etc. since the built-in DNS
resolver is home-rolled and asynchronous. See also the DOMAIN statement, to try to resolve the name in a
number of different domains.
When you specify the literal HOSTBYNAME, IVT will use that function (the asynchronous, non-blocking Windows version of it).
When you do not use a RESOLVE statement in your IVT.RC files, IVT will default to scanning the HOSTS file in your OS directory, followed by a HOSTBYNAME.
The AVOID:IP-address is a little used option that can
be used to try and correct bad DNS setups. When a
queried DNS server sends a "redirect" to IVT, this
normally causes IVT to re-send the query to the specified
address.
When such a redirect address is specified in an AVOID
clause, IVT will simply give up on that specific redirect and try
the next alternative.
This can be used when a DNS server redirects you to a server on
the Internet, but you are behind a firewall which blocks the
query, causing long timeouts.
Example:
RESOLVE
"C:/Windows/system32/drivers/HOSTS,193.79.171.11/3/53, \
193.79.171.100,HOSTBYNAME"
This would first look in your local HOSTS file, then query a
nearby DNS server which is unreliable (often down, hence the
timeout of only 3 seconds), then resort to another, slower but
more reliable server (default timeout, thus 20 seconds). The
default port of 53 is specified explicitly as an example, it may
be omitted,
If all queries fail, IVT will do a call to the OS with
"gethostbyname".
If a name cannot be resolved, session establishment will fail with a "Host unknown" error message (see also ONERROR).
You might use the file to configure the IP-addresses of servers that you use often if you are plagued by unreliable DNS-servers. If not, it is best to leave ALL resolving to a DNS server because when servers change their address the DNS-server will know about it, where your local file does not.
The NO_RESOLVE statement (no parameters) will delete
any previous list of remembered resolvers. This can be used to
forget settings from other configuration files, or force things
back to their defaults.
Note that RESOLVE adds to the list, you may need to clear the
list before adding your own. QuerySetting("RESOLVE","GLOBAL") can be used
to get the current list.
Note: Version 21.1c of IVT adds a local cache to the
name resolver, where resolved entries are kept for a short while
(30 seconds). This is intended to prevent floods of queries for
the same hostnames when you have a group of sessions to the same
(or a small set) of hosts, or proxy server. For example, a group
of 30 sessions all using the same (named) proxy server would
cause 30 identical DNS queries to be performed without this local
caching of answers.
The cache is cleared when the RESOLVE statement is used to
alter resolving.
See also the RESOLVE_TRACE
command to print debugging output.
See also the DOMAIN statement to search a
number of domains.
See also the $IVT_NETW_DOMAIN
variable.
See also the $IVT_IP_CANON
variable.
See also the RESOLVENAME and RESOLVENAME_EX functions.
See also Winsock, TELNET, SSH and RLOGIN.
12.2.44: RESOLVE_TRACE (Show name resolution and DNS debugging)
RESOLVE_TRACE
NO_RESOLVE_TRACE
Default: NO_RESOLVE_TRACE.
This is a per-session
setting.
This command can be used to make IVT print out information about attempts to resolve a hostname into an IP-address. This assumes the WinSock protocol and that the RESOLVE statement has been used to configure DNS (Domain Name Server) addresses.
Whenever a DNS NameServer is queried or a HOSTS type file is searched, IVT will show some details on the screen concerning the query and the result.
This might be helpful when you receive 'Host unknown'
errors.
This option can also be changed from this setup panel, which works only for
the current session (so you must set this before you initiate the
session by choosing "setup" from the create session dialog).
12.2.45: RLOGIN_LOCALUSER (Name of local user for RLOGINs)
RLOGIN_LOCALUSER stringexpression
Default: None.
This is a per-session
setting.
This is only for use with the RLOGIN
protocol (and ignored otherwise).
This sets the name that will be transmitted to the remote (Unix)
host and which identifies the user on the local PC. Since IVT has
no way to determine who you really are, it will send whatever you
tell it to.
A reasonable value might be:
RLOGIN_LOCALUSER $ENV_USERNAME
which will set it to your Windows username (if any).
The Unix machine will use this name to see if the user is 'trusted'. It can be configured along the lines of 'User john on system X is equivalent to user johnb on THIS system'. This is not very secure.
See also RLOGIN_REMOTEUSER and RLOGIN_TERM.
12.2.46: RLOGIN_REMOTEUSER (Name of remote user for RLOGIN)
RLOGIN_REMOTEUSER stringexpression
Default: None.
This is a per-session
setting.
This is only for use with the RLOGIN protocol (and ignored otherwise).
This sets the name that will be transmitted to the remote (Unix) host and which identifies the user you want to login as on that host. When the host decides to trust you, it will log you in without prompting for a password. If not, it will either disconnect or simply ask you to prove your claim by asking for a password.
When you do not specify this value, IVT will use whatever you
have entered in the create session dialog in the "User name"
field.
If you do not specify a user there, but have specified a value
for the RLOGIN_REMOTEUSER, that latter value is also
assigned to the $USER variable.
See also RLOGIN_LOCALUSER and
RLOGIN_TERM.
See also the password learning and automatic
login system.
12.2.47: RLOGIN_TERM (Terminal type for RLOGIN sessions)
RLOGIN_TERM stringexpression
Default: None.
This is a per-session
setting.
This is only for use with the RLOGIN protocol (and ignored otherwise).
It sets the type of terminal you claim to use (it will end up in the Unix TERM environment variable). The default is "vt220", which IVT emulates. You can set it to anything else. When you use the special TIC (Terminal Information Compiler) on the IVT.TIC file delivered with IVT the host will know a terminal type "ivt", which will allow it to make better use of IVT's special features.
See also Winsock, RLOGIN_LOCALUSER and RLOGIN_REMOTEUSER.
12.2.48: SAVEGROUPNAME (Save chosen group name as if typed)
SAVEGROUPNAME
NO_SAVEGROUPNAME
Default: NO_SAVEGROUPNAME
This is a global setting.
When turned on, this will treat a group name chosen from a list as if it was typed in the create-session dialog. This will make the name of the group appear in the "Create Session" dialog the next time that appears, so the same group can be chosen by simply clicking on "OK" or hitting enter.
Added upon special request by Gert Leerdam.
The default is NO_SAVEGROUPNAME, which will cause group
names to be treated specially and not stored for recall.
There currently is no setup item for this. This global setting can only be configured in an IVT.RC file.
12.2.49: SAVEHIST (Enable history pager yes/no)
SAVEHIST
NO_SAVEHIST
Default: SAVEHIST.
This is a per-session
setting.
Normally, IVT will save lines that scroll from the top (or
bottom) of the screen for later viewing in the history pager.
This is done very efficiently, but in some
cases you want to disable it.
If such a case applies to you all the time, you can use
NO_SAVEHIST to make it the default, rather than using the
setup screen to change the setting for
the current session only.
12.2.50: SHOWLICENCE (Show licence on screen during startup yes/no)
SHOWLICENCE
NO_SHOWLICENCE
Default: SHOWLICENCE.
This is a global setting.
Normally, IVT will show a text like: This version of IVT is
licensed to...
during startup. The name of the licence-owner and the number of
users is displayed. Some organisations do not want that, so it
can be suppressed using:
NO_SHOWLICENCE
This is a simple global option, only usable in an IVT.RC file. There is no interactive setup item for this setting.
12.2.51: STORE_CMD_PARAMS (Save host/user from command line)
STORE_CMD_PARAMS
NO_STORE_CMD_PARAMS
Default: STORE_CMD_PARAMS.
This is a global setting.
Normally, when IVT starts up and you have typed a hostname and optionally a username on the command line, IVT will treat those names as if you had typed them in the "Create Session" dialog and will save them in the registry, so they appear in the dialog when you disconnect, or when you restart IVT without parameters.
However, some users start IVT using shortcuts with predefined names in them, and they do not consider those names as "typed" and worth saving, they would rather see the names they actually typed into the "Create Session" reappear, and not have them overwritten by the names from the shortcut.
Therefore, the NO_STORE_CMD_PARAMS command can be used to prevent the information being saved in the registry.
There is no setup item or registry setting for this option, you must specify it in your IVT.RC file.
See also EXPLICIT_EXIT and RECONNECT, which also determine what happens when the user disconnects from a host.
12.2.52: STRICT_CHECK (More rigid syntax/execution checks)
STRICT_CHECK VARIABLES
STRICT_CHECK ALL
NO_STRICT_CHECK VARIABLES
NO_STRICT_CHECK ALL
This is a global setting.
The STRICT_CHECK keyword can be used to provide extra
checks for the IVT script engine. This is work-in-progress:
Currently only one option is implemented: strict checking on the
evaluation of variables.
When you turn ALL on, all future enhancements will also be turned
on.
When you turn this on, whenever a reference is made to a
variable that does not exist, IVT will print a diagnostic showing
the name of the variable and the place (script name and line
number in the file) where the reference is.
IVT normally evaluates a non-existent variable to the empty
string, but that also opens the door to undetected typos (the
wrong name will always silently evaluate to nothing).
The STRICT_CHECK VARIABLE will take away the silence (the
variable still evaluates to the empty string).
Additionally, it will complain about bad type usage (treating a
hash or array as if it is a variable, or vice versa).
Suppose you have a variable called "SomeOption" that can be not set, or set to some specific value. You will have to change code such as:
IF $SomeOption == 1 THEN ...
To:
IF TypeOf(SomeOption) != "UNKNOWN"
&& $SomeOption == 1 THEN ...
The first version will throw a diagnostic when $SomeOption was never assigned a value. The second will only reference the value of $SomeOption when it is an existing variable (not unknown).
Every reference to a non-existing variable, hash, array will be caught.
Because the above is a lot of typing, it can also be written as:
IF GetValue("SomeOption") == 1 THEN
...
The GetValue yields the value of a
plain, simple variable when it exists and the empty string when
it does not, without triggering the STRICT warning.
The longer TypeOf construction must be used
to test the existence of the complex types (hashes and
arrays)
Alternatively, you can explicitly use a LOCAL declaration of a variable, or use a SCOPE keyword to declare other types of variables. This will prevent the diagnostic, too.
Watch this space for future enhancements.
12.2.53: TCP_FLOOD (Prevent too many TCP/IP sessions being created)
TCP_FLOOD NrOfSessions MsDelay
NO_TCP_FLOOD
Default setting is: NrOfSessions 10, MsDelay
1500.
This is a global setting.
When you have a CREATEGROUP with many sessions in them, IVT triggers a protection mechanism in TCP/IP stacks of Windows machines. To quote from MSDN:
Limited number of simultaneous incomplete outbound TCP
connection attempts.
Detailed description
The TCP/IP stack now limits the number of simultaneous incomplete
outbound TCP connection attempts. After the limit has been
reached, subsequent connection attempts are put in a queue and
will be resolved at a fixed rate. Under normal operation, when
applications are connecting to available hosts at valid IP
addresses, no connection rate-limiting will occur. When it does
occur, a new event, with ID 4226, appears in the system's event
log.
Why is this change important? What threats does it help mitigate? This change helps to limit the speed at which malicious programs, such as viruses and worms, spread to uninfected computers. Malicious programs often attempt to reach uninfected computers by opening simultaneous connections to random IP addresses. Most of these random addresses result in a failed connection, so a burst of such activity on a computer is a signal that it may have been infected by a malicious program.
End quote.
However, IVT can create great bursts of outgoing sessions, and
these extra connections do not seem to be queued, but they
fail.
The TCP_FLOOD command tries to work around this, by slowing IVT down so it stays below the threshold to be classified as "malicious".
The default is to not create more than NrOfSessions in any MsDelay interval. In practice, this will prevent the problem from occurring.
When you use a proxy server, the same mercy is shown.
Setting NO_TCP_FLOOD will turn this feature off - IVT will simply create the sessions as fast as it can.
This setting can also be changed from this setup screen and the current setting is saved in the registry.
See also MERCY_MODE, which
implements a very similar delay.
See also XAUTH_DELAY, which works
around another bug in SSH.
See also PASTESPEED to slow down large
paste operations.
12.2.54: TCP_KEEPALIVE (Enable/disable TCP socket level keepalive )
TCP_KEEPALIVE
NO_TCP_KEEPALIVE
Default: TCP_KEEPALIVE.
This is a per-session
setting.
NOTE: TCP keepalives should not be confused with the
application-level keepalives described under SSH_KEEPALIVE and TELNET_KEEPALIVE.
If in doubt, you probably want application-level keepalives; TCP
keepalives are provided for completeness.
The idea of TCP keepalives is similar to application-level keepalives, and the same caveats apply. The main differences are:
TCP keepalives are enabled by default.
This setting is configurable per session, is stored in the
registry and can be modified in this
setup dialog.
12.2.55: TCP_NODELAY (Enable/disable Nagle algorithm)
TCP_NODELAY
NO_TCP_NODELAY
Default: TCP_NODELAY.
This is a per-session
setting.
This option is used for TCP/IP sessions only (TELNET, SSH and
RLOGIN).
The Nagle TCP/IP algorithm was designed to avoid problems with
small packets, called tinygrams, on slow networks. The algorithm
says that a TCP/IP connection can have only one outstanding small
segment that has not yet been acknowledged. The definition of
"small" varies but usually it is defined as "less than the
segment size" which on Ethernet is about 1500 bytes. By delaying
slightly, multiple small packets can be combined into one larger
packet, improving overall throughput for most applications.
Since IVT typically produces small network packets (one
keystroke per packet), it is undesirable to have Nagle (i.e.
delaying) enabled. Fast typists will notice a sluggish keyboard
response on slow networks.
Therefore, TCP_NODELAY is the default, small packets are
sent immediately.
In some cases it may be desirable to change this default.
Note that changing the option only affects new sessions, existing
sessions are unaltered.
The option can also be changed from this setup panel.
The setting is also saved in the registry.
12.2.56: TIPS (Enable/Disable start-up tips)
TIPS
NO_TIPS
This is a global setting.
IVT sports a long list of short tips, one of which can be displayed at start-up time. One of these tips is picked at random.
If you already know everything there is to know about IVT, you
can disable this feature with a NO_TIPS keyword in your
IVT.RC file.
This setting can also be changed from this
setup screen (after which you have to save the settings, of
course).
You can also use the -T command line
option to suppress tips.
NOTE:
This field is one that can be configured using the installation
wizard that is automatically started when you install IVT.
Because it would give conflicts when you change this both in the
configuration file created by the wizard and in interactive
setup, this item is disabled in
interactive setup.
If you want to change this item, re-run the installation
wizard:
Menubar->setup->Re-run initial setup script
The wizard has as the first button a "Do not use wizard" feature. If you choose that, all items in interactive setup will be enabled again (and you must configure all the necessary options there and save the setup, or edit the IVT.RC file manually).
NOTE: Since the tips are in English only, the wizard will turn tips off by default when you have chosen another language for IVT's interface.
12.2.57: TYPEDHOSTS (Show manually entered hosts)
TYPEDHOSTS
NO_TYPEDHOSTS
Default: TYPEDHOSTS
This is a global setting.
When you click on address book icon in the main create-session dialog (after the hostname field), a dialog pops up that allows you to choose a connection from a list of previous connections and explicitly defined connections set by the HOSTLIST command. There is a button in the panel that allows you to turn the display of manually entered hosts off. This is handy if you have only a few hosts that you connect to, and you have described them all in the host list.
The TYPEDHOSTS setting allows initial display of typed
hosts.
The NO_TYPEDHOSTS setting suppresses them. By clicking on
the button you toggle the setting, the current value of which is
also saved in the registry.
12.2.58: UPLOAD (set upload directory)
See DOWNLOAD.
12.2.59: VERSION_SERVER (notify of new releases of IVT)
VERSION_SERVER hostname port
This statement is meant to be used in environments where IVT
is used by a large user base, installed locally on PC's and
updated now and again.
See also IVTUPGRADE.
When IVT starts up and VERSION_SERVER is configured, it
will attempt to contact the given hostname on the given
(numeric) port. When that succeeds, it reads up to 1KB of
data from that server and disconnects.
The connection to the version server is handled by a background
thread in IVT, so normal startup is not impeded when the server
is down or unreachable.
The FIRST line of the received data is supposed to contain the version number of the latest & greatest available version of IVT, followed by the build number and an optional download directory.
The running IVT will compare its own version and build number
with the ones received, and when it finds that it is outdated, it
will display the rest of the received data in a popup to the
user.
When it finds that it is at least as new as the received version,
it will continue with normal startup immediately (no popup is
displayed).
In the case that IVT is outdated, it will check for the
presence of an IVTUPGRADE.EXE program
in the IVT install directory. When found, it will add a button
called "Upgrade now" to the popup. When the user clicks this
button, IVT will start the IVTUPGRADE program, passing it the
install directory and the master directory as passed by the
version server as arguments.
IVT itself will exit (so it can be overwritten). Also, when
PAGEANT is running, it will be stopped.
The IVTUPGRADE program will copy all files and directories in the
master directory to the IVT install directory. A progress window
and a summary will be displayed.
The upshot is that everybody who runs an outdated version of IVT will be notified of new releases of the software when they restart IVT and can obtain a new version with a single mouse click. IVT will retry the version-server query once every 24 hours, so even people that have IVT running for weeks on end are notified of upgrades.
The version server that is contacted can be a Unix host or a Windows host, the supplied ivtversion.c program can be compiled and used on both.
The ivtversion executable is started as:
ivtversion portnumber file
E.g:
ivtversion 4500 versfile
The portnumber must be the same as used in the
VERSION_SERVER statement.
The versfile contains information about the latest
release. Lines in that file that have a '#' as the first
character are ignored. Example:
--- Cut here ---
# This file is read by starting IVTs to determine the latest
# available version. The first non-comment line must document
# the version (and optionally build) of the new version:
21.1 20872 \\10.75.73.4\IVT_Complete
# The rest of this file is displayed as popup to the user.
# There can be ONE %s in the text (first) and a %d (second)
which
# The %s is substituted in the message by the CURRENT version
number
# if the outdated IVT. The %d is substituted by the current build
number
# of the outdated version.
Version 21.1 (build 20872) of IVT is available!
You are currently using version %s (build %d)
New features are:
Any IVT that sees that it is older than version 21.1, or has a build number below 20872 will show the message. All others will show nothing.
It is the responsibility of the administrator to make sure that the master directory (\\10.75.73.4\IVT_Complete) actually contains a correctly configured master distribution of a working IVT setup.
The source of the ivtversion server (ivtversion.c) is part of
the distro.
This program can be compiled on Unix and Windows.
The ivtupgrade program is also part of the distro, in both source
and executable (windows) form.
12.2.60: WSOCKTIMEOUT (set timeout for connection setup)
WSOCKTIMEOUT seconds
Default: WSOCKTIMEOUT 21
This is a global setting.
Whenever IVT attempts to connect to a remote computer over the
WinSock protocol, it sends out a packet
into the network to whatever IP address it found using the
RESOLVEr or which you specified
directly.
The remote computer has to answer, but the packet can get delayed
or lost.
IVT will, by default, wait up to 21 seconds for an answer before
giving up.
When no answer is received within 3 seconds, a message 'Trying
...' is displayed which shows the IP address that IVT is
connecting to and how long IVT is still prepared to wait.
For some hosts, 21 seconds is way too long. If you know the host
is located on the same LAN as you are on, a connection is
typically established within one or two seconds, or not at
all.
Therefore, you can set the timeout with the
WSOCKTIMEOUT command. The value is in seconds. When the
timeout occurs, an error message is displayed.
Also, the socket layer software of Windows may give up before IVT
does.
This timeout is used for all TCP/IP connections initiated by IVT (Telnet, SSH, Proxy connections, tunnels, X-forwarding and so on).
See also the RESOLVE statement for
configuring the hostname resolver of IVT.
See also ONERROR.
This value can also be changed from this setup screen, and is saved in the registry.
12.2.61: XAUTH_DELAY (Handle XAUTH locking problem)
XAUTH_DELAY delay
Default setting for delay is 500 Ms.
This is a global setting.
IVT can trigger a bug in many SSH server implementations.
When you use a session group, or a repeat-factor in the Create
Session panel to create many SSH sessions to the SAME server
using the SAME user-ID, and you have enabled X-forwarding, then
you ask the server to create and administrate many X-displays for
that user in the same fraction of a second (because IVT creates
all these sessions in parallel).
On Unix, the XAUTH program is used to enter an ID (MIT cookie)
in a file, owned by the user logging in, called .Xauthority.
When multiple entries are created in the file on the same time,
you may see:
/usr/X11R6/bin/xauth: error in locking authority file
/home/.../.Xauthority
And the X-DISPLAY tunnel for the session that has this error
will NOT work.
IVT tries to avoid this problem by artificially delaying the
session creation for SSH sessions when:
Then IVT will delay the specified number of Ms in this
statement (default 500, or half a second) before creating the
display for the next session.
This only happens for sessions sharing the same host and user, no
delaying is performed for sessions to different hosts, or using
different accounts on the same host.
Attempts to wait for the actual X-display negotiation to
finish before starting the next one on the same host did NOT fix
the problem. Apparently the SSH server first acknowledges the
creation of the X-display tunnel before it starts the XAUTH
program. Only a reasonable substantial delay solves this.
Depending on the speed of your host or the number of sessions you
create, you can lower or increase this value. A value of zero
turns this feature off.
If you create very many sessions to a single host (e.g. for a performance test) it may be wise to disable X-forwarding.
See also SSH_XAUTH and MERCY_MODE.
You can also change this value in this setup panel.
The current value is saved in the registry.
12.2.62: XTERM_256 (XTERM 256 color mode)
XTERM_256
NO_XTERM_256
Default: XTERM_256
This is a per-session
setting.
This enables (or disables) 256-color mode in IVT. This is another extension on the VT220/Xterm standard. The original VT series terminal only had 8 colors, where each color could be normal or bright, for a grand total of 16 distinct colors. Both the foreground and background of each character can be set to one of these 16 colors.
The XTERM_256 mode extends that to 256 distinct colors for
both background and foreground, so that allows over 64.000 color
combinations.
Moreover, the RGB (red/green/blue) color values of those 256
colors can be explicitly programmed, allowing you to display 256
colors out of the millions of available colors.
As yet another extension there is a new escape sequence which allows to set the RGB value of every individual character cell. Both the foreground and background colors can be set, so this extends the color capabilities of IVT to the maximum supported by Windows: Every character can have a unique color.
There are a few escapes codes added to IVT to support these colors:
ESC]4;20;rgb/FF/00/FFESC\
In the "Support Programs" folder of a default IVT installation
you can find a Perl script named "256color.pl" that exercises
these escape codes and shows the default color cube that can be
presented this way.
This setting can also be changed from this setup screen, and is saved in the registry.
12.2.63: ZMODEM_AUTO (Automatic ZMODEM start-up)
ZMODEM_AUTO
NO_ZMODEM_AUTO
Default: ZMODEM_AUTO.
This is a per-session
setting.
Normally, IVT will recognize a ZMODEM file
transfer starting (the zmodem protocol sends a unique string
when sending or receiving a file).
When you use FILE_SEND and FILE_RECEIVE with the ZMODEM protocol, it is
essential that this is turned off because the explicit start of
the file transfer via the FILE_SEND and
FILE_RECEIVE calls will interfere with the implicit
start.
NO_ZMODEM_AUTO will turn this automatic starting of the
file transfer off.
ZMODEM_AUTO will turn it on.
The current state can be queried using the $ZMODEM_AUTO variable.
The defaults setting can also be changed from this setup screen.
12.2.64: ZMODEM_PACKET (Maximum size of transfer blocks)
ZMODEM_PACKET n
Default: 1024.
This is a per-session
setting.
When files are transferred using ZMODEM, it sometimes overruns the host with packets of 1024 bytes. If you experience problems with zmodem (repeated retries, very low throughput but ultimately successful transfer) you might try lowering this value. The maximum is 1024, minimum is 8 bytes.
Especially older versions of OpenSSH servers and AIX systems have problems with packet sizes over 50(!) bytes. Setting a packet size of only 50 will actually dramatically improve throughput and prevent overrun errors.
This value can also be changed from this setup screen and is saved in the registry.
12.3.1: ADDRESSBOOK_ONLY (Limit hosts to connect to)
ADDRESSBOOK_ONLY
NO_ADDRESSBOOK_ONLY
Default: NO_ADDRESSBOOK_ONLY
This is a global setting.
The HOSTLIST command can be used to
create an address book that is normally available to the user by
using address book icon in the "Create Session" dialog. It offers
a list box where the user can pick a host (or several hosts
simultaneously!) to connect to.
The list also normally contains the hosts typed manually.
If you use ADDRESSBOOK_ONLY, the create session dialog
is bypassed and the user ends up being able to choose a host from
the address book ONLY.
This offers a little extra security, but also allows IVT to be
used by users who don't know or care about hosts and users, and
just want to connect to some application with a minimum of
hassle. Since the HOSTLIST command allows
you to add descriptive comments, this can reduce the work for the
user to get connected to a single double click on the proper
entry in the list.
This can be used as an alternative to having many shortcuts on
the desktop, one for each host.
Note that the address book dialog allows multiple selections in one go, to create a group of sessions at once.
The default for this is NO_ADDRESSBOOK_ONLY.
There is no setup item to change this dynamically, since it is
only useful in combination with a bunch of HOSTLIST
commands in your IVT.RC file.
The manually added entries in the list (typed by the user in the "Create Session" dialog) are suppressed when this option is used.
The session group editor and session group start features of IVT are also disabled when the address book only mode is active.
The "edit private address book" script, which is part of the standard IVT installation will refuse to work when this mode is in effect.
See also IVT_DIALOGSTATE, for
more ways of limiting users.
See also secure mode.
12.3.2: ADVANCED_MODE (Advanced user interface)
ADVANCED_MODE
NO_ADVANCED_MODE
Default: NO_ADVANCED_MODE
This is a global setting.
IVT has very many options and configurable items. If you are
new to IVT, the setup screens and many menu-options can be rather
overwhelming.
To address this, a new option was added :-)
The default NO_ADVANCED_MODE will reduce the menus and
setup screens to show only those that will suffice for normal use
by 80% of the users.
When ADVANCED_MODE is turned on, all available options and
possibilities will be shown by IVT. The "Setup" entry in the menu
bar has a toggle-type menu item to switch the advanced mode on
and off.
Note: The mode only affects the display of all the configurable options, it does not affect the functionality. So you can switch back and forth between the advanced and normal mode without the risk of turning features off.
This option can also be changed from this setup screen and the current setting is saved in the registry.
12.3.3: ALT_IS_MENU (ALT by itself activates menu bar)
ALT_IS_MENU
NO_ALT_IS_MENU
Default: ALT_IS_MENU.
This is a global setting.
The default behavior of a Windows application is to activate
the menu bar when the ALT key is used
by itself. This is also the IVT default.
However, the ALT key is used for many things in IVT and
accidentally activating the menu bar can cause undesired
side-effects. If you always use the mouse to access the menus,
then using NO_ALT_IS_MENU will disable the ALT key (it
changes ALT to a no-op, unless reprogrammed using KEYMACRO).
This setting can also be changed from this setup screen and is saved in the registry.
12.3.4: ALT_ENTER (Alt+Enter does full screen)
ALT_ENTER
NO_ALT_ENTER
Default: ALT_ENTER.
This is a per-session
setting.
Normally, when you type Alt+Enter, IVT will go full-screen,
which will obscure the task-bar of windows and will result in the
maximum number of rows and columns (given the current font).
Typing another Alt+Enter will return IVT to the previous
size.
When this is undesirable, this can be disabled using
NO_ALT_ENTER.
See also NO_GUI_RESIZE, which disables
all sorts of resizing.
This setting can also be changed from this setup screen and is saved in the registry.
Note that you can also disable the MENUBAR, STATUSBAR, TABSBAR and VSCROLL in full screen mode so you only have plain characters on the entire monitor.
12.3.5: ALT_SCREEN (Allow alternate screen)
ALT_SCREEN
NO_ALT_SCREEN
Default: ALT_SCREEN.
This is a per-session
setting.
This determines how IVT reacts to XTERM escape sequences that control the behavior of an alternate screen. When enabled, it allows IVT to swap between the normal screen and "alternate" screen. Normally, Unix programs that use an XTERM terminal will switch to the alternate screen when a full-screen program (like the VI editor) starts up and restore the normal screen when the program exits. The result is that when you return to the prompt, the screen shows the VI command and previous output, instead of whatever VI left on the screen.
Depending on what you are used to, the "other" behavior can
drive you to distraction, which is why it is configurable in
IVT.
Note that you have to set the TERM environment variable to either
"xterm" or an updated "ivt" for the alternate screen feature to
work.
When disabled, IVT will simply ignore the escape sequences that
control the alternate screen. See here for details.
This feature can also be changed (per session) from this setup screen, and is saved in the registry.
12.3.6: AMBIGUOUS_CJK_WIDE (Treat ambiguous CJK characters as wide)
AMBIGUOUS_CJK_WIDE
NO_AMBIGUOUS_CJK_WIDE
Default: NO_AMBIGUOUS_CJK_WIDE
This is a per-session
setting.
There are some Unicode characters whose width is not well-defined. In most contexts, such characters should be treated as single-width for the purposes of wrapping and so on; however, in some CJK contexts, they are better treated as double-width for historical reasons, and some server-side applications may expect them to be displayed as such. Setting this option will cause IVT to take the double-width interpretation. If you use legacy CJK applications, and you find your lines are wrapping in the wrong places, or you are having other display problems, you might want to play with this setting. This option only has any effect in UTF-8 mode.
This setting can also be changed in this setup screen and is saved in the registry.
12.3.7: ARABIC_SHAPING (Enable Arabic shaping of text)
ARABIC_SHAPING
NO_ARABIC_SHAPING
Default: ARABIC_SHAPING
This is a per-session
setting.
IVT supports shaping of Arabic text, which means that if your
server sends text written in the basic Unicode Arabic alphabet
then it will convert it to the correct display forms before
printing it on the screen. If you are using full-screen software
which was not expecting this to happen (especially if you are not
an Arabic speaker and you unexpectedly find yourself dealing with
Arabic text files in applications which are not Arabic-aware),
you might find that the display becomes corrupted.
Using NO_ARABIC_SHAPING will disable Arabic text shaping so that
IVT displays precisely the characters it is told to display.
You may also find you need to disable bidirectional text display.
This feature can also be changed (per session) from this setup screen, and is saved in the registry.
12.3.8: AUTOCONTRAST (Adjust colors automatically for contrast)
AUTOCONTRAST
NO_AUTOCONTRAST
Default: NO_AUTOCONTRAST.
This is a per-session
setting.
When you change the default background color of IVT, that
affects the display of colored text by applications.
If an application assumes you have a black background, the colors
it displays will have to be chosen such that they stand out
sufficiently on black.
If you change IVT's background to white, the same application
colors may be almost invisible. Many applications allow you to
choose some sort of color scheme, but if you use IVT's options
and use RGB to change the actual color
displayed for "white" or "black", the result can become pretty
unreadable.
The AUTOCONTRAST is made to fix this. It automatically adjusts the color of characters to make sure they have sufficient contrast with the actual background color of IVT.
It works as follows:
The algorithm that calculates the new color tries to stay as close to the original color as possible, but is experimental. If you encounter a case where this works poorly, please let me know so I can try to fix it.
See also COLORS, HIGHLIGHT and RGB.
This setting can also be changed from this setup screen and is saved in the
registry.
12.3.9: AUTOCOMPLETE (Behaviour of the host name entry field)
AUTOCOMPLETE [MatchMode] [ListMode] [SortMode]
NO_AUTOCOMPLETE
MATCH_BEGIN
MATCH_ANY
OFF
ALLHOSTS
TYPEDHOSTS
SORTED
LIFO
Default: AUTOCOMPLETE MATCH_ANY ALLHOSTS SORTED This is a global setting.
This setting controls the behavior of the auto-completion of
host names typed into the main "Create session" dialog of
IVT.
By default, all hosts from your address
book, and the last MAXTYPEDHOSTS
of previously typed names are used for auto-completion.
Partial matches will be displayed and you can pick one of them,
or just type a name followed by a TAB or ENTER to create a new
name.
When you use MATCH_BEGIN, only names matching at the
beginning of the data you type are selected.
When you use MATCH_ANY, IVT performs a substring match
(when the characters you type are PART OF a host name, it is
selected for auto-complete).
When you use ALLHOSTS, IVT selects all known names from
the address book, and all saved names it has stored.
When you use TYPEDHOSTS, only previously typed names are
considered.
When you use NO_AUTOCOMPLETE or AUTOCOMPLETE OFF, the feature is turned off and the result is that you have the normal text-field where every name has to be spelled out in full.
The list is sorted alphabetically by default, but LIFO can be specified to force unsorted order (or, more precisely, the order in which the hosts were entered originally, followed by the address book hosts if you have any).
When you select a previously typed name from the drop-down box and type the DELETE key, that name is deleted from the list.
This feature is intended to replace the more complex HOSTLIST command and the address book editor for
users who only use a few hosts. The address book feature is
accessible through the button to the right of the host name
field.
It allows multiple-selection, filtering, grouping and so on, but
this may be a bit of an overkill for simple installations.
This setting can also be changed from this setup screen and is saved into the registry.
If you want to query the setting using the QuerySetting function:
12.3.10: AUTOLOG (Generate session log files)
AUTOLOG LINES|ALL|OFF ASK|AUTO|AUTOQUIET "path expression"
[Options...]
Options:
TIMESTAMP_ACTION - Time stamp user actions.
(NO_)TIMESTAMP - Time stamp
every line yes/no.
(NO_)STATUS -
Show as icon in status line yes/no.
(NO_)HEADER -
Add a header line to log file yes/no.
FILETYPE -
Set type of generated file.
Or:
AUTOLOG APPLY | STATIC | DYNAMIC | FORCE
Default: Off.
This is a per-session
setting.
NOTE: Easiest way to get log files of all sessions is
to use the interactive setup (F3) and click on "Logging".
Select the options you want and then save the settings.
A more flexible (and more complex way) is described below.
AUTOLOG facilitates the automatic logging of sessions
to a file.
This provides a record of all the sessions you make, what
commands were issued, what the responses were, etc. Optionally,
everything can be time-stamped.
The path expression value determines where the session log files will be created. The string can refer to IVT special variables, such as $HOSTNAME, $USER and $IVTDIR. Also, a "%d" can be made part of the name, and IVT will substitute this with unique number. For example:
AUTOLOG ALL AUTO
"$IVTDIR/SessLogs/${HOSTNAME}_%d.txt"
Will create the session logs in the SessLogs
subdirectory below the IVT installation directory. Any
directory in the path that does not exist yet will be
created automatically. IVT will create files that have the
name of the host as a base, a unique sequence number appended,
and .txt as extension.
Note the curly braces around the HOSTNAME variable, if
they are omitted it will evaluate to the legal variable name
"HOSTNAME_" (which is usually empty).
Also note that IVT will evaluate the string when the session is
created, NOT when the statement is read, so the hostname will be
the name of the host you are actually connecting to.
NOTE: When you assign a new value to $HOSTNAME or $USER and
AUTOLOG references those variables, IVT will dynamically
switch to a new log file for the new host name. This can be
prevented using STATIC (do not switch automatically) and
re-enabled when you do DYNAMIC. APPLY can be used
in a PRECONNECT script to force the log file to be created
given the current values.
The FORCE flag closes any current log file and creates a new one
given the current configuration and values of $HOSTNAME and
$USER.
Also note that this gives you to possibility to have a
PRECONNECT script that allows a script
to determine the names of the log files to use.
See the examples at the end of this section.
The sequence number is necessary to differentiate between sessions to the same host, since IVT can have such sessions simultaneously! If you force IVT to use the same log file for several sessions, the output from the sessions will be mixed, with no (easy) indication of which is which.
Any colons in the resulting file name (except for one in the 2nd position, this is assumed to be a drive letter) are changed into underscores, since "myhost:80" is not a valid FILE name in Windows, but it is a valid HOST name in IVT.
The other parameters are:
FILETYPE=UTF-8: Encoded Unicode file
(default).
FILETYPE=ANSI: Plain ANSI text file.
FILETYPE=UNICODE: Little endian, Unicode (16-bits per
character).
Next, you can choose how the file used for logging session data is determined. There are 3 basic possibilities:
Examples:
AUTOLOG ALL AUTO
"$IVT_INFO{'APPDATA'}/SessLogs/${HOSTNAME}_%d.txt"
This will create a numbered log file named after the host for
every session you create, in the APPDATA directory (which is user
specific).
Since logging each and every session may be more than what you
require, consider adding something like this line to your IVT.RC
file:
AUTOLOG OFF AUTO
"$ENV_HOMEDRIVE$ENV_HOMEPATH/IvtLogs/${HOSTNAME}_%d.txt"
This disables logging by default. If you want to enable logging for a specific session, use F3 (setup) from the "Create Session" dialog, and change the logging type to "All received bytes" or "Completed lines" in the log settings panel. After you "Accept" those settings, they will apply to the current session only. The AUTO setting will result in an message when the session is established. This way, the complex bits of the configuration will be the defaults you set (create logs in your home directory).
If simple numbered files for every host do not satisfy your requirements for flexibility, you will have to write a PRECONNECT script that tunes the AUTOLOG statement for every session. For example, say you want separate directories below the SessLogs, named after the day the sessions were created, so you can find a record of your sessions by date (which also allows for easier deletion of old log files). This would look like this (and this script is actually included in the IVT distribution):
########################################################################
# Automatically create a session log for every session.
# Creates a sub-directory with the current month as the name.
# Enable by adding he following line to the end of your personal
IVT.RC file
# in your homedrive/homepath:
# INCLUDE "$IVTDIR/ivt/autolog.ivt"
Script STARTUP
# Change this to the name of your logging
directory and type of logging.
# Do that by overruling this value in your
personal config file, not
# by altering this script!
GSET AutologBaseDir =
"$IVT_INFO{'APPDATA'}/IvtSessionLogs"
GSET AutologType =
"ALL" # Or "LINES", see doc on "AUTOLOG"
END
########################################################################
ONCONNECT * DoAutolog
Script DoAutolog
LOCAL TodayDir
HIDE
# If the user has overruled the current AUTOLOG
setting, use those.
IF $IVT_AUTOLOG_MODIFIED == 1 THEN
RETURN
# Note: AUTOLOG will automatically create all
missing directories
# in the pathname.
TodayDir = Concat("$AutologBaseDir/",TIME("DATE",TIME(),"%Y-%m-%d"))
VOLATILE AUTOLOG $AutologType AUTO
"$TodayDir/${HOSTNAME}_%d.txt"
END
########################################################################
########################################################################
Careful study of this script will show you how flexible scripting in IVT can make things. The supplied script can serve as a starting point for your own.
You can also inspect and change the settings from this setup screen.
The current settings are saved in the registry.
Also, note that a script can use an AUTOLOG statement while the session is already using a log file. When you do this, the current log file will ALWAYS be closed immediately, and after the new settings are applied (to the current session only, of course), a new log is opened. This allows you to monitor traffic on a session, and start a new log when some specific condition occurs.
At any one time, only ONE log file can be active on a given
session. Clicking on the icon in the status line serves as a
shortcut to the AUTOLOG setup.
You can use the Suspend and Resume buttons there to
temporarily stop logging to the file (and resume by clicking on
Resume). The icon will show a red cross through it to
indicate logging is suspended.
Suspending and resuming can also be triggered by using an
IVTFUNCTION from a script.
The panel also allows you to open an explorer window on the
directory that is configured, or an editor on the current log
file.
See also AUTOLOG_HEADER.
12.3.11: AUTOLOG_HEADER (Generate header in AUTOLOG file)
AUTOLOG_HEADER
NO_AUTOLOG_HEADER
Default: AUTOLOG_HEADER.
This is a per-session
setting.
When you use the AUTOLOG statement to generate automatic logs of sessions, IVT will, by default, generate a simple header in the file that shows the name of the host and start time of the log, followed by a simple horizontal line.
If, for whatever reason, you want an exact log without these extraneous lines, use NO_AUTOLOG_HEADER.
This setting is per session and so can be overruled for
individual sessions.
It can be changed from this setup
screen and is saved in the registry.
It can also be set as an option to the AUTOLOG statement.
12.3.12: BACKSPACE (Code generated by BACKSPACE key)
BACKSPACE DELETE
BACKSPACE BACKSPACE
Default: BACKSPACE BACKSPACE
This is a per-session
setting.
Determines what gets transmitted to the host when you press
the BACKSPACE key.
Default is BACKSPACE, but some hosts expect a DEL
character to correct typos.
The DEV-VT220 profile sets this, as VMS
hosts typically want a DEL instead of a backspace.
This can also be changed from setup.
See also KEYMACRO to reprogram keys.
12.3.13: BELL (Action to take when BELL character is received)
BELL FLASH
BELL TUNE
BELL BEEP
BELL BUZZ
BELL WAV "filename"
BELL OFF
Default: BELL WAV 'DING'
This is a per-session
setting.
A host can transmit a ASCII 7 (Bell) character to IVT. The
terminal is supposed to "ring the bell' when that happens.
This setting determines what IVT does when a bell is
received.
The TUNE plays a short tune, BEEP emits a short,
business-like beep, FLASH flashes the screen (silent
bell), and OFF means BELL characters are ignored.
A late addition to IVT is BUZZ, which shakes the IVT
window around for about half a second, similar to what MSN
messenger does when it buzzes you.
When IVT is full screen or maximized, it shakes the text inside
the window.
When IVT runs in a normal window, it shakes the window on the
desktop.
NOTE: On Windows 7, Microsoft has removed the function to drive the speaker on the motherboard used by TUNE and BEEP. Windows will use the soundcard to produce a sound, but that can be muted, and will not sound like intended.
See also BELL_ABUSE, which provides a way to suppress unwanted and/or unexpected noise. When you use the BUZZ setting, a single bell takes so long that you will have to tune the ABUSE values to detect abuse.
To confuse matters a bit, the actual action taken by the FLASH setting of this BELL command can be set using the FLASH command...
IVT can also play a sound (.WAV) file when the bell is
supposed to ring.
You can specify the path name of a WAV file or the name of a
sound event from the Windows registry. Different sessions can
have different files associated with them. The filename can be
changed from setup as well.
The file name can be a (double-quoted) string with embedded
variable names, so one might write:
BELL WAV
"$ENV_WINDIR/media/chimes.wav"
When a BELL is received while the previous sound is still playing, playback is aborted and the new play is started.
See also the PLAYSOUND function.
Also, see the ESC<space>f
IVT-only escape sequence (for flash).
Also, see the ESC<space>n
IVT-only escape sequence (to play WAV files).
Also, see F3-D for a way of ignoring unwanted
output quickly.
See also BELL_ABUSE to prevent the bell
from being overloaded.
See also FLASHWINDOW.
This setting can be changed from this setup
dialog.
It is also saved into the registry.
12.3.14: BELL_ABUSE (Prevent BELL noise overload)
BELL_ABUSE nr_of_bells interval silence
NO_BELL_ABUSE
Default: BELL_ABUSE 5 2 5
This is a per-session
setting.
This feature suppresses processing of the BELL (beep) character when too many bells per second
would occur otherwise (the idea for this is taken from Putty).
Even experienced users sometimes send a lot of binary data to a
terminal (like CAT-ing a binary file). Every bell character in
there makes noise AND takes a long time to process (ringing a
bell takes time).
The nr_of_bells and interval parameters specify the maximum amount of noise that IVT is allowed to make. The defaults for these are 5 and 2, so if more than 5 bells are received within a 2 second interval, the bell is turned off.
The silence parameter specifies how many seconds must
pass without a bell character being received to re-enable the
bell (default 5 seconds).
By specifying NO_BELL_ABUSE, the protection is turned off
and all received bell characters are processed normally.
The protection is for all forms of bells - .WAV files and flash-screens included. The settings are per session, which implies that IVT can produce more noise then specified when several sessions decide to produce noise which is just below the abuse limit (10 sessions doing 1 bell a second still produce 10 bells per second in total, indefinitely).
This setting can be queried using:
The setting can be changed for the current session in this
setup screen, which can be reached
from the "More VT220 setup" screen.
The current settings can be saved in the registry.
12.3.15: BIDI (Enable Bi-directional text)
BIDI
NO_BIDI
Default: BIDI
This is a per-session
setting.
IVT supports bidirectional text display, which means that if
your server sends text written in a language which is usually
displayed from right to left (such as Arabic or Hebrew) then IVT
will automatically flip it round so that it is displayed in the
right direction on the screen.
If you are using full-screen software which was not expecting
this to happen (especially if you are not an Arabic speaker and
you unexpectedly find yourself dealing with Arabic text files in
applications which are not Arabic-aware), you might find that the
display becomes corrupted.
By using NO_BIDI, you can disable bidirectional text display, so
that IVT displays text from left to right in all situations.
You may also find you need to disable Arabic text shaping.
This feature can also be changed (per session) from this setup screen, and is saved in the registry.
12.3.16: BIDI_ESC_RTL: Enable/disable special BIDI escape commands
BIDI_ESC_RTL
NO_BIDI_ESC_RTL
Default: BIDI_ESC_RTL
This is a per-session
setting.
IVT supports two special escape commands called ESC % 0 and ESC % 1 that
set the primary display direction (right-to-left or
left-to-right).
Interpretation of these commands can be disabled by using this
directive (so a NO_BIDI_ESC_RTL will cause IVT to ignore
these commands).
When enabled, you can also set a different keyboard language when the host issues these commands, see BIDI_RTL_LANGUAGE and BIDI_LTR_LANGUAGE.
This setting can also be changed from this setup screen and the current setting is saved in the registry.
See also the general BIDI command and the
BIDI setup screen.
See also ONLANGUAGE, NLS and LANGUAGE_FILES.
12.3.17: BIDI_RTL_LANGUAGE/BIDI_LTR_LANGUAGE: Switch keyboard
BIDI_RTL_LANGUAGE default
BIDI_RTL_LANGUAGE languagename
BIDI_LTR_LANGUAGE default
BIDI_LTR_LANGUAGE languagename
Default: Use default for both.
This is a per-session
setting.
This version of IVT supports BiDi: Bi-directional text. It also supports a couple of special escape sequences that allow the host to force right-to-left or left-to-right display of lines.
These BIDI language commands allow you to configure automatic input-language keyboard switch when the host sends these special ESC%0 and ESC%1 commands, much like INPUT_LANGUAGE can be used to select a default keyboard layout when IVT starts up.
For example, when the ESC%0 command is received (set
right-to-left), IVT will automatically switch to the keyboard
mode set in BIDI_RTL_LANGUAGE.
When ESC%1 is received, it will switch to the mode set in
BIDI_LTR_LANGUAGE.
Since there are many different keyboards in the world, there
is no built-in default for these modes. The user can view the
names of the keyboard layouts that are available on the PC by
looking at this setup screen.
The name of a selection must be used exactly as displayed in the
command.
Alternatively, you can just save the setup to the registry.
More keyboard layouts can be installed by using the Windows functionality for this (right-click on the language icon in the Windows task bar.
See also this setup screen.
The current settings are saved in the registry.
See also ONLANGUAGE, NLS and LANGUAGE_FILES.
12.3.18: BIDI_TYPE (set explicit character type for BIDI)
BIDI_TYPE from [to] TYPE
BIDI_TYPE CLEAR
Default: None.
This is a per-session
setting.
When you use Bi-Directional text, IVT will
handle the left-to-right and right-to-left display (or printing
to a printer when you use PRIVT) based on the type of script you
use. Latin characters go from left to right, and for example
Arabic characters go from right to left.
When there is a mix of scripts on a single line (like a mix of
Latin and Arabic), the parts on the line are re-ordered as
required.
For details, see http://www.unicode.org/reports/tr9/, which describes the technicalities of the Unicode Bidirectional Algorithm.
Unfortunately, it can happen that a certain mix turns out wrong, like in formatted reports (intended for a printer) where characters are used as separators which throw off the left-to-right and right-to-left re-ordering because the standard defines those separators as being of the wrong type.
With BIDI_TYPE you can redefine the type of a character or a range of characters. The "from" and "to" can be either hexadecimal Unicode code points, or single ASCII characters. When you omit "to", it is considered equal to "from". The TYPE sets the type of character, valid values for TYPE are:
Strong:
L Left to right
LRE Left to right embedding
LRO Left to right override
R Right to left
AL Right to left Arabic
RLE Right to left embedding
RLO Right to left override
Weak:
PDF Pop directional format
EN European number
ES European number
separator
ET European number
terminator
AN Arabic number
CS Common number separator
NSM Non-spacing mark
BN Boundary neutral
Neutral:
B Paragraph
separator
S Segment separator
WS Whitespace
ON Other Neutrals
For example:
BIDI_TYPE ! R
Another example:
BIDI_TYPE A Z RLO
Last example:
BIDI_TYPE 0x1000 0x2000 EN
Needless to say, you can use this to make a huge mess of things. It is intended to be used in rare cases, to specify single characters to a subtly different type to fix subtle problems.
The BIDI_TYPE can be used in 3 different ways:
Currently there is no way to specify these BIDI types interactively in setup, only the above methods are supported.
The BIDI_TYPE CLEAR can be used to explicitly delete all BIDI_TYPE commands of the same type (global, session or for PRIVT).
See also BIDI, ARABIC_SHAPING and AMBIGUOUS_CJK_WIDE.
12.3.19: BIT8COMMANDS (display/execute 8-bit commands)
BIT8COMMANDS DISPLAY
BIT8COMMANDS EXECUTE
Default: EXECUTE.
This is a per-session
setting.
A VT220 terminal has a number of single-byte commands that are the equivalent of some two-byte commands. These commands and their function are described in details in this escape sequences section.
Note that these 8-bit commands are rarely used. Still, a
proper emulator (such as IVT) has to recognize these commands and
execute them.
However, some applications require that a particular 8-bit
command is not executed, but a character is displayed instead.
You can use CODEPAGEMOD to specify
which Unicode character to display for these commands. However,
if you want IVT to display the normal codepage character instead
of executing the command, it is not easy to find out which
Unicode character to specify, since it depends on the selected
codepage.
The DEFAULT option of the CODEPAGEMOD command allows you to set the
DISPLAY attribute for a single 8-bit command.
The BIT8COMMANDS DISPLAY says that ALL of the above
special commands are NOT to be executed, but that the codepage
character must be displayed instead.
Note that this breaks VT220 compatibility, so only use this when
you know what you are doing.
See also CODEPAGEMOD, 8BITCHARS and VTTEST.
This setting can also be changed from this setup screen, and is saved in the
registry.
12.3.20: BIND (Bind a SCRIPT to a key)
This command is deprecated. See KEYMACRO with the VT220 option instead.
This is a global setting.
BIND key script
[params]...
BIND_ASYNC key script [params]...
BIND_SYNC key script [params]...
Bind a SCRIPT called script to a
key named key.
For a list of valid key names, see programming
keys.
Every time the key is pressed afterwards, the
corresponding script is executed. When you use the
BIND command, the script is started asynchronously, when a
BIND_SYNC is used, a synchronous call is made, see
here for more details.
The BIND is only effective for keys typed in session mode, not
for keystrokes used in setup, menus, help and so on.
The older BIND command is a synonym for
BIND_ASYNC.
See also MOUSE_KEY, which allows you to
bind scripts to mouse actions.
See also KEYBOARDMOD for simple (fast)
translations.
See also KEYNAME, to assign simple strings
to standard VT220 keys.
See also "Learn mode & Keyboard
macros", which allows very powerful things to happen when
keys are pressed.
See also KEYMACRO, which is a more
powerful version of BIND.
Scripts are a major feature of IVT, they can be used to do
almost anything.
It requires its own chapter to explain it.
Also see the F4-X screen.
12.3.21: BOLD_STYLE (How to make character bold on screen)
BOLD_STYLE AUTO | FONT_BOLD | FONT_HEAVY | COLOR |
SHADOW
Default: AUTO
This is a per-session
setting.
When the server sends a control sequence indicating that some
text should be displayed in bold, this can be handled in several
ways.
It can either change the font for a bold (or very bold) version,
or use the same font in a brighter color, or use "shadowing",
where it artificially makes a bold character by displaying the
same character twice, shifted by a single pixel.
The AUTO style means IVT will pick the best alternative
under the given circumstances. For example, if you want 'bold
black', choosing 'bright black' is not an option, so a bolder
font is required. If a bold font with the same basic size cannot
be found, shadowing is used.
When possible, simply brightening the color is used.
The issue can be forced by choosing one of:
This setting can also be changed from this setup screen and the current setting is saved in the registry.
See also FONT.
12.3.22: CAPSBUG (CAPS + SHIFT behavior)
CAPSBUG
NO_CAPSBUG
Default: CAPSBUG.
This is a global setting.
This setting determines what happens when you have CAPSLOCK active and use the shift key. In my humble opinion, CAPSLOCK should mean that CAPITALS are LOCKED. However, as far back as 1980, MS/DOS got this wrong - when you combine CAPSLOCK and SHIFT it generates LOWER case characters. For years, IVT corrected this bug by making sure that it generated upper-case only.
However, since the bug has been around for so long, many people consider it a feature, so upon special request I have added this CAPSBUG feature and even made it the default setting to emulate the bug. I personally have the CAPSLOCK setting turned to "Ignore", so CAPS is turned off anyway.
CAPSBUG will cause CAPS+SHIFT to generate lower
case.
It can also be changed from this setup
screen. The current setting is saved in the registry.
This is an important feature, others are prev/next
12.3.23: CAPSLOCK (Set mode for CAPS lock key)
CAPSLOCK
CAPSLOCK SESSION
NO_CAPSLOCK
Default: CAPSLOCK.
This is a per-session
setting.
Enable/disable (NO_CAPSLOCK) the CAPS lock key. This is
a very nice feature.
Disabling the CAPSLOCK key means that the key (and corresponding
light) will be turned off as soon as you turn it on (presumably
by accident). The upshot is that you have to use SHIFT to
get capitals.
Caps Lock is not very useful when using a Unix host, and this will prevent you from accidentally "shouting" at Unix.
The "SESSION" addition will make IVT track the state of the CAPSLOCK key per session. When you switch between sessions, the state is saved and restored as appropriate. When new sessions are created, they inherit the current state of the CAPS key. Note that this setting is per session, too, so one session can have CAPS disabled, another can be restored to its private setting whenever you switch to it, a third can leave CAPS alone...
Upon special request, a final possibility is offered by the CAPSBUG setting.
It can also be changed (for the current session only) from setup.
12.3.24: CHARSET (Set DECVT220 or IBMPC character set)
CHARSET DECVT220|IBMPC
This command is obsolete. See CODEPAGE
instead.
See also NATIONALITY.
12.3.25: CLICK (keyboard click on/off)
CLICK
NO_CLICK
Default: NO_CLICK.
This is a per-session
setting.
Turn key click on (or NO_CLICK for off). Makes a
bothersome noise whenever a key is typed. NO_CLICK is the
default, you probably don't want to change this.
Supported because a VT220 has it.
It is even supported from setup (for the current session only).
12.3.26: CLOCK (Status line clock on/off, old-fashioned)
CLOCK
NO_CLOCK
Default: CLOCK
This is a global setting.
The CLOCK command is the same as STATMIDDLE CLOCK.
The NO_CLOCK command is the same as STATMIDDLE OFF.
This is a holdover from the past, when only a clock or nothing was displayable in the middle of the status line. Nowadays, there are several other options, see STATMIDDLE.
12.3.27: CODEPAGE (Set Windows output code page)
CODEPAGE Description
CODEPAGE n
Default: Dynamic.
This is a per-session
setting.
The codepage determines the output codepage (what characters
are displayed) of IVT. A codepage is a look-up table of 256
positions, where a received character us used as an index to look
up the unicode character that is going to be displayed by IVT
when that character is received.
The rules are:
I have copied the codepage tables and bits and pieces of the
relevant code from the source of PuTTY, and would like to say
thanks to the authors of that program for making this available.
Also, please note this copyright.
The following values for Description are available
(specify the first word only):
ISO-8859-1 Latin-1, West
Europe
ISO-8859-2 Latin-2, East
Europe
ISO-8859-3 Latin-3, South
Europe
ISO-8859-4 Latin-4, North
Europe
ISO-8859-5 Latin/Cyrillic
ISO-8859-6 Latin/Arabic
ISO-8859-7 Latin/Greek
ISO-8859-8 Latin/Hebrew
ISO-8859-9 Latin-5,
Turkish
ISO-8859-10 Latin-6, Nordic
ISO-8859-11 Latin/Thai
ISO-8859-13 Latin-7, Baltic
ISO-8859-14 Latin-8, Celtic
ISO-8859-15 Latin-9, "euro"
ISO-8859-16 Latin-10, Balkan
KOI8-U
KOI8-R
UTF-8
HP-ROMAN8
VSCII
DEC-MCS
Win1250 Central
European
Win1251 Cyrillic
Win1252 Western
Win1253 Greek
Win1254 Turkish
Win1255 Hebrew
Win1256 Arabic
Win1257 Baltic
Win1258 Vietnamese
CP437 Standard
OEM Ascii
CP819
CP878
CP<Number> That codepage
when available in Windows
Example:
CODEPAGE ISO-8859-1
Another relevant setting is INPUT_LANGUAGE - if your locale implies
that you type a lot of accented characters, you can configure IVT
to use an American keyboard layout so quotes and so on
immediately produce a quote.
See also CODEPAGEMOD.
See also NATIONALITY.
This setting is saved in the registry.
It can also be changed (on a per session basis) in this setup screen.
12.3.28: UTF-8 (What it is)
From Wikipedia:
UTF-8 (8-bit UCS/Unicode Transformation Format) is a
variable-length character encoding for Unicode. It is able to
represent any character in the Unicode standard, yet the initial
encoding of byte codes and character assignments for UTF-8 is
backwards compatible with ASCII. For these reasons, it is
steadily becoming the preferred encoding for e-mail, web pages],
and other places where characters are stored or
streamed. UTF-8 encodes each character (code point) in
one to four octets (8-bit bytes), with the 1-byte encoding used
for the 128 US-ASCII characters.
End quote.
Note that IVT is a VT220 emulator, and such terminals were
only able to display simple 8-bit characters. Unicode has
millions of different characters, and to be able to display them,
fundamental changes had to be made to the display code of
IVT.
When you select the UTF-8 CODEPAGE, IVT
will recognize and process data from the host and display them
correctly. Also, it will alter the behavior of the keyboard:
normally this is a simple 8-bit character stream, but when you
select a foreign keyboard, IVT will support IME (Input Method
Editor) which allows Windows programs to accept Asian languages
(such as Korean and Chinese) to be typed. Data entered this way
is transmitted to the host in UTF-8 format, too.
Printing, copy & paste and logging data to files all support UTF-8, so you can use IVT in an international environment.
Even the language tables used by IVT to customize the dialogs and menus support UTF-8 now, so you can make a Chinese version of the interface if you so desire.
See also ONLANGUAGE, NLS and LANGUAGE_FILES.
See also CODEPAGE, CODEPAGEMOD and KEYBOARDMOD.
12.3.29: CODEPAGEMOD (Modify current codepage)
CODEPAGEMOD position UnicodeCharacter [KEYBOARDMOD]
CODEPAGEMOD position DEFAULT
Default: None.
This is a per-session
setting.
For a description of the DEFAULT option, see the discussion under BIT8COMMANDS.
This statement can be used to modify the current CODEPAGE.
A codepage has 256 positions, numbered 0 - 255. The value of each
position determines what character is displayed by IVT when a
byte is received from the host. IVT comes with many standard
codepages, but sometimes the need arises for custom codepages.
The position must be a value between 0 and 255 (or, when a
hexadecimal notation is used), 0x00 - 0xFF). The
UnicodeCharacter must be a value between 0x0000 and
0x10FFFF and should specify a valid Unicode character.
When a UnicodeCharacter value of zero is used, NOTHING is displayed, not even a space. This can be used to filter out any character.
When the (optional) keyword KEYBOARDMOD is specified, the statement implies a reversed KEYBOARDMOD statement.
It is important to understand exactly what is modified:
NOTE: A VT220 emulator such as IVT also supports
a number of 8-bit command characters.
When a byte with such a value is received, IVT normally executes
the action defined by that command byte. However, when you
EXPLICITLY set a CODEPAGEMOD to display a unicode
character for one of the 8-bit commands, IVT assumes you know
what you are doing and will display the character you specify
WITHOUT executing the command. Note that this breaks
VT220 compatibility! However, every 8-bit command code has a
7-bit equivalent, see here.
When you do not know the code for a particular position of a
codepage, but just want to make IVT display the default character
for the currently active codepage, use the CODEPAGE position
DEFAULT form of the command.
See BIT8COMMANDS for details.
As a first example, the following will make a change for all sessions in IVT:
CODEPAGE
"ISO-8859-5" #
Load "Latin Cyrillic"
CODEPAGEMOD 0x20
0x0119 # Modify SPACE into
some random character
CODEPAGEMOD 0x30
0x0039 # Change all zeroes
into nines
Note that the second line will make it impossible to display the character zero! You probably want to use this with care :-)
See also CODEPAGE, BIT8COMMANDS and these escape sequences.
See also NATIONALITY.
Changes to the codepage are only possible in an IVT.RC file, thus they are not saved into the
registry or modifiable in setup.
12.3.30: COLOR_CUT (Color of selected area during CUT operation)
COLOR_CUT REVERSE
COLOR_CUT ForeGround BackGround [[BRIGHT|NOBRIGHT]
BRIGHT|NOBRIGHT]
COLOR_CUT RGB RGB
COLORCUT is an older alias for this command.
Default: Dynamic.
This is a per-session
setting.
This determines what the screen looks like during a CUT operation.
The default is REVERSE, which will reverse the foreground
and background colors of the characters on the screen. If you do
not have very colorful screens, this is normally OK.
When you CUT from a screen with lots of reverse video data already on-screen, it is not always clear what is "select" reverse video and what is "native" reverse video. Also, if you have different colors for different hosts, you may want to select a different CUT color, too.
COLOR_CUT allows you to specify a fixed color. This is
used to show the selected area. The ForeGround and
BackGround colors must both be between 0 and 7 (see the
color table).
It is also possible to specify a color by name ("blue", "white",
etc).
The FIRST BRIGHT/NOBRIGHT can be used to specify the BRIGHT attribute for the foreground color, the SECOND BRIGHT/NOBRIGHT does the same for the background color.
Lastly, you can specify absolute RGB values for the colors. When you use one of the other forms, it is translated automatically to the proper RGB values, and those are used in the setup screen.
You can experiment in the color setup screen to find the nicest setting.
See also COLORS and COLOR_HELP.
12.3.31: COLOR_READY (Specify screen colors for ready indicator)
COLOR_READY ForeGround BackGround [BRIGHT|NOBRIGHT]
[BRIGHT|NOBRIGHT]
Default: WHITE GREEN BRIGHT BRIGHT
This is a global setting.
IVT supports an escape sequence
that can be used in your shell prompt. Whenever the session
prints the prompt (is "ready"), IVT will make the activity-
indicator for that session the specified color when that session
is in the background. When the session is in the foreground,
nothing happens.
The default color for this indicator is a green background, so
the session will show "green" when it is ready!
The COLOR_READY statement allows you to set any foreground
and background color.
See the color table for a list of
valid colors.
You can also change the color from the setup screen.
Any modifications made in setup are also saved into the registry.
12.3.32: COLORS (Specify primary screen colors)
COLORS ForeGround BackGround [[BRIGHT|NOBRIGHT]
BRIGHT|NOBRIGHT]
Default: WHITE BLACK
This is a per-session
setting.
You can use this to specify the default foreground and
background colors that IVT uses for the session screens.
The old syntax looks like:
COLORS GREEN BLACK BRIGHT NOBRIGHT
I.e., a foreground color, a background color, an indicator for
the brightness of the foreground color and lastly an indicator
for the background color.
The new syntax allows a more intuitive color syntax and allows
you to specify non-standard colors by using absolute RGB values.
Examples:
COLORS BRIGHTGREEN BLACK
COLORS 10,20,30 120,130,140
COLORS
BLACK 250,250,250
As the example shows, a mix of absolute RGB and symbolic color
names is allowed.
Note: If you change the RGB value of a symbolic name (see the
RGB statement) of a color used as foreground
or background, the display will change accordingly. If you use a
fixed RGB value, then that value is used, always.
The preferred way is to use absolute values. This is why the
setup screen will automatically translate to that format, saving
to the registry is done in that format as well (and older saved
profiles from versions of IVT that did not have this feature are
converted automatically).
The hypertext help screens have a separate color setup, see COLOR_HELP.
The FIRST BRIGHT/NOBRIGHT can be used to specify the BRIGHT attribute for the foreground color, the SECOND BRIGHT/NOBRIGHT does the same for the background color. HIGH/NOHIGH accomplish the same thing.
See also the discussion on software blinking.
The foreground and background names can be chosen from the
color table.
You can use the setup screen to change the colors (for the help screens, setup
screens etc).
It is also possible to temporarily change the default background and foreground colors of the current session from the host. IVT supports its own extension to the ESC[...m command (see here).
The ESC[139m command restores the real foreground default, the ESC[149m does the same for the background color. This can be used when you start an application that uses a color scheme that assumes (for example) that you have white characters on a black background (and looks extremely ugly when you have a blue background). Before you start such an application, you could send ESC[137;140m to force white-on-black, when the application finishes you can send ESC[139;149m to restore your normal colors.
NOTE: When you draw colored text in a DIALOG, you can use the COLORATTRIBUTE function to code a color for text. In that case you can specify the explicit 'DEFAULT' for either the foreground or background color. The text in the dialog will be drawn with the appropriate default for the Windows GUI dialogs.
See also COLOR_CURSOR and CURSOR_HEIGHT.
12.3.33: COLORSCR (Detection of monochrome/color screen overrule)
COLORSCR
NO_COLORSCR
Default: COLORSCR
This is a per-session
setting.
Enables or disables the use of color by the application.
When NO_COLORSCR is used, all attempts by the host to
change the colors of the displayed text are ignored.
If you have a particularly garish application, you might want to
turn this option off (NO_COLORSCR) and make IVT only use
the default foreground and background colours.
The setting can be changed (for the current session only) from setup.
Note: The meaning of this keyword has changed: It used to specify that IVT was running on a PC with monochrome hardware. Such hardware is not in serious use anymore, so that option is removed from IVT.
See also COLOR_FOR and COLOR_ATTRIBUTE, which allow you to specify the use of colors instead of video attributes such as blink and underline.
12.3.34: COLOR_HELP (Specify screen colors for these help screens)
COLOR_HELP ForeGround BackGround [BRIGHT|NOBRIGHT]
[BRIGHT|NOBRIGHT]
This is a global setting.
The default color scheme for the help screens is chosen such that they are most readable (black characters on a white background).
For those who insist on having different colors, this
statement can be used alter those defaults.
The FIRST BRIGHT/NOBRIGHT can be used to specify
the BRIGHT attribute for the foreground color, the SECOND
BRIGHT/NOBRIGHT does the same for the background
color.
See also the colors for the links, LINKSELCOL and LINKUNSELCOL.
See also COLORS.
See the color table for a list of valid
colors.
12.3.35: COLOR_SEARCH (Colors to use for searched text)
COLOR_SEARCH R G B R G B
Default: 0 0 0 255 255 0
This is a global setting.
When you activate the history pager (scroll
back memory), you can use the built-in search commands of IVT
to search for strings in the history buffer.
Strings that match are highlighted using the colors you specify
here.
Multiple matches are easily spotted this way.
The default is black letters on a bright-yellow background.
The color itself is specified as two RGB (Red, Green, Blue) values, one for the foreground and one for the background color of matching search strings.
For a description of the color specification, see COLOR_CURSOR.
This item can be changed in this setup screen, and is also saved in the registry.
12.3.36: COLOR_TIPS (Colors to use for tooltip windows)
COLOR_TIPS R G B R G B
Default: Taken from the system.
This is a global setting.
When IVT displays tool-tip windows, they can appear on top of
the session screen. Since the colors of the session screen can be
configured, the tips can be almost invisible. The COLOR_TIPS
keyword allows you to specify the colors for all tips displayed
on the current session. Every session can have its own
colors.
The color itself is specified as two RGB (Red, Green, Blue)
values, one for the foreground and one for the background color
of tool-tip windows.
For a description of the color specification, see COLOR_CURSOR.
Windows has defaults for this, they are IVT's defaults, too.
This item can be changed in this setup screen, and is also saved in the registry.
See also COLOR_SEARCH.
12.3.37: COLOR_ATTRIBUTE/FOR (use colors instead of video attributes)
COLOR_FOR Attribute
FOREGROUND
COLOR_FOR Attribute
BACKGROUND [DEFAULT_ONLY]]
NO_COLOR_FOR Attribute
FOREGROUND|BACKGROUND
COLOR_ATTRIBUTE ColorName FG|BG R G
B
Default: NO_COLOR_FOR all attributes.
This is a per-session
setting.
The RGB default color values are "nice" for a screen with a
bright blue background.
Attribute can be BLINK, UNDERLINE,
INVERSE or BRIGHT.
REVERSE is an alias for INVERSE.
BOLD is an alias for BRIGHT.
FG is an alias for FOREGROUND.
BG is an alias for BACKGROUND.
ColorName is a combination of up to 4 attributes, see
examples below.
See also RGB for an explanation of RGB
values.
A VT220 has a number of video attributes:
Normally, IVT will display these modes as you would expect:
true blinking text, true underlining, reverse video by swapping
background and foreground color, bright video by making the color
more intense.
Ancient versions of IVT (and other emulators) that could not do
true blinking because the underlying hardware did not support it,
used to use colors to indicate blinking characters.
Some people have come to prefer this over actual blinking, so IVT
allows you to set a color (foreground & background) that will
be used for blinking characters.
The same goes for other video modes, because as soon as you use
colors to indicate blinking or underlined text, how do you deal
with text that is both blinking AND underlined? The answer is to
define all 16 combinations of the four attributes, both the
foreground color and background color.
You choose whether to use a color instead of the true attribute
using the COLOR_FOR keyword. The actual colors to use are
specified using the COLOR_ATTRIBUTE keyword.
To complicate matters yet a little further, some color themes want to use colors for (say) bold characters (foreground and background RGB values), but the background color can be overruled by the application: When the current background color is the default session colour, the COLOR_FOR background color is used, but when the application has set an explicit background color, that muse be used. This is specified using the DEFAULT_ONLY option for the BACKGROUND command. This can also be specified in interactive setup using the "Default only" options in the color setup screen.
For example:
COLOR_FOR BLINK FOREGROUND
BACKGROUND
COLOR_FOR UNDERLINE FOREGROUND BACKGROUND
COLOR_ATTRIBUTE BLINK FOREGROUND 255 255 255 #
Bright white
COLOR_ATTRIBUTE BLINK
BACKGROUND 0 0 255 #
Bright blue
COLOR_ATTRIBUTE UNDERLINE
FOREGROUND 0 0 0 #
Black
COLOR_ATTRIBUTE UNDERLINE BACKGROUND 255
255 0 # Bright yellow
COLOR_ATTRIBUTE "UNDERLINE BLINK" FG 80 80
80 # Grey
COLOR_ATTRIBUTE "UNDERLINE BLINK" BG 200 200 0 #
not-so-bright yellow
The first COLOR_FOR says: when a
character should be blinking, change both the foreground and
background color. When a background or foreground is left out,
that color is unchanged (remains whatever the host has currently
selected).
The actual color to use for the foreground color of blinking text
is bright white (RGB value of 255,255,255), the background color
is bright blue.
The colors for underlines are set in the next 2 ATTRIBUTE
statements.
then the COMBINATION colors are set for text that is both
blinking and underlined. The most complex combination of
attributes would be:
COLOR_ATTRIBUTE "UNDERLINE BLINK INVERSE BRIGHT"
FG 100 100 100
which specifies the color to use when all attributes apply.
An example with the DEFAULT_ONY option:
COLOR_FOR BOLD FOREGROUND BACKGROUND DEFAULT_ONLY
COLOR_ATTRIBUTE BOLD FOREGROUND 100 100 100
COLOR_ATTRIBUTE BOLD BACKGROUND 200 200 200
This item can also be changed from this setup screen, and is saved in the registry. By setting the checkboxes the appropriate combination with their actual colors will be displayed. By clicking on the examples, you can alter the RGB value of the specific item.
See also COLORS, COLOR_CURSOR, COLOR_SEARCH, COLOR_CUT.
12.3.38: COLOR_BLINK (use colors instead of true blinking)
COLOR_BLINK {R G B|DEFAULT} {R G B|DEFAULT}
NO_COLOR_BLINK
Default: Not used (NO_COLOR_BLINK).
This is a per-session
setting.
For a description of the R-G-B color specification, see COLOR_CURSOR.
This statement is deprecated, and the equivalent of:
COLOR_FOR BLINK FG BG
COLOR_ATTRIBUTE "BLINK"
FG R G B
COLOR_ATTRIBUTE "BLINK"
BG R G B
12.3.39: COLOR_MARKER (use mouse to mark text)
COLOR_MARKER R G
B R G B
Default: 0 0 0 255 255 0
Black foreground, bright yellow background.
This is a per-session
setting.
You can use the mouse as a highlighter pen, to mark a part of
the screen so you can find the marked text easier on a large
screen.
To do this, select text with the mouse (or keyboard) and then,
without releasing the mouse button, press the F3 key.
The selected text is painted using the given colors of
COLOR_MARKER.
The first RGB value is for the foreground, the second for the
background color.
You can mark text on the current screen and in scroll back memory.
You can erase the marker color by using F4 instead of F3.
There is also an entry on the menu (Edit, Clear marked text) that
erases all marker colors on the current session, both on the
active session screen and in scroll back memory.
See also HIGHLIGHT, which will
automatically highlight text that matches a regular
expression.
This setting can also be changed from this setup screen and is saved in the
registry
12.3.40: COLOR_TAB_SELECT/DESELECT/ERROR (Session tab colors)
COLOR_TAB_SELECT R G B R G
B
COLOR_TAB_DESELECT R G B R G B
COLOR_TAB_ERROR R G
B R G B
COLOR_TAB_BASE R G
B
COLOR_TAB_SELECT 0 0 0 255
255 255 (black on white)
COLOR_TAB_DESELECT
0 0 0 181 181
181 (black on grey)
COLOR_TAB_ERROR 255 255 255
255 0 0 (white on bright
red)
COLOR_TAB_BASE 240 240
240 (light
grey)
When the TABSBAR is configured using
the EXTENDED mode, IVT has full control
over all aspects of the tabs bar (which is normally handed off to
Windows).
So IVT can control the colors and fonts used for the texts in the
tabs.
COLOR_TAB_SELECT specifies the foreground and
background colors of the tab of the currently selected
session.
COLOR_TAB_DESELECT specifies the colors of all other
tabs.
COLOR_TAB_ERRORS specifies the colors a tab will get when
the session is in an error state (like when the network goes
down).
The COLOR_TAB_BASE gives the base color of the tab bar itself.
These colors can also be specified in this setup screen, and the current values are saved in the registry.
12.3.41: COLOR_UNDERLINE (use colors instead of true underlining)
COLOR_UNDERLINE {R G B|DEFAULT} {R G
B|DEFAULT}
NO_COLOR_UNDERLINE
Default: Not used (NO_COLOR_UNDERLINE).
This is a per-session
setting.
For a description of the R-G-B color specification, see COLOR_CURSOR.
This statement is deprecated, and the equivalent of:
COLOR_FOR UNDERLINE FG BG
COLOR_ATTRIBUTE "UNDERLINE"
FG R G B
COLOR_ATTRIBUTE "UNDERLINE"
BG R G B
12.3.42: COLOR_VOLATILE (Setup colors of volatile items)
COLOR_VOLATILE R G B R G
B
Default: 0 0 255 0 0 0
For a description of the color specification, see COLOR_CURSOR.
This is a global setting.
This sets the color in the setup screens for items marked
VOLATILE.
Since it is important that the user should have some visual
feedback for items in setup that are marked as volatile, the
texts belonging to these items are drawn in the specified colors
instead of the default dialog colors.
The first RGB value is for the foreground, the second for the
background color.
When a color is specified as 0 0 0, the default dialog color is
used.
So the default is bright blue foreground on the default
background.
There is no interactive setup item for these colors.
12.3.43: COLUMNS (Default number of screen columns)
COLUMNS num
COLUMNS num%
This command has been removed, see WINDOW_SIZE.
12.3.44: COPYSPEED (Scroll speed during COPY)
COPYSPEED lines-per-second
Default: COPYSPEED 4.
GUI_COPYSPEED is an old alias for COPYSPEED.
This is a per-session
setting.
IVT will automatically scroll through the history data when the cursor reaches the top or bottom of the screen (standard Windows behavior) while selecting text with the mouse (or keyboard).
The speed with which the data scrolls is determined by this COPYSPEED setting. For every pixel that the mouse moves beyond the sensitive point, IVT starts scrolling the indicated number of lines per second. Depending on the number of pixels that you have at the top and bottom of the screen, you may want to set this value higher or lower.
If you press SHIFT during the scroll-operation, the speed will be increased by a factor of five.
See also HSPACE to create extra room at
the top and bottom of the window, and FULLSCREEN to determine the objects on screen
when IVT operates in FULLSCREEN mode.
See also MOUSE_SCROLL_FACTOR.
This setting can also be changed from this setup screen.
It is also saved in the registry.
12.3.45: COPY_RICH_TEXT (Copy data to the clipboard in RTF format)
COPY_RICH_TEXT [ALL_COLORS] [SCALE_FONT=x]
NO_COPY_RICH_TEXT
Default: COPY_RICH_TEXT, NO_ALL_COLORS, SCALE_FONT=1.4 This is a global setting.
If you enable this option, IVT will write formatting information to the clipboard as well as the actual text you copy. The effect of this is that if you paste into (say) a word processor, the text will appear in the word processor in the same font, colour, and style (e.g. bold, underline) IVT was using to display it.
Since the same text is also stored as plain text, a paste into another application will always work (either formatted or unformatted text will be pasted, depending on what the app supports).
The ALL_COLORS modifier determines what happens with
the default colors of the foreground and background
characters.
When ALL_COLORS is not specified, these are translated to
"black" for the foreground and "white" for the background (so if
you paste into Word, the default background is the white paper on
which you get black characters).
With ALL_COLORS, the real colors you have chosen in IVT
will be used, so you get an exact copy of how it looks on the
screen pasted into the Word document.
NOTE: For some reason, pasting into WordPad will faithfully
reproduce the RGB values of all the colors. When pasting the same
clipboard contents into Word, all colors are subtly altered by
Word. Nothing IVT can do about that, it creates the clipboard
contents with the proper RGB color values...
The SCALE_FONT option can be used to increase or
decrease the font size. It is a floating point number, used as a
multiplication factor for the IVT font.
For some reason, a font that looks nice and normal on an IVT
screen looks rather small when pasted into Word, so the default
for this 1.4. When that does not suit you, values below 1.0 will
decrease the pasted font size, values over 1.0 will increase.
This option can also be changed in the mouse options in setup.
The current values are saved in the registry.
12.3.46: COPY_STRICT (Strict or fuzzy COPY mode)
COPY_STRICT
NO_COPY_STRICT
Default: NO_COPY_STRICT.
This is a global setting.
When you do a COPY operation (with the mouse or keyboard), IVT
can operate in either LINE or BLOCK mode (see
CUTMODE).
Toggling between the two is done by tapping F1 during the
COPY operation.
In strict BLOCK mode, IVT will always add newline
characters at the end of the block selection, even when you
select entire lines from beginning to end and some lines that
occupy 2 physical lines on screen are really only one line.
In LINE selection mode, IVT will join such wrapped lines, so
pasting produces a single line.
NO_COPY_STRICT (also known as fuzzy mode) will lift
this restriction somewhat.
In fuzzy mode, lines that were wrapped will be pasted as a single
line when you select them entirely in block selection mode. Also,
IVT will use a slightly broader view on what "wrapping" is,
exactly.
The upshot is that copy/paste works more intuitively, which is
why NO_COPY_STRICT is the default mode.
If you want a more predictable block-selection, set it to
COPY_STRICT.
This setting can also be changed from this setup-screen. The current setting is saved in the registry.
See also CUTMODE and, of course, Cutting & Pasting.
12.3.47: COPY_TRIM (Trim trailing spaces after select)
COPY_TRIM
NO_COPY_TRIM
Default: NO_COPY_TRIM.
This is a global setting.
When selecting text with the keyboard or the mouse, empty
space between words can be trimmed away, so the trailing spaces
are not copied and so also not pasted. The default is
NO_COPY_TRIM, as many people find this more logical.
Older versions of IVT had a non-configurable COPY_TRIM as default
behavior.
It can also be changed from this setup screen, and an altered value will be saved to the registry.
12.3.48: CRDIALOG (Use dialog to create sessions)
CRDIALOG OLD (Deprecated)
CRDIALOG MINIMAL
CRDIALOG MEDIUM
CRDIALOG MAXIMAL
Default: MEDIUM.
This is a global setting.
This setting determines what the "Create Session" dialog looks
like initially.
Depending on the version of IVT that you use, this will result in
a panel with fewer or more options being visible.
The default setting is MEDIUM, which hints at the many
possibilities without overwhelming the first-time user.
Higher settings show more possibilities. While the dialog is
being displayed, you can switch between the various modes by
using the MORE and LESS buttons.
This setting can also be changed from this setup screen.
The current setting is also saved into the registry.
The "old" setting used to a simple (text-mode) prompt. That possibility is now removed, and automatically changed to MINIMAL if you attempt to use it.
Note that IVT_DIALOGSTATE can be used to customize this further.
12.3.49: CURSOR_BLINK (Blinking cursor yes/no)
CURSOR_BLINK
NO_CURSOR_BLINK
Default: CURSOR_BLINK
This is a per-session
setting.
The blinking of the cursor can be turned on or off (default is
on).
The blink speed is determined by the system, it can be changed in
the system configuration panel of Windows.
This option can be configured for every session, can also be modified in this setup screen and is saved in the registry.
The color of the cursor is configurable, see COLOR_CURSOR and this setup.
The height of the cursor is configurable, see CURSOR_HEIGHT.
12.3.50: COLOR_CURSOR (Color of the cursor)
COLOR_CURSOR R G B R G B
CURSORCOLOR is an older alias for this command.
Default: Dynamic.
This is a per-session
setting.
This determines the color of the cursor used by IVT on the
session screen.
It is specified in RGB values (Red, Green, Blue) for both the
foreground and the background colors. Since this makes any color
combination possible, it guarantees that the cursor can have a
color that is not the same as the standard session screen. Every
R, G or B must indicate a numerical value between 0 - 255
inclusive. Zero is off, 255 is brightest.
A value of 255 255 255 is bright white, a value of 0 0 0 is
black.
When IVT has to display the cursor it will compare the background color of the text the cursor is on with the background color of the cursor. If the two are somewhat alike (which would make the cursor badly visible or even invisible), IVT will switch foreground and background colors to make sure the cursor remains visible at all times.
The default for this setting is:
COLOR_CURSOR 255 255 255 0 0 0
Which gives a black (0 0 0) background on a bright white
foreground.
The height of the cursor is determined by CURSOR_HEIGHT, and is by default the full
height of the font. Blinking is determined by CURSOR_BLINK.
The color can also be changed from this setup screen.
There you can use the Windows GUI color picker to find the proper
RGB values make a "nice" style cursor.
Every session can have its own style for the cursor.
The current setup is saved in the registry.
12.3.51: CURSORMODE (Application/normal mode of cursor keys)
CURSORMODE normal
CURSORMODE application
Default: normal.
This is a per-session
setting.
The cursor keys of a VT100 like terminal can be configured in
either NORMAL mode or APPLICATION mode. In normal
mode, they will emit CSI x, where x is the letter
A, B, C or D.
CSI, in turn, depends on the 7- or 8-bit
mode that the session can operate in. In 7 bit mode, CSI is
ESC [, in 8-bit mode it is 0x9B (an ESC character with the upper
bit turned on).
When the mode is APPLICATION, the keys emit ESC O (capital letter o) followed by the same letter in 7 bit mode, and 0x8F followed by the same letter in 8-bit mode. Yes, it is confusing :-)
This setting can also be changed from
setup, and is saved in the registry.
See also CODEPAGEMOD for a way to
change the behavior of 8-bit commands.
12.3.52: CURSOR_HEIGHT (Height of text-mode cursor)
CURSOR_HEIGHT Nr
Default: CURSOR_HEIGHT 16 (maximized)
CURSORHI is an old alias for CURSOR_HEIGHT.
This is a per-session
setting.
The height of the cursor is (carry-over from MS/DOS) specified as a value from 1 - 16 inclusive, and is interpreted as a fraction of the current font height. So, a value of 16 specifies the maximum (same height as the font), a value of 0 is the minimum (1 thin line, forced by IVT).
IVT will draw a solid cursor of the resulting height, in the
colors specified by COLOR_CURSOR.
Blinking is controlled through CURSOR_BLINK.
Blink rate is controlled by Windows.
When IVT loses focus, it will draw a rectangle around the current position to leave a visual indication of where the cursor is.
Every session can have its own style cursor. The setting can also be changed from this setup screen, and is saved in the registry.
12.3.53: CUTMODE (Line or Block CUT-mode)
CUTMODE BLOCK
CUTMODE LINE
Default: CUTMODE BLOCK.
This is a per-session
setting.
See mode for an explanation of
these modes.
The default for this mode can be changed using the setup screen.
During a CUT (either keyboard or mouse
driven), the mode can be toggled with the F1 key.
See also COPY_STRICT.
12.3.54: DEADKEYS (Enable/disable dead keys)
DEADKEYS
NO_DEADKEYS
This feature was a mistake and has been replaced by INPUT_LANGUAGE.
12.3.55: EMACS (Set EMACS keyboard mode)
EMACS
NO_EMACS
Default: NO_EMACS.
This is a per-session
setting.
Some EMACS users insist on being able to type things like
ALT-m and then expect IVT to send "ESC-m" to the host.
When ALT-SHIFT-m is typed, it should send "ESC-M", of
course.
Furthermore, CTRL-S and CTRL-Q have to be passed to the host
unaltered (rather than being used for local flow control, part of
the TELNET protocol).
So, when IVT runs in EMACS mode, all left-ALT key combinations
are treated as EMACS meta-keys. When the key used in combination
with the left-ALT is a normal character, it is combined with ESC
and sent to the host.
When TELNET sessions are initiated, IVT
will NOT negotiate local flow control and this implies that
CTRL-s and CTRL-q are not considered special by
IVT.
As a consequence of this, many built-in IVT keyboard commands
are disabled (ALT-P for paste, ALT-S for slower and so on).
See here for a complete list.
Note: The newer KEYBOARD_MAP command can be used to switch the IVT keyboard into XTERM mode, which is actually a superset of EMACS mode. When XTERM mode is selected, the EMACS option is implied and so will be greyed-out in the dialog.
The setting can be changed from this setup screen (for the current session only) and is saved into the registry.
12.3.56: EXPLICIT_EXIT (IVT has to be terminated explicitly)
EXPLICIT_EXIT
NO_EXPLICIT_EXIT
Default: EXPLICIT_EXIT.
This is a global setting.
Normally, IVT will exit when the last session terminates
(normally when you log out from your last session). When RECONNECT is in effect, sessions will not
disappear when you log off, but IVT will re-establish the
connection.
In that case, you have to use ALT+F4 to force IVT to
disconnect the session.
See also RETAIN_SESSIONS, which
does not cause a reconnect but leaves the session in a "zombie"
state (with an optional reconnect to the same or a different
host).
When EXPLICIT_EXIT is in effect, the behavior is a little of both. Normal sessions will disappear when you log off, except the last one. This will prevent IVT from exiting. If you want to stop IVT, you either have to use ALT+F4 on the last session, click "Exit ivt" on the menu bar or click on the close button of Windows. Or, hit ESC in the "Create session" dialog.
IVT will essentially perform a restart when EXPLICIT_EXIT is in effect. The initial login screen is displayed and you are prompted for a host name. When the autologin was used initially, it will be used again.
This setting can also be changed from this setup screen. It is also saved in the registry.
12.3.57: EXTRA_PANEL_ROOM (Horizontal spacing in dialogs)
EXTRA_PANEL_ROOM number
Traditionally, IVT tried to make all dialogs (like the create-session panel and setup screens) as compact as possible to cram maximum information in a minimum number of pixels. In 1992, that was not without reason on small, low resolution screens.
In 2019, large, high resolution screens make it possible to use more room without problems. This setting can be used to have IVT create horizontal spaces between items in dialogs: Every line is extended by the given number of pixels. For high-DPI screens, this number is scaled automatically.
The default of 3 makes most dialogs look "nice", but that is a
personal preference. The number can be set between -5 and 20.
A negative number will actually cause items to be on top of each
other, or overlap. Higher numbers will create roomier
dialogs.
Currently, there is no interactive setup item for this setting, so it can only be used in a configuration file or script.
12.3.58: F1F4 (Reverse meaning of F1-F4 and CTRL+F1 - CTRL+F4)
F1F4
F1F5
NO_F1F4
Default: NO_F1F4.
This is a per-session
setting.
Reverse F1-F4 with CTRL+F1 to CTRL+F4 (Also NO_F1F4). F1F5 is an alias for F1F4 for historical reasons.
Normally, F1-F4 perform internal IVT functions such as hold screen (F1), print screen (F2), setup (F3) and help (F4). A VT220 also has four function keys called PF1 - PF4, which are missing on a PC keyboard. Therefore, IVT maps CTRL+F1 to CTRL+F4 to these keys.
This may inconvenience users who use applications that make
heavy use of PF1 - PF4 (Oracle SQL*Forms and AIX 'smitty' are a
good examples of this).
These applications are usually full-screen style, so they in turn
do not need functions such as hold-screen and print-screen.
For this reason, you can use F1F4 to swap the PF1 - PF4
keys with the F1 - F4 keys (so you will have to use
CTRL+F2 to invoke the IVT print screen function).
The PF1 - PF4 keys are also mapped to the top row of the numeric
keypad (NUMLOCK to minus key) using the NUMERICF1F4 keyword (default setting).
The setting for the current session can also be changed from this setup screen and is saved in the registry.
12.3.59: FLASH (Action to take for flashing screen)
FLASH FLASH|TUNE|BEEP|OFF
FLASH WAV name
Default: FLASH FLASH
This is a per-session
setting.
The IVT special command escape sequence ESC<space>f will cause the screen to
flash, which is a way to have a silent BELL
command (attracting the attention of the user without making a
noise).
The standard IVT.TIC file also configures this, which implies
that Unix commands that use the TERMINFO database (such as the VI
editor) will use a visual bell by default. Some users don't like
this, and requested a way to override this, which is what the
FLASH command is for. When the escape sequence is
received, IVT will flash the screen by default, but the same
actions that are valid for a "normal" bell character can be
configured, as well.
The TUNE plays a short tune, BEEP emits a short, business-like beep, FLASH flashes the screen (default), and OFF means FLASH commands are ignored.
This Windows version of IVT can also play a sound (.WAV) file
when the FLASH command is received. You can specify the pathname
of a WAV file or the name of a sound event from the Windows
registry. Different sessions can have different files associated
with them. The filename can be changed from the setup screen as well.
See also the PLAYSOUND function.
Also, see the ESC<space>f
IVT-only escape sequence.
Also see the BELL_ABUSE function to
suppress lots of BELL characters.
Also, see F3-D for a way of ignoring unwanted
output quickly.
This setting can be changed from this setup screen.
It is also saved into the registry.
12.3.60: FONT_DISPLAY_0 (How to display "0" character)
FONT_DISPLAY_0 NORMAL | SLASH | DOT [x [y [l]]]
Default: NORMAL.
This is a per-session
setting.
Many fonts make it difficult to distinguish between a zero (0)
and the capital letter O. In the current font, they look like 0
and O.
Older systems used to use a slash through the zero, or a dot in
the middle of the zero to make the distinction more visible.
Most modern fonts do not do this anymore, so IVT can be
configured to do this for you. The default "NORMAL" setting does
nothing special: you see the zero as the font defines it.
The "SLASH" setting means IVT will display a "/" character (as the font defines it) on top of the zero.
The "DOT" setting means it will draw a dot in the middle of
the character.
It attempts to adjust the size of the dot to the size of the
font, but when a font defines a strange form of zero the idea of
"middle" may be wrong.
The defaults seem to work fine with fonts like Lucida Console and
Courier New, and most other common fonts.
When the result is ugly, you can adjust the horizontal and
vertical alignment of the dot, and the length of it (a dot is
actually a 1-pixel long line), The optional x option for
DOT can be a positive or negative value to shift the start
position to the right (positive) or left (negative).
The optional y option for DOT can be a positive or
negative value to shift the start position down (positive) or up
(negative).
The optional l option for DOT denotes the length of the
dot (default 1).
The defaults are "0 0 1" for x, y and l values.
When you make this setting the global default for IVT, these manual pages and all other text displayed by IVT will use that setting, too.
When you use the print-screen function, printed zeroes will be rendered according to this setting, too.
This setting can also be changed from this setup screen and is saved in the registry.
12.3.61: FOREIGN_ALT_NUMERIC (Recognize ALT-0/9 on foreign keyboard)
FOREIGN_ALT_NUMERIC
NO_FOREIGN_ALT_NUMERIC
Default: FOREIGN_ALT_NUMERIC.
This is a global setting.
Version 22 of IVT introduces UTF-8 and IME (International Method Editor) to support display and entering of international characters. This partial rewrite causes ALT key combinations like ALT-1 to ALT-9 (to switch between sessions) to work only when the proper combination is typed on foreign (non-American) style keyboards. However, users were so used to typing the keys in their American positions that it felt like a real handicap when those combinations no longer worked due to this change.
Therefore, this FOREIGN_ALT_NUMERIC setting can be used to force IVT to recognize the American-style ALT-0 to ALT-9 keystrokes when used on a foreign keyboard. It ONLY does this for those 10 keys, and should not ever cause problems, but because it might cause unexpected behavior on REALLY foreign keyboards, this feature can be disabled.
If you experience strangeness when typing ALT key-combinations, you might try to turn this off. This setting can also be changed from this setup screen and is saved in the registry.
12.3.62: FULLSCREEN (What to show in full screen mode)
FULLSCREEN
[MENUBAR|VSCROLL|STATUS|TABSBAR|NONE],...
Default:
FULLSCREEN MENUBAR,VSCROLL,STATUS,TABSBAR
New in IVT 16.3a: Full screen mode, entered by typing ALT+Enter or by using the menu bar, or by using the FULLSCR function. Note that using this keyword
does not mean IVT will switch into full screen mode by default -
it only describes what the screen will look like.
Note: Use NO_ALT_ENTER to disable the
key combination.
In full screen mode, IVT will maximize the window to use all
available space (removing the IVT title
bar, Windows taskbar and other screen clutter to give you the
maximum possible number of rows and columns on the physical
screen.
Typing another ALT+Enter (or by using the - optional -
menu bar will return to normal window mode). A SCRIPT can also use the FULLSCR function.
The FULLSCREEN statement is used to specify what
objects should be left on screen in full screen mode.
The menu bar (MENUBAR), vertical scroll
bar (VSCROLL) and status
line (STATUS) and TABSBAR are
all optional, and can be specified as a comma-separated list of
options.
Before the option list is processed, all options are turned off,
so:
FULLSCREEN STATUS,VSCROLL
will show the status line and vertical scroll bar in full screen mode and not the menu bar or tabs bar. Note that the full screen settings are independent of the normal settings.
The default is to have all objects enabled. NONE leaves nothing.
See also VSPACE and HSPACE, which also determine what the screen will look like in full screen mode.
This setting can also be changed from this setup screen.
The current setting is also saved in the registry.
12.3.63: FONT (Set the screen font for session)
FONT "font description"
Default: Dynamic.
This is a per-session
setting.
This command sets the font that IVT uses for the session
screens.
GUI_FONT is an old alias for "FONT"
Any fixed-pitch font can be used, you will get an error when attempting to use a variable-width font. Every session can have its own font.
See also, the SIZEFONT, which allows you to specify that the font size must be adjusted when the window is resized, rather than the number of rows and columns.
IVT automatically derives double-wide and double-high fonts from the one you specify. There is also some very clever checking to see if the font you have chosen contains decent line drawing characters. IVT needs those characters internally to draw lines and boxes, and the host can use them for the same purpose. When a font does not contain the proper symbols, a program like PuTTY will resort to "poor man's line drawing" where the lines are built from normal dashes, the pipe symbol (|) and a plus sign.
IVT will actually study the pixel-pattern of two line-drawing
characters in the chosen font to see if they actually are lines.
When not, a separate font is used for the line-drawing characters
only! The substitute font MUST be a scalable True Type font, so
IVT can obtain the proper symbols in exactly the right size. When
that fails, IVT gives in and uses poor man's line drawing as a
last resort. The substitute font is set with SUBSTITUTE_FONT and defaults to "Lucida
Console". Change at your own risk.
This feature enables IVT to use ANY font and still display all
the VT220 characters correctly.
The fontdescription is a number of comma-separated clauses of the form KEYWORD=VALUE. The following keywords are valid (case insensitive):
DEFAULT_CHARSET 1
SYMBOL_CHARSET 2
MAC_CHARSET 77
SHIFTJIS_CHARSET 128
HANGEUL_CHARSET 129
HANGUL_CHARSET 129
GB2312_CHARSET 134
CHINESEBIG5_CHARSET 136
JOHAB_CHARSET 130
GREEK_CHARSET 161
TURKISH_CHARSET 162
VIETNAMESE_CHARSET 163
HEBREW_CHARSET 177
ARABIC_CHARSET 178
BALTIC_CHARSET 186
RUSSIAN_CHARSET 204
THAI_CHARSET 222
EASTEUROPE_CHARSET 238
The built-in default for this is:
FONT "Facename=Lucida Console,Points=9"
The font can also be changed from the "Setup" menu bar. A dialog will appear that allows you to choose from all the available fonts. Such a selection is of course saved to the registry when you choose "Save setup".
If you want to add a manually selected font to your IVT.RC setup, you can view the description of the manually selected font in this setup screen.
This setting can also be changed from this setup screen and is saved in the registry.
See also SIZEFONT and FONT_QUALITY.
12.3.64: FONT_QUALITY (Set font quality for all fonts)
FONT_QUALITY DEFAULT|ANTIALIASED|NON-ANTIALIASED|
CLEARTYPE|DRAFT|PROOF
The default setting is DEFAULT.
GUI_FONT_QUALITY is an old alias for FONT_QUALITY.
This is a global setting.
You can specify any single word of out of the list above.
IVT will use this to instruct the Windows fontmapper to choose a
particular font quality for use in the main IVT window. The
default behavior of the font mapper will usually be optimized for
your environment, but if you have extreme fonts or hardware you
may want to tweak this...
From the actual Microsoft documentation:
See also FONT.
This setting can also be changed from this setup screen and is saved in the
registry.
12.3.65: GUI_CLOSE (Disable Windows close button)
GUI_CLOSE
NO_GUI_CLOSE
Default: GUI_CLOSE.
This is a global setting.
When NO_GUI_CLOSE is specified, users are prohibited
from forcibly closing IVT sessions. The close button (X on the
title bar) will be greyed-out, the system menu "Close" option
will be greyed out, the ALT-F4 key is disabled.
Lastly, the "Close session" and "Kill all sessions, exit" entries
on the "Sessions" menu of the menu bar are disabled.
This means that users can only exit IVT by cleanly logging off all sessions.
Use this when the users use an application on the host that needs to be stopped in a clean way (for example to save data). Aborting the connection must be prevented in such a case.
See also EXPLICIT_EXIT and
secure mode.
See also IVT_DIALOGSTATE to
disable parts of the interface of IVT.
This setting cannot be changed in setup, is not saved in the registry and is applied as soon as IVT is initialised. There is no way to "unprotect" IVT once started in protected mode. In other words, when you add a NO_GUI_CLOSE command to your IVT.RC file, all sessions have to be exited cleanly before IVT can terminate. Note that this may leave you with no other alternative than to forcibly kill IVT from the Windows task manager. For example, when you use IVT to connect to a serial modem port, it is unwise to have this protection on, since such a device cannot disconnect. When the application on the host misbehaves and does not allow you to log off, you will have to kill IVT (which also kills all other IVT sessions you have).
Finally, the host can still receive forced terminations when users turn their PC off, or disconnect the network cable. Also, an IVT script can use the ENDSESSION statement to force a disconnect under script control.
12.3.66: GUI_ONTOP (Force window on top)
GUI_ONTOP
NO_GUI_ONTOP
Default: NO_GUI_ONTOP
This is a global setting.
This statement forces the IVT window to be "always on top" of all the other windows. The default for this is, of course, NO_GUI_ONTOP.
It can be changed from this setup
screen, too, and is saved in the registry.
Mind you, if you configure IVT to be always on top, and configure
a 100% screen size, it becomes very hard
to use any other application. If you want to lock users in a
single application environment, also check out secure mode and GUI_CLOSE.
Another nice feature is IVT_DIALOGSTATE that allows you to disable
arbitrary bits of the IVT interface.
The statement can also be used to force IVT to the foreground by issuing the following commands in a script:
GUI_ONTOP
NO_GUI_ONTOP
The first forces IVT to the front, the second turns the
feature off but leaves the IVT windows visible. This is handy
when some important condition is discovered that requires
immediate user attention.
See also FLASHWINDOW.
12.3.67: GUI_RESIZE (allow resize of session)
GUI_RESIZE
NO_GUI_RESIZE
Default: GUI_RESIZE.
This is a per-session
setting.
When NO_GUI_RESIZE is specified, the session cannot be
resized by means of the maximize/restore button or by dragging
the borders of the window.
The host can still send a resize command, and a script can
control the size, but the user cannot (easily).
But since this is "just an option", it can be set with
this setup screen and can thus be
turned off by a user that insists (but see IVT_DIALOGSTATE to disable this, too).
For example:
IVT_DIALOGSTATE
S1_RESIZE SKIP
IVT_DIALOGSTATE
S1_SIZE4ALL SKIP
When the user changes the font, the NO_GUI_RESIZE may result in a different size of the window, but the number of rows and colums will remain fixed.
See also SIZEFONT, which will cause
the number of rows and columns to stay the same and resize the
font when the user resizes the window.
See also ALT_ENTER for full-screen
switching.
The setting is per session, so you can use it in a script to
force a specific size for a specific session.
It is also saved in the registry.
See also ONRESIZE scripts. They can
track (and/or undo) size changes.
See also SIZE4ALL, WIN_MINIMIZE and FULLSCREEN.
12.3.68: HIDEMOUSE (hide mouse pointer while typing)
HIDEMOUSE
NO_HIDEMOUSE
Default: HIDEMOUSE.
GUI_HIDEMOUSE is an old alias for HIDEMOUSE.
This is a global setting.
IVT can remove the mouse pointer from the IVT window during
typing. This makes sure that the pointer-image does not hide or
interfere with the typing itself.
The mouse is re-enabled as soon as it is moved or used in any
way.
The mouse is NOT hidden when a (clickable) dialog or IVT menu is
visible.
Hidden by default. Can also be changed from this setup screen.
The current setting is saved in the registry.
12.3.69: HIGHLIGHT (Highlight expressions on screen, act on them)
HIGHLIGHT PATTERN=regexp [options...]
NO_HIGHLIGHT [LOCAL|GLOBAL|ID NAME [...]]
Default: None.
This is a per-session
setting.
It allows you to specify regular
expressions that trigger a highlighting on the session
screen, to make certain messages "jump out" at you.
Any RGB combination of colors can be specified for foreground and
background colors, not just the 16 VT220 colors. Optionally, you
can make them blink or be underlined as well.
Matching strings can have tool-tips
associated with them and you can configure scripts to start when the user clicks on the
highlighted text.
There is even a CALL_AUTO, that will
call a script whenever a match occurs.
NO_HIGHLIGHT will remove existing highlight
patterns.
There are two lists: GLOBAL (all sessions) and
LOCAL (current session only).
When no mode is specified, the proper list is determined
automatically.
When an explicit mode is specified, that list is cleared.
You can also specify a IDs to clear, in that case a HIGHLIGHT statement that was created with an (optional) ID clause exactly matching the given ID will be removed (searched for in both lists). This is needed when you write highlight statements that have patterns and/or tooltips that depend on the current IVT language. When the user switches language an ONLANGUAGE script can delete and redefine such highlight statements. See the highlight.ivt script that is part of the standard IVT distribution for an example.
There are many options you can specify for HIGHLIGHT. The complete list is:
EXCLUDE="/usr/include/"
Example: FG=Red
Example: FG=DARKBLUE
Example: FG="255 0 0"
Example: FG="255,0,0" (Commas are optional)
Example: FG=Default
The interactive setup screen can be used to easily view the details of all HIGHLIGHT statements. You cannot use the interactive editor to change or remove the patterns that were created using a HIGHLIGHT statement in an IVT.RC file. The only thing you can change is the state of the "Enabled" flag, to temporarily disable (or enable) a pattern.
New patterns can be added, and patterns added this way can be
edited and removed interactively as well. When you save setup,
patterns that were added interactively will be saved as part of
the setup. HIGHLIGHT entries that are not saved are lost
when IVT exits!
HIGHLIGHTs can be part of a PROFILE, and IVT will load and unload sets of such
highlight statements when you switch profiles.
A pattern can be GLOBAL or "This session only". When you save a profile, the "per session" patterns are promoted to global. You can also write scripts to add (or delete) patterns for specific sessions. You can also change this setting on this setup screen.
Examples:
HIGHLIGHT PATTERN="IVT"
BLINK
A more useful one:
HIGHLIGHT PATTERN="https?://[^
,<>\(\)\`\"\'!]+" \
FG=brightblue
BG=Default
underline \
CALL_BUTTON1=ClickURL \
ON_DEFAULT_COLORS_ONLY \
TIP="Click
to follow"
This one is so useful it is part of the standard distribution
of IVT. The pattern matches an URL. Basically, it matches all
http://blah or https://blah types of string. When a match is
found, it is shown in bright blue characters, underlined (this
format may look slightly familiar).
The BG=Default makes sure the background color is
unaltered.
When a host sends a URL in special colors, IVT will take NO
special action at all on the match (because of the
ON_DEFAULT_COLORS_ONLY).
When the mouse is hovered over a URL, the tooltip will say:
"Click to follow".
When the user clicks the text, the ClickURL script is
started.
That script (also part of the standard distribution) will use
SHELLEXECUTE function to actually
start a browser, passing it the URL on the screen.
In other words: This highlight statement will make IVT recognize
web URLs both on the session screen and in this documentation
itself.
Searching for highlighted strings in
the session history has a special exception.
If you search for the pattern "." and check the "highlighted"
option, this would normally mean a search for individual
characters that have the 'highlight' property.
It then takes many presses on the 'N' key to skip all characters
on the same line. This is why IVT optimizes this special case: it
only matches a highlighted pattern once. So "." means: look for
HIGHLIGHT matches one by one, allowing for efficient searching
for the 'next' (press 'n') or previous (press 'N'). Also, the
matches are not shown in the COLOR_SEARCH colors, but in the original
colors specified in the HIGHLIGHT statement.
NOTE: If you program HIGHLIGHT statements using a SCRIPT, make sure you pass valid script syntax. IVT will interpret everything that follows the HIGHLIGHT as a series of expressions. The sequence of expression RESULTS is passed to the HIGHLIGHT statement. For example:
Script Something
HIGHLIGHT PATTERN="Demo 1" BG=green
END
Looks valid, but is not because this is seen as an assignment
of "Demo 1" to the variable $PATTERN, and the result of that
expression is "Demo 1".
Similarly, the word "green" is assigned to the $BG variable,
result is "green".
So the highlight statement sees:
HIGHLIGHT Demo 1 green
And this will trigger several errors:
Unexpected keyword: Demo 1 green
Missing PATTERN=string clause
Because it sees things it does not recognize and misses the
compulsory PATTERN.
The proper way to write this is:
Script Something
HIGHLIGHT "PATTERN=\"Demo 1\"" "BG=green"
END
And now the resulting statement reads:
HIGHLIGHT PATTERN="Demo 1"
BG=green
See also HIGHLIGHT hash.
See also REGMATCH and SUBSTITUTE.
See also WAIT REGEXP.
12.3.70: HIGHLIGHT_MODE (Turn all HIGHLIGHT string on/off)
HIGHLIGHT_MODE
NO_HIGHLIGHT_MODE
Default: HIGHLIGHT_MODE
This is a per-session
setting.
The HIGHLIGHT statement allows you to
have (lots of) regular expressions that
will cause matching strings to be highlighted on screen.
Sometimes you may want to temporarily disable those
highlights.
For one thing, it takes considerable computing power to do the
highlights and this may slow things down too much. Second, too
many highlighted strings on the screen can cause a (colorful)
mess.
Every individual HIGHLIGHT statement
has an enable/disable indicator, but if you have many it may be
more convenient to disable all of them at once.
The NO_HIGHLIGHT_MODE will achieve this for the current
session.
Since this setting is part of the IVT PROFILE, it is saved into the registry when you use the 'Save settings'
feature. If the default profile contains this flag in the "off"
mode, all HIGHLIGHTS will be disabled by default and then you can
use HIGHLIGHT_MODE to turn them on for individual
sessions.
The setting can also be changed from this setup screen and is saved in the registry.
12.3.71: INPUT_LANGUAGE (Keyboard input language)
INPUT_LANGUAGE default
INPUT_LANGUAGE languagename
Default: INPUT_LANGUAGE default
See also BIDI_RTL_LANGUAGE.
This is a global setting.
Older versions of IVT used to have a DEADKEYS setting
that allowed you to ignore dead keys which are used on
international keyboards to type characters with accents. Since I
am Dutch, I frequently use such keyboards that do not produce a "
when it is typed, but combine it with the next character to an
accented character. Very annoying when editing scripts and source
code.
Normally you would change the input language (and set it to
American), but I also frequently need the Dutch setting in other
programs.
That is why the DEADKEYS setting was introduced: IVT would always produce the correct character, even when it was actually receiving accented characters from the Windows keyboard driver. IVT went through a lot of trouble to strip those accents off again.
When I developed the UTF-8 code, I found that the Dutch accents are only one easy form of special keyboard input: typing traditional Chinese involves many keystrokes to produce a single character, and my DEADKEY code failed in dealing with this, So, DEADKEYS is gone and replaced by INPUT_LANGUAGE.
This new setting does not try to change the code generated by the keyboard, but allows you to change the Windows keyboard setting for IVT to any of the installed languages on your system. The list can be changed using the language tool bar, and switching input languages is normally also done using the language icon in the Windows toolbar.
Adding languages results in a list of keyboards supported by
your system.
The names can be shown in IVT setup (Keyboard/font, input
language), My system normally shows "United states
(international)" and "United states".
The international setting produces the accented characters.
Those names can now be used as arguments to the
INPUT_LANGUAGE command:
INPUT_LANGUAGE "United
states"
will force my "normal" setting in the current session.
The setting can be changed for every session, and the Windows
input language icon will change when you switch between
sessions.
When left on the "default" setting, IVT will not do anything to change the keyboard input language, so you will have to manually change the input language when you need it.
See also this setup
screen.
This setting is saved in the registry.
NOTE: This function is also available through IVTFUNCTION, in which case you need to specify the name of the language as an argument. The difference between using the IVT.RC statement and the IVTFUNCTION is that the setting for the session is not changed, only the Windows function to change the language is called.
NOTE: When you enable BIDI and
BIDI_RTL_LANGUAGE, then the
language setting for BIDI takes precedence over the
default language set by INPUT_LANGUAGE.
When you use multiple sessions, some of which actually use
BIDI and some do not, it is best to set
INPUT_LANGUAGE, BIDI_RTL_LANGUAGE and
BIDI_LTR_LANGAUAGE all explicitly, so IVT will explicitly
set the keyboard language every time you create a new session, or
switch between them. When one or more settings are left on "Use
system default", IVT will take no special action and that can
make switching between sessions set an unpredictable keyboard
layout.
See also ONLANGUAGE, NLS and LANGUAGE_FILES.
This is an important feature, others are prev/next
12.3.72: IVT_DIALOGSTATE (Configure dialogs and menus)
IVT_DIALOGSTATE name ENABLE
IVT_DIALOGSTATE name DISABLE
IVT_DIALOGSTATE name SKIP
This is a global setting.
This command allows you to selectively disable or omit all
parts of the IVT menus and dialogs. Every menu item, every
button, textbox, radio button and every checkbox has an internal,
unique name. These names are also used for the translation of the
IVT user interface into another national
language.
This name can be used to configure the visibility state of such
items as well. The state of an item can be normal
(ENABLE), greyed out (DISABLE) or omitted entirely
(SKIP). The rules are as follows:
Since this allows you to make arbitrary elements of the dialog unavailable, you can make IVT totally unusable by disabling OK buttons all over the place, or omitting essential parts of the interface. So be careful.
It is MEANT to be used to allow users only access to those
parts of the interface that you think they actually need, without
allowing them to change arbitrary settings which will disrupt
normal use of applications by IVT.
A nice example of this is to allow the user to change the printer
used by IVT (which requires access to setup) without allowing
access to Kerberos setup which may break secure authentication or
have an adverse effect on security.
The IVT_DIALOGSTATE can be used to disable the "Kerberos" button in the setup panel by doing:
IVT_DIALOGSTATE SETUP_KERBEROS DISABLE
which will make this button permanently greyed out.
Within a dialog, you can disable or omit any item, as long as you
know the name. This name can be obtained in various
ways:
There is no warning or error when you misspell the name, as
not all of the names are used by all versions of IVT. For
example, Kerberos dialog items are not known by versions of IVT
without Kerberos support compiled in.
Unknown items are simply ignored.
And, of course, this "get name" feature itself can be disabled using NO_OBJECT_ID, so users cannot obtain the names of the internal ID's (or be confused when they accidentally trigger one of the actions that causes a name of an internal object to be displayed).
See also security.
12.3.73: IVT_LANGUAGE (Language used by IVT itself)
IVT_LANGUAGE "name"
Default: IVT_LANGUAGE "English"
This is a global setting.
Chooses the national language of IVT itself. Valid choices are:
IVT will, during start-up automatically scan the "Languages"
subdirectory for files containing translation tables for IVT
itself and scripts.
The file called "ivt.main" is the translation for IVT itself, and
have items for all menus and dialogs into a foreign language.
Most of IVT is translated, only the more obscure messages and
error pop-ups are in English only.
All other files are assumed to be used for scripts that use
DIALOG statements and plain strings.
Dialogs are automatically translated, the strings can be accessed
using the NLS() function. There are plenty of
examples in the Language structure to serve as guidelines for
developing your own.
The language directory called "Example" serves as a template
for translations into other languages. It contains the original
English strings, and shows what you have to do to adapt IVT to a
new language.
There is no need to compile the file - a new file or version of a
file works immediately.
If you do write a file in a new language, please be so kind to mail a copy to support@ivtssh.nl, so it can be included in future releases.
The files can also be used to customise the look & feel of IVT. Copy one of the files, modify as desired, give it a unique language name and this will become a valid choice for an IVT_LANGUAGE statement.
You can change the language from this setup screen, too.
This will switch to the new language immediately; no restart of
IVT required.
The current setting is saved in the registry.
The LANGUAGE_FILES keyword can
be used to point IVT to extra translation table files. A script
or package can use this to have private translation tables to
support multiple user languages in scripts.
See also ONLANGUAGE, NLS and LANGUAGE_FILES.
NOTE:
This field is one that can be configured using the installation
wizard that is automatically started when you install IVT.
Because it would give conflicts when you change this both in the
configuration file created by the wizard and in interactive
setup, this item is disabled in
interactive setup.
If you want to change this item, re-run the installation
wizard:
Menubar->setup->Re-run initial setup script
The wizard has as the first button a "Do not use wizard" feature. If you choose that, all items in interactive setup will be enabled again (and you must configure all the necessary options there and save the setup, or edit the IVT.RC file manually).
12.3.74: KEYBOARD_MAP (Select XTERM/VT220 type of keyboard)
KEYBOARD_MAP VT220
KEYBOARD_MAP XTERM [option,]...
CTRL_CURSOR
NO_CTRL_CURSOR
ALT_CURSOR
NO_ALT_CURSOR
ALT_T
NO_ALT_T
ALT_DIGIT
NO_ALT_DIGIT
CTRL_PGUP_DOWN
NO_CTRL_PGUP_DOWN
Default: VT220, NO_CTRL_CURSOR,ALT_CURSOR,ALT_T,ALT_DIGIT,CTRL_PGUP_DOWN
A VT220 has a keyboard with 20 function keys, cursor keys and
so on that emit well-defined, time-honored sequences recognized
by millions of hosts worldwide.
An Xterminal nowadays uses a standard PC keyboard (fewer function
keys) and has been modified to emit subtly different sequences
that allow greater control.
For example, a VT220 does not make a difference between a cursor
key and the same key combined with SHIFT. Using CTRL-cursor emits
nothing on a VT220, so IVT has used such combinations for
internal functions (session switching) for over 25 years.
An Xterminal will emit codes in such a way that the host can
see the difference between a normal cursor key, shifted cursor,
ALT-cursor, Ctrl-Cursor and even combinations like
CTRL-SHIFT-Cursor and so on.
Similar things happen with function keys: F7 on a VT220 will send
the code for the F7 key, SHIFT-F7 (in IVT) will send the code for
F17.
An Xterm does not have an F17 key, so it sends code for "F7 +
Shift" (and other codes for Ctrl, Alt and combinations
thereof).
When KEYBOARD_MAP XTERM is used, IVT will emit keyboard codes identical to a modern Xterm. This allows you to use editors like "micro" on Linux, which rely heavily on this.
However, there is a conflict with existing key-combinations in IVT. In Xterm mode these have to send data to the host, but IVT uses:
The options on this KEYBOARD_MAP XTERM can be used to configure what you want to happen when you use these IVT keyboard-combinations.
Note: These options are rather special: The KEYBOARD_MAP command is a per- session setting, but the options are global (since they are used for switching sessions, behavior would be very illogical if different sessions had different behavior for session-switching keys).
These settings can also be changed from this setup screen and current settings are saved in the registry.
12.3.75: KEYBOARDMOD (Modify keyboard codepage)
KEYBOARDMOD InputValue UseValue
Default: Not used.
This is a per-session
setting.
See also CODEPAGEMOD for more information.
The KEYBOARDMOD statement is useful to build custom keyboard translations.
When a KEYBOARDMOD statement is used, IVT will test
every single keystroke against all specified InputValues
(you can have many different KEYBOARDMOD statements in
your IVT.RC file).
When a match is found, IVT simply pretends that the
UseValue key was typed.
The UseValue can be any valid Unicode character (range 0
to 0x10FFFF). This allows you to simplify typing certain complex
characters, but you probably want to set the CODEPAGE to UTF-8 in such cases, since characters
outside the normal range can only be properly transmitted and
received in UTF-8.
The InputValue and UseValue can be specified in
hexadecimal, and must both be values between 0 and 0x10FFF (any
Unicode character value).
Example:
KEYBOARDMOD 0x30 0x31
CODEPAGEMOD 0x31 0x30
The FIRST line causes every zero you type to be translated
into a one.
The SECOND line causes every received '1' to be displayed
as a '0'.
This will make your host see a '1' while you are seeing a '0'!
This example is not very useful but it is instructive :-)
If you want to modify a certain keystroke (combination) on your keyboard, you can use the keyboard-debug feature of IVT (setup->Language/keyboard panel) to make IVT show the internal codes of every typed character. The VirtualKey code is the value to use as the first parameter in the KEYBOARDMOD statement (it is the value generated by your actual keyboard driver). For IME input (International Method Editor) the Unicode and UTF-8 representations for every generated character are shown. Use the IME-CHAR value for the InputValue parameter if you want to translate such characters.
There is a local KEYBOARDMOD list (created by having a script running in the context of a session, see PRECONNECT and ONCONNECT), and there is a global KEYBOARDMOD list (from normal IVT.RC statements or by using the GLOBAL keyword in a script). When the local list has a match, that is used, else the global list is searched.
See also "Learn mode" which allows you to have more complex translations, ONKEY which allows you trap the keyboard events and KEYMACRO which allows you to triggers scripts when keys are typed.
12.3.76: KEYMACRO (Program any key to do anything)
KEYMACRO "Key description"
STRING [VT220]
"String value"
KEYMACRO "Key description" SYNCFUNCTION [VT220]
Script [params]
KEYMACRO "Key description" ASYNCFUNCTION [VT220] Script
[params]
KEYMACRO "Key description"
IVTFUNCTION [VT220] "Internal
function"
This is a per-session setting.
The keyboard macro recorder allows you to
reprogram keys in various ways, where any key combination can be
programmed to either send a string, invoke a script, perform an
internal IVT function and so on.
Traditionally, these programmed keys had to be saved in files
which had to be loaded at IVT start-up time using the LOAD keyword. In version 22 and later of IVT these
recordings are saved as part of setup, though.
The simple KEYNAME command can be used to program keys that have predefined VT220 names (such as F1 - F20, NXTSCR and so on). That command, however, does not allow you to program key-combinations (such as ALT+F10 and so on).
Various people requested a means to program these key
combinations with the flexibility and power of the macro recorder
in IVT.RC files only, since this allows for better
maintainability, distribution to many users and readability.
For this reason, the KEYMACRO command was added. The rules
are as follows:
STRING: Send a simple
string.
SYNCFUNCTION: Call a script, wait for it to
finish.
ASYNCFUNCTION: Start a script, do NOT wait for it to
finish.
IVTFUNCTION: Call an internal IVT function, see here for list.
For the difference between calling a script synchronously or asynchronously, see the BIND_SYNC and BIND_ASYNC commands.
IMPORTANT EXTRA FEATURE:
The keymacro recorder in setup only allows you to program keys
that generate data. This is because you have to type the key to
program, and that part of IVT does not respond to Ctrl, Shift,
Alt and so on being typed by themselves.
BUT: you can code this in a KEYMACRO statement in your
IVT.RC file! This allows you to code
reactions to such keys pressed singly or in combination.
For example:
KEYMACRO "-Shift+LCtrl+RCtrl-Alt" IVTFUNCTION "Show current cursor
position"
This says: When none of the shift keys is down, Left control
is down, Right control is down, none of the Alt keys is down:
show where the cursor is.
Result: when you press both CTRL keys together, IVT briefly shows
a large red cross through the current cursor position. This one
is part of the standard distribution of IVT - try it now!
If you write this macro as:
KEYMACRO "+LCtrl+RCtrl" IVTFUNCTION "Show current cursor
position"
It ALSO does this when you press both CTRL keys together with one or more of the SHIFT and ALT keys (it does not mention the state of the Shift and Alt, so they are "don't care" keys).
The resulting set of words that the KEYMACRO key description can contain is described below. The ORDER is very important: use the order below to string descriptions together. "+Shift+Ctrl" is OK, "+Ctrl+Shift" is NOT! Also, strings are case sensitive: +CAPS and -caps work, -CAPS does not!
Name of the key.
This comes first, it gives the name of the
data-generating key. Use the
name generated by the keyboard macro recorder
for the key.
NOTE: This is language dependent! A Swedish
installation of Windows will
give a Swedish name for the ENTER key. This is
why there is a "Copy to
clipboard" function on the macro recorder.
When this is omitted, the KEYMACRO can
match non-data generating keys.
Use the constant ANY_KEY to match
anything (make sure the rest of the match
describes other properties of the key). A lone
ANY_KEY will truly match
every key.
+LShift
The left shift key must be down, or the
KEYMACRO does NOT match.
+RShift
The right shift key must be down, or the
KEYMACRO does NOT match.
+Shift
One of the shift keys must be down, or the
KEYMACRO does NOT match.
-Shift
None of the shift keys may be down, or the
KEYMACRO does NOT match.
When nothing is mentioned about Shift at all, the state of the shift keys is irrelevant.
+LCtrl
The left CTRL key must be down, or the KEYMACRO
does NOT match.
+RCtrl
The right CTRL key must be down, or the
KEYMACRO does NOT match.
+Ctrl
One of the CTRL keys must be down, or the
KEYMACRO does NOT match.
-Ctrl
None of the CTRL keys may be down, or the
KEYMACRO does NOT match.
When nothing is mentioned about Ctrl at all, the state of the CTRL keys is irrelevant.
+LeftAlt
The left ALT key must be down, or the KEYMACRO
does NOT match.
+RightAlt
The right ALT key must be down, or the KEYMACRO
does NOT match.
+Alt
One of the ALT keys must be down, or the
KEYMACRO does NOT match.
-Alt
None of the ALT keys may be down, or the
KEYMACRO does NOT match.
When nothing is mentioned about ALT at all, the state of the Alt key is irrelevant.
+CAPS
The CAPS LOCK key must be on.
-caps
The CAPS LOCK key must be off.
When nothing is mentioned about CAPS, the state is irrelevant.
+NUM
The NUM LOCK key must be on.
-num
The NUM LOCK key must be off.
When nothing is mentioned about NUM, the state is irrelevant.
+SCROLL
The SCROLL LOCK key must be on.
-scroll
The SCROLL LOCK key must be off.
When nothing is mentioned about SCROLL, the state is irrelevant.
+SCAN XX
The XX must match the hexadecimal scan code for
the key (can be more than
2 digits), this can be used to differentiate
between 2 otherwise identical
keys (such as PgDown on the numeric keypad and
the "normal" PgDown key).
When SCAN is not used, it is
irrelevant which key is used.
Use keyboard debugging to find the particular
scan code of a key, or turn
on the "Scan code" flag in the keyboard macro
setup. If you want to match
a data key on scan code instead of name, use a
combination with ANY_KEY:
KEYMACRO "ANY_KEY+SCAN 4A"
will work.
+KBSTATE XX
The keyboard state is a bit pattern that
describes the state of all
modifiers such as Ctl, Caps, Scroll lock, num
lock and so on.
It can be used to match odd combinations.
Seldom used.
Use keyboard debugging to find the particular
code, shown as "Cntl".
Only used in scripts, never generated by IVT
itself.
+VIRTUAL XX
The Windows virtual key code for a key (can be
more than 2 hex digits).
It can be used to match odd keys, or in
combination with ANY_KEY.
Use keyboard debugging to find the particular
code, shown as "Virtual".
Only used in scripts, never generated by IVT
itself.
Note that you can have a keymacro for "F8" and another for
"F8+Shift".
The first one says nothing about the state of the shift keys, so
it matches when you press F8 and shift. However, the SECOND one
matches better, so when given the choice, IVT will use the best
match.
To complicate matters yet a little more, you can have
KEYMACRO definitions on the global level (from normal
lines in an IVT.RC file) and on the session level (either from
PRECONNECT or ONCONNECT scripts or marked as "session only"
when the key was defined using the recorder).
When searching these lists, the best match wins, so if you define
"F8" on the session level and "F8+Shift" on the global level, a
lone F8 will match the session macro, a shifted F8 will match the
global macro.
Perhaps needless to say, but the combination of all the settings in the key description, plus the power to invoke internal functions or scripts that use the IVTFUNCTION and whatever logic you care to program, allows you to make very flexible keyboard mappings. It can also confuse users to no end if you use all these possibilities in an entertaining mix :-)
Examples:
See also learning mode and keyboard
macros and LOAD. See also KEYNAME and SEND.
See also CAPSLOCK (to disable the CAPS
lock key).
12.3.77: KEYNAME (Program VT220 keys)
KEYNAME stringexp
This command is deprecated: see KEYMACRO instead.
This is a per-session
setting.
Programs KEYNAME to stringexp. The KEYNAME must be the name of a valid VT220 function key. If this is used in an IVT.RC file, the key will be programmed in ALL sessions. When used in a SCRIPT, it will only apply to the current session. Examples:
NXTSCR "ls -lab\r"
F6 Hello
REMOVE "\7F"
This will program the PageDown key to send the Unix
command 'ls -lab RETURN'.
The VT220 function key F6 will emit the string "Hello".
The VT220 function key "Remove" (mapped to the PC "Del" key) is
programmed to emit a single DEL character.
Also, see the keyp program for Unix, which
allows the host to (temporarily) program the IVT keys.
Note that the keyboard can be reprogrammed in SCO-ANSI mode instead of the default VT220 keyboard map. Keys programmed in the way shown here will work regardless of that setting!
See also BIND (to tie a key to a script)
and keyboard macros.
See also KEYMACRO.
Attention: Previous versions of IVT allowed no quotes in the stringexp, but version 18.1 of IVT now forces a more logical and consistent syntax. When you omit the quotes, you can have only a single word. When you need embedded spaces, use the quotes. When you want to emit a quote, use a backslash to escape it.
12.3.78: LANGUAGE_FILES (Add extra translation tables for scripts)
LANGUAGE_FILES "pathname-expression"
Default: None.
This is a global setting.
IVT is a multi-lingual program, and extends the support for
those multiple languages to the scripts that you write yourself.
Many items in IVT can be translated fully automatically because
IVT knows the context of the text.
The AutoPrompt system of IVT is entirely written in the script
language of IVT.
It is used here as an example of how to achieve the automatic
switch to any supported language (there is a dialog to configure
it, an item on the menu bar, and various popups and
error-messages that can be displayed, all in the currently
selected language. Click here to go
straight to the example.
The NLS() function uses the translation
tables that come with IVT (in the Languages subdirectory) to
provide texts in all supported languages.
The LANGUAGE_FILES statement can be used to teach IVT the
location of your own files and directories with translation
tables. Every time the NLS function is used, the system searches
the translation tables for a named item (the 1st parameter of the
NLS function) given the currently selected national language, the
current script name and so on. If it can find a translation, that
is returned. If no translation can be found, the 2nd parameter of
NLS is returned (which is intended to be the original English
text).
In detail, the rules are as follows:
Every translation file can have the following types of lines:
DEFINE CANCEL "Afbreken"
The "AutoPrompt" system serves as
an example of how to write a multi-lingual script that interacts
with the user in various complex ways.
Follow the above link to see the low-level details. The gist
is:
DIALOG Acfg OPTION_NL USE "Enable autoprompt system"...
FILE "AutoPrompt"
PACKAGE "AutoPrompt"
DIALOG Acfg
DLG USE "Gebruik AutoPrompt system"
VTECHO Nls("DIDSET", \
"IVT AutoPrompt: Configured session prompt
successfully\n")
STRING DIDSET "IVT AutoPrompt: Sessie prompt is met succes
gezet\r"
It may be instructive to study the source of AutoPrompt.ivt (part of the distro), and the translation tables in the Languages/Dutch directory of IVT.
Using this system, any script can be created to use any existing language.
12.3.79: LAST_POSITION (Restore last position and size)
LAST_POSITION
NO_LAST_POSITION
Default: LAST_POSITION
This is a global setting.
IVT will, by default, restore the last size and position of the window when it starts up. This can be suppressed using NO_LAST_POSITION, in which case the configuration will determine the startup size (see WINDOW_SIZE).
When a size is saved as part of the default profile, or the user has an explicit command in a private configuration file specifying a default window size, the last saved position is ignored automatically.
Currently, there is no interactive setup item for this.
See also LAST_PROTOCOL.
12.3.80: LAST_PROTOCOL (Restore last protocol on startup)
LAST_PROTOCOL
NO_LAST_PROTOCOL
Default: LAST_PROTOCOL
This is a global setting.
IVT will, by default, restore the protocol of the last session that was created when it starts up. This can be suppressed using NO_LAST_PROTOCOL, in which case the configuration will determine the protocol (see PROTOCOL).
Currently, there is no interactive setup item for this.
See also LAST_POSITION.
12.3.81: LEAVE_COPY_SELECTION (Leave selected area visible)
LEAVE_COPY_SELECTION
NO_LEAVE_COPY_SELECTION
Default: NO_LEAVE_COPY_SELECTION.
This is a global setting.
Copying and pasting in IVT is, by default, different from most
other applications. Applications like X-windows and PuTTY will
allow you to select an area with the mouse, and when you release
the mouse button, will leave the selected area visible on
screen.
I think that is wrong - the only thing the application can do
with the selected area is to copy it to the clipboard - you
cannot cut from an SSH or TELNET application, and there is
nothing else to do with selected text.
Permanently changing the contents of the screen is, IMHO, simply
wrong.
So, by default, IVT will remove the selection from the screen and do the COPY operation as soon as you release the mouse.
However, many people are so used to the way other applications
handle selection of text that they think they do something wrong
when they release the mouse and the selected area disappears.
Even worse, some think IVT does something wrong :-)
The MOUSE_SELECTION command can be
used to configure IVT to use the more common PuTTY/XTERM
selection method.
So, the LEAVE_COPY_SELECTION setting will cause IVT to
do what others do, more or less. The selection is left on-screen,
but still removed as soon as the contents of the screen is
updated. You can select from the scroll back buffer and scroll
around, and the selection is left intact. You can switch to other
sessions, and the selection will be left intact. Multiple
sessions can have their own selections visible.
This allows you to use the mouse as a sort of highlighter.
A single short click in the session window will also remove any
current selection. So will starting a new COPY operation.
BTW: Extending the current selection is usually not done by
double/triple clicking, but by clicking the right-hand button
while the left is KEPT DOWN. I find this gives a much more
reliable way of selecting words, since it does not depend on the
timing of the clicks. It also allows a finer degree of control
over extending the selection.
But see the MOUSE_SELECTION
command to alter this.
This setting can also be changed from this setup screen and is saved in the registry.
NOTE:
This field is one that can be configured using the installation
wizard that is automatically started when you install IVT.
Because it would give conflicts when you change this both in the
configuration file created by the wizard and in interactive
setup, this item is disabled in
interactive setup.
If you want to change this item, re-run the installation
wizard:
Menubar->setup->Re-run initial setup script
The wizard has as the first button a "Do not use wizard" feature. If you choose that, all items in interactive setup will be enabled again (and you must configure all the necessary options there and save the setup, or edit the IVT.RC file manually).
12.3.82: LF_IMP_CR (Linefeed implies Carriage return)
LF_IMP_CR
NO_LF_IMP_CR
Default: NO_LF_IMP_CR
This is a per-session
setting.
See also here.
Simple option with long history.
When this option is ON, IVT will position the cursor on the
first position of the line after receiving a new line character.
The default of a VT220 terminal is NOT to do this, and so an
explicit carriage return character is required.
Hence the name: LineFeed Implies Carriage return.
Using an CSI 20 h/l escape sequence, the host can also change this setting.
Older versions of IVT refused to save this setting in the
registry, as that will break VT220 compatibility (something I
take very seriously).
However, hosts exist that assume this setting to be ON without
actually TURNING it on, so to accommodate such hosts the setting
can now be saved in the registry and be set from the setup
language using this statement.
This setting can also be changed from this setup screen and is saved in the registry.
12.3.83: LINK[UN]SELCOL (Color for (un)selected links)
LINKSELCOL ForeGround BackGround
[[BRIGHT|NOBRIGHT] BRIGHT|NOBRIGHT]
LINKUNSELCOL ForeGround BackGround [[BRIGHT|NOBRIGHT]
BRIGHT|NOBRIGHT]
This is a global setting.
These command determines the way these manual pages look on screen. There are two ways to display a hypertext link such as this:
You can experiment with the settings using this setup screen. The colors can be specified in
words (black, white, etc), or as numbers.
The valid values are in this color
table.
12.3.84: LOAD (Loads a learned key-definition file)
LOAD M|RG|L File
Note: Deprecated. Use KEYMACRO or
save-to-registry instead.
This is a global setting.
The LOAD command loads a file with keyboard macros into memory. This file must have been previously created using WRITE option of the F4-K screen.
Following the word LOAD there must be a two-character
string.
The FIRST character must be one of:
The SECOND character must be one of:
If you want to redefine the keyboard to be ANSI compatible, see SCO_ANSI.
This feature allows you, for example, to program all sorts of
strange key combinations using F3-L from
setup. After all definitions are to your
satisfaction, you save the file and use a LOAD command in
your default IVT.RC file to restore those
definitions any time you start IVT.
Since version 22 of IVT, macro's are also saved as part of normal
setup. Make sure you choose ONE method and not both at the same
time, it is easy to lose track of where key definitions come from
otherwise.
Most keys can be programmed, even ALT keys that are used by IVT. You lose the standard function, however (unless you move them to other keys first).
Example:
LOAD MG "$IVTDIR/mykeys.key"
Adds the key definitions in the named file to the global list (so they work in all current and future sessions).
NOTE: This version of IVT also allows you to simply use
"save" in setup to save the entire setup, including programmed
keys, into the registry.
This is much easier, but does not allow you to share those
programmed keys with other users.
Programming explicit KEYMACRO statements
in an IVT.RC file is the most portable and
maintainable way (and hence the preferred way).
12.3.85: LOCKTIMER (Locks keyword with PASSWORD after N minutes)
LOCKTIMER num
Default: 0 (off).
This is a global setting.
Auto-lock keyboard after num
minutes. IVT will start a countdown 30
seconds before the keyboard is locked, unlocking is done by
typing the correct PASSWORD. The timer
can be set using the setup screen,
and so can the password.
A locked keyboard will cause a keys-icon to appear in the status
bar and only a valid password followed by return will unlock it.
Typing RETURN without a valid password preceding it will sound
the BELL.
The keyboard can be locked manually using ALT+L.
This feature works only when a password
is defined to unlock it.
12.3.86: MOUSE (Configure left/right mouse buttons)
MOUSE OFF
MOUSE SUPDUP
MOUSE XTERM
MOUSE XTERM2
MOUSE CURSOR
MOUSE VI
MOUSE CUTPASTE
Default: MOUSE CUTPASTE.
This is a per-session
setting.
MOUSE tells IVT what to do when a mouse is connected
and used. In sessions, it can be used for cutting and pasting or
cursor positioning.
In this hypertext-help system it can be used to navigate through the manual.
The mode parameter can take the following values:
The default mode is CUTPASTE. It can also be changed
from setup. See also the MOUSE_KEY command which can program the
mouse.
See also CUTMODE and COPY_STRICT and LEAVE_COPY_SELECTION.
See also COPYSPEED.
12.3.87: MENUBAR (Enable/disable menu bars)
MENUBAR
NO_MENUBAR
Default: MENUBAR (on).
This is a per-session
setting.
Menu bars provide an easy way to access the more powerful
features of IVT.
The rules are:
For more information, see the separate chapter on menu bars. This setting is per session, and can also be changed from this setup screen.
12.3.88: MOUSE_SELECTION (Select words/phrases with mouse)
MOUSE_SELECTION IVT
MOUSE_SELECTION PUTTY
Default: Chosen at installation time.
This is a global setting.
Traditionally, IVT uses the mouse in a unique way to select
words and phrases from the screen (see here for details).
This 2-button technique is timing-independent, and also leaves
the screen the way the host has intended it.
PuTTY, and X-terminals, use a double-click, triple-click and even
4-click technique that depends on timing, a steady hand (if you
move the mouse too much during the triple-click it is seen as a
drag-select) and has to leave the selection visibly on screen
(which alters the screen, leaving an image that the host did not
put there, which is arguably incorrect).
Lastly, because you continuously keep at least one button down during the IVT style select, it can be combined with keyboard actions to store data in various buffers (letter), to abort the select (ESC), switch between block-select and line-select (F1), print selection (F2) and so on. PuTTY cannot do this because as soon as you release the mouse as part of a double-click, the selection process ends and any keystrokes are destined for the host.
However, many users simply never find out all these advantages. They simply assume double-clicking will work.
To accommodate those users, IVT now can emulate the Xterm and
PuTTY behavior.
Setting the mode to PUTTY also enables LEAVE_COPY_SELECTION.
The initial install procedure asks the user his preference.
It uses the Windows double-click speed timer, and extends the
selection the way PuTTY would if you click fast enough. During
double-clicking, the mouse can stray one line and/or character
up, down, right or left and it will not be seen as dragging by
IVT.
When you use simple drag-select, all the special IVT keyboard
commands during the select still work.
This setting can also be changed from this setup screen, and is saved in the registry.
NOTE:
This field is one that can be configured using the installation
wizard that is automatically started when you install IVT.
Because it would give conflicts when you change this both in the
configuration file created by the wizard and in interactive
setup, this item is disabled in
interactive setup.
If you want to change this item, re-run the installation
wizard:
Menubar->setup->Re-run initial setup script
The wizard has as the first button a "Do not use wizard" feature. If you choose that, all items in interactive setup will be enabled again (and you must configure all the necessary options there and save the setup, or edit the IVT.RC file manually).
12.3.89: MOUSE_EXTEND_TO_LINE (Mouse copy behavior)
MOUSE_EXTEND_TO_LINE
NO_MOUSE_EXTEND_TO_LINE
Default: MOUSE_EXTEND_TO_LINE.
This is a global setting.
When you use the word-selection mechanism (see MOUSE_SELECTION), you can choose to have
IVT eventually select the whole line, including a new line.
When you paste such a selection, it also pastes a new line.
With NO_MOUSE_EXTEND_TO_LINE the selection stops just
short of a line, so you will have to type the new line
manually.
This setting is global, and can be changed from this setup screen.
The current setting is also saved in the registry.
Older versions of IVT did not have this, so if you dislike the new default behavior you can restore the old functionality.
12.3.90: MOUSE_KEY (Configure mouse in combination with keyboard)
MOUSE_KEY BUTTON KeyBoardKey MouseAction [CALL Script
[args...] ]
MOUSE_KEY BUTTON KeyBoardKey MouseAction ["data"]
MOUSE_KEYLOC BUTTON KeyBoardKey MouseAction [CALL Script
[args...] ]
MOUSE_KEYLOC BUTTON KeyBoardKey MouseAction ["data"]
MOUSE_KEYLOC CANCEL
NO_MOUSE_KEYLOC
This is a per-session setting.
MOUSE_KEY programs the mouse buttons in combination with special keyboard keys such as CTRL and ALT. Press such a special key and click one of the mouse buttons and IVT will take a special action. IVT has a few very handy built-in special MouseActions, but you can also call your own scripts.
For example, you might want to use VI mode cursor positioning and enter insert mode when you keep the left CTRL key pressed while using the LEFT mouse button. This will move the cursor to the clicked position using VI commands, and then send an "i" to start inserting text:
MOUSE_KEY BUTTON1 LEFTCTRL VI
"i"
Or you want to trigger a special script when an unlikely combination of keys is used:
MOUSE_KEY BUTTON2
LEFTALT&RIGHTSHIFT&SCROLLLOCK NONE Call
MyScript
The NONE means that IVT does not perform a built-in action, only the user- defined script MyScript is started.
The full possibilities of this statement are as follows:
The valid words for the KeyBoardKey are:
CTRL | Any CTRL key |
LEFTCTRL | The left-hand CTRL key |
RIGHTCTRL | The right-hand CTRL key |
ALT | Any ALT key |
LEFTALT | The left-hand ALT key |
RIGHTALT | The right-hand ALT key |
SHIFT | Any SHIFT key |
LEFTSHIFT | The left-hand SHIFT key |
RIGHTSHIFT | The right-hand SHIFT key |
SCROLLLOCK | Activated SCROLL LOCK key |
NONE | No key at all (replacement for MOUSE command) |
The valid words for the MouseAction are:
COPY | Initiates a COPY operation |
CUT | Same as COPY. |
PASTE | Pastes the default buffer |
VI | Positions cursor VI style |
CURSOR | Positions cursor using single cursor motion commands |
XTERM | Sends XTERM style mouse action |
SUPDUP | Sends SUPDUP style mouse action |
NONE | Does nothing |
MOUSE_KEY statements are examined for every mouse action in the order that they are defined. This can be significant since only the first matching statement is executed. If you define a SHIFT first and an LSHIFT later, the LSHIFT is not going to be seen since the SHIFT will match either shift key...
12.3.91: MOUSE_NOXTERM2 (Disable support for XTERM2 mouse mode)
MOUSE_NOXTERM2
NO_MOUSE_NOXTERM2
Default: NO_MOUSE_NOXTERM2
This is a per-session
setting.
The new XTERM2 support in IVT causes different responses to be sent to the host when the mouse is used. Old applications (like CSCOPE) did not expect this change and misbehaved. By setting this option, the command to turn the XTERM2 mouse mode on (CSI?1000h) is interpreted as CSI?9h, the old X10 mouse mode.
Try toggling this option when you have text-based applications that use the mouse but it do not work as expected.
This option is per session, can be set in this setup screen, and is also saved in the registry.
12.3.92: MOUSE_PUTTY_WORDS (Putty compatible word selection)
MOUSE_PUTTY_WORDS
NO_MOUSE_PUTTY_WORDS
Default: NO_MOUSE_PUTTY_WORDS
This is a global setting.
For a detailed explanation, see next chapter on MOUSE_PUTTY_SELECT.
The MOUSE_PUTTY_WORDS setting means IVT will use the
character-class based word-selection algorithm that Putty
uses.
The NO_MOUSE_PUTTY_WORDS means IVT will use its built-in
word/phrase selection algorithm that requires multiple clicks
before an entire line is selected.
In the putty-compatible setting, a triple-click will always
select the entire line. In the IVT setting this can take up to 6
clicks.
This setting is saved in the registry
and can also be changed in setup.
See also MOUSE_PUTTY_SELECT.
See also MOUSE_SELECTION.
See also MOUSE_EXTEND_TO_LINE.
12.3.93: MOUSE_PUTTY_SELECT (Putty compatible character classes)
MOUSE_PUTTY_SELECT char 0|1|2
This is a global setting.
IVT has several ways to select words and phrases from the
screen using the mouse. There is the special IVT way, and there is the Putty-compatible way.
The default is the Putty way, because most people expect it to
work that way.
The IVT way is different but more flexible and user-friendly,
IMHO.
The Putty multi-click way can be further configured using either the word
boundaries that IVT uses, or Putty's (configurable) grouping of
characters.
Again, the IVT word boundaries have more flexibility but require
more clicks before an entire line is selected.
When you have MOUSE_PUTTY_WORDS enabled (it is
disabled by default), this MOUSE_PUTTY_SELECT can be used
to configure the selection characters.
The default configuration is the same as in Putty.
The idea is that when you double-click a word, the selection is
automatically extended towards the left and right for all
characters that have the same "class" as the character you click
on.
The "class" is either 0, 1 or 2.
The normal alphabetic characters are "2".
The special delimiters are "1" (hyphens, brackets,
parentheses).
All other are "0".
You can change the classification for the "/" (normally class 2) to be seen as a delimiter by:
MOUSE_PUTTY_SELECT "/" 1
The first argument should be a single character string (any
form, including a hex-coded format like "\x3F" which is another
way of saying "/".
The second argument must be a number, either 0, 1 or 2.
This is a global setting (applies to all sessions).
This setting is saved in the registry and
can also be changed in setup.
See also advanced copy and paste with the
mouse.
See also MOUSE_PUTTY_WORDS.
See also MOUSE_SELECTION.
See also MOUSE_EXTEND_TO_LINE.
12.3.94: MOUSE_SCROLL_FACTOR/PAGESIZE (Mouse scroll tuning)
MOUSE_SCROLL_FACTOR number
MOUSE_SCROLL_PAGESIZE number
The defaults for these are:
MOUSE_SCROLL_FACTOR 1
MOUSE_SCROLL_PAGESIZE 24
This is a global setting.
When the mouse scroll wheel is used, the display scrolls by
the standard number of lines that has been configured in the
mouse properties of the system.
Usually, this is 3 lines.
When your window screen is very large (many lines), 3 lines per
click feels like a tiny amount. Therefore, IVT adds FACTOR
lines for every PAGESIZE lines on the screen.
So, if your window is 48 lines, IVT adds 2 extra lines per
scroll action.
When your window 72 lines, IVT adds 3 extra lines per scroll
action, etc.
When you press SHIFT while using the scroll wheel, the resulting total number of lines to scroll is multiplied by 3 (turbo scroll mode).
You can tune these numbers to get the best feel when using the
scroll wheel.
See also COPYSPEED.
They can also be changed in the mouse setup dialog and are saved in the registry.
12.3.95: MOUSE_USAGE (Show usage in status during select)
MOUSE_USAGE
NO_MOUSE_USAGE
Default: MOUSE_USAGE
This is a global setting.
As is explained in the "Advanced mouse topics" chapter, IVT
supports some very powerful copy/paste features that can be real
time-savers.
To draw attention to these, the status bar will show a simple
usage message when the user starts a mouse-driven select
operation.
The message explains the most important keys you can
press.
When you already know all there is to know about this topic, you
can turn the display of the usage off using NO_MOUSE_USAGE
or by using this setup item.
The current setting is saved in the registry.
This is a global setting (same for all sessions).
12.3.96: NATIONALITY (Select national replacements)
NATIONALITY name
Default: US ASCII.
This is a per-session
setting.
A VT220 terminal can operate in 7-bit mode, in which case some
special diacritical characters cannot be displayed.
Traditionally, a VT220 can select that some characters from the
standard US ASCII set are to be replaced by a set of national
special characters. This makes these original characters
unusable. It concerns the #, @, [, \, ], ^, _, {, | and }
characters.
Apparently, early DEC engineers thought these characters would
not be used much. Later, much better alternatives to getting
diacriticals displayed properly came along, such as CODEPAGE and CODEPAGEMOD.
However, some old applications (and especially things running
on VMS) demand that this be implemented. For example, a Swedish
application will send a '{' character and expect an A-angstrom to
be displayed. Therefore IVT has support for national replacement
characters.
This is selected by specifying the proper nationality in
name, which can be one of:
US ASCII
British
Danish
Dutch
Finnish
French
French Canadian
German
Italian
Norwegian
Spanish
Swedish
Swiss
Example:
NATIONALITY "FRENCH CANADIAN"
The string is case insensitive.
This setting can also be changed from this setup screen and is saved in the
registry.
12.3.97: NUMERICF1F4 (Configure PF1-PF4 on numeric keypad)
NUMERICF1F4
NO_NUMERICF1F4
Default: NUMERICF1F4
This is a per-session
setting.
IVT is a VT220 terminal emulator. These DEC terminals traditionally have four special function keys called PF1 to PF4 (besides function keys named F1-F20).
In some applications, heavy use is made of these keys. A
standard PC keyboard usually maps these PF1-PF4 keys to F1-F4
(like IVT normally does). This causes a problem with the DEC keys
F1-F4 which provide 'Hold Screen', 'Print Screen', 'Setup' and
'Break' functionalities. On a DEC terminal, the PF1-PF4 keys are
located on the top row of the extended (numeric) keypad. On a PC,
these are the 'Num lock' key and 'extra' /,
* and - keys.
IVT maps the NUMLOCK key to PF1, / to PF2, * to PF3 and - to
PF4.
The default is NUMERICF1F4, using NO_NUMERICF1F4 turns this trick off and these keys will behave normally again.
The setting can be changed for the current session only in this setup screen.
NOTE:
If you ONLY want to change the status of the NUMLOCK key without
generating a PF1, use SHIFT+NUMLOCK. IVT will ignore that
combination.
Also, Ctrl-F1 to Ctrl-F4 also generate PF1-PF4, and you can swap
the F1-F4 and Ctrl-F1 to Ctrl-F4 using F1F4.
NOTE 2:
Pressing the num-lock key has side effects which can be quite
annoying.
See NUMLOCK_CORRECTION for
details.
12.3.98: NUMLOCK_CORRECTION (Undo typing NUM-LOCK)
NUMLOCK_CORRECTION "Off"
NUMLOCK_CORRECTION "Down/Up"
NUMLOCK_CORRECTION "Up/Down"
NUMLOCK_CORRECTION "Down"
NUMLOCK_CORRECTION "Up"
Default: "Down/Up"
Default: "Down" (in RDP session)
This is a global setting.
This setting is used only when NUMERICF1F4 is on and the user types the NUMLOCK key, which then functions as the PF1 key of a VT220 terminal.
However, the NUMLOCK key is normally a non-data generating key
that often has a LED-indicator on the keyboard to indicate
numlock-on or numlock-off.
When "on", the numeric keys on the keypad generate
digits.
When "off", the numeric keys on the keypad generate cursor-keys
and various other special keys, depending on nationality and
physical keyboard.
The problem with using NUMLOCK as PF1 is that every time you
use it, you also switch the state of the keypad as an unwanted
side-effect.
To undo this, IVT internally generates a SECOND numlock
keystroke, so the user types the key and the light goes off, IVT
generates a keystroke to turn it back on (and of course ignores
that self-generated, fake keystroke).
There is no other way in Windows to change the state of the
NUMLOCK directly, it has to be done using fake keystrokes.
This normally works fine, EXCEPT when using IVT in an RDP
(remote desktop) session. The extra IVT-generated keystroke
sometimes works fine, but it may result in a double PF1,
ghost-PF1 keystrokes when switching from/to the RDP session, an
indicator that is on but the keyboard does not generate numeric
keystrokes or vv., and various other more-or-less funny
effects.
The behavior also depends on the physical keyboard, version of
Windows that IVT runs on and the version of Windows you use to
start the remote session. Oh joy :-)
I have been unable to make NUMLOCK work as a reliable
data-generating key without side-effects. This
NUMLOCK_CORRECTION is the best I could come up with.
The settings are as follows:
So: Give it a try and see what works best. This setting can
also be changed in setup and is saved in the registry.
It can also be changed in a script, note the $IVT_INFO hash that may be used to see what
environment IVT is running in.
Note that if all tricky down or up combinations fail, you can
change it to "off", so IVT does no trickery at all. NUMLOCK will
work like a PF1 key, but the keyboard (and LED if you have it)
will toggle every time you use it.
You'll have to use Shift+NUMLOCK to change the keyboard to the
desired state if you want to use the numeric keypad.
12.3.99: PASSWORD (Set password for keyboard lock)
PASSWORD word
Default: Not used.
This is a global setting.
Used to unlock a locked keyboard. When the keyboard is locked,
the status line will show the lock icon, nothing can be typed
except a valid password.
See LOCK.
The password can be either a simple string (which is not very safe) or an encrypted string. See LOCKing for a description of generating an encrypted word to put in your configuration file.
Alternatively, you can put the PASSWORD directive in an INCLUDE file that you then encrypt.
12.3.100: PASTE_LAST_NL (remove trailing newline when pasting)
PASTE_LAST_NL
NO_PASTE_LAST_NL
Default: PASTE_LAST_NL
This is a global setting.
This option determines what will happen when you paste content into an IVT session. When the contents (usually the clipboard) ends in a (series of) new lines or carriage return characters, IVT will usually send those characters to the host. When you paste something on the command line, that means the commands will be executed immediately (the host sees an ENTER).
When you use NO_PASTE_LAST_NL, then IVT will remove all
trailing carriage return and new line characters before pasting.
That means that in some cases you will have to type an extra
ENTER to have something executed, but you will not be surprised
by an unexpected ENTER that starts some process on the host that
you did not intend.
As an example: when you select a single cell in Excel and copy it
to the clipboard, Excel adds a new line even if the cell contains
a single word.
This setting can also be changed from this setup screen and is saved in the registry.
12.3.101: PASTESPEED (regulate paste speed)
PASTESPEED lines maxbytes maxdelay CR-Only
Default: PASTESPEED 3 10000 100 NO
This is a per-session
setting.
When you paste a large amount of information in a session, IVT
pretends the information is typed in. However, not all hosts
(and/or applications) are designed to process that information at
the speed a modern PC can transmit it.
Since it is simulated keyboard input, at some point the buffers
can overflow and you lose (part of) the data.
AIX is especially subject to this and logs "TTYHOG OVERRUN" in
the system log when this happens.
To guard against this, IVT will not paste at full speed, but
it will transmit a certain maximum number of lines, and
then wait for something to be returned by the host (since you
usually paste into some application that echoes the data that you
type, something usually comes back).
The number of lines sent is counted, and IVT will wait for that
number of lines to be returned by counting echoed CR (carriage
return) characters.
If NOTHING comes back (or not the expected number of CR characters), IVT will wait for a maximum of maxdelay milliseconds before transmitting the next number of lines anyway.
Note: When CR's are received before the timeout expires, IVT will send the next batch of characters immediately. The idea is that when the data has made it to the destination application and all the way back, the buffers will be ready for more. The timeout should be big enough for a normal echo to be able to make it, it only slows down things when there is no echo at all or the system and/or network is very slow. When you paste data into a "black hole" the maxdelay parameter will determine how fast the data is sent.
When your pasted data has no carriage-returns in them (or the lines are very long), IVT counts 128 bytes as being a "line". The maximum number of lines you can set is 1000.
Note: When you paste into applications such as VI, it
may be that your CR characters are not echoed, but translated
into character-positioning commands that IVT cannot relate to the
actual data being sent. Since it does not see the CRs, the
timeout parameter will determine the speed of the paste.
If you need to paste large amounts of data and suffer from
truncated data (or AIX TTYHOG overruns), paste into a "cat >
file" command instead, that will result in a simple echo.
The maxbytes setting can limit lines to a certain length. Some extremely badly configured systems may even choke on a single line of (say) 50 bytes. When you set the maxbytes to (say) 10, IVT will shorten a single packet to that many bytes. The 10000 setting means that IVT will normally not truncate lines this way. The most extreme setting is 1, which means every single byte of data is transmitted in a single packet. This may slow things down severely for large pastes. A value of less than 1 is silently adjusted to 1. The maximum value is 10000.
The CR-only setting only applies when the number of
lines is 1. It can either be set to YES or NO.
Normally, IVT will combine the \r with the line itself, so it
gets transmitted as a single packet to the host. When
CR-Only is set to YES, a single line will be sent
off in a single packet, followed by the \r in another single
packet.
So, a slow setting would be:
PASTESPEED 1 10000 100 YES
Send 1 line, wait for a maximum of a tenth of a second (100 Ms), send \r in a separate packet. Lines are not truncated and can be very long, in which case a packet will be sent to the host when it is full (normally 1500 bytes or so).
The slowest setting is:
PASTESPEED 1 1 1000 YES
Which causes 1 byte to be sent, wait for reply for max of 1000
Ms (a second).
The fastest would be:
PASTESPEED 1000 10000 0 NO
Send 1000 lines in a single packet (which will cause IVT to
send packets when they are full since you can't fit that many
lines in a packet) and do NOT wait.
This means IVT will go at full blast, possibly overrunning your
host.
The default settings for this seem to work rather well, so usually there is no need to change them. IVT actually pastes large amounts of data faster than other emulators do (since it combines multiple lines into a single packet) and since it normally waits for a response, there is no risk of overrunning the host.
This setting can also be changed from this setup screen and the current setting is
saved in the registry.
This used to be a global setting (affecting all sessions and
host) but is a local setting (affecting just the current session)
since IVT version 26.1.
See also MERCY_MODE and TCP_FLOOD.
See also XAUTH_DELAY, which works
around a bug in SSH.
12.3.102: PRECONNECT (Execute scripts BEFORE session is established)
PRECONNECT hostname [PRIORITY=N] scriptname
[arguments]
PRECONNECT * [PRIORITY=N]
scriptname [arguments]
NO_PRECONNECT * [PRIORITY=N]
scriptname [arguments]
Before a connection to the named host hostname is made,
the script named scriptname is called (with optional
arguments).
When you use * as a hostname, the script will be called
for ANY hostname.
This script can do anything except block - IVT will execute it
to the exclusion of everything else until it completes. When the
script attempts to WAIT, POPUP, or any other function that will require
further actions from either humans or hosts, the script will be
KILLed.
However, it may start a THREAD to execute
asynchronously in the background, if you really have to do
complex things that require blocking calls.
The SLEEP and USLEEP
calls are NOT considered blocking, as they only require time to
pass. However, using long sleeps will cause IVT to seemingly
hang...
You can have several PRECONNECT statements for the SAME
host (or hosts). They will be executed in the order they were
defined in, unless you use the PRIORITY option. Lower
numbers mean higher priority, so 0 is the highest priority.
By default, IVT assigns a priority of 100000, which allows plenty
of room for your scripts to make sure they get called earlier or
later in the sequence when you have many. For example, the
PROJECTS feature of IVT uses this to
make sure its scripts get called earlier than normal.
The NO_PRECONNECT can be used to cancel a previous PRECONNECT. The statement must match the PRECONNECT exactly (same host, script and parameters and priority). See also ONCONNECT.
The purpose of this script is to set some local and/or global variables of which $HOSTNAME can be one. When IVT eventually makes a connection, it will be to the hostname set by this script. The script may also modify the value of the $USER variable.
The upshot is that you can redirect a call from one host to
another, or use one host as a stepping-stone to another.
As an example, suppose you have a Unix host that is reachable
from a PC box using the TELNET protocol, and you want to talk to
a host that can only be reached using SSH-1 (which IVT does not
support since it is a deprecated protocol).
In this case, you can do the following:
PRECONNECT ssh1-host
Redirect
ONCONNECT
telnethost TLNHost
SCRIPT
Redirect
Hidden
DoRedir =
$HOSTNAME
HOSTNAME = "telnethost"
END
SCRIPT TLNHost
Hidden
CALL IvtWaitLoggedIn
IF $DoRedir == "" THEN RETURN
CALL WaitPrompt
SEND "exec ssh
$DoRedir\r"
CALL IvtLogMeIn
$DoRedir
END
This will result in the following:
As another example, you can use a PRECONNECT statement to give short nicknames to hosts:
PRECONNECT * DoSubNet
SCRIPT DoSubNet
IF Length($HOSTNAME) > 3
THEN RETURN
HOSTNAME =
"10.8.60.$HOSTNAME"
END
This will call DoSubNet for ANY hostname, and prefix the hostname with a IP-network when you type a short hostname. This allows you to specify only the last (non-unique) part of the hostname in DNS-less environments.
As a final example, if you want nicknames for hosts:
PRECONNECT a HostTrans LongNameOfHostA
PRECONNECT b HostTrans LongNameOfHostB
...
PRECONNECT n HostTrans LongNameOfHostN
...
Script HostTrans LongName
HIDE
HOSTNAME = $LongName
END
Every time a connection is made to a host that matches one of
the short names in the PRECONNECT statements, it is
translated to the long name.
Note: HOSTLIST also offers nicknames.
12.3.103: RGB (set RGB values for ANSI colors)
RGB Indexnumber Red,Green,Blue
GUI_RGB is an old alias for RGB.
This is a per-session
setting.
This version of IVT has full control over the RGB (red, green,
blue) values for every chosen color. By default, IVT chooses the
16 ANSI colors to be the same as Windows does, but RGB can
be used to modify those.
The Indexnumber must be a value between 0 to 15 inclusive,
and denotes the color number to change. The Red, Green and Blue
range from 0 to 255 inclusive.
The built-in defaults are:
0:
Black 0 0 0
1:
Blue 0 0 128
2:
Green 0 128 0
3:
Cyan 0 128 128
4:
Red 128 0 0
5:
Pink 128 0 128
6:
Brown 128 128 0
7:
White 192 192 192
8:
Grey 128 128 128
9: Bright
Blue 0 0 255
10: Bright
Green 0 255 0
11: Bright
Cyan 0 255 255
12: Bright
Red 255 0 0
13: Bright
Pink 255 0 255
14:
Yellow 255 255 0
15: Bright
White 255 255 255
There is also a dialog available to pick the colors with a
nice color chooser interface, by clicking "Redefine ANSI colors"
in the color setup screen.
The RGB triplets can be separated by a comma or a space.
Altered colors are also saved in the registry.
12.3.104: RECONNECT (Automatic destruction of sessions upon logout)
RECONNECT
NO_RECONNECT
Default: NO_RECONNECT.
NO_RECONNECT prevents automatic re-connect of a session
to a host when such a session is disconnected. RECONNECT
says you want to reconnect disconnected sessions automatically
(so you get a new 'Login:' after logging out (from an average
Unix host).
Note that sessions connected using the Kerberos protocol cannot be reconnected, since
you will not be able to login as someone else (there is no
"Login:" prompt, the process is automatic).
NO_RECONNECT will treat the end of the session as the end of the virtual terminal (i.e. as if Alt+F4 had been used, see session management).
The upshot is that ending IVT is easy when NO_RECONNECT
is in effect. Logging out from all your sessions will make all
virtual terminals disappear.
When the last session is lost, IVT will exit.
When RECONNECT is used, logging out must be followed by
ALT+F4 to close the virtual terminal. Personally, I prefer
NO_RECONNECT, which is why this is the default.
See also EXPLICIT_EXIT, which
treats the LAST session different.
See also RETAIN_SESSIONS, which
does not reconnect but keeps the virtual terminal, and allows you
to reconnect to a different host.
Note: Like cloning sessions, reconnecting will use the original host and user name to connect, not the result of any rewriting by PRECONNECT and ONCONNECT scripts.
The current setting can be viewed and modified from this setup screen.
It can also be modified from the menu
bar.
See also ESC<space>P for
host-initiated disconnects.
See also ONDISCONNECT scripts. When
RECONNECT is in effect, these scripts are called after EOF
has been detected and before a new session is established.
See also WAIT_ONCONNECT.
12.3.105: RETAIN_SESSIONS (Force manual termination of sessions)
RETAIN_SESSIONS
NO_RETAIN_SESSIONS
Default: NO_RETAIN_SESSIONS
This is a per-session
setting.
Normally, when you log off from a host, IVT will kill the
virtual terminal.
When the last session is closed, IVT will either exit or
redisplay the original "create session" dialog (see EXPLICIT_EXIT).
Some users find it inconvenient that the session is lost
together with its scroll back history and
would prefer to kill each session explicitly. When
RETAIN_SESSIONS is used, the session is not closed and
also not reconnected.
Instead, it goes into a "zombie" state where the scroll back and
copy functions are available and the session must be manually
terminated (using ALT+F4, or ESC, the "Close session" command in
the menu bar, or by closing IVT altogether).
When you choose "Enter" to reconnect the session, this RETAIN_SESSIONS also allows you to connect to a different host than you originally connected to (it will bring up the "Create session" dialog). The standard RECONNECT behavior is to connect to the original host to simulate a real, serially connected VT220 terminal that will always show the login prompt of a host after logging off.
This setting can also be changed from this setup screen and is also saved in
the registry.
See also RECONNECT and EXPLICIT_EXIT..
12.3.106: ROWS (Default number of screen lines)
ROWS num
ROWS num%
This command has been removed, see WINDOW_SIZE.
12.3.107: SCO_ANSI (enable/disable SCO ANSI mode)
SCO_ANSI [KEYBOARD | NO_KEYBOARD]
NO_SCO_ANSI
The default is NO_SCO_ANSI.
This is a per-session
setting.
SCO_ANSI enables SCO (Santa Cruz Operation) ANSI
compatibility of IVT.
Basically, this will make IVT recognize a number of additional
escape sequences, an additional way of drawing lines and boxes on
screen and a few extra color settings commands. See SCO ANSI compatibility for details.
Optionally, the keyboard can be reprogrammed by using the KEYBOARD option, which is set to NO_KEYBOARD by default (IVT will emit the normal VT220 keyboard sequences).
There is little harm in having SCO_ANSI on by default
(though IVT's default is to have NO_SCO_ANSI to preserve
VT220 compatibility), as long as you leave the KEYBOARD
setting off.
The keyboard map of IVT is much simpler in SCO ANSI mode,
function keys and special keys all emit ESC [
<character>, where the last character is a simple
alphanumeric. This differs seriously from a VT220.
Use QuerySetting with "SCO_ANSI" or "SCO_ANSI KEYBOARD" to obtain the current setting.
The SCO_ANSI setting is per session, can be changed from this setup screen and is saved in the registry.
12.3.108: SCREENSAVE (activate screensaver after N minutes)
SCREENSAVE number-of-minutes
SCREENSAVE 0
Default: 0 (no screen save).
This is a global setting.
Blank screen (well - almost) after the specified number of
minutes.
A value of 0 will disable the screen saver. Also, when you have
reduced the size of the IVT window to only a few lines and
columns, IVT won't bother with the screensaver.
This command is really not very useful on modern PC's which have
their own way of saving screens, but is retained anyway.
IVT will show a black screen that is empty, save for two
lines. The first line says "IVT Screen Saver - n minutes
idle" (the number of idle minutes are counted, starting with the
value of number-of-minutes).
The line below shows the status indicator
which allows you to monitor the activity on all sessions. These
lines wander about on the screen to prevent burn-in (which was a
problem on old CRT monitors, mostly extinct now).
It is also possible to write your own script that will be called 10 times a second for as
long as the screensaver is active. See here for an example.
The output of this script will replace the default IVT
display.
The screen saver will terminate (and return to the session) when one of the following events occurs:
When you have a LOCKTIMER active
which is set to a longer time than the SCREENSAVE value,
the keyboard lock will be activated when its timer expires.
However, this is NOT done when the screen-saver is activated from
within a non-session screen (like these help-pages, the
setup-pages etc.).
The reason is that if you return from the screen-saver with a
keyboard-lock into a non-session, there is no status-line to
indicate the keyboard LOCK and this could
(did) confuse people.
The screen saver timeout can be set from setup. This is not per session, of course,
but for IVT as a whole.
Lastly, you can manually activate the screen-saver using
SHIFT+ALT+s (remember to release the keys quickly, or
otherwise you'll exit from the saver immediately again because
the SHIFT or ALT key is down :-)
12.3.109: SCRMODE (Define commands to change screen size)
This command is the old-fashioned form of WINDOW_SIZE. SCRMODE was short for "screen mode", which was a carryover from the MS/DOS days...
12.3.110: SESSION_OVERVIEW (Type of host shown in F4-S)
SESSION_OVERVIEW PHYSICAL
SESSION_OVERVIEW LOGICAL
Default: LOGICAL.
This is a global setting.
The F4-S screen shows details of all your
current sessions, one of which is the hostname of the remote
host. However, when you use advanced scripts, the host on the
other side of the network connection can be just the first in a
series of hops, and the user is actually interacting with a
different host.
Therefore, IVT usually displays the LOGICAL connection, which is
the current content of the $HOSTNAME
variable.
When the PHYSICAL setting is used, the hostname or IP-address of
the host IVT actually has a session with is displayed here.
In simple cases, these names are identical.
Currently, there is no setup-screen to modify this setting.
12.3.111: SEARCH_CASE_SENSE (Case sensitivity for search default)
SEARCH_CASE_SENSE
NO_SEARCH_CASE_SENSE
Default: SEARCH_CASE_SENSE.
This is a global setting.
When you use the "search" command in IVT to search these manual pages, the default search mode is to have case-sensitive searches. That setting can be changed using the 'c' keystroke command or by toggling the checkbox off, but if you ALWAYS prefer case insensitive searches, you can use this directive in an IVT.RC file.
There is no setup screen for this item.
12.3.112: SESWRAP (Configure behavior of CTRL+CURSOR keys)
SESWRAP
NO_SESWRAP
Default: SESWRAP.
This is a global setting.
In session management it is explained
how you can switch between sessions.
The most common way is to use the CTRL+cursor keys to flip from
one session to the next (in the same group). With the SESWRAP setting, using a
CTRL+cursor key can take you from the LAST session to the FIRST,
and from the FIRST to the LAST. When NO_SESWRAP is
specified, IVT will NOT wrap around in this way.
Also, remember that SHIFT+CTRL+Cursor can take you to the last or first session immediately.
When you routinely have many sessions, NO_SESWRAP is better because you do not accidentally switch to the first session.
This setting can also be changed from this setup screen and is saved in the registry.
12.3.113: SHOWNEWS (show news screen for new version)
SHOWNEWS
NO_SHOWNEWS
This is a global setting.
When you upgrade IVT on your computer and start it for the first time, IVT detects the fact and shows the F4-N news screen. This lists the new features of the upgraded version so a user can take advantage of them.
However, users of an application that happens to use IVT as part of the infrastructure are not interested in the technical details. So if you deploy IVT to non-technical users, a NO_SHOWNEWS will prevent the unnecessary confusion.
The default is SHOWNEWS, and there is no corresponding setup-screen entry for this, you have to configure it in an IVT.RC file.
See also NO_TIPS.
12.3.114: SIZE4ALL (Resize all sessions simultaneously)
SIZE4ALL
NO_SIZE4ALL
Default setting is NO_SIZE4ALL.
This is a global setting.
The default behavior of IVT is to maintain sizes and window positions for all sessions independently. When you have a default WINDOW_SIZE of 100%, and all sessions are created and kept that way, you would not even notice that.
When you have multiple sessions (remember IVT runs all sessions in a SINGLE window), and resize some of them, paging through the sessions will make IVT jump from place to place, restoring position and size for every session.
Some users find this annoying and would expect a resize to apply to all sessions, not just the foreground one. This can be achieved using the SIZE4ALL option. Resizing a session will resize all background sessions, too.
This only works if the applications running in those sessions
can handle such a resize, so Your Mileage May Vary when you use
this.
Also, this feature will automatically skip sessions that have the
GUI_RESIZE feature set to
NO.
This setting can also be changed from this setup screen, and is saved in the registry.
NOTE:
This field is one that can be configured using the installation
wizard that is automatically started when you install IVT.
Because it would give conflicts when you change this both in the
configuration file created by the wizard and in interactive
setup, this item is disabled in
interactive setup.
If you want to change this item, re-run the installation
wizard:
Menubar->setup->Re-run initial setup script
The wizard has as the first button a "Do not use wizard" feature. If you choose that, all items in interactive setup will be enabled again (and you must configure all the necessary options there and save the setup, or edit the IVT.RC file manually).
12.3.115: SIZEFONT (size font when window is resized)
SIZEFONT
SIZEFONT FULL_POINTS_ONLY
NO_SIZEFONT
SIZEFONT NEVER
Default: NO_SIZEFONT.
This is a per-session
setting.
Short summary:
For a more detailed description, read on...
SIZEFONT will make IVT fix the number of rows and
columns and will adjust the font size instead (the default is to
change the number of rows & columns).
Even when you maximize the window, or go FULLSCREEN, the number of rows and columns
stays the same.
When you start with a relatively small screen (say 25 rows, 80
columns and the default font of 9 points), then maximize on a
large monitor, you'll end up with very, very large
characters.
When you resize only one dimension, you'll get an elongated or squished font, this can be prevented by using the FULL_POINTS_ONLY option. In that case, IVT will only select fonts that are expressed in a full point size, so the width and the height of the characters are in proportion, even if it means choosing a different window size than selected by the user.
The default is, of course, to change the number of rows and columns when you resize the window and keep the font the same.
This feature works best when you choose a TrueType base font, as they can be scaled to any required size. Other fonts are rounded off by Windows to the nearest match, and this may result in an adjusted window size (the window border will "snap back" to force a certain minimum size). The "full points" option prevents this to some degree, but it is best to choose a TrueType font!
NOTE: There is a subtle difference between
NO_SIZEFONT and SIZEFONT NEVER.
The default NO_SIZEFONT is ignored when a VT220 command is
used to switch explicitly between 80 and
132 columns (the only 2 official screen widths of a VT220
terminal). The 132-columns is implemented just like a real VT220
by switching the font to a narrow one. Explicitly sizing to 80
columns keeps the current font and switches the IVT window to 80
characters wide.
The SIZEFONT NEVER setting forces IVT to ALWAYS adjust the
window size and never to adjust the font. This can be used
if you dislike the narrow font or suffer from side-effects of the
switch. Note that this does not break VT220 compatibility one way
or the other: IVT ends up in 132 or 80 columns regardless.
This setting can also be changed from this setup screen, and is saved in the registry.
See also FONT and SUBSTITUTE_FONT.
See also ONRESIZE, GUI_RESIZE, ALT_ENTER
and SIZE4ALL.
12.3.116: SOFTBLINK (enables/disables software blinking)
SOFTBLINK
Blinkrate (blink
rate in milliseconds)
SOFTBLINK
0 (software
blink turned off)
Default: SOFTBLINK 400
This is a global setting.
To simulate blink, IVT simply alternates between two displays;
the first displays the normal screen, the second one omits all
the blinking characters.
Alternating this 2 or 3 times a second results in blinking.
Expensive, but effective. The BlinkRate parameter
specifies the blinking speed. The default is 400 milliseconds,
valid values are between 100 (blinks ten times a second) and 3000
milliseconds (once every 3 seconds).
When software blinking is not viable on your system, it can be
disabled with SOFTBLINK 0. In this case, IVT will change
the background color of the text so you at least get a visible
difference.
I guess the "expensiveness" stopped being a problem around 1995
or so, any modern PC will not have any problem with this.
The setting can be altered from this setup screen, and is saved into the registry.
12.3.117: SPEED (Set default screen refresh/scroll speed)
SPEED TURBO
SPEED NORMAL
SPEED SLOW
SPEED SLOWER
SPEED CRAWL
Default: TURBO.
This is a per-session
setting.
This (sort of) sets the screen scrolling speed.
The current speed is also shown in this setup screen.
TURBO means that the contents of the internal IVT
screen-buffer is only shown on the actual screen after the end of
every network packet (which can contain many lines).
In NORMAL mode, the screen is synchronized after every
line of output.
This makes NORMAL mode scroll much smoother, but
TURBO requires less overhead and is therefore faster (but
possibly jerky to the eye).
The slow modes can be used to view output very carefully. When you write software that builds complex text-mode screens, much can be learned from watching a screen appear in slow or crawl mode - it gives you a sense of the enormous amount of work it takes to build such a screen. Inefficient output shows up because you see the same patterns drawn several times, etc.
The speed can also be changed by typing ALT+s (slower) and ALT+Q (quicker).
12.3.118: SPLASHTIME (Set maximum display time for splash screen)
SPLASHTIME millisecs
This is a global setting.
The Windows splash screen is displayed for 5 seconds by default. This window is created right after IVT starts up. Some users complained this is too long, so this SPLASHTIME can be used to reduce (or increase) the amount of time the window stays on the screen. IVT has to read the configuration files to find this command, these files might be encrypted, might be on slow network connections, etc., so the logo might be displayed for a while longer but IVT will do its best to limit the time to what you specify.
IVT enforces a maximum of 10000 milliseconds.
The splash screen gets removed automatically when you start
typing data into a dialog, such as the prompt for a hostname or a
password during start-up.
If you want to disable the splash screen altogether, use the -B command line option. An OPTIONS statement can also use the -B flag.
Another way to suppress it is to have a "nosplash" file in the current directory.
12.3.119: STATBORDERS (Show separators in GUI status line)
STATBORDERS
NO_STATBORDERS
This is a global setting.
The status line can be displayed in 2 styles: with little
divider separator lines (borders), or without.
The default is to display them. Use NO_STATBORDERS to turn
them off.
Depending on personal taste and the version of windows, the
borders of the status bar differ in style and appearance.
There is also an option to the STATUS command to change this.
You can also change this setting in this setup screen.
The current setting is saved in the registry.
To query this setting, use QuerySetting("STATUS BORDERS").
12.3.120: STATMIDDLE (What to display in middle of status line)
STATMIDDLE OFF
STATMIDDLE CLOCK
STATMIDDLE DATETIME
STATMIDDLE CURSORPOS
STATMIDDLE MOUSEPOS
STATMIDDLE ELAPSED
Default: CLOCK.
This is a global setting.
This determines what gets displayed in the middle of the
status line.
Choices are:
OFF - Nothing
CLOCK - Current time
(hours:minutes, 24 hour clock)
DATETIME - Current date and time (YYYY/MM/DD
hours:minutes, 24 hour clock)
CURSORPOS - Current cursor position
MOUSEPOS - Current mouse cursor position
ELAPSED - Elapsed time since session was
created
The current setting can be changed by clicking on the relevant part of the status
line or from this setup screen.
CLOCK shows the time, DATETIME shows date and time
(handy if you use FULLSCREEN all the
time and there is no Windows taskbar visible).
See also STATUS, STATUSCLICKS and STATMIDDLE.
NOTE:
This field is one that can be configured using the installation
wizard that is automatically started when you install IVT.
Because it would give conflicts when you change this both in the
configuration file created by the wizard and in interactive
setup, this item is disabled in
interactive setup.
If you want to change this item, re-run the installation
wizard:
Menubar->setup->Re-run initial setup script
The wizard has as the first button a "Do not use wizard" feature. If you choose that, all items in interactive setup will be enabled again (and you must configure all the necessary options there and save the setup, or edit the IVT.RC file manually).
12.3.121: STATUS (Enable/Disable the status line).
STATUS
NO_STATUS
STATUS BORDERS
STATUS NO_BORDERS
STATUS [OLD|NEW] (Deprecated)
This command turns the status bar on or off and determines the
style.
This version of IVT no longer supports the old text-mode status,
but only the GUI one with icons and so on. So the old/new setting
is ignored.
Using the NO_BORDERS option creates the status bar
without the little divider lines on it between the fields (which
are on by default).
The BORDERS keyword can be used to force these dividers
on.
See also STATBORDERS.
A screen print will also print the status bar in the same fashion as on-screen when PRSTATLINE is in effect.
The status bar displays this
information.
See also STATUSCLICKS and STATMIDDLE.
12.3.122: STATUSCLICKS (Enable/disable mouse on status line)
STATUSCLICKS
NO_STATUSCLICKS
Default: STATUSCLICKS
This is a global setting.
Normally, you can use the mouse to click on the various fields
of the status line. When you use the
NO_STATUSCLICKS option, this feature is disabled.
This prevents the user from altering the text, switching
sessions, or entering the help-system (by right-hand clicks).
Tooltips are also suppressed in this mode.
See also the secure option.
There is no way to change this setting from a
setup-screen.
See also STATUS and STATMIDDLE.
12.3.123: SMOOTH (smooth scrolling)
SMOOTH ms [Pixels]
GUI_SMOOTH is an old alias for SMOOTH.
Default: SMOOTH 0
This is a per-session
setting.
Smooth scrolling is a graphics trick where lines scroll
smoothly pixel for pixel instead of a line-at-a-time.
You can set the delay in milliseconds and the distance in pixels
for every partial scroll operation. The default for ms is
0, which turns it off.
A value of 1 gives the "fastest" smooth scroll, since this will
enable smooth scrolling without delaying per-pixel.
Higher values will sleep the specified number of
milliseconds.
A value of 10 gives a very stately form of display.
This feature can be very CPU intensive - Your Mileage May
Vary.
By increasing the number of Pixels per partial-scroll
operation, fewer steps are required to scroll a single line, thus
increasing the total speed.
Low values of Pixels are silently adjusted to 1, high
values are silently adjusted to half of the current font height.
The default (when omitted) is 1.
The fastest setting is thus SMOOTH 1 1000, which
soft-scrolls half lines without sleeping.
Active WINDOWS are temporarily removed from the display before smooth-scroll is performed, since those are meant to be stationary.
This feature is mainly intended to increase the VTTEST score of IVT by a further point, since few people will (I think) actually want to use this by default. It is, however, a standard feature of a VT220 terminal.
The host can control this setting using CSI ? 4 h/l, which will set the delay to 10 Ms and leaves the Pixels value unchanged.
It can also be changed from this setup screen, and is saved in the registry.
If you want to query the current setting using QuerySetting:
12.3.124: SUBSTITUTE_FONT (for line drawing characters)
SUBSTITUTE_FONT "font description"
The default for this is "Facename=Lucida Console".
GUI_SUBSTITUTE_FONT is an old alias for
SUBSTITUTE_FONT.
This is a global setting.
As explained in the section on FONT, there exist fonts that do not contain the line-drawing symbols required by IVT. If you choose such a font (Terminal and Fixedsys being notorious ones), older versions of IVT would display the wrong characters in the places where line drawing was needed.
Version 16.2c of IVT introduces a clever trick - those line drawing characters are selected from a decent, scalable font like Lucida, scaled to the exact same size as the chosen font. IVT automatically determines the necessity for this by examining the actual shapes of the symbols in the user-selected font.
Since "Lucida Console" may not be available everywhere, it is
not hardwired into IVT but can be changed using the
SUBSTITUTE_FONT statement.
You should know what you are doing when you change this, and the
font you specify MUST be a scalable, decent font.
It is used for both the screen and printer font, when you select
a font for the printer that does not contain proper line-drawing
characters.
It is NOT saved in the registry, and can NOT be changed from setup. If you want to change the default you have to edit the IVT.RC setup file and make sure you use proper syntax for a font.
12.3.125: SMART_PASTE (Translate common Unicode characters on Paste)
SMART_PASTE
NO_SMART_PASTE
Default: SMART_PASTE
This is a per-session
setting.
If you copy text to the clipboard from (say) a Word document
and paste it into an ASCII session using IVT, it will try to
convert some Unicode characters placed on the clipboard by Word
into their common ASCII counterparts.
A common case is where you document Unix commands in a Word
document. Say you type:
rpm -Uhv package.rpm
in Word. It will translate the "minus" into a Unicode "Em
dash", a slightly longer dash, which "looks nice" on screen and
when printed.
But when you try to PASTE the "Em dash" into an ASCII session, it
can't do that because the character is not in the normal ASCII
set.
Older versions of IVT used to paste a "." in such cases. Later,
it was made smarter by translating a number of such common
characters back to their logical ASCII counterparts. The table
is, among others:
Into the logical minus, single quotes, double quotes and so
on. The upshot is that copy/paste from Word documents "just
works", and most users never even notice that IVT is doing this,
UNTIL you try to paste into a Unicode session. Older versions of
IVT would then paste the full Unicode text into the Unicode
session, preserving the special dashes and quotes (which seemed
like a logical thing to do).
However, pasting into a shell command line will then fail. For
example, the RPM example command above will give an error message
because it wants a minus, not an "Em dash".
So, the SMART_PASTE will perform the SAME ASCII
translation, even on a session that is in UTF-8 (Unicode
mode).
The setting is on by default, you only need to turn this off if
you want to paste into an application on the host that actually
understands Unicode.
This setting can also be changed from this setup screen. It can be saved into the registry.
12.3.126: TABSBAR (Enable the TABBED interface)
TABSBAR [Option],...
NO_TABSBAR
CLOSE_ICON |
NO_CLOSE_ICON
CONFIRM_CLOSE | NO_CONFIRM_CLOSE
ADDTAB |
NO_ADDTAB
MULTILINE |
NO_MULTILINE
EXTENDED | NO_EXTENDED
FONT "description"
ACTIVITY
NO_ACTIVITY
USER_HOST
HOST_USER
HOST
USER
SEQNO
NO_SEQNO
SIZEADJUST Adjust
Default:
TABSBAR
CLOSE_ICON,USER_HOST,CONFIRM_CLOSE,ADDTAB,NO_MULTILINE,SIZEADJUST
2
TABSBAR NO_SEQNO
TABSBAR ACTIVITY
The TABSBAR allows yet another, intuitive way to switch between sessions in IVT. It is on by default. Use NO_TABSBAR to turn it off.
The options are:
A script can also use the SetTabText() function. Once it has done this, the text supplied that way overrules any default. By setting the empty string, IVT will display the default again.
When you use application groups, every
group gets its own logical tabs bar.
When you switch between sessions in different groups, the tabs
are updated accordingly.
A script can use the SetTabIcon() function to set a different icon, in which case it will also have to use ONTABICON to indicate what should happen when the icon is clicked. IVT itself will take no action when a user-defined icon is clicked.
This setting can also be changed from setup and the current
setting is saved in the registry.
See also COLOR_TAB_SELECT.
12.3.127: TITLEBAR (Set Window title)
TITLEBAR "A fixed string of text"
TITLEBAR COMMENT
TITLEBAR HOSTNAME
TITLEBAR SESSION "Private session string"
TITLEBAR DEFAULT
This command sets the contents of the Windows title bar of
IVT.
The default is "IVT Secure Access".
This is a global setting.
If you choose the first form, the specified text will replace
the default for all sessions.
If you choose COMMENT, the title bar will show the
comment field from the status line (and will change as you switch
between sessions).
The HOSTNAME command will cause the name of the host as
displayed in the status line to be displayed (and will change as
you switch sessions).
If you choose DEFAULT, the global default string will be
restored.
If you use SESSION "String", a private string is
displayed for the current session only (separate from the comment
in the status line).
This form can, currently, only be used in a script. To revert back to the normal title bar, set
the SESSION string to an empty string, like so:
TITLEBAR SESSION ""
You can also change the title bar settings from this windows setup screen.
Also see XTERM set window title
command.
This allows you to set the title from the host.
When the user does an interactive resize, the title bar will show the resulting number of rows and columns. The chosen title is restored as soon as the resize operation ends.
12.3.128: TOOLTIPS (Show tooltips for status bar)
TOOLTIPS InitDelay Duration
NO_TOOLTIPS
Default: TOOLTIPS 300 3000
This is a global setting.
When you hover the mouse over the fields on the status bar, a small window explaining the purpose of the field or icon will display after the mouse is over the field for more than InitDelay milliseconds. Nothing will happen if you move the mouse out of the field before that time.
When the tip appears, it will disappear after Duration
milliseconds.
The defaults for this are 300 for InitDelay and 3000 for
Duration.
Any mouse click will also kill the tooltip window.
Use NO_TOOLTIPS to turn the tips off.
You can also change the settings in this
setup screen, where you can use a value of zero for either
field to turn tooltips off.
The current settings are saved in the registry.
12.3.129: TRANSPARENCY (Set window transparency)
TRANSPARENCY percentage
Default: TRANSPARENCY 0
This is a global setting.
Transparency of a window means that you can "see through" the
IVT window and see the underlying windows and the desktop. The
percentage must lie between zero and 100. A value of 0 turns this
feature off. Higher values mean higher transparency, a value of
99 means IVT is almost invisible, a value of 1 means it is almost
solid (normal).
Using 100 actually makes the window invisible. This can be
convenient if you want to hide the actual window from the
user.
Turning transparency on means your computer has to calculate the color values for every pixel from all underlying windows and desktop, which gives a very noticeable drop in performance when IVT is scrolling lots of text in a large window, so only turn this on when you have enough horsepower available.
Thanks to Roald Ribe for suggesting the idea and supplying example code.
The setting can be changed from this setup screen and is saved in the registry.
12.3.130: VERTICAL_LINE (colored, vertical lines on session screen)
VERTICAL_LINE CharacterPos Width [RELATIVE] R G
B
Default: None.
This is a per-session
setting.
This causes colored, vertical lines to appear just after the
character pos specified in CharacterPos.
The idea is to have a sort of "margin" line as on a typewriter
that indicates a certain position. For example, if you want to
limit your lines to a maximum of 80 characters, and you want a
visual indication of column 80 on your session screen (which
usually is much larger than 80 positions) you could specify:
VERTICAL_LINE 80 1 240 240 240
This draws a line just after character 80, 1 pixel wide, with an RGB (Red, Green, Blue) value of 240,240,240 - a very light grey. So this gives a thin, barely visible grey line to indicate the position (assuming the background color of the session is bright white, see the RELATIVE keyword below).
Depending on the color of your screen and personal preference,
you can choose a thicker line or different colors.
The maximum thickness IVT will allow is 15 pixels.
There can be as many lines as you want, of different colors
and thickness.
Every line runs the entire height of the screen. It tries to be
between two characters on the screen. Drawing the lines will only
affect pixels that have the default background color, so
characters like X, W and _ that usually occupy that position
(depends on the font) are not mutilated by the line (as used to
happen in older versions of IVT).
NOTE: This means that every pixel where a line might pass
is examined first, then set when that pixel is the background
color. On large screens, if you have several lines, when the
screen is updated frequently, even a fast PC according to 2018
standards will show a noticeable drag on performance. So use it,
don't abuse it.
It also means that if you use full-screen color applications such as Midnight Commander, the lines will not be drawn in places where the screen has a color that is not the default background (in older versions of IVT, a light-gray line on a white screen is just visible, but the same grey stands out in an ugly fashion when the background is made blue by Midnight Commander).
Another problem with these lines occurs when you have sessions
which do not have the default color scheme. For example, if your
normal background color is bright white, but some sessions have a
black background, the barely visible light-grey looks almost
bright white on a dark screen (i.e. ugly).
This is why the RELATIVE keyword was added in version 18.1
of IVT.
When this option is used, IVT will interpret the RGB color values
as offsets from the current background color. IVT will darken the
color values when the background is bright, and brighten it when
the background is dark. When you use a relative offset of, for
example, "15", this will guarantee that the lines remain
relatively unobtrusive, so:
VERTICAL_LINE 80 1 RELATIVE 15 15 15
is probably the best.
The lines appear only on the session screen. When there are dialogs on the screen, or POPUPs, they are (temporarily) removed.
There is currently no way to define these lines through setup dialogs, you have to define them in an IVT.RC file.
These lines can be disabled and enabled through the 'Extra'
menu on the session menu bar, and
through the VLINES script function.
This is handy if you don't want the lines displayed all of the
time.
Currently, there is only ONE set of lines possible, so all
sessions have the same line(s) in the same position(s), or none
at all.
12.3.131: VSCROLL (enable vertical scroll bar)
VSCROLL
NO_VSCROLL
Default: show scroll bar.
GUI_VSCROLL is an old alias for VSCROLL.
This is a global setting.
The scroll back history is accessed
through this scroll bar.
Simply clicking the appropriate parts is the equivalent of
keyboard commands such as ALT-PgUp and
ALT-CursorUp.
These keyboard commands still work, of course.
For people who do not like screen clutter, the scrollbar can
be turned off (using NO_VSCROLL). It can also be turned on
and off from this setup panel.
See also NO_MENUBAR, NO_TABSBAR and NO_STATUS to
remove more screen clutter.
The vertical scroll bar is a global feature - you either have it for all sessions or for none.
This setting can also be changed from this setup screen, the current setting is saved in the registry.
12.3.132: VSPACE/HSPACE (extra border space)
VSPACE Pixels
HSPACE Pixels
Default: 2 pixels in both directions.
This is a per-session
setting.
This controls the extra amount of space between the window
borders and the text in the window. Horizontal space is added to
the top and bottom of the window, vertical space at the left and
right edges.
The default setting is 2 pixels for the vertical border and zero
for the horizontal.
A zero setting disables any extra border. In that case, when you
maximize the window, the leftmost characters will touch the
physical edge of the screen.
Depending on your color setup, this can lead to black characters
touching the black edge of the screen, creating a very ugly
effect.
It can also be changed from this setup
screen.
The values are saved in the registry.
See also FONT and VSCROLL.
This is an important feature, others are prev/next
12.3.133: WINDOW_SIZE (Set the size of the IVT session window)
WINDOW_SIZE Rows[%] Columns[%] [DEFAULT]
WINDOW_SIZE MAXIMIZED [DEFAULT]
WINDOW_SIZE FULLSCREEN [DEFAULT]
Default: Dynamic.
This is a per-session
setting.
Set the IVT window size for the current session to the
indicated size.
These are the rules:
Examples:
WINDOW_SIZE
MAXIMIZED DEFAULT
WINDOW_SIZE
90% 90% DEFAULT
WINDOW_SIZE 40
120 # 40 rows, 120
columns
WINDOW_SIZE
80% 80 # 80% of screen
vertically, 80 columns.
When you specify 100%, the entire width or height of the physical screen is used. For example:
WINDOW_SIZE
100% 100% DEFAULT
will instruct IVT to use the entire physical screen by
default. All setup and help screens will also be this size.
When you use:
WINDOW_SIZE
50% 80%
then 50% of the vertical size of the screen (rows) and 80% of the horizontal size will be used. For the actual number of resulting rows and columns, see the setup screen.
When you change the size of the font, IVT will recalculate the
resulting number of rows and columns and resize the window
accordingly.
The resulting numbers can be found in the IVT variables $ROWS and $COLS.
See also SIZEFONT and SIZE4ALL, though.
This method of working works best with a host that understands variable terminal sizes. The TELNET protocol over WinSock in IVT supports this. This means that IVT will communicate the resulting number of rows and columns to the remote host automatically, so any full-screen program will know the size of your terminal session. This will allow you to have very large screens, which is a VERY nice thing to have.
Other session protocols (such as RLOGIN) do not always support this (so you need to set the Unix $LINES and $COLUMNS environment variables manually or using IVT scripting).
See also FULLSCREEN and ONRESIZE.
See also WINDOW_POS (especially the
LAST_KNOWN option there).
Note: One systems with multiple monitors, IVT will try to keep
on the monitor that the user drags it to. The maximum window size
is the combination of all monitors, you cannot drag the window
larger than actually fits on your monitors.
When you use WINDOW_SIZE with a percentage, it is
interpreted as a percentage of the primary monitor. You can size
IVT to a maximum that is larger than the single monitor by
dragging the borders.
Note that many factors influence the size of the window and the resulting number of rows and columns:
In other words: Your Mileage May Vary.
12.3.134: WINDOW_POS (specify default window position)
WINDOW_POS CENTER|CENTRE [option...]
WINDOW_POS LEAVE
WINDOW_POS LAST_KNOWN
WINDOW_POS Xvalue Yvalue [option...]
Option is one off:
STARTUP_ONLY
NO_STARTUP_ONLY
Default: LAST_KNOWN, STARTUP_ONLY.
Note: WINDOWPOS is a deprecated alias for WINDOW_POS.
This is a global setting.
This command is used to specify the initial window position of the IVT application window. If you specify CENTER (or CENTRE, if you happen to live on the wrong side of the Atlantic :-) the window will be positioned in the center of the screen. This is default.
When LAST_KNOWN is used, the position and size at the
time IVT was last used is used. The last known size is also made
the default size for new sessions.
This setting is the default setting, starting with version 22.3
of IVT.
When you write scripts and need to make sure that IVT starts up
in a known position and size you will have to force this setting
off of the default.
When there IS no last-known position, or when NO_REGISTRY is used, LAST_KNOWN is the
same as CENTER.
When you specify LEAVE, it means that IVT will leave the window wherever it is (determined by the operating system). This prevents that the windows jumps hither and yon when you call IVT to perform short tasks on Unix using scripts.
You can also specify absolute coordinates of the upper left
corner of the screen. IVT will position itself accordingly during
start-up.
When you alter the setting from this
setup screen, IVT will reposition accordingly.
When you specify a NEGATIVE value for X or Y, the result
will be that the window is positioned beyond the top (Y) or left
edge (X) of the physical screen. This is sometimes useful when
the size of the window is a little too big, causing the status
line or the title bar to be hidden by the Windows taskbar.
Tweaking these values can make all relevant bits visible.
IVT will determine the whereabouts of the Windows taskbar and interpret the coordinates accordingly. Thus, if you specify "WINDOW_POS 0 0" and your taskbar is at the top of the screen, IVT will position itself just below the taskbar. Similarly, centering is done with the taskbar taken into account.
When you specify STARTUP_ONLY (the default), IVT will only position the window for the first session (created during startup), and will not re-position the window afterwards. When NO_STARTUP_ONLY is in effect, a setting of CENTER or absolute coordinates will be re-applied every time you create a new session, causing the main window to be moved to the configured position.
This setting can also be changed from setup, and is saved into the registry.
Furthermore, it can be used in a script, in which case you can control the current window position of IVT.
12.3.135: WRAP (set line wrapping mode)
WRAP
NO_WRAP
Default: WRAP.
This is a per-session
setting.
Turn auto-line wrap ON/OFF. When ON, IVT will wrap to the next line after reaching the end of a line. When OFF, it will print remaining characters on the last position of that line. The length of a line is of course determined by the current settings of the WINDOW_SIZE and whether or not the host has set a wide screen.
The mode can also be changed by the host using an escape sequence.
When NO_WRAP is in effect, output longer than a line is lost, which can be exceedingly annoying. IVT has WRAP as default, but even that does not help against certain hosts (such as AIX) that explicitly set NO_WRAP at the drop of a hat.
The mode can be viewed and changed (for the current session only) from this setup screen.
12.4.1: AUTOLANDSCAPE (for text mode prints)
AUTOLANDSCAPE
NO_AUTOLANDSCAPE
Default: AUTOLANDSCAPE.
This setting only applies to Windows printers (not a file or other simulated printer).
When IVT wants to print text to a Windows printer, it will
determine whether full lines of text fit the paper given the
current paper, font and screen width. When the paper is too
narrow and portrait mode is selected, IVT will automatically
select landscape mode when the printer supports it. Note that
this does not guarantee that this will make it fit, but at least
a larger portion of the lines will make it to the paper.
See also PRINTER_FONT_SCALE, as
a further attempt to make sure the information makes it all the
way to the paper.
If, for whatever reason, you do not want IVT to switch
orientation this way, it can be suppressed by specifying
NO_AUTOLANDSCAPE.
The default setting (from IVT.RC) is
inherited by all printers that IVT detects when starting. You can
modify this setting for individual printers in this printer setup screen. This
modification is stored in the registry, too.
12.4.2: CONFIRM_PRSCREEN (Confirm print screen)
CONFIRM_PRSCREEN
NO_CONFIRM_PRSCREEN
The default is CONFIRM_PRSCREEN.
This is a global setting.
When you type F2 (Print Screen), IVT will normally display the
standard Windows "Printer selection" dialog where you can choose
a printer, change the print job settings and/or confirm or cancel
the print operation.
When the current printer is a plain file, IVT displays a simple
OK/Cancel dialog to confirm the print operation.
Some users prefer not to be asked and this option allows you to
configure that.
For Windows printers, this means the output is sent to the
current printer (usually the Windows default) with the default
settings.
For a file, the data is simply sent to the file.
It can also be changed from printer-setup and is saved in the
registry.
See also CONFIRM_PRINT_SELECT.
12.4.3: CONFIRM_PRINT_SELECT (Confirm print selection)
CONFIRM_PRINT_SELECT
NO_CONFIRM_PRINT_SELECT
The default is NO_CONFIRM_PRINT_SELECT.
This is a global setting.
When you select a region on the screen (with either the mouse
or the keyboard) you can hit F2 (print screen) to print just the
selection to the current printer. The idea is that you define a
file as the current printer for the session, and add bits and
pieces of the session to that file. For example, details of error
messages and other program output is pasted to the file this way
with a minimum of effort.
To minimize that effort further, IVT does not normally ask for a
confirmation to print the selection. Some users do not like that
and for those this option can be used to force a dialog with the
usual printer selection.
It can also be changed from printer-setup and is saved in the
registry.
See also CONFIRM_PRSCREEN.
12.4.4: PR_CONTROLLER (How to handle host printing)
PR_CONTROLLER RAW
PR_CONTROLLER COOKED
Default: RAW.
GUI_PR_CONTROLLER is an old alias for
PR_CONTROLLER.
This is a global setting.
IVT supports the DEC VT220 "Print controller" mode, where
characters received by the host are not sent to the screen but to
the printer, instead. This mode allows hosts to print reports on
the printer connected to the PC IVT runs on, instead of printers
attached to the host.
The host can initiate this controller mode with ESC[5i and stop it with ESC[4i.
This GUI version of IVT supports two ways of sending data to printers:
By default, IVT will open a print job in "RAW" mode when the host turns the printer on. The host is expected to control the printer by sending the appropriate commands to control the font, page breaks, and so on. this works fine in most cases, but it has two problems:
Therefore, IVT allows you to specify the mode for sending data to printers when the host turns controller mode on. When "COOKED", IVT opens the printer with the settings specified in the "properties" sheet for the printer, and prints the data in the selected font. It is the responsibility of the user to make sure that the data the host sends does not contain ESC-commands or PostScript commands, since these commands end up being printed instead of being executed.
The setting is inherited by all printers that IVT discovers
when it starts up.
It can be overruled in setup, and
such a change is saved in the registry.
12.4.5: PR_INDENT (Create a left margin in printout)
PR_INDENT number
This is only used by the manual printing
subsystem of IVT.
Default value: 3.
This is a global setting.
Every line printed will be prefixed by the number of spaces
you specify here.
This will create a left margin that might prevent holes being
punched through my carefully created documentation :-)
Make sure that the chosen font (PRINTER_FONT) and the indent do not combine
in long lines being truncated or wrapped.
This number can also be adjusted from this setup screen.
See also PR_LINES.
12.4.6: PR_LINES (Number of lines per page to use when printing)
PR_LINES num
This is only used by the manual printing
subsystem of IVT.
Default value: 61.
This is a global setting.
This specifies how many lines are to be printed on a single page. After the specified number of lines, IVT will emit a form feed character to start a new page. Every page has a header of about 5 lines (depends on the level of the topic at the start of the page).
This is configurable from this setup
screen, too.
The number is ignored when you are printing manual pages to a
Windows printer, IVT will automatically determine the proper
number of lines given the chosen PRINTER_FONT, paper size and so on. When your
'printer' is a file, the size is important.
12.4.7: PRINTER (Define a logical printer)
PRINTER FILE[,OPTIONS...]
Default: None.
This is a global setting.
This can be used to define a logical printer. When you click here IVT will show all defined printers.
This allows you to connect any printer to any session.
Normally, you will not need this statement, since IVT will detect
all installed Windows printers and choose the default Windows
printer automatically (but you can also use this to switch
between printers under script control).
NOTE: When you use this in a script, quote the entire
argument:
PRINTER
"$SomeName,APPEND,AUTO_FF"
and not (syntactical error):
PRINTER
$SomeName,APPEND,AUTO_FF
NOTE: IVT used to define a default printer called LPT1, which used to be "the" way to print on MS/DOS and early versions of Windows. Nowadays (2018), directly attached parallel printers are a rare exception. On systems without any defined Windows printers, defaulting to LPT1 while there is nothing connected to LPT1 will cause hang-ups and serious delays. IVT no longer defines this as a printer. If you still want IVT to use LPT1, you will have to define it manually, like so:
PRINTER LPT1,APPEND,AUTO_FF
You can also add printers on the fly in the printer setup screen (F3, Print), BUT such manually defined printers will be used as if they were files, so IVT will just open them, write text output and close them (so no colors, backgrounds, special characters, national support and so on). This is meant to be used for plain files or (very) simple printers such as LPT1.
If you just want to print a file, check out the privt support program!
FILE can be any device (e.g. LPT1) or real file (e.g.
C:/TMP/SCREEN.DMP).
Note: it can also be the name of a Windows printer as
shown in the IVT printer setup dialog.
The OPTIONS are a comma-separated list of options. An option can be:
You can also specify a Windows queue-name, such as:
PRINTER
\\\\BAC300\\PQ_F2-OOST_HP,OVERWRITE,TIMEOUT=5,NO_AUTO_FF
The double backslashes are necessary because a \ is special in
IVT.RC files.
In this queue case, you must specify OVERWRITE, or it
won't work!
Several sessions can print to the same printer simultaneously. Output will be intermixed when this happens!
The default mode is OVERWRITE. See also printing for complete description of
printing.
Another default mode is NO_PROMPT, so files are
overwritten without asking.
You can have scripts to select printers dynamically. For example, on a Windows machine with an HP printer and a Fax, the following will work:
Script SetPrinter New
HIDE
PRINTER "$New,SELECT"
POPUP "Printer $New
activated" DUM DUM 1000
END
KEYMACRO "F10-Shift-Ctrl-Alt"
ASYNCFUNCTION SetPrinter "HP Photosmart D7400"
KEYMACRO "F11-Shift-Ctrl-Alt"
ASYNCFUNCTION SetPrinter "Fax"
Now, when the user types F10, the HP printer is selected and a
popup briefly shows the selected name. Press F11 and the Fax is
now the selected printer for the current session. Allows easy
switching in multi-printer environments.
Do make sure you pass the name exactly as Windows defines it, or
IVT will create a new printer-to-file with the name you give!
The host can also control printing, see these special escape codes.
See also PRINTER_FONT.
12.4.8: PRINTER_AUTO_FF (Send FormFeed when closing printer)
PRINTER_AUTO_FF
NO_PRINTER_AUTO_FF
Default: PRINTER_AUTO_FF.
This is a global setting (and
per-printer).
This setting only applies to simple (file-based or RAW) printers, normally IVT will use Windows printer in advanced (cooked) graphics mode. In that case, Windows will make sure that the print job ends and no extra blank pages are printed.
For simple printers, when IVT stops printing, it will send a
form feed character to make sure the printer actually ejects a
page. For some (line) printers, this is not desirable. Setting
NO_PRINTER_AUTO_FF will prevent the form feed.
This setting can also be influenced by the host, using the
CSI ? 18 h/l command sequence. IVT will
initialise the setting for every session by using the default for
the printer, which can be altered manually in printer setup.
See also the AUTO_FF clause of an individual PRINTER statement.
By the time it is time to close the printer, the current setting is used.
12.4.9: PRINTER_FONT (Font to use for printing)
PRINTER_FONT "font description"
This version of IVT supports graphics printing of screen and
help data.
This is a global setting.
The PRINTER_FONT statement can be used to specify the
font to use for all text.
Colors, shading, underlines and so on are all printed exactly as
shown on screen, hardware permitting.
The syntax for this statement is the same as the one used for the
screen font, see FONT for details.
It is best to choose a decent TrueType font here.
See also PRINTER_FONT_SCALE and
AUTOLANDSCAPE.
You can also specify the font interactively in this setup screen.
12.4.10: PRINTER_PROMPT (Ask before overwriting/appending print files)
PRINTER_PROMPT
NO_PRINTER_PROMPT
The default is NO_PRINTER_PROMPT.
This is a global setting.
When you use a printer that is actually a file, IVT will
normally just open the file and either overwrite it or append
data to it depending on the setting of the
OVERWRITE/APPEND mode.
Setting PROMPT to ON will cause IVT to display a "Proceed
yes/no" dialog when the file already exists before altering the
file. Click on CANCEL to prevent printing, OK to proceed with
printing.
This setting only affects printers that are files, it is ignored for "real" printers (nothing is destroyed when printing to a real printer).
NOTE: Using this statement only sets the default for all printers that are defined, either interactively through setup, or using a PRINTER statement in an IVT.RC file. Use the PROMPT/NO_PROMPT clause in a PRINTER statement to overrule this default (or set the appropriate checkbox).
Changes made to individual, interactively defined printers are saved in the registry.
12.4.11: PRSTATLINE (Print status line with print-screen yes/no)
PRSTATLINE
NO_PRSTATLINE
Default: PRSTATLINE
This is a global setting.
The default is PRSTATLINE, which