Tera Term ヘルプ 目次

Copyright (C) 1994-1998 T. Teranishi
(C) 2004-2021 TeraTerm Project
All Rights Reserved.

Tera Term はフリーソフトウェアのターミナルエミュレーター(通信プログラム)で、以下の特徴を持っています。

  • シリアルポート接続
  • TCP/IP (telnet, SSH1, SSH2) 接続
  • ログ再生
  • 名前付きパイプへの接続
  • IPv6 対応
  • VT100 端末のエミュレーション (および、VT200, 300 の一部)
  • TEK4010 端末のエミュレーション
  • ファイル転送プロトコル (Kermit, XMODEM, YMODEM, ZMODEM, B-PLUS, Quick-VAN)
  • マクロ言語による自動運転
  • 日本語/英語/ロシア語/韓国語/UTF-8 モード
  • 文字コードとして UTF-8 を使用可能
  • メッセージカタログ（日本語/英語/ドイツ語/フランス語/ロシア語/韓国語/中国語）
Tera Term について
  • まえがき
  • 改版履歴
  • Tera Term Pro 2.3との差分
  • 構成要素
  • ライセンス・著作権
  • 動作環境
  • エミュレーション
  • 対応制御シーケンス
  • Q & A
  • 要望集
  • 作者への連絡
  • 用語集
  • 執筆者一覧
使いかた
  • キーボード
  • マウス
  • ショートカット
  • SSH 接続
  • Cygwin接続
  • Proxy 接続
  • LogMeTT
  • Tera Term Menu
  • Unicode設定
  • 透過ウィンドウ
  • ヒント
  • 追加プラグイン
    • 漢字コードの自動制御
    • ウィンドウサイズ変更プラグイン
    • TTYレコーダー
    • 繰り返しコマンド
VT window のコマンド
  • [File] メニュー
  • [Edit] メニュー
  • [Setup] メニュー
  • [Control] メニュー
  • [Window] メニュー
  • [Help] メニュー
  • 追加プラグイン
    • [Resize] メニュー
TEK window のコマンド
  • [File] メニュー
  • [Edit] メニュー
  • [Setup] メニュー
  • [VT-window] コマンド
  • [Window] メニュー
  • [Help] メニュー
コマンドライン
  • Tera Term
  • Tera Term Macro
  • TTSSH
  • CygTerm+
  • TTProxy
  • 追加プラグイン
    • TTXttyplay
設定ファイル
  • Tera Term 設定ファイル
  • キーボード設定ファイル
  • TTSSH known_hosts ファイル
  • CygTerm+ 設定ファイル
  • 言語ファイル
参考資料
  • Keycode
  • RE
  • OpenSSL ライセンス
  • OpenSSH ライセンス
  • zlib ライセンス
  • PuTTY ライセンス
  • 鬼車 ライセンス
  • SFMT ライセンス
  • CygTerm+ ライセンス
  • 開発者向け
    • CMakeビルドシステムを使用したビルド(experimental)
      • ライブラリのビルド
      • Tera Termのビルド
  • ソースコード解説
MACRO ヘルプ
アンインストール


まえがき

Tera Termをご利用いただきありがとうございます。

Tera Term（テラターム）は、1994年から1998年にかけて寺西高（てらにし たかし）氏により作成された、Windows用ターミナルエミュレータです。Tera Termはシリアルとtelnet接続をサポートし、リモートホストや組み込み機器の端末操作を行うためのソフトウェアです。マクロ機能も搭載されており、当時はパソコン通信の自動操縦を行うためにしばしば利用されていました。

Tera Termはフリーソフトとして公開され、1997年には窓の杜の「オンラインソフトウェア大賞97」に入賞しています。Tera Termはプラグイン対応をしているため、たくさんのTera Term用プラグインが公開されています。その中で、Robert O'Callahan氏によるTTSSH(An SSH Extension to Tera Term)は有名であり、TTSSHをTera Termに組み込むことで、SSH1プロトコルによるSSH接続が可能となっていました（現在、Robert氏のホームページは消滅）。

Tera Termの最終バージョンは 2.3 で、対応OSはWindows95/NTです。初期のWindowsでは珍しく、Tera TermもTTSSHもソースコードのすべてが公開されています。ただし、Tera Termのソースコードを変更したバイナリを配布するには作者の許可が必要であり、昨今でいうところのオープンソースソフトウェアではありません。
本文書では、寺西高氏によるTera Termのことを「オリジナルTera Term」や「Tera Term Pro 2.3」と呼称しています。

Tera Termは長らく日本におけるターミナルエミュレータの代名詞として、ユーザに親しまれてきましたが、1998年に開発が終了しているために、最新のWindowsへの対応や新しいプロトコルへのサポートがなされていませんでした。ソースコードは公開されているため、ユーザの手によりIPv6版や半透明版などの派生バージョンが登場しました。しかし、原作者へ連絡が付かない状態であったために、これらの派生バージョンはパッチ形式で配布されていました。なにより、完全なバイナリを配布するには原作者である寺西高氏の許可を取る必要があるために、Tera Termの開発を第三者が引き継ぐことが難しい状況となっていました。

2004年9月に寺西高氏に連絡が取れ、同年11月にSourceForge.jpへプロジェクトを立ち上げ、Tera Termのオープンソース化を実現しました。Tera Termがオープンソース・ソフトウェアであるとするために、BSDライセンスの下に"TeraTerm Project"が発足しました。このプロジェクトはTera Term後継版として開発が進められており、「Tera Term」と呼ばれています。
Tera Termのコミュニティは日本だけではなく、海外（カナダ）にも存在し、日本発の世界へ向けたオープンソース・ソフトウェアとして活動が続けられています。

今後ともよろしくお願いいたします。

Japan - Tokyo, August 2007
TeraTerm Project Team


改版履歴

  • Tera Term
  • TTSSH
  • CygTerm+
  • cyglaunch
  • TTProxy
  • TeraTerm Menu
  • TTX KanjiMenu
  • TTXAlwaysOnTop
  • TTXKCodeChange
  • TTXResizeMenu
  • TTXttyrec
  • TTXViewMode
  • TTXRecurringCommand

Tera Term

2021.6.5 (Ver 4.106)

  • 変更
    • 端末横幅の最大値を500文字から1000文字に変更した。
    • シリアルポート接続
      • シリアルポート設定で、1.5ストップビットのサポートを削除した。
      • teraterm.ini の StopBit エントリから"1.5"を削除した。
  • バグ修正
    • ログの経過時間形式のタイムスタンプの形式が正しくない問題を修正した。
    • IMEの前後参照変換機能が動作するよう修正した。4.103でのエンバグ。
    • VT ウィンドウと Htmlヘルプウィンドウを同時に閉じるとアプリケーションフォールトが発生する不具合を修正した。
    • メインディスプレイ以外でデスクトップ画像を背景に表示できなかったのを修正した。4.101でのエンバグ。
    • ツールチップ表示時のメモリリークを修正した。4.103でのエンバグ。
    • yesnobox マクロコマンドで、言語ファイルを読み込まないとき "OK" が表示されていた。"yes" に修正した。4.103でエンバグ。
    • filecreate, fileopen マクロコマンドで開いたファイルハンドルがロックしている問題を修正した。
    • getdate, gettime マクロコマンドで timezone つきで呼び出すと正しい時刻を返さない問題を修正した。v4.105でのビルドミス。
  • その他
    • TTSSH(2.92)へ差し替えた。
    • TTX KanjiMenu Plugin(0.1.8)へ差し替えた。
    • TeraTerm Menu(1.16)へ差し替えた。
    • Oniguruma 6.9.7.1へ差し替えた。

2019.12.7 (Ver 4.105)

  • 変更
    • バージョン情報ダイアログにSFMTの表記を追加した。
    • New connectionダイアログの表記を「Protocol」から「IP version」に、「UNSPEC」を「AUTO」に変更した。
    • VT ウィンドウのタイトルバー上でマウスホイールを操作してウィンドウの不透明度を一時的に変更するとき、不透明度をツールチップに表示するようにした。
    • Additional settingsダイアログのVisualタブで、不透明度をスライダーで指定できるようにした。半透明化が利用できないとき不透明度を変更できないようにした。
    • リサイズ中の縦横サイズツールチップの表示位置をリサイズ後の座標に追従するようにした。
    • Eterm look-feel: 壁紙と画像を混合するを設定できるようにした。teraterm.ini に BGIgnoreThemeFile エントリを追加した。デフォルトはoff。
    • Additional settingsダイアログのVisualタブで不透明度の値に256以上を入力したとき、ダイアログ上で255に変更するようにした。
    • REP 制御シーケンスに対応した。
    • xterm の ED 3 (スクロールバッファ消去) 制御シーケンスに対応した。
      • Additional settingsダイアログのControl Sequenceタブに「リモートからのスクロールバッファ消去を受け入れる」を追加した。デフォルトはoff。
    • 「リモートからのクリップボードアクセス」設定を変更する為のコマンドラインオプションとして/OSC52=を追加した。
    • [File] メニューに [Pause Logging] / [Stop Logging] を追加した。
    • マウスでのテキスト選択の開始を、設定で遅らせる事が出来るようにした。
      • teraterm.ini に MouseSelectStartDelay エントリを追加した。デフォルトは0。
    • シリアルポート接続
      • シリアル接続でハードウェアフロー制御DSR/DTRをサポートした。
        • Serial port ([Setup] メニュー)のFlow controlでhardwareをRTS/CTSに変更し、新しくDSR/DTRを追加した。
        • setflowctrlマクロコマンドで DSR/DTR を指定できるようにした。
      • TCP/IP接続中においても[Setup]-[Serial port] ダイアログを呼び出せるようにした。
      • [Setup]-[Serial port] ダイアログのタイトルを「シリアルポート設定」から「シリアルポート設定と接続」に変更した。
      • [Setup]-[Serial port] ダイアログにCOMポートの詳細情報を追加した。
      • [Setup]-[Serial port] ダイアログのスピード設定でツールチップを表示するようにした。
      • [Setup]-[Serial port] ダイアログのOKボタンの表記を接続状態で切り替えるようにした。
      • 使用可能なCOMポートが存在しない場合、[Setup]-[Serial port] ダイアログのOKボタンを押せないようにした。
      • /CDATABIT=, /CPARITY=, /CSTOPBIT=, /CFLOWCTRL=, /CDELAYPERCHAR=, /CDELAYPERLINE= コマンドラインオプションを追加した。
    • MACRO: setdlgpos 引数なしのときダイアログボックスの位置をデフォルトとするようにした。
    • MACRO: setdlgpos の位置指定でダイアログがディスプレイからはみ出さないようにした。
  • バグ修正
    • リサイズ中の縦横サイズツールチップが、デスクトップの左端と上端で表示されなくなっていた問題を修正した。4.103でのエンバグ。
    • Eterm look-feel: 壁紙と混合する画像ファイルをランダムに選択する際、無関係なファイルを選択することがある問題を修正した。
    • ログ採取・ファイル送信・フォント・印刷ダイアログのヘルプボタンが機能しない問題を修正した。4.104でのエンバグ。
    • TTIMESV(IME状態保存)/TTIMERS(IME状態復元)制御シーケンスが正しく動かない問題を修正した。
    • Windows2000～10で、印刷ダイアログにヘルプボタンが表示されない問題を修正した。Windows95を除く、すべてのWindowsで印刷ダイアログにヘルプボタンが表示されるようになった。
    • MACRO ウィンドウで、ESCキーを押下時終了しないようにした。4.103でのエンバグ。
    • TEKウィンドウを閉じたとき Tera Term 自身は終了しないようにした。4.103でのエンバグ。
    • メニューバー非表示時、DPIが変化したときウィンドウサイズを正しく調整するよう修正した。
    • Windows 8.1で、DPIが変化したとき Tera Term が強制終了しないようにした。
    • 漢字を含むウィンドウタイトル設定制御シーケンスを受信した時、ウィンドウタイトルが文字化けする問題を修正した。
    • MACRO: yesnobox で左右矢印キーで選択されるボタンが逆になっていたのを修正した。
    • 設定の保存・設定の読み込み・キーマップ読み込みダイアログにヘルプボタンが表示されていない問題を修正した。
    • Windows95/98/NT4.0において、設定の保存ダイアログに「読み取り専用ファイルとして開く」というチェックボックスが表示される問題を修正した。
    • MACRO: 文字列型定数の終端が正しくない場合、エラーが正しく表示されるようにした。
  • その他
    • インストーラからインストール時、フォント(TSPECIAL1.TTF)のコピーが失敗することがある問題を修正した。
    • インストーラに同梱されているCygTerm+バイナリはWindows Vista以降のサポートとなります。古いWindowsで動作させたい場合は、古いWindowsに対応したCygwinを使ってCygTerm+をソースコードからビルドしてください。
    • TTSSH(2.91)へ差し替えた。
    • TTProxy(1.0.0.26)へ差し替えた。
    • TTXResizeMenu Plugin(1.06)へ差し替えた。
    • TTXttyrec Plugin(1.04)へ差し替えた。
    • 作者への連絡のメールアドレスを変更した。

2019.08.31 (Ver 4.104)

  • 変更
    • マウスでウィンドウを選択したときの文字の選択を禁止するをAdditional settingsダイアログで設定できるようにした。
    • ファイル転送のためのディレクトリに含まれる環境変数を展開するようにした。
    • IMEの未確定文字のフォントが指定フォントと同一になるようにした。
    • Additional settingsダイアログにヘルプボタンを追加した。
    • fileopen マクロコマンドで、ファイルが開けない場合にエラーにならないようにした。4.102での変更を元に戻した。
    • filetruncate マクロコマンドで、ファルが開けない場合・ファイルサイズの変更に失敗した場合にエラーにならないようにした。
  • バグ修正
    • UTF-8受信時、4byteのUTF-8のデコードを誤っていたので修正した。
    • Active Window Tracking を有効時、マウスカーソルが Tera Term のウィンドウ内に移動しても、アクティブにならない問題を修正した。4.103でのエンバグ。
    • ウィンドウタイトルのセッション番号が常に1となる問題を修正した。4.103でのエンバグ。
    • IMEの未確定文字を表示している状態でフォント選択ダイアログを使用するとIMEのフォントが変化する問題を修正した。
    • 英語版Windowsで、ロケール設定がデフォルト(japanese)もしくは不適切な場合、Tera Termを起動してすぐにアプリケーションフォルトとなる問題を修正した。
    • [File]/[Send file..]から大きなファイルをうまく送信できない問題を修正した。4.103でのエンバグ。
    • 印字中止ダイアログが出なくなっていた問題を修正した。4.103でのエンバグ。
    • 4.103 で DLL の呼び出し規約を変えたことで、それ以前にコンパイルされたプラグインが呼び出せなくなっていた問題を修正した。
    • listbox マクロコマンドで、ウィンドウサイズに合わせてリストの横幅を調整できていなかった問題を修正した。4.103でのエンバグ。
    • filecopy マクロコマンドの結果が result システム変数に格納されないことがある問題を修正した。
    • filelock, fileunlock マクロコマンドが常に失敗していた。4.101でのエンバグ。
    • filestrseek2マクロコマンドで、ファイルの1バイト目が一致したとき、ファイルポインタが先頭になっていなかった問題を修正した。4.101でのエンバグ。
  • その他
    • TTSSH(2.90)へ差し替えた。
    • TTProxy(1.0.0.25)へ差し替えた。
    • Oniguruma 6.9.3へ差し替えた。

2019.06.15 (Ver 4.103)

  • 変更
    • 試験的に高DPI対応した。
      • デフォルトはdisable。teraterm.iniの[Tera Term]セクションにDPIAware=onとすると有効となる。
      • Windows 10 Version 1703以降のみ有効。
    • フォントサブメニューを追加し、ダイアログのフォントも設定できるようにした。
      • ダイアログフォントのデフォルトは従来と同じフォントとなる。
    • TEK ウィンドウのポップアップメニューが正しく表示されない問題を修正した。
    • 罫線を表示するためのフォントファイル(TSPECIAL1.TTF)がインストールされていない場合、ttermpro.exeと同一フォルダから読み込むようにした。
    • Kermit プロトコルでのファイル送信時、ファイル作成日時ではなく更新日時を通知するようにした。
    • MACRO: exec マクロコマンドの実行結果を result システム変数に代入するようにした。
  • バグ修正
    • IMEの変換候補ウィンドウの表示位置がカーソル位置に追従しない問題を修正した。4.102でのエンバグ。
    • U+2014 EM DASH, U+2212 MINUS SIGN, U+301C WAVE DASH 等の文字が表示できない問題を修正した。4.102でのエンバグ。
    • MACRO: exec マクロコマンドを実行するとハンドルリークが発生する問題を修正した。
  • その他
    • TTSSH(2.89)へ差し替えた。
    • Oniguruma 6.9.2へ差し替えた。

2019.02.28 (Ver 4.102)

  • 変更
    • VT ウィンドウの透過設定を、アクティブ/非アクティブ時の各々で別の値を設定できるようにした。
    • VT ウィンドウのタイトルバー上でマウスホイールを操作することで、ウィンドウの透過値を一時的に変更できるようにした。
    • VT ウィンドウの内部処理を高速化した。
    • UTF-8 で 4 バイトになる文字を（表示できないが）正しくデコードするようにし、文字化けする範囲が最小限になるようにした。
    • "Terminal setup[端末の設定]" ダイアログの言語コード(CodePage)設定を削除した。(Unicode設定)
    • マクロファイルのエンコーディングとして UTF-8, UTF-16(with BOM)に対応した。
    • getfileattr マクロコマンドで、他のコマンドと同様にカレントフォルダを基準とするようにした。
    • fileopen マクロコマンドで、読み取り専用モード時にファイルがない場合はエラーとなるようにした。
  • バグ修正
    • ウィンドウの透過設定が有効だと Windows 10 で落ちる問題に対応した。
  • その他
    • TTSSH(2.88)へ差し替えた。
    • Oniguruma 6.9.1へ差し替えた。

2018.11.30 (Ver 4.101)

  • 変更
    • 以下の dtterm のウィンドウ操作シーケンスに対応した。
      • 10: フルスクリーンモード
      • 13;2: ウィンドウ位置方向(テキスト領域)
      • 14;2: ウインドウサイズ報告(ウィンドウ全体)
      • 15: ルートウィンドウサイズ報告(ピクセル)
      • 16: 文字サイズ報告(ピクセル)
    • 以下の dtterm のウィンドウ操作シーケンスの動作を変更した。
      • 14: ウインドウサイズ報告: 報告する領域をウィンドウ全体からテキスト領域に変更した。
    • ウィンドウサイズ変更時に左右マージンモードをリセットしないようにした。
    • ファイル名を受け取るコマンドラインオプションで、`/' もパス区切り記号として扱うようにした。
  • バグ修正
    • Ver 4.100 で DLL の呼び出し規約を変えたことで、それ以前にコンパイルされたプラグインが呼び出せなくなっていた問題を修正した。
  • その他
    • TTSSH(2.87)へ差し替えた。
    • TTXResizeMenu Plugin(1.05)へ差し替えた。
    • Oniguruma 6.9.0へ差し替えた。

2018.08.31 (Ver 4.100)

  • 変更
    • 複数ファイルのドラッグ&ドロップに対応した。
    • ファイルをドラッグ&ドロップしたときに表示されるダイアログを機能強化した。
    • Term size = win size 設定が on の場合は、タイトルバーをダブルクリックした時にウィンドウサイズを最大化するように変更した。
    • Additional settingsダイアログの General タブにタイトル形式の設定を追加した。
  • その他
    • TTSSH(2.86)へ差し替えた。
    • TTXResizeMenu Plugin(1.04)へ差し替えた。

2018.05.31 (Ver 4.99)

  • 変更
    • DECSACE 制御シーケンスに対応した。
      • DECCARA, DECRARA 制御シーケンスのデフォルトの対象領域を、開始点と終了点の間の連続領域に変更した。
    • ウィンドウサイズ変更時の挙動を改善した。
    • コマンドラインオプションでポート番号の代わりにサービス名を受け付けるようにした。
    • /SPEED= コマンドラインオプションを追加した。動作は /BAUD=と同じ。
    • setspeed マクロコマンドを追加した。
  • バグ修正
    • マウストラッキング有効時、画面クリック後にメニューが使えなくなる問題を修正した。
    • DECCARA(矩形領域属性変更)、および DECRARA(矩形領域属性反転)制御シーケンスの対象領域が正しくない問題を修正した。
    • DECCARA 制御シーケンスで漢字が壊れる問題を修正した。
    • DECCARA 制御シーケンスで色が壊れる問題を修正した。
  • その他
    • TTSSH(2.85)へ差し替えた。
    • Oniguruma 6.8.2へ差し替えた。

2018.02.28 (Ver 4.98)

  • バグ修正
    • マウストラッキング有効時の画面端での操作性を改善した。
  • その他
    • TTSSH(2.84)へ差し替えた。
    • Oniguruma 6.7.1へ差し替えた。

2017.11.30 (Ver 4.97)

  • 変更
    • DA2 要求への応答内容を変更した。
    • Telnet 接続時、端末速度をサーバへ伝えるようにした。
      • Telnet Terminal Speed Option に対応した。
      • teraterm.ini に TerminalSpeed エントリを追加した。デフォルトは38400。
    • ログの行頭に追加するタイムスタンプの種類を設定できるようにした。
      • タイムスタンプの種類ととして "Elapsed Time (Logging)" と "Elapsed Time (Connection)" を追加した。
      • Log ダイアログ、および Additional settings ダイアログの Log タブで、タイムスタンプの種類を設定できるようにした。
      • LogTimestampUTC 設定は非推奨となりました。代わりにタイムスタンプの種類に UTC を設定してください。
  • バグ修正
    • DECRQSS 制御シーケンスへの応答が間違っている問題を修正した。
    • Telnet 接続時、端末の幅または高さが 255 の時にサーバへ端末のサイズが正しく伝わらない問題を修正した。
    • [File] メニューの [View Log] でエディタが起動しない問題を修正した。
    • Additional settings ダイアログの Log タブで、Log Option 設定に関する問題を修正した。
      • PlainText, Timestamp 設定が正しく反映されない事がある問題を修正した。
      • ダイアログをキャンセルした時に、Log Option 設定の変更が反映される問題を修正した。
  • その他
    • TTSSH(2.83)へ差し替えた。
    • TeraTerm Menu(1.15)へ差し替えた。
    • Oniguruma 6.6.1へ差し替えた。

2017.08.31 (Ver 4.96)

  • 変更
    • 許可する ISO/IEC 2022 のシフト機能を設定できるようにした。
      • teraterm.ini に ISO2022ShiftFunction エントリを追加した。デフォルトは on。
    • ログの行頭に追加するタイムスタンプのフォーマットを指定できるようにした。
      • teraterm.ini に LogTimestampFormat エントリを追加した。デフォルトは"%Y-%m-%d %H:%M:%S.%N"。
      • デフォルトのフォーマットは RFC 3339 形式に変更された。以前のフォーマットに戻すには LogTimestampFormat に "%a %b %e %H:%M:%S.%N %Y" を設定する。
    • ログの行頭に追加するタイムスタンプの時刻にUTCを使用できるようにした。
      • teraterm.ini に LogTimestampUTC エントリを追加した。デフォルトはoff。
    • OSで非表示に設定されているフォントをフォント設定ダイアログで選択できるようにする設定を追加した。
      • Additional settingsダイアログの General タブで設定を有効化できるようにした。
    • シリアルポートおよび名前付きパイプが開けなかった時、エラーメッセージで理由やエラーコードを表示するようにした。
    • sendlnbroadcast マクロコマンドで、改行を送信するのを最後のパラメータの後の一回だけに変更した。
    • sendlnmulticast マクロコマンドを追加した。
  • バグ修正
    • DECRQM 制御シーケンスで DECLRMM の状態を正しく返さない問題を修正した。
    • PrnConvFF が TERATERM.INI から読み込まれない問題を修正した。
    • sendbroadcast / sendlnbroadcast マクロコマンドが正しく働かない問題を修正した。
    • sendbroadcast / sendlnbroadcast / sendmulticast マクロコマンドで、0x00, 0x01 が正しく送れない問題を修正した。
  • その他
    • TTSSH(2.82)へ差し替えた。
    • Oniguruma 6.6.0へ差し替えた。

2017.05.31 (Ver 4.95)

  • 変更
    • 画面最大化時のスクロール方式 として新しい方式を追加した。
      • デフォルト設定での動作を新方式に変更した。Tera Term 4.94 までと同じ動作にする場合は MaximizedBugTweak を 1 に変更する。
      • 設定ファイルの MaximizedBugTweak 設定で指定する値を、on/off から 0/1/2 に変更した。off は 0、on は 2 として扱われる。
    • リモートからのクリップボードへのアクセスを通知する機能を追加した。(Windows Me, 2000 以上)
    • ファイル受信ディレクトリの初期値を変更した(Vista以降はDownloads、XP以前はMy Documents)
    • コマンドラインオプション /NAMEDPIPE を /PIPE へ変更した。
    • コマンドラインオプション /PIPE を使用した時に、以下のルールでホスト名を補うようにした。
      • ホスト名が \ で始まる場合はそのまま使われる。
      • ホスト名に \ が含まれない場合は先頭に \\.\pipe\ が付加される。
      • ホスト名の先頭以外に \ が有る場合は、それより前をサーバ名、後ろをパイプ名として扱う。
  • バグ修正
    • コマンドラインオプションでポート番号に 65535 を指定出来ない問題を修正した。
    • New connectionダイアログで、シリアルを選んでいる時にTCP/IPの一部の入力欄が無効にならない問題を修正した。
  • その他
    • TTSSH(2.81)へ差し替えた。
    • Oniguruma 6.2.0へ差し替えた。
    • インストーラは Windows 95, 98, Me, NT 4.0 をサポートしなくなりました。これらの OS では zip アーカイブ版を展開して使用できます。

2017.02.28 (Ver 4.94)

  • 変更
    • ログファイル名中の &u を、ログオン中のユーザ名に変換する機能を追加した。
    • 貼り付け時に改行を正規化する機能を追加した。デフォルトでは無効。
      • Additional settingsダイアログのCopy and Paste タブで設定を有効化できるようにした。
    • setflowctrl マクロコマンドを追加した。
  • バグ修正
    • Restore setupでAlphaBlendが即時反映されない問題を修正した。
    • 貼り付け<CR>で、データの末尾にゴミが付く問題を修正した。
    • 受信漢字コードが UTF-8 設定の時に、UTF-8 としては正しくない壊れたバイト列を受信した後に文字化けが起きる問題を修正した。
  • その他
    • TTSSH(2.80)へ差し替えた。
    • TTXttyrec Plugin(1.03)へ差し替えた。
    • Oniguruma 6.1.3へ差し替えた
    • SFMT 1.5へ差し替えた
    • LogMeTT, TTLEditor のインストーラの起動方法を変更した。

2016.11.30 (Ver 4.93)

  • 変更
    • keycode.exe に 48 ドットアイコンを追加した。
  • バグ修正
    • 受信漢字コードが EUC 設定の時に UTF-8 文字列を表示した後、UTF-8 設定に変更した時に漢字が正しく表示されなくなる事がある問題を修正した。
    • 受信漢字コードが UTF-8 設定の時に ISO-2022-JP 漢字が表示出来ない問題を修正した。(日本語モードのみ)
    • DeferredLogWriteMode=on の場合において、ログファイルのオープン後、すぐにクローズを行うと、まれに Tera Term がデッドロックしてストールするという問題を修正した。
    • ログダイアログを閉じた時、Tera Term本体(ttermpro.exe)がメモリリークする問題を修正した。
    • Windows 7 / Vista で General setup ダイアログ で特殊な操作をした時に落ちる問題を修正した。
    • ブロードキャストコマンドで、リアルタイムモードが off の時に末尾に余計な文字列が付く問題を修正した。
    • MACRO: closesboxコマンドの実行時、マクロ本体(ttpmacro.exe)がメモリリークする問題を修正した。
    • MACRO: gethostname, gettitle, getmodemstatus, loginfo, logopen コマンドが間欠でエラーになる問題を修正した。
  • その他
    • TTSSH(2.79)へ差し替えた。
    • CygTerm+ 1.07_29へ差し替えた。
    • TTProxy(1.0.0.24)へ差し替えた。
    • TeraTerm Menu(1.14)へ差し替えた。
    • TTX KanjiMenu Plugin(0.1.7)へ差し替えた。
    • TTXRecurringCommand Plugin(1.05)へ差し替えた。
    • Oniguruma 6.1.2へ差し替えた

2016.08.31 (Ver 4.92)

  • 変更
    • 貼り付け時に末尾の改行を削除する機能を追加した。デフォルトでは無効。
      • Additional settingsダイアログのCopy and Paste タブで設定を有効化できるようにした。
    • スクロールバックしている時、キー入力で常にスクロール状態をリセットするようにした。
    • ZMODEM 送信で、デフォルトのエスケープ対象文字に LF と GS を追加した。
    • MaxComPort のデフォルト値を 4 から 256 に増やした。
    • マクロのコマンドラインの扱い方を変更した。
      • コマンドラインオプションの識別を厳密にした。/Vxx のようにコマンドラインオプションの後ろに余計な文字列が付いている場合はオプションとして扱わなくした。
      • マクロのコマンドラインオプションを指定出来る場所をファイル名の前に限定した。ファイル名より後に指定した場合はマクロのパラメータとして扱われる。
    • マクロで、コマンドラインで指定されたパラメータが格納される文字列型配列 params を追加した。
  • バグ修正
    • リモートからのクリップボード読み取りに対して、末尾に余計な NUL 文字を付加していた問題を修正した。
    • リモートからのクリップボード書き込みで、空文字列がセット出来ない問題を修正した。
    • クリップボードの内容が空文字列の時、Bracketed Paste Mode 有効時の貼り付けで終了 Bracket のみが送られる問題を修正した。
    • ZMODEM 受信で、ZMODEM ヘッダパケットに含まれるエスケープされた 0x7f, 0xff を復元しない問題を修正した。
    • Windows 95/98/Me/NT4.0で起動できなくなっていた問題を修正した。
    • strreplace マクロコマンドで、正しくない正規表現を指定した時に元文字列が壊れる問題を修正した。
      • 正しくない正規表現を指定した時は result で -1 を返すようにした。
  • その他
    • TTSSH(2.78)へ差し替えた。
    • TTProxy(1.0.0.23)へ差し替えた。

2016.05.31 (Ver 4.91)

  • 変更
    • シリアル接続ができなかった場合に、接続が完了するまで待つことができるようにした。
      • 起動時にシリアルポートの接続を待つ/WAITCOM コマンドラインオプションを追加した。
      • teraterm.ini に WaitCom エントリを追加した。デフォルトはoff。
    • 送信改行モードに LF を追加した。
    • ZmodemAuto=on の時、ZRINIT パケットを受信時に ZMODEM 送信のファイル選択ダイアログを開くようにした。
    • Tera Term アイコン(teraterm.ico, vt.ico)とマクロアイコン(ttmacro.ico)を新しくした。坂本龍彦氏に感謝します。
  • バグ修正
    • DECFI, DECBI 制御シーケンスで、背景色消去(BCE)が適用されない問題を修正した。
    • AutoComPortReconnect=onの場合において、一部の機器でUSBシリアルポートの接続・切断が検出できない問題を修正した。
    • ログ・ローテートが有効で、既存のファイルをログ採取する場合、最初のファイルが指定したサイズで回転しない問題を修正した。
    • マクロコマンドの 1 行形式の if 文で、パラメータの無いマクロコマンドがエラーとなる問題を修正した。
  • その他
    • TTSSH(2.77)へ差し替えた。

2016.03.05 (Ver 4.90)

  • 変更
    • XMODEM に指定できるオプションを修正した。
      • 送信時 受信時は エラー検出の種類(Checksum/CRC) を指定できる。
      • 受信時 送信時は パケットサイズ(1K) を指定できる。
      • xmodemrecv, xmodemsend マクロコマンドの引数も同様。
    • XMODEM 送受信時のリモートからのキャンセルを、転送失敗として扱うようにした。
    • XMODEM 受信時に、Checksum なのに相手が 1K のパケットを送信しきてた場合に Checksum/1K として受信するようにした。
    • XMODEM で CRC 送信時に相手が NAK を送信してきた場合は Checksum として送信するようにした。
    • XMODEM, YMODEM, ZMODEM のタイムアウト値を設定できるようにした。
      • teraterm.ini に XmodemTimeouts エントリを追加した。
      • teraterm.ini に YmodemTimeouts エントリを追加した。
      • teraterm.ini に ZmodemTimeouts エントリを追加した。
    • XMODEM 送信/受信ダイアログでのオプション選択が、他方のオプション状態に影響しないようにした。
    • マクロコマンドの 1 行形式の if 文で、実行コマンドが無い時は条件が偽でもエラーとなるようにした。
  • バグ修正
    • OSC 4/11/104/111 制御文字列で BCE 用の情報の更新が反映されない問題を修正した。
    • XMODEM で CRC 送信時に途中から Checksum 送信になってしまうことがある問題を修正した。
    • Eterm look-feel: 不適切な画像ファイルを背景に指定すると、プログラムが落ちる問題を修正した。
    • random マクロコマンドが返す値が偏る問題を修正した。
      • 指定した最大値を返す確率が極めて低かった。
      • 最大値に32768以上を指定した時、絶対に返さない値が有った。
      • 乱数生成に SFMT を利用するようにした。
    • getspecialfolder マクロコマンドで、正しくないフォルダの種類を指定した時にデスクトップフォルダが返される問題を修正した。
    • getipv6addr マクロコマンドを Windows 2000 で実行すると ttpmacro.exe が落ちる問題を修正した。
  • その他
    • TTSSH(2.76)へ差し替えた。
    • CygTerm+ 1.07_28へ差し替えた。

2015.12.01 (Ver 4.89)

  • 変更
    • 制御シーケンスのパラメータチェックを強化した。
    • DECRQSS 制御シーケンスで、DECSLRM, DECSCUSR の状態の問い合わせに対応した。
    • シリアル接続でボーレートが高速な場合にファイル送信を高速化できるようにした。
      • teraterm.ini に FileSendHighSpeedMode エントリを追加した。デフォルトはオン。
    • Eterm look-feel: 背景画像の明るさを設定できるようにした。
    • 設定フォルダ(Setup directory)に Virtual Store パスを追加した。
    • Additional settingsのCygTerm設定で、ダイアログを閉じた時に設定を保存するのではなく、Save setup時に cygterm.cfg を保存するように変更した。
    • コマンドラインオプションのパース処理を変更し、パラメータの途中からでも '"' によるクオートを可能にした。
    • バージョン情報ダイアログのURLをシングルクリックでブラウザが起動するようにした。
    • listbox マクロコマンドで、初期状態で選択している項目を指定できるようにした。
  • バグ修正
    • 新しい接続ダイアログのホスト欄にコメントを含めた時に正しく接続出来ない事がある問題を修正した。
    • USBシリアルポートに接続中にUSBシリアルケーブルを抜き差しすると、USBシリアルポートに再接続できなくなる問題を修正した。(WindowsXP以降のみ修正)
      • teraterm.ini に AutoComPortReconnect エントリを追加した。デフォルトはオン。
    • Virtual Store環境において、cygterm.cfg を保存できないことがある問題を修正した。
    • ステータスラインが正しく働かない問題を修正した。
  • その他
    • TTSSH(2.75)へ差し替えた。
    • TTProxy(1.0.0.22)へ差し替えた。
    • TTXRecurringCommand Plugin(1.04)へ差し替えた。
    • LogMeTT 2.12 へ差し替えた。

2015.09.01 (Ver 4.88)

  • 変更
    • OSC 4 でのカラーパレット変更/問い合わせで、パレット番号 256, 258, 259 をそれぞれ高輝度/点滅/反転属性色として扱うようにした。
    • OSC 4, 10 等での色問い合わせで、応答の終端文字を問い合わせで使われた文字に合わせるようにした。
    • OSC 105 ST で属性色すべてを初期状態にリセットするようにした。
    • 設定フォルダ(Setup directory)に設定ファイルを開くボタンを追加した。
    • マクロ: filenamebox と dirnamebox によるダイアログボックスを最前面に表示するようにした。
  • バグ修正
    • localhostの23番ポート以外の場合、セッションの複製(Alt+D)でCygwin接続となる問題を修正した。
    • Metaキー設定をleftまたはrightに設定している時に、KEYBOARD.CNFで設定したAltキーとカーソルキーやInsert等の編集キーパッドとの組み合わせが正しく使えない問題を修正した。
  • その他
    • TTSSH(2.74)へ差し替えた。
    • 対応する動作環境にWindows 10を追加した。

2015.05.31 (Ver 4.87)

  • 変更
    • [Setup] メニューに [Setup directory] を追加した。
    • マクロ: マクロファイルに UTF-8 BOM が付与されていた場合、Syntax error とならないようにした。
    • filewrite, filewriteln マクロコマンドに数値を指定できるようにした。
  • バグ修正
    • 新規接続すると読み込まれているキーボード(CNF)設定がリセットされる問題を修正した。
  • その他
    • TTSSH(2.73)へ差し替えた。
    • TTProxy(1.0.0.21)へ差し替えた。
    • TeraTerm Menu(1.13)へ差し替えた。
    • LogMeTT 2.10.3 へ差し替えた。
    • SourceForge.jpからOSDNへのドメイン変更に対応した。

2015.02.28 (Ver 4.86)

  • 変更
    • [Control] メニューの [Reset Terminal] で OSC 10/11 で設定した色もリセットするようにした。
    • YMODEM で送信する送信終了を意味するパケット(block0)のサイズを必要最小限(128byte)にした。mlukoshkov に感謝します
    • YMODEM で送信するファイル情報のパケットを、必要なときのみ長いパケット(128 or 1024byte)になるようにした
    • dirnamebox マクロコマンドを追加した。
    • getmodemstatus マクロコマンドを追加した。
  • バグ修正
    • 画面左端での DECBI 制御シーケンスで、画面左端にあるワイド文字が消える問題を修正した。
    • マクロから起動した場合に KEYBOARD.CNF の設定が反映されない問題を修正した。
    • YMODEM 送信時にリモートからのキャンセルを正しく処理しない問題を修正した
    • YMODEM で受信したファイル情報が最後までファイル名だった場合に、保存されるファイル名の終端が壊れる問題を修正した
    • YMODEM で受信したファイル情報にファイルサイズがなかった場合に、ファイルの中身が保存されない問題を修正した
    • ログ・ローテートの設定値が設定画面に正しく表示されない問題を修正した。
    • setdlgpos マクロコマンドで x=0,y=0 を指定したあと statusbox を新規に開くと、指定した位置で開かない問題を修正した。
    • マクロファイル名が長い場合においても、マクロウィンドウに行番号が表示されるようにした。また、マクロウィンドウをリサイズ可能とした。
  • その他
    • TTSSH(2.72)へ差し替えた。
    • CygTerm+ 1.07_25へ差し替えた。
    • Oniguruma 5.9.6へ差し替えた

2014.11.30 (Ver 4.85)

  • 変更
    • シリアルポートでブレーク信号を送出する時間の長さを設定できるようにした。
      • teraterm.ini に SendBreakTime エントリを追加した。
    • アクセラレータキー Alt+D と Alt+I が VT ウィンドウでのみ反応するようにした。
    • New Connection のアクセラレータキーを無効にできるようにした。
      • teraterm.ini に AcceleratorNewConnection エントリを追加した。
    • Cygwin connection のアクセラレータキーを無効にできるようにした。
      • teraterm.ini に AcceleratorCygwinConnection エントリを追加した。
    • filenamebox マクロコマンドに初期ディレクトリを指定する引数を追加した。
    • fileopen マクロコマンドに読み取り専用でファイルを開くオプションを追加した。
  • バグ修正
    • General setupに言語ファイルが表示されないことがある問題を修正した。
    • connect マクロコマンドで接続に失敗したあと、再度接続できないことがある問題を修正した。
    • sprintf, sprintf2 マクロコマンドに浮動小数点数を渡せない問題を修正した。
    • sprintf, sprintf2 マクロコマンドの書式指定の文字幅指定と精度指定で * が使えない問題を修正した。
  • その他
    • TTSSH(2.71)へ差し替えた。
    • 言語ファイルに中国語(繁体字)(Traditional Chinese.lng)を追加した。Wei Yan氏に感謝します。
    • 64bit Cygwinへの自動接続に対応した。
    • 64bit版cyglaunch.exeの同梱をやめた。

2014.08.31 (Ver 4.84)

  • 変更
    • YMODEM, ZMODEM でファイルを受信したときに、ファイルの更新日時を反映するようにした。
    • Additional settingsダイアログのLogタブで、ログ種別を設定できるようにした。
  • バグ修正
    • General setupでLanguageUIを変更した際、ヘルプファイルが切り替えできていなかった問題を修正した。
    • マクロ: 最終行の行番号表示が正しくできていなかった問題を修正した。
  • その他
    • 対応する動作環境にWindows Server 2012 R2を追加した。
    • TTSSH(2.70)へ差し替えた。
    • TeraTerm Menu(1.12)へ差し替えた。
    • TTXResizeMenu Plugin(1.03)へ差し替えた。
    • LogMeTT 2.10.2 へ差し替えた。
    • 64bit版cygterm.exeとcyglaunch.exeを同梱するようにした。

2014.06.01 (Ver 4.83)

  • 変更
    • 画面クリア時にカーソル位置を画面左上に移動出来るようにした。
      • TTCTH 制御シーケンスに対応した。
    • Termcap/Terminfo文字列問い合わせに対応した。
      • vimに関しては背景色を参照のこと。
    • Eterm look-feel: Additional settingsダイアログのVisualタブで、背景画像の指定をチェックボックスで行うようにした。
    • デバッグモードで使用するモードを設定出来るようにした。
      • teraterm.iniに DebugModes エントリを追加した。
  • バグ修正
    • カーソル位置復元後に背景色を正しく描画しない場合がある問題を修正した。
    • Eterm look-feel: 背景画像にJPEGファイルが正しく読み込まれない場合がある問題を修正した。
    • デバッグモードでの表示の不具合を修正した。
      • デバッグモード後に挿入モード,オートラップモードが変更される場合がある問題を修正した。
      • デバッグモードに入った時に文字属性をリセットするようにした。
      • デバッグモードから抜けた時に文字属性がリセットされる場合がある問題を修正した。
  • その他
    • TTSSH(2.69)へ差し替えた。
    • TTProxy(1.0.0.20)へ差し替えた。
    • LogMeTT 2.10.1.7 へ差し替えた。

2014.03.08 (Ver 4.82)

  • 変更
    • sendmulticast マクロコマンドで使用するマルチキャスト名を /MN コマンドラインオプションで指定できるようにした。
  • バグ修正
    • CHA, HPA 制御シーケンスでカーソルを画面右端に移動できない問題を修正した。
    • include マクロコマンドを使用すると、ttpmacro.exeが落ちる問題を修正した。

2014.02.28 (Ver 4.81) 20周年記念

  • 変更
    • マクロ
      • uptimeコマンドを追加した。
      • logautoclosemodeコマンドによる設定情報は、マクロ終了後、無効に戻すようにした。
  • バグ修正
    • ウィンドウサイズを変更した時にカーソルが左端に移動する問題を修正した。
    • Send fileダイアログとZMODEM Sendダイアログに"Include screen buffer"オプションが表示される問題を修正した。
    • General setupでLanguageUIを変更した際、タイトルが更新されていなかった問題を修正した。
    • 1MB以上のサイズを持つマクロファイルに対して、マクロ実行が極端に遅くなる問題を修正した。
  • その他
    • TTSSH(2.68)へ差し替えた。
    • TTProxy(1.0.0.19)へ差し替えた。
    • LogMeTT 2.10.1 へ差し替えた。
    • TTLEditor 1.5 へ差し替えた。

2013.11.30 (Ver 4.80)

  • 変更
    • OSC文字列処理用バッファの最大サイズを変更できるようにした。
      • teraterm.iniにMaxOSCBufferSizeエントリを追加した。デフォルトは4096。
    • ログ採取に"Include screen buffer"オプションを追加した。
      • teraterm.iniに LogIncludeScreenBuffer エントリを追加した。
      • マクロコマンド "logopen" に"Include screen buffer"オプションを追加した。
    • "New connection" ダイアログを表示する /ES コマンドラインオプションを追加した。
    • URLの途中で改行されている時に、繋がっているものとして扱える設定を追加した。
      • teraterm.iniにJoinSplitURL, JoinSplitURLIgnoreEOLCharエントリを追加した。
    • マクロ
      • エラーおよび実行ダイアログに、TTLファイル名を追加した。
      • gettime, getdateコマンドにおいて、マクロ実行前後でタイムゾーンを復元するようにした。
  • バグ修正
    • 端末サイズ変更時に左右マージンモード(DECLRMM)が解除されない問題を修正した。
    • VPR/VPB/HPR/HPB制御シーケンスがスクロールマージンの影響を受けていた問題を修正した。
    • CUU/VPB制御シーケンスで、画面上端を越えてカーソルが移動する事がある問題を修正した。
    • VPB制御シーケンスで、一部のモードが解除される事がある問題を修正した。
    • DECFI/DECBI制御シーケンスがスクロールマージンを無視していた問題を修正した。
    • DECBI制御シーケンスでカーソル位置の保存が行われていた問題を修正した。
    • DECFI制御シーケンスでアプリケーションキーパッドモードに変更される問題を修正した。
    • ログ取得時に "ダイアログを非表示" オプションが正しく働かない問題を修正した。
    • マルチモニタ環境において、ウィンドウのリサイズ中に表示されるツールチップの位置が有効なマイナス座標の場合でもプライマリモニタに表示される問題を修正した。
    • Windows 95/NT4.0で起動できなくなっていた問題を修正した。
  • その他
    • TTSSH(2.67)へ差し替えた。
    • TTXRecurringCommand Plugin(1.03)へ差し替えた。
    • 対応する動作環境にWindows 8.1を追加した。
    • Oniguruma 5.9.5へ差し替えた
    • 言語ファイルに中国語(簡体字)(Simplified Chinese.lng)を追加した。LiShaohui氏に感謝します。

2013.09.01 (Ver 4.79)

  • 変更
    • DECRQM(モード問い合わせ)制御シーケンスに対応した。
    • 左右マージン機能に対応した。
      • DECLRMM(左右マージンモード), DECSLRM(左右マージン設定)制御シーケンスに対応した。
    • 「Tera Termの全終了(Exit All)」の実行前に、かならずユーザに問い合わせを行うようにした。
    • ウィンドウを並べて表示した後、Windowメニューに元に戻すメニューを追加した。
    • ファイル送信時、ファイル送信状況ダイアログを表示しないように出来るようにした。
      • teraterm.iniにFTHideDialogエントリを追加した。デフォルトはoff。Teodor Robas氏に感謝します。
    • ベルが短時間に多量に送られて来た時、ベルを鳴らすのを抑制できるようにした。
      • teraterm.iniに BellOverUsedTime, BellOverUsedCount, BellSuppressTime エントリを追加した。デフォルトは 2, 5, 5。
    • Auto window closeを制御する /AUTOWINCLOSE コマンドラインオプションを追加した。
    • マクロ
      • エラーメッセージに"Unknown command."を追加した。
      • logautoclosemodeコマンドを追加した。
      • エラーダイアログに詳細情報（行番号・エラー箇所）を追加した。
  • バグ修正
    • UseNomalBGColor=onの時、OSC 11(標準背景色設定)制御文字列の後のOSC 111(標準背景色リセット)制御文字列で太字等の属性付き文字の背景色が正しくリセットされない問題を修正した。
    • カーソル位置報告シーケンスで、origin mode有効時に上マージンを考慮していなかった問題を修正した。
    • Intermediate ByteとPrivate Parameterの両方を使用した制御シーケンスを正しく無視できない場合がある問題を修正した。
    • SelectOnActivate=offの時、ウィンドウが非アクティブ状態のクリック時にボタンリリースイベントが送られる問題を修正した。
    • 複数起動時に、キーボード設定ファイルが正しくよみこまれない場合がある問題を修正した。
    • ドラッグ&ドロップでのファイル送信時、ダイアログのヘルプボタンが正しく働かない問題を修正した。
    • マクロコマンド exec で、wait パラメータが1の時(4.63以降)、および wait パラメータが1以外の時(4.78以降)に show パラメータが無視される問題を修正した。
  • その他
    • TTSSH(2.66)へ差し替えた。
    • CygTerm+ 1.07_24へ差し替えた。

2013.05.31 (Ver 4.78)

  • 変更
    • すでに選択されているテキストが存在する場合、プリンタダイアログのデフォルト選択肢を「選択した部分」にするようにした。tentner氏に感謝します。
    • Additional settings ダイアログに ログ・ローテート 設定項目を追加した。
      • teraterm.iniにLogRotate, LogRotateSize, LogRotateSizeType, LogRotateStepエントリを追加した。
    • Fileメニューに「Tera Termの全終了(Exit All)」を追加した。
    • Windowメニューに「重ねて表示(Cascade)」「上下に並べて表示(Stacked)」「左右に並べて表示(Side By Side)」を追加した。
    • 自動ログ取得を無効化する /nolog コマンドラインオプションを追加した。
    • マクロ
      • listboxコマンドを追加した。
      • getipv4addrコマンドを追加した。
      • getipv6addrコマンドを追加した。
      • logrotateコマンドを追加した。
      • crc16, crc16fileコマンドを追加した。
      • checksum8, checksum8fileコマンドを追加した。
      • checksum16, checksum16fileコマンドを追加した。
      • checksum32, checksum32fileコマンドを追加した。
      • bringupboxコマンドを追加した。
      • regexoptionコマンドを追加した。
      • execコマンドに第4引数（カレントディレクトリ）を追加した。
      • 'show 1' コマンドでマクロウィンドウが最前面に来るようにした。
      • messagebox, inputbox, listbox コマンドを実行したときにダイアログが最前面に来るようにした。
      • wait, waitln, waitregex コマンドで空文字列を待てるようにした。
      • waitregex コマンドで複数のパラメータが同時にマッチする場合、前の方を優先するようにした。
  • バグ修正
    • ログファイル名に &h を含めている時、IPv6アドレスで接続するとログファイルが作成されない問題を修正した。
    • LogLockExclusiveをoffにしてもログファイルに排他ロックがかかる問題を修正した。
    • ネットワーク経由でログ採取しても、Tera Termがスローダウンしないようにした。
      • teraterm.iniにDeferredLogWriteModeエントリを追加した。デフォルトはon。
    • ウィンドウの右端で URL が終わって改行している場合に、次の行まで URL が続いていると判定される問題を修正した。
    • URL 文字列としてマウスハンドカーソルの判定される領域が左に半文字分ずれる問題を修正した。
    • マクロからの送信データに対してもPaste delay per line設定が適用される問題を修正した。
    • waitn マクロコマンドで timeout が 0 のときにデータを待たない問題を修正した。
    • マクロでcontinue後にbreakするとInvalid Controlエラーが発生する問題を修正した。
    • マルチディスプレイ環境で box 系マクロコマンドのダイアログ表示位置がおかしくなる問題を修正した。
    • wait, waitln マクロコマンドで、で文字列を正しく検出できない事がある問題を修正した(ex. "aaab"に対してwait "aab"がマッチしない)。
  • その他
    • 言語ファイルにロシア語(Russian.lng)を追加した。Sergey Ryumik氏に感謝します。
    • 言語ファイルに韓国語(Korean.lng)を追加した。Daehong Kim氏に感謝します。
    • TTSSH(2.65)へ差し替えた。
    • Oniguruma 5.9.4へ差し替えた
    • 対応する動作環境にWindows Server 2012を追加した。

2013.02.28 (Ver 4.77)

  • 変更
    • DECFRA(矩形領域文字埋め)制御シーケンスに対応した。
    • ウィンドウタイトルのスタックへの退避/復元を行うウィンドウ操作制御シーケンスに対応した。
    • マクロ
      • continueコマンドを追加した。
      • 文字列変数の最大長を511に変更した。
  • その他
    • TTSSH(2.64)へ差し替えた。
    • TTXResizeMenu Plugin(1.02)へ差し替えた。
    • TTXKcodeChange Plugin(1.01)へ差し替えた。

2012.12.02 (Ver 4.76)

  • 変更
    • SGR 38:2, 48:2(RGB値指定での文字色/背景色変更)に対応した。現在の実装では256色パレットで最も近い色が使われる。
    • SGR 38:5, 48:5(256色パレット指定での文字色/背景色変更)で、: 区切りに対応した。(ISO/IEC 8613-6 (ITU-T Rec. T.416) 形式)
    • 特殊フォルダの取得方法をレジストリ読み込みからSH系APIに変更した。
    • VTIcon, TEKIcon の設定をteraterm.iniに保存しないようにした。
    • Save setupで ini ファイルの保存に失敗したら、エラーメッセージを表示するようにした。
  • バグ修正
    • SGR 38:5, 48:5(256色パレット指定での文字色/背景色変更)で、範囲外のパレット番号指定を無視できていなかった問題を修正した。
    • キーボードレイアウトによってクリップボードへコピー・貼り付けされる文字が化ける問題を修正した。
    • マクロコマンド strreplace で、システム変数 'matchstr', 'groupmatchstr1'～'groupmatchstr9' を渡すと落ちる事がある問題を修正した。
  • その他
    • TTSSH(2.63)へ差し替えた。
    • 対応する動作環境にWindows 8を追加した。
    • Oniguruma 5.9.3へ差し替えた

2012.08.31 (Ver 4.75)

  • 変更
    • Any Event Tracking モードで、ボタンを押していない状態でのモーションイベントのボタン値を 3 から 35 へ変更した。
    • DECRQSS による文字属性の問い合わせで、応答の先頭に 0; を付加するようにした。
    • DECRQSS による文字属性の問い合わせで、Enable ANSI Color 設定がオフの時は応答に色属性を含めないようにした。
    • TERATERM.INI の [Hosts] セクションで、Hostに続く数字が飛んでいても続きを読むようにした。
    • マクロ
      • setpasswordコマンドを追加した。
      • ispasswordコマンドを追加した。
  • バグ修正
    • 名前付きパイプ: Oracle Virtual Boxの終了時、パイプの切断ができていなかった問題を修正した。
    • COMポートをデフォルト設定で保存できない問題を修正した。
    • YMODEM: 受信中に一時停止した場合、タイムアウトでNAKを送信していないため、再送できていなかった問題を修正した。
    • マクロコマンド send, sendln で、0x01 を含む文字列を正しく送れない問題を修正した。
    • ファイルを扱うマクロコマンドで、相対パスを正しく解析しないことがある問題を修正した。
      • 相対パスの基準が、マクロファイルになる場合と teraterm ディレクトリになる場合があった。この修正でマクロファイルを基準にするようにした。
  • その他
    • TTSSH(2.62)へ差し替えた。

2012.05.31 (Ver 4.74)

  • 変更
    • シリアルポート接続
      • シリアルポート設定で、マークパリティ・スペースパリティ・1.5ストップビットをサポートした。
      • teraterm.ini に Parity エントリに"mark", "space"を追加した。デフォルトは"none"。
      • teraterm.ini に StopBit エントリに"1.5"を追加した。デフォルトは"1"。
    • 名前付きパイプ
      • 名前付きパイプをサポートした。Tera TermからVMwareやHyper-Vにシリアルポート接続が可能となる。
      • New connectionダイアログのTCP/IP:Hostに名前付きパイプを指定できるようにした。
      • /NAMEDPIPE オプションで名前付きパイプを指定できるようにした。
    • 受信改行モードにAUTOを追加した。tentner氏に感謝します。
    • 表示フォントの品質を選択できるようにした。
      • Additional settings ダイアログに Font quality 設定項目を追加した。
    • ウィンドウへのドラッグ＆ドロップによるファイル送信において、SCPの送信先パスを指定できるようにした。
      • teraterm.iniにScpSendDirエントリを追加した。
    • Eterm look-feel
      • iniファイルパスに環境変数文字列(%variableName%)を含められるようにした。
      • 画像ファイル指定設定(theme\ImageFile.INI)を追加した。Additional settingsダイアログのVisualタブで、背景画像を指定できるようにした。
      • Additional settingsダイアログのVisualタブで、有効化できるようにした。
    • General setupダイアログで言語ファイルを指定できるようにした。
    • Additional settingsダイアログのCygwinタブで、設定保存できた場合、メッセージダイアログを表示するようにした。
    • IMEの前後参照変換機能に対応した。ATOK2012,MS-IME2002,MS-IME2003で動作確認済み。MS-IME2010では動作不可。"IME=off"(teraterm.ini)の場合は機能無効。
    • ウィンドウサイズ問い合わせに対する応答に含まれていた余分な ; を削除した。
    • マクロ
      • 変数に"paramcnt"（引数の個数）、"param1"（マクロファイル名）を追加した。
      • connectコマンドにパラメータを利用したサンプルコードを追加した。
      • filelockコマンドを追加した。
      • fileunlockコマンドを追加した。
      • gettime, getdateコマンドの第3引数にタイムゾーンを追加した。
  • バグ修正
    • KERMIT プロトコル
      • サーバの初期パラメータの符号チェックバグを修正した。
    • Windows 2000 以前で、ドロップダウンリストの選択肢が表示されない問題を修正した。
    • キリル文字の変換テーブル(CP866, ISO8859-5 間)のtypoを修正した。
    • マクロコマンドの引数に文字型配列が指定できない問題を修正した。
  • その他
    • TTSSH(2.61)へ差し替えた。

2012.02.29 (Ver 4.73)

  • 変更
    • 以下の制御文字列に対応した。
      • OSC 5 (高輝度/点滅/反転属性色変更)
      • OSC 104 (カラーパレットリセット)
      • OSC 105 (高輝度/点滅/反転属性色リセット)
      • OSC 110 (VTウィンドウ文字色リセット)
      • OSC 111 (VTウィンドウ背景色リセット)
      • OSC 115 (TEKウィンドウ文字色リセット)
      • OSC 116 (TEKウィンドウ背景色リセット)
    • OSC 52 (クリップボードアクセス) 制御文字列によるクリップボードの読み取りに対応した。
    • xterm(UTF-8), xterm(SGR), rxvt-unicode 形式の拡張マウスイベント通知に対応した。
    • ファイル転送で受信ファイル名が空文字列だった時、ファイル名を noname にするようにした。
    • ファイル転送で受信ファイル名に使えない文字が含まれていた時、その文字を _ に置き換えるようにした。
    • KERMIT プロトコル
      • 最大パケット長(MAXL)を 90 から 94 に変更した。NT-4S(日立製VoIPゲートウェイ)に対して通信ができない問題への暫定対処(workaround)。
      • KERMIT.LOG を読みやすく改善した。
      • teraterm.ini に KmtLongPacket エントリを追加した。デフォルトは off。
      • teraterm.ini に KmtFileAttr エントリを追加した。デフォルトは off。
    • 書き込み中のログファイルを排他ロックするかどうかを設定できるようにした。
      • teraterm.ini に LogLockExclusive エントリを追加した。デフォルトは on。
    • マクロコマンド "loginfo" を追加した。
  • バグ修正
    • キリル文字の変換テーブル(KOI8-R, CP866, Windows-1251, ISO8859-5 間)を修正した。
    • XMODEM, YMODEM で送信中に表示されるパケット番号が正しくない場合がある問題を修正
    • ログ取得を開始したとき、ログウィンドウが一瞬アクティブになる動作を修正(対策は Windows 2000 以降でのみ有効)。
    • マクロコマンド "filerename" において、リネームが失敗した場合、result にエラーをセットするようにした。
    • マクロコマンド "filedelete" において、削除が失敗した場合、result にエラーをセットするようにした。
  • その他
    • TTSSH(2.60)へ差し替えた。

2011.12.04 (Ver 4.72)

  • 変更
    • OSC 10 (VTウィンドウ文字色変更), 11 (VTウィンドウ背景色変更), 15 (TEKウィンドウ文字色変更), 16 (TEKウィンドウ背景色変更) 制御文字列に対応した。
    • OSC 52 (クリップボードアクセス) 制御文字列に対応した。
      • Additional settings ダイアログでアクセスを許可するか設定(Clipboard access from remote)できるようにした。
    • 許可するタブストップ変更制御シーケンスを設定できるようにした。
      • teraterm.ini に TabStopModifySequence エントリを追加した。デフォルトは on。
    • ブロードキャストコマンドにおいて、リアルタイムモードの場合、キー入力でエディットコントロールに文字が残らないようにした。
    • クリッカブル URL で起動するブラウザを指定できるようにした。
      • teraterm.ini に ClickableUrlBrowser, ClickableUrlBrowserArg エントリを追加した。デフォルトは ""。
    • [Window] メニューに [Minimize All], [Restore All] メニューを追加した。
    • xterm のバックタブキーに対応した。
      • キーボード設定ファイルの [X function keys] セクションに XBackTab エントリを追加した。
    • マクロのデータ型で整数配列、文字列配列をサポートした。
    • マクロコマンド "getspecialfolder" を追加した。
    • マクロコマンド "messagebox", "inputbox", "statusbox"で、表示されるメッセージの上下の余白の大きさを調整した。
  • バグ修正
    • OSC 文字列の後に続く文字列が正しく表示されない事がある問題を修正した。
    • カーソルが非表示状態の時に、カーソル形状の縦線への変更が正しく行えなかった問題を修正した。
    • AltGr キーが有るキーボードを使用している場合、MetaKey=on の設定の時に余計な文字が入力される場合があった問題を修正した。
    • ANSI Color の 0 番の設定が正しく読み込めない問題を修正した。
    • XMODEM: 送信時、初回のパケットが2回送られる問題を修正した。
    • YMODEM: ファイルを受信したときに、ファイル保存フォルダに保存されない問題を修正した。
    • マクロコマンド "ifdefined" に整数リテラルを渡すと"整数型変数"と判定する問題を修正した。
  • その他
    • インストーラを修正した。
      • Windows Vista, 7 で、開いたフォルダの右クリックから Cygterm Here を起動できるようにした。
    • TTSSH(2.59)へ差し替えた。
    • TeraTerm Menu(1.11)へ差し替えた。
    • TTXRecurringCommand Plugin(1.02)へ差し替えた。
    • TTLEditor 1.4 へ差し替えた。

2011.8.31 (Ver 4.71)

  • 変更
    • OSC 文字列中に制御シーケンスが含まれていた時にその制御シーケンスを解釈するように変更した。
    • Eterm look-feel: Windows Vista以降において、壁紙がBMP形式以外にも対応した。
    • マクロコマンド "getpassword"を機能アップデートした。
      • コマンドの実行可否を"result"システム変数に格納するようにした。
    • マクロコマンド "strspecial" を機能アップデートした。
      • 変換する文字列を strspecial コマンドに、第2引数として指定できるようにした。
    • マクロコマンド "expandenv" を追加した。
  • バグ修正
    • ファイル名が80文字以上のログファイルを作成できない問題を修正した。
    • メタキー設定を有効にしている時、Control+Meta キー入力がダブる場合があったのを修正した。
  • その他
    • SSH2対応TTSSH(2.58)へ差し替えた。

2011.6.26 (Ver 4.70)

  • 変更
    • DEC 特殊文字のフォントに高輝度/下線属性を反映するようにした。
    • NetTerm 形式のマウスイベント通知に対応した。
    • 印刷用制御コードを無視することができるエントリをサポートした。
      • teraterm.ini に PrinterCtrlSequence エントリを追加した。デフォルトはoff on。
    • Meta Key の設定で、左Altや右AltのみMeta Keyに設定できるようにした。
    • ブロードキャストコマンドにおいて、リアルタイムモードの場合、SubmitボタンではEnterキーのみ送るようにした。
    • セッション複製を行う際、/K= があれば引き継ぎを行うようにした。
    • ファイル送信およびファイル転送時のダイアログに、経過時間および転送速度を表示するようにした。
    • Windows7ジャンプリストに対応した。
    • box 系マクロコマンドの special 引数を復活させた。使用はあまり推奨されない。省略時のデフォルトはオリジナルとの互換性のため 0。
  • バグ修正
    • xterm 形式のマウスイベント通知で、マウスポインタの位置が224行目以降だった場合に不正な報告をする問題を修正した。
    • DECSET/DECRST 制御シーケンスで、10000 以上のモードが指定された時に正しく無視できない場合が有った問題を修正した。
    • ウィンドウ位置報告要求に対して不正な形式で応答する場合がある問題を修正した。
    • YMODEM ファイル送信において、ACKを待たずとも、ブロック1を送信してしまう問題を修正した。
    • strremove マクロにおいて、文字列の末尾1バイトの削除時にBOFが発生していた問題を修正した。
  • その他
    • インストーラを修正した。
      • フォルダのコンテキストメニューに CygTerm Here を追加した時、名前に複数の連続するスペースを含むフォルダへの CygTerm Here が正しく働かないのを修正した。
    • SSH2対応TTSSH(2.57)へ差し替えた。
    • TeraTerm Menu(1.10)へ差し替えた。
    • CygTerm+ 1.07_23へ差し替えた。
    • cyglaunch (1.03)へ差し替えた。
    • LogMeTT 2.9.9へ差し替えた。

2011.3.5 (Ver 4.69)

  • 変更
    • DA3 制御シーケンスの応答に含まれる端末固有IDを設定出来るようにした。
      • teraterm.ini に TerminalUID エントリを追加した。デフォルトは FFFFFFFF。
    • DECSTUI(端末固有ID変更)制御シーケンスに対応した。
      • teraterm.ini に LockTUID エントリを追加した。デフォルトは on。
    • DECRQSS(設定問い合わせ)制御シーケンスに対応した。問い合わせに対応している設定は DECSCA, DECSCL, DECSTBM, SGR。
    • DECFI, DECBI 制御シーケンスに対応した。
    • ウィンドウサイズ問い合わせ制御シーケンスに対して常に480x640を応答していたのを、実際のウィンドウサイズを返すように変更した。
    • ConfirmChangePaste（危険なクリップボードの貼り付けを確認する）が有効で、Alt+R使用時、ペースト内容が一行のみの場合においても、ユーザに確認するようにした。
    • mintty の Application Escape Mode に対応した。
    • mintty のマウスホイール報告を制御する為の制御シーケンスに対応した。
    • IME の状態を制御するための制御シーケンスを新設した。
    • マクロコマンド "basename", "dirname" を追加した。
    • マクロコマンド "getfileattr", "setfileattr" を追加した。
    • マクロコマンド "foldercreate", "folderdelete", "foldersearch" を追加した。
  • バグ修正
    • 端末の横幅が 257 桁より大きいと正常に表示できない問題を修正した。
    • 端末ID設定が VT520, VT525 の時に、Primary DA (DA1) への応答が壊れていた問題を修正した。
    • 言語モードが日本語以外の時、Terminal Setup ダイアログで端末IDに VT420, VT520, VT525 を指定しても実際には VT100 に設定される問題を修正した。
    • ネットワーク共有をマップしたローカルデバイスをPassThruPortに指定した場合、印刷ができない問題を修正した。cf.print with WINDOWS 7 net use LPT PERSISTENT:Yes
    • 対応していない OSC 制御文字列を正しく無視出来ない場合があった問題を修正した。
    • DCS, SOS, APC, PM 制御文字列の直後の文字を正しく扱えていなかった問題を修正した。
    • ログファイルを書き込むために開くとき、存在していて書き込み中のファイルを開かないようにした。
    • 8ビット文字列の受信時に、制御シーケンスとして誤って扱う場合があった問題を修正した。
    • ブロードキャストコマンドにおいて、選択ウィンドウへの送信が正しくできていなかった問題を修正した。 cf.Broadcast command issue in 4.68
  • その他
    • SSH2対応TTSSH(2.56)へ差し替えた。
    • TTProxy(1.0.0.18)へ差し替えた。
    • CygTerm+ 1.07_22へ差し替えた。
    • LogMeTT 2.9.8へ差し替えた。
    • インストーラから起動チェックをするための mutex を追加削除した。

2010.12.7 (Ver 4.68)

  • 変更
    • 選択的消去に対応した。
      • DECSCA(保護属性設定), DECSED(選択的画面消去), DECSEL(選択的行消去), DECSERA(選択的矩形消去)制御シーケンスに対応した。
    • DECERA(矩形消去)制御シーケンスに対応した。
    • DA3(第三端末特性報告要求)制御シーケンスに対応した。
    • 端末 ID 設定で、VT420, VT520, VT525 に対応した。
      • DECSCL(端末動作モード設定)制御シーケンスで、VTレベル5(vt500シリーズ)に対応した。
    • "ウィンドウ" メニュー、および "ウィンドウのリスト" ダイアログで、ウィンドウの状態を表す文字を表示するようにした。
      • + 通常のウィンドウ
      • - 最小化されたウィンドウ
      • @ 最大化されたウィンドウ
      • # 非表示のウィンドウ
    • 使用可能なウィンドウの数を 50 から 256 に増やした。
    • 使用可能なプラグインの数を 16 から 32 に増やした。
    • マクロコマンド "beep" に引数を追加した。
    • box 系マクロコマンドの special 引数を廃止した。
    • WSAAsyncGetAddrInfo をプラグインからフック出来るようにした。
    • freeaddrinfo をプラグインからフック出来るようにした。
  • バグ修正
    • セキュリティ修正: DLL 読み込みに関する脆弱性を修正した。
    • [Setup]-[Serial port] ダイアログを表示したときに Baud rate が正しく選択されていない問題を修正した。
    • Beep 設定が正しく読み込まれない問題を修正した。
    • DECALN (DEC Screen Alignment Test) 制御シーケンスで、スクロール領域をクリアするようにした。
    • ウィンドウタイトル/アイコンラベル報告要求に対して、空文字列を応答する設定が動作しない問題を修正した。
    • IO-8256 端末の矩形消去、色変更、線引き、行消去制御シーケンスが正しく動作しない場合がある問題を修正した。
  • その他
    • SSH2対応TTSSH(2.55)へ差し替えた。
    • TTProxy(1.0.0.17)へ差し替えた。
    • CygTerm+ 1.07_20へ差し替えた。
    • cyglaunch(1.02)へ差し替えた。

2010.8.31 (Ver 4.67)

  • 変更
    • キーボード設定ファイルに、次/前の最小化されていないウィンドウを表示するショートカットキー NextShownWin/PrevShownWin を追加した。
    • NextWin/PrevWin ショートカットキーで切り替わる対象から、非表示状態のウィンドウを除いた。
    • メニューの New connection と Duplicate session を無効にできるようにした。
      • teraterm.ini に DisableMenuNewConnection エントリと DisableMenuDuplicateSession エントリを追加した。デフォルトは off。
    • IMEのon/off状態でカーソル形状を変更するか設定できるようにした。
      • Additional settings ダイアログで設定を変更できるようにした。
      • teraterm.ini に IMERelatedCursor エントリを追加した。デフォルトは off。
    • vim で ttymouse が xterm2 に自動設定されるように、Secondary DA の応答を調整した。
    • xterm 形式のマウスイベント通知で、モーションイベントに正式対応した。
    • DEC Locator Mode 形式のマウスイベント通知に対応した。
    • マクロコマンド "filetruncate" を追加した。
    • マクロコマンド "dispstr" を追加した。
    • マクロコマンド "strinsert" を追加した。
    • マクロコマンド "strremove" を追加した。
    • マクロコマンド "strreplace" を追加した。
    • マクロコマンド "strtrim" を追加した。
    • マクロコマンド "strsplit" を追加した。
    • マクロコマンド "strjoin" を追加した。
    • マクロコマンド "strspecial" を追加した。
  • バグ修正
    • YMODEMの送受信処理がハイパーターミナルに対して動かない。
    • 送信処理が遅くなっていたのを修正した。
    • XMODEM送信で、EOTの再送を正しく行っていなかったのを修正した。
    • xterm 形式のマウスイベント通知で、Control と Alt(Meta) を逆に通知していたのを修正した。
    • 色設定/問い合わせ制御シーケンスが正しく働かない場合があったのを修正した。
    • マクロコマンド statusbox によるステータスボックスが、 Enter key 押下で消失しないようにした。
  • その他
    • SSH2対応TTSSH(2.54)へ差し替えた。
    • TTLEditor 1.2.1 へ差し替えた。
    • 言語ファイルにフランス語(French.lng)を追加した。Francois MOCQ氏に感謝します。

2010.5.31 (Ver 4.66)

  • 変更
    • YMODEMサポート
      • FileメニューのTransferに"YMODEM"を追加した。
      • teraterm.iniに YmodemRcvCommand エントリを追加した。デフォルトは空。
      • マクロコマンド "ymodemrecv", "ymodemsend" を追加した。
    • シリアルポート接続のボーレートを選択肢以外からも手入力出来るようにした。
      • [Setup]-[Serial port]で任意のボーレートを指定できるようにした。
      • /BAUD オプションで任意のボーレートを指定できるようにした。
      • マクロコマンド "setbaud" の引数にボーレートの値を直接指定できるようにした。
    • VPB, HPB 制御シーケンスに対応した。
    • Bracketed Paste Modeに対応した。
    • "ファイル送信" と "ログ" での binary フラグの扱いを分離した。
      • teraterm.ini に LogBinary エントリを追加した。デフォルトはoff。
    • IMEのon/off状態を見て、カーソルの色を変更するようにした。
    • ConfirmChangePaste の確認ダイアログ表示中にクリップボードをロックしないようにした。
    • 実行中のマクロウィンドウがどれか分かるようにするための[Control]-[Show Macro Window]メニューを追加した。
    • マクロコマンド "filestat" を追加した。
  • バグ修正
    • USBシリアルポートが切断された場合、CPU使用率が100%となる問題を修正した。Z. Vickery氏に感謝します。
    • キーボード設定ファイルで Alt+キー に機能を割り当てた時、余計な文字列が追加で出力されるのを修正した。
    • テンキーの ENTER キーで改行コードが設定通りに変換されない問題を修正した。
    • 英語モードおよびロシア語モードで、"Line at a time" モードが正しく働かないのを修正した。p3g4asus氏に感謝します。
    • 代替画面バッファへの切り替え時、カーソル位置の保存/復元が正しく働かない場合があるのを修正した。
    • 代替画面バッファ対応のカーソル位置保存制御シーケンスで、代替画面バッファへの切り替え、および画面のクリアが行われていたのを修正した。
    • ClearOnResize が on の時、DECCOLM(桁数モード変更)制御シーケンスで画面がクリアされないのを修正した。
    • VPR 制御シーケンスの動作が正しくないのを修正した。
    • XMODEM/YMODEMのキャンセル処理を改善した。Z. Vickery氏に感謝します。
    • crc32file マクロコマンドにおいて、ファイルオープンエラーが正しく判定できていなかった問題を修正した。また、読み込み専用ファイルに対してエラーとならないようにした。
  • その他
    • SSH2対応TTSSH(2.53)へ差し替えた。

2010.2.20 (Ver 4.65)

  • 変更
    • 接続ホストの最大保存数を500まで拡張した。
    • シリアル接続のCOM最大ポートを4096まで拡張した。
    • コマンドラインでタブもパラメータの区切りとして認識するようにした。
    • [File] メニューの [Show Log dialog] を、ログウィンドウが表示されていても押せるようにした。
    • マクロコマンド "disconnect" に、TCP/IP 接続切断時の確認ダイアログを制御するオプションを追加した。
    • リサイズ時に画面クリアを行うかを設定出来るようにした。
      • Additional settings ダイアログで設定を変更できるようにした。
    • マクロコマンド "filenamebox" で上書き確認を出すようにした。
    • ウィンドウタイトル/アイコンラベル報告制御シーケンスに対して、空文字列を応答出来るようにした。
      • teraterm.ini の TitleReportSequence エントリで受け付ける値を accept, ignore, empty に変更した。
      • teraterm.ini の TitleReportSequence のデフォルトを empty に変更した。
    • Additional settings ダイアログに Contorl Sequence タブを追加した。
      • "Accept mouse event tracking request", "Disable mouse event tracking when Control is pressed", "Accept window title change request" を General タブから移動した。
      • "Title report sequence", "Window control sequence", "Window report sequence", "Cursor control sequence" を追加した。
    • 代替画面バッファに対応した。
      • teraterm.ini に AlternateScreenBuffer エントリを追加した。デフォルトは on。
  • バグ修正
    • Auto Window Closeが無効の場合、マクロ接続の終了をttpmacro.exeに通知できていなかった問題を修正した。
    • PasteDelayPerLineが正しく働いていなかった問題を修正した。
    • マクロの文字列型定数にタブを直接入れられなかった問題を修正した。
    • Kermit, ZMODEM, QuickVAN で複数のファイルを送信したとき、また ZMODEM, QuickVAN で複数のファイルを受信したとき、2個目以降のファイルでプログレスバーがリセットされない問題を修正した。
    • マクロで、文字列中の /* をコメントの開始と誤認識していたのを修正した。
    • Eterm look-feelを有効にしている時、Reverse Video (DECSCNM)のset/resetが行われると、以降まともに描画が更新されなくなるのを修正した。(暫定処置)
    • ウィンドウの横幅を縮めたとき、スクロールバッファ内の各行の行末にゴミが残る場合が有ったのを修正した。
  • その他
    • インストーラで新規追加された設定項目を設定ファイルに書き込むのをやめた。
    • インストーラでユーザが選択した言語設定をユーザのディレクトリにある設定ファイルに書き込むのをやめた。
    • CygTerm+ 1.07_19へ差し替えた。
    • TTXRecurringCommand Plugin(1.01)へ差し替えた。
    • TTXResizeMenu Plugin(1.01)へ差し替えた。
    • TTXttyrec Plugin(1.02)へ差し替えた。
    • Windows 7を正式にサポート。
    • screencapture.ttl のアップデート
    • Oniguruma 5.9.2へ差し替えた
    • OpenSSL 0.9.8lへ差し替えた

2009.11.10 (Ver 4.64)

  • 変更
    • クリッカブルURLの色属性を描画するようにした。
    • クリッカブルURL文字列に下線属性を設定できるようにした。
      • Additional settings ダイアログで設定を変更できるようにした。
    • クリッカブルURLが無効の場合、ハイパーリンク上でマウスカーソルを変形させないようにした。
    • sftp/tftp スキームもクリッカブルURLになるようにした。
    • Broadcast Commandのリストボックスにおいて、ダブルクリックによる全選択を廃止し、「SHIFT+クリック」による連続的選択、「CTRL+A」による全選択をサポートした。
    • Broadcast Commandのダイアログボックスをサイズ変更できるようにした。
    • Broadcast Commandのリストボックスを定期的に更新するようにした。
    • ConfirmChangePasteダイアログにステータスバーを追加した。
    • CTRL+TABによるウィンドウ切り替えにおいて、ウィンドウの最大化および最小化状態を維持するようにした。
    • マクロコマンド "setdebug" を追加した。
  • バグ修正
    • 接続前に行ったローカルエコーと送信改行コードの設定が無視される事があるのを修正した。
    • シリアル接続時に、前の接続で使われたTCPLocalEcho/TCPCRSendの設定がリセットされないのを修正した。
    • ログウィンドウを表示しないでログ採取を開始したとき、表示されていないログウィンドウにフォーカスが移行してしまう問題を修正した。
    • マクロコマンド "strscan" が正しく働かない場合がある問題を修正した。
    • マクロのC言語風コメントにおいて、正しくコメントを識別しないケースに対応した。
    • ウィンドウタイトルでTCPポート番号が正しく表示されない場合がある問題を修正した。
    • "Enable bold font"の設定変更が即座に反映されなかった問題を修正した。
  • その他
    • インストーラを修正した。
      • インストーラでSSHプロトコルへ関連付けた場合、エクスプローラの"フォルダオプション"の"ファイルの種類"から編集できるようにした。
    • SSH2対応TTSSH(2.52)へ差し替えた。
    • TTProxy(1.0.0.16)へ差し替えた。
    • LogMeTT 2.9.7へ差し替えた。
      • LogMeTTのインストール検出をレジストリ(HKEY_CURRENT_USER\Software\LogMeTT\InstallPath)で行うようにした。

2009.7.5 (Ver 4.63)

  • 変更
    • カーソル形状/点滅変更制御シーケンスに対応した。
      • teraterm.ini に CursorCtrlSequence エントリを追加した。デフォルトは off。
    • ウィンドウ操作/報告制御シーケンスに対応した。
      • teraterm.ini に WindowCtrlSequence, WindowReportSequence, TitleReportSequence エントリを追加した。デフォルトはすべて on。
    • 行単位送信(Line at a time)モードに対応した。
      • teraterm.ini に EnableLineMode エントリを追加した。デフォルトはon。
      • デフォルトの動作を文字単位送信(Character at a time)モードから行単位送信モードに変更した。
    • 複数行の貼り付け時、改行ごとに遅延する時間を設定できるようにした。デフォルトは 10(ミリ秒)。
      • Additional settings ダイアログで設定値を変更できるようにした。
    • BroadcastCommand（非Realtime mode）において、リストボックスで選択された端末に対してのみ、メッセージを送信するようにした。
    • UTF-8モードを追加
      • 言語モードを指定する /LA コマンドラインオプションで、UTF-8モードを指定できるようにした。
    • 送信漢字コードの設定がUTF-8の時、入力された文字がUTF-8に変換出来ない場合(不正な文字)は代わりにReplacement Character(U+FFFD)を送信するようにした。
    • 韓国語モードの調整
      • 言語モードを指定する /LA コマンドラインオプションで、韓国語モードを指定できるようにした。
      • IMEのインライン変換を韓国語モードでも行えるようにした。
      • 受信文字コードの選択肢に UTF-8m を追加した。
      • teraterm.iniのKanjiSend/KanjiReceiveエントリで、KS5601を受け付けるようにした。
      • /KR, /KT コマンドラインオプションで、KS5601を受け付けるようにした。
    • フォント設定ダイアログで、OSのコモンダイアログをそのまま表示するようにした。
      • 文字セットを選択できるようにした。
      • Enable bold style を [Setup]-[Window] に移動した。
      • ロシア語モードの Font char set を、ロシア語モードの [Setup]-[Terminal] に移動した。
    • AltキーでMSBをセットした文字を送信する機能を追加した。
      • teraterm.ini に Meta8Bit エントリを追加した。デフォルトは off。
    • ログファイル名中の &p を、接続中の TCP ポート番号に変換する機能を追加した。
    • ログにタイムスタンプを書き込むときにミリ秒も記録するようにした。
    • Secondary DA要求に対して、パラメータがなしまたは 0 の時のみ応答するようにした。
    • マウスイベント通知で、モーションイベントの通知に仮対応した。
    • メニューの Send break を無効にできるようにした。peterprvy氏に感謝します。
      • teraterm.ini に DisableMenuSendBreak エントリを追加した。デフォルトは off。
    • 切断時に画面をクリアできるようにした。peterprvy氏に感謝します。
      • teraterm.ini に ClearScreenOnCloseConnection エントリを追加した。デフォルトは off。
    • Duplicate session のアクセラレータキーを無効にできるようにした。
      • teraterm.ini に DisableAcceleratorSendBreak エントリを追加した。デフォルトは off。
    • コマンドラインオプションで、 /F オプションは他のオプションより先に処理する(上書きされる)ように変更した。
    • コマンドライン解析の仕様を変更した。
      • `"' を渡すために `""' を指定する仕様を追加した。
    • ConfirmChangePaste 機能に、任意の文字列を指定することができる新しいしくみを追加した。
      • teraterm.ini に ConfirmChangePasteStringFile エントリを追加した。文字列を列挙したテキストファイルへのパスを指定する。
    • teraterm.ini に Wait4allMacroCommand エントリを追加した。デフォルトはoff。onにすると、"wait4all" マクロコマンドが有効となる。
    • マクロコマンド "exec" に、起動したアプリケーションの終了コードを result に格納するためのオプションを追加した。
    • マクロスクリプトのコメントに、C言語風コメント（/* ～ */）を使用できるようにした。暫定サポート。
    • バージョン情報に、Subversion(SVN)のリビジョン番号を表示するようにした。
  • バグ修正
    • AcceptTitleChangeRequestがoverwriteの時、リモートからのウィンドウタイトル変更要求を受けた後にマクロのsettitleコマンドでウィンドウタイトルの変更が出来なくなるのを修正した。
    • スクロール領域(DECSTBM)が設定されている場合、最下行でのみ自動スクロールする機能がうまく働かない問題を修正した。例えばminicomではスクロール領域を設定する為この問題が発生する。
    • 継続行コピーがうまく働かない場合があるのを修正した。
    • ssh/cygwin接続を複製した後の新規接続で、TCPLocalEcho/TCPCRSendが無視されるのを修正した。
    • クリッカブルURLにおいて、URL文字列が1024バイトを超えると、アプリケーションエラーとなるバグを修正した。
    • サポートされていないURIスキームもクリッカブルURLになる問題を修正した。
    • UTF-8の調整
      • 送信がUTF-8に設定されている時に、UTF-8に変換せずに送信する場合があるのを修正した。
      • UTF-8で2バイトになる文字の表示が遅れるのを修正した。
      • 受信がUTF-8に設定されている時、本来表示されるはずの一部の文字が表示出来なかったのを修正した。
      • 受信がUTF-8に設定されている時、SS2,SS3(ISO-2022)が正しく処理されなかったのを修正した。
    • 韓国語モードの調整
      • 韓国語モード時、ハングルなどの2バイト文字をマウスで正しく選択できない場合があるのを修正した。
      • 韓国語モード時、一文字削除(DCH)等の制御シーケンスでハングルなどの2バイト文字を正しく扱うようにした。
      • 韓国語モード時、ハングルなどの2バイト文字が行末に来た時に正しく改行するようにした。
    • Windows 95 でクリップボードにある複数行のテキストを貼り付けると、アプリケーションエラーとなるバグを修正した。
    • ロケールオブジェクトがリークしていた問題を修正した。
    • 8ビット応答設定(S8C1T)時、Secondary DAに対する応答の後ろにゴミが付いていた問題を修正した。
    • 正しくないオプションが指定された時に、別の正しいオプションとして認識される場合があったのを修正した。例えば /BADOPTION が /B として認識されていた。
    • マクロコマンド "sendmulticast" と "setmulticastname" が、第一引数が文字列ではなく文字列型変数だった場合に値を正しく受け取らない問題を修正した。
  • その他
    • インストーラを修正した。
      • 拡張子.ttyをTera Term (TTXttyplay)に関連付け出来るようにした。
    • SSH2対応TTSSH(2.51)へ差し替えた。
    • CygTerm+ 1.07_17へ差し替えた。
    • TeraTerm Menu(1.09)へ差し替えた。
    • TTX KanjiMenu Plugin(0.1.6)へ差し替えた。
    • TTXAlwaysOnTop Plugin(1.01)へ差し替えた。
    • TTXttyrec Plugin(1.01)へ差し替えた。
    • Additional Plugins に TTXRecurringCommand プラグインを追加した。
    • LogMeTT 2.9.5へ差し替えた。
    • Windows 7 RC(Build7100) の暫定サポート。

2009.3.22 (Ver 4.62)

  • 変更
    • Controlキーを押している間はマウスイベント通知を無効にできるようにした。
      • teraterm.ini に DisableMouseTrackingByCtrl エントリを追加した。デフォルトはon。
      • Additional settings ダイアログにチェックボックスを追加した。
    • アプリケーションカーソルモードを無効にしている場合は、マウスホイール - カーソルキー変換も無効にするようにした。
    • Controlキーを押している間はマウスホイール - カーソルキー変換を無効にできるようにした。
      • teraterm.ini に DisableWheelToCursorByCtrl エントリを追加した。デフォルトはon。
    • Additional settings ダイアログから"Eterm lookfeel"をチェックできないようにした。Eterm lookfeel機能を有効にするには、teraterm.ini を直接編集すること。
    • Windows7β(build7000)において、非表示状態にあるフォントがフォント選択ダイアログにリストアップされるようにした。
    • 反転属性の色を指定出来るようにした。
      • teraterm.ini に VTReverseColor エントリを追加した。
        注: アップグレードインストール時は互換性のためこの機能は無効にされています。有効にする場合は、後述のEnableReverseAttrColorをonに設定してください。
    • 高輝度,点滅および反転属性の色と、ANSIカラー表示を無効にできるようにした。
      • teraterm.ini に EnableBoldAttrColor, EnableBlinkAttrColor, EnableReverseAttrColor, EnableURLColor, EnableANSIColor エントリを追加した。デフォルトは、EnableReverseAttrColorはoff、それ以外はon。
      • Additional settings ダイアログにチェックボックスを追加した。
    • teraterm.ini の ConfirmChangePaste（改行を含むデータの貼り付けを確認する） はデフォルトで on とした。
    • EDITOR.CNF をインストーラパッケージに新規追加した。
    • キーボード設定ファイルが無い時のエディタキーパッドおよびファンクションキーの動作を変更し、対応するVTキーのシーケンスを送出するようにした。
      • teraterm.ini に StrictKeyMapping エントリを追加した。デフォルトはoff。
    • バージョンダイアログに、ビルド環境(Visual C++)のバージョンとビルドタイムを表示するようにした。
    • マクロコマンド "sprintf2" を新規追加した。
    • マクロコマンド "waitn" を新規追加した。p3g4asus氏に感謝します。
    • マクロコマンド "logopen" で、result に結果を格納するようにした。
    • マクロ変数に"mtimeout"を新規追加した。wait系マクロは、「timeout * 1000 + mtimeout」ミリ秒待つようになる。精度は 50 msec 程度。
    • マクロコマンド "sendbroadcast" を新規追加した。
    • マクロコマンド "sendlnbroadcast" を新規追加した。
    • マクロコマンド "sendmulticast" を新規追加した。
    • マクロコマンド "setmulticastname" を新規追加した。
  • バグ修正
    • cygwin接続時、環境変数PATHが1024バイトで切られるのを修正した。
    • Visual Studio上でマクロのデバッグができるように、DDEトランザクション通信に暫定処置（ワークアラウンド）を加えた。
    • connectマクロコマンドにおいて、/DSコマンドラインオプションを指定した時にconnectコマンドが終了しないバグを修正した。
    • ログウィンドウを非表示に指定した時、一瞬ログウィンドウが表示されていたのを表示されないようにした。
    • リバースビデオモード(DECSCNMがon)の時、Window Setupダイアログでの文字/背景色設定が正しく動かないのを修正した。
    • リバースビデオモード(DECSCNMがon)の時、設定の保存/読み込みで文字/背景色が正しく保存/復元されないのを修正した。
  • その他
    • SSH2対応TTSSH(2.50)へ差し替えた
    • TTX KanjiMenu Plugin(0.1.5)へ差し替えた。
    • cyglaunch(1.01)へ差し替えた。
    • Windows 95 のサポートを復活した
    • Windows 7β(build7000) の暫定サポート

2008.12.16 (Ver 4.61)

  • 変更
    • ログ保存時に Binary フラグが有効なときは、Plain text と Timestamp フラグを無効にするようにした。
    • リモートからのウィンドウタイトルの表示方法を追加した。標準のタイトルの前または後に表示できるようにした。
    • "Additional settings" ダイアログで、"Delimitter Characters" 設定を "General" タブから "Copy and Paste" タブへ移動した。
    • "New connection" ダイアログを表示しない /DS コマンドラインオプションを追加した。
    • 設定の保存時、新規ファイルを指定した場合もコメントや各設定の位置関係が保存されるようにした。
    • 英国環境等でDEC特殊文字の表示後に英小文字等が正しく表示されない問題への対応として、UK文字セットの指示をUS-ASCIIの指示として扱うようにした。
    • マクロコマンド 'gethostname' を追加した。
  • バグ修正
    • 文字属性に関する以下の問題を修正した。すべて4.58でのエンバグ。
      • 消去領域に高輝度,下線,点滅,反転属性を適用していた。
      • 「編集」メニューの「画面消去」「バッファ消去」で、現在の背景色で消去していた。
      • ED(Erase in Display:ただし画面全体の消去(2J)を除く),EL(Erase in Line)等で、消去後の表示とバッファの内容が同期していない事があった。
      • DECALN(DEC Screen Alignment Test)での表示に文字属性を適用していた。
    • マクロで、変数名およびラベルに使えないはずの文字が使えていたのを修正した。
    • filestrseek2マクロコマンドにおいて、ファイルの1バイト目が合致すると、ファイルポインタが負数になってしまうバグを修正した。
    • logopenマクロコマンドにおいて、ファイル名に \ が含まれない場合、ルートディレクトリ直下へ保存されるようになっていたため、カレントディレクトリに保存されるようにした。
    • gettitleマクロコマンドにおいて、ウィンドウタイトルの長さが32バイト以上の時に31バイト目までしか取得できない問題を修正した。
    • strmatchマクロコマンドが使えなくなっていたのを修正した。
  • その他
    • インストーラを修正した。
      • sshプロトコル(ssh://)を ttermpro.exe に関連付けできるようにした。
      • Additional Plugins にプラグインを追加した。
      • TTXKanjiMenu を、Additional Plugins に移動した。
      • cygterm+ のソースを同梱するようにした。
    • SSH2対応TTSSH(2.49)へ差し替えた
    • CygTerm+ 1.07_16へ差し替えた

2008.9.23 (Ver 4.60)

  • CHT(前方タブ移動),CBT(後方タブ移動)制御シーケンスに対応した。一部のアプリケーションでの表示の崩れが改善される。
  • ビジュアルベルに対応した。BEL文字を受信した時に、Beepを鳴らす代わりに画面をフラッシュさせる事ができる。
    • teraterm.iniのBeepエントリを拡張し、On/Offの他にVisualを受け付けるようにした。
  • 韓国語(KS5601)へ対応した。Keonsoon Hwang氏に感謝します。
  • ログファイルが開けない場合、エラーメッセージ表示するようにした。ただし、logopenマクロの場合は何も表示しない。
  • リモートからのウィンドウタイトル変更要求を受け入れるか設定できるようにした。
    • teraterm.ini に AcceptTitleChangeRequest エントリを追加した。デフォルトはon。
    • Additional settings ダイアログにチェックボックスを追加した。
  • ConfirmChangePaste の確認ダイアログのサイズを変更できるようにした。
  • ConfirmChangePaste の確認ダイアログのサイズを保存できるようにした。
    • teraterm.ini に PasteDialogSize エントリを追加した。デフォルトは330x230。
  • ウィンドウのリサイズ中に、リサイズ後の縦横サイズをツールチップで表示するようにした。
  • ファイル送信およびファイル転送時のダイアログに、可能ならばプログレスバーを表示するようにした。
  • SSH2 接続でテキストを貼り付けた場合に送信するデータが欠けることがあるため、500バイト貼り付ける度に 10ms 待つ workaround を追加した。
  • マクロコマンド"messagebox", "yesnobox"をキャンセルしたときに、マクロの実行を停止できるようにした。
  • シリアル接続の入出力をフックするためのTera Term Extension(TTX)用インタフェースを追加した。
  • マクロコマンド 'crc32', 'crc32file' を追加した。
  • マクロコマンド 'getttdir' を追加した。
  • Duplicate Session によるTELNETおよびSSHの複製が、port22,23以外だとできない問題を修正した。
  • Windows 98/Me で、接続時に Terminal size の行数が不正に減る問題を修正した。
  • Windows Vista の Aero 環境で、Alt+Tab キーでウィンドウを切り替えをしたときに表示されるアイコンが 16x16 になる問題を修正した。
  • SSH2対応TTSSH(2.48)へ差し替えた

2008.6.25 (Ver 4.59)

  • パッケージ名を「UTF-8 TeraTerm Pro with TTSSH2」から「Tera Term」に改名した。
    • アンインストール・新規インストールでの導入をおすすめします。
  • 動作する OS 一覧に Windows XP x64・Windows Vista・Windows Server 2008 を追加した。
  • Tera Term アイコン(teraterm.ico, vt.ico)とマクロアイコン(ttmacro.ico)を新しくした。坂本龍彦氏に感謝します。
  • 前回のリリースでマウスの中ボタンのクリックによる貼り付けを削除したが、元に戻した。
    • teraterm.ini に DisablePasteMouseMButton を追加した。デフォルトはon。
  • Additional settings を変更した。
    • ConfirmChangePaste （改行コードを含むクリップボードデータの貼り付けを確認する）オプションを追加した。
    • MouseEventTracking オプションを追加した。
    • General タブの項目の一部を、新設した "Copy and Paste" タブに移動した。
    • 開いているタブの内容しか保存されない問題を修正した。
    • cygterm.cfg がない状態で保存するとファイルが新規作成されず、エラーメッセージが表示される問題を修正した。
    • デフォルトのログファイル名が入力されていなかった場合に、不正なエラーメッセージを表示する問題を修正した。
  • 'Paste<CR>' メニューが選択されたときにも確認ダイアログを表示するようにした。
  • マウスホイールによるスクロール行数を設定できるようにした。
    • teraterm.ini に MouseWheelScrollLine エントリを追加した。デフォルトは3。
    • Additional settings ダイアログにエディットコントロールを追加した。
  • 以前読み込んだ .ttl ファイルのディレクトリを記憶するようにした。
  • LogMeTT.exe が存在しない場合、[File] メニューに [LogMeTT] を表示しないようにした。
  • ScrollLockキーを KEYBOARD.CNF ファイルで設定できるようにした。
    • KEYBOARD.CNF に ScrollLock エントリを追加した。デフォルトは70。
  • <ESC>[Jによる画面クリア時にカレントバッファをスクロールアウトさせるようにするかどうかを、設定できるようにした。
    • teraterm.ini に ScrollWindowClearScreen を追加した。デフォルトはon。
  • 最下行でだけ自動スクロールさせるようにした（何か表示されるときにスクロールバックをリセットしない）。ただし、なにかキー入力(CTRLやSHIFTなどの制御キーは除く)を行った時はスクロールバックをリセットする。Salarm氏に感謝します。
    • teraterm.ini に AutoScrollOnlyInBottomLine エントリを追加した。デフォルトはon。
    • Additional settings ダイアログにチェックボックスを追加した。
  • 対応していないUnicodeの文字をワイド文字として扱うか設定できるようにした。
    • teraterm.ini に UnknownUnicodeCharacterAsWide エントリを追加した。デフォルトはoff。
  • 受信漢字コードがUTF-8またはUTF-8mの時、罫線や一部の記号をDEC特殊文字の近い文字で代替表示できるようにした。代替表示される文字は幾つかの種類に分類され、種類毎に変換するか設定できる。
    • teraterm.ini に UnicodeToDecSpMapping エントリを追加した。デフォルトは3。
  • 送信するファイルの選択時に、FileSendFilterで指定されたファイルが存在する場合にはデフォルトのファイル名に設定するようにした。
  • X/ZMODEMのログファイルに、16進ダンプのASCII表示を追加した。
    • teraterm.ini に YmodemLog エントリを追加した。デフォルトはoff。現時点ではYMODEMは未サポート。
  • マクロコマンド 'strmatch' を追加した。
  • マクロコマンド 'setrts','setdtr' を追加した。
  • ブロードキャストコマンドにおいて、連続送信される WM_COPYDATA を正しく処理できるようにした。Salarm氏に感謝します。
  • VTウィンドウおよびTEKウィンドウのウィンドウアイコンを変更できるようにした。
    • teraterm.ini に VTIcon, TEKIcon を追加した。デフォルトは"Default"。
    • /VTICON, /TEKICONコマンドラインオプションを追加した。
    • CygTermで起動されるVTウィンドウのアイコンがCygTermのものになるようにした。(新規インストール時のみ)
      アップグレードインストール時に同様の設定にしたい場合は、cygterm.cfgを編集してTERM設定に/VTIcon=CygTermを追加してください。
  • ConfirmChangePaste の確認ダイアログを、マウスカーソルではなくキャレットの位置に表示するようにした。
  • Mouse Tracking Mode 時もダブルクリックによる単語選択を有効にした。
  • New Connection ダイアログのホスト名履歴の保存数を 99 から 200 に変更した。
  • インストーラを修正した。
    • cyglaunch のショートカットをスタートメニューに追加するようにした。
    • cyglaunch のショートカットをクイック起動に追加できるようにした。
    • .ttl ファイルを ttpmacro.exe に関連付けできるようにした。
    • telnet プロトコルを ttermpro.exe に関連付けできるようにした。
    • teraterm.ini の FileDir がインストール先になるようにした。
  • VT ウィンドウで、Window list ダイアログが出ない問題を修正した。
  • 内部で LogMeTT.exe, cygterm.exe, cygterm.cfg をフルパスで指定していなかったため、ファイル選択などにより ttermpro.exe のカレントディレクトリが変更されたときに正しく動かなくなる問題を修正した。
  • teraterm.ini の XModemRcvCommand のデフォルトが空になっていなかった問題を修正した。
  • マウス操作の通知で、不正な位置を通知する事があったのを修正した。
  • ttermpro.exeに /C= と /M= が指定された場合に、シリアル接続できない問題を修正した。
  • 受信漢字コードがUTF-8またはUTF-8mの時、C1制御文字を使用した制御シーケンスが正しく扱えないのを修正した。
  • 受信漢字コードがSJISの時、制御シーケンスによるウィンドウタイトル変更で、一部の漢字が使えないのを修正した。
  • "New Connection" ダイアログで/F=オプションで設定ファイルを指定した時、背景色やANSI Color等の設定が正しく反映されないのを修正した。
  • Eterm lookfeelがOnの時、"Additional Settings" ダイアログでOKボタンを押した後にウィンドウ表示が正しく更新されなくなるのを修正した。
  • マルチディスプレイ環境で最大化すると、必ずプライマリモニタに最大化される問題を修正した。
  • マルチディスプレイ環境で最大化すると、隣のディスプレイにウィンドウの端がはみ出る問題を修正した。
  • MaxBroadcatHistory に 100 以上を指定しても 99 件までしか保存されない問題を修正した。
  • SSH2対応TTSSH(2.47)へ差し替えた
  • TeraTerm Menu(1.08)へ差し替えた
  • LogMeTT 2.9.4へ差し替えた

2008.2.29 (Ver 4.58)

  • アプリケーションカーソルモード時、マウスホイールの回転をカーソルキーとして送信できるようにした。
    • teraterm.ini に TranslateWheelToCursor を追加した。デフォルトはon。
  • 起動時に "New Connection" ダイアログを表示するかどうか設定できるようにした。
    • teraterm.ini に HostDialogOnStartup を追加した。デフォルトはon。
  • マウス操作の通知に対応した。
    • teraterm.ini に MouseEventTracking を追加した。デフォルトはon。
  • Broadcast Commandにリアルタイムモードを追加した。TeraTermウィンドウにすべてのキー入力を送ることができるため、vi操作などが可能となる。TeraTerm Proアシスタントに近い機能。
    • Broadcast Commandダイアログに"Realtime mode"チェックボックスを追加。デフォルトはon。
    • TeraTermウィンドウを選択可能なリストボックスを追加した。ダブルクリックでアイテムの全選択および全解除が可能（トグル）。
    • Broadcast CommandダイアログをTeraTermの真上へ配置するようにした。
  • フォーカスが外れたときにもカーソルを描画するようにした。
    • teraterm.ini に KillFocusCursor を追加した。デフォルトはon。
  • ログ記録時に "Log" 転送ダイアログを表示するかどうか設定できるようにした。
  • ウィンドウへのドラッグ＆ドロップによるファイル送信において、SCP(Secure Copy Protocol)を選択できるようにした。
  • Font linking 誤動作のパッチを追加した。naoh氏に感謝します。
  • マウスの右クリックおよびAlt+Vでクリップボードの内容を貼り付けるときに、改行コードが含まれていたら、確認ダイアログを出現させるようにした。誤操作により、端末へ予期せぬコマンド投入を防ぐことができる。
    • teraterm.ini に ConfirmChangePaste を追加した。デフォルトはoff。
  • ウィンドウの位置を保存するオプションを追加した。
    • teraterm.ini に SaveVTWinPos を追加した。デフォルトは off。
  • TermType のデフォルト値を "vt100" から "xterm" に変更した。
    • TELNET/SSHで通知されるTERM環境変数が"xterm"になる。
  • マウスの中ボタンのクリックによる貼り付けを無効にした。
  • フォルダ選択ダイアログで、既存の設定値が初期ディレクトリになるようにした。
  • ウィンドウの最大幅を300字から500字に拡張した。
  • xterm形式の256色モードおよびaixterm形式の16色モードに対応した。
    • teraterm.ini に Xterm256Color および Aixterm16Color エントリを追加した。
    • teraterm.ini の FullColor エントリを PcBoldColor エントリに名称変更した。
    • ウィンドウ設定ダイアログにチェックボックスを追加した。
  • 行削除/画面削除された領域や、スクロール等で新しく表示された行の背景色を、標準の背景色から現在の背景色に変更した。
  • 言語ファイルにドイツ語(German.lng)を追加した。Alexander Wiechert氏に感謝します。
  • ウィンドウの最大化で文字欠けになる現象への暫定処置を追加した。
    • teraterm.ini に MaximizedBugTweak を追加した。デフォルトはon。
  • リバースビデオ制御シーケンス(DECSCNM)が正しく働かないのを修正した。
  • ウィンドウを最大化した状態で、teraterm.iniへ保存を行うと、最大化時のTerminalSizeが保存されていたバグを修正した。
  • ファイル名をチェックするルーチンで、0x5C や 0x7C などを含むマルチバイト文字を不正な文字と判定する問題を修正した。
  • ポートタイプが"serial"の場合、TeraTermの起動時に自動接続しないバグを修正した。Steven Yang氏に感謝します。cf. TeraTerm com auto connect bug
  • ANSI Color 設定の変更が即座に反映されないのを修正した。
  • エスケープシーケンスによるタイトル文字列変更後、余計な'\'が表示される場合があるのを修正した。
  • マクロコマンド 'getver' を追加した。
  • マクロコマンド 'setbaud' を追加した。Steven Yang氏に感謝します。
  • マクロコマンド 'showtt' に3つのパラメータ(6, 7, 8)を追加した。Steven Yang氏に感謝します。
  • マクロコマンド 'exec' に2つめのパラメータを追加した。Steven Yang氏に感謝します。
  • 'logopen' マクロコマンドに、<plain text flag>, <timestamp flag>, <hide dialog flag> オプションを追加した。
  • 'getdate', 'gettime' マクロコマンドで、書式を指定しなかった場合は result に値をセットしないようにした。(バージョン4.56以前との互換性のため)
  • SSH2対応TTSSH(2.46)へ差し替えた
  • TTProxy(1.0.0.15)へ差し替えた
  • TTX KanjiMenu Plugin(0.1.4)へ差し替えた。
  • ソースコード解説の執筆を開始した。

2008.1.15 (Ver 4.57)

  • マクロのコマンドラインパラメータに param4 から param9 を追加した。
  • Additional settings ダイアログを ESC キーでキャンセルできるようにした。
  • Additional settings ダイアログを Enter キーで確定できるようにした。
  • ZMODEMのファイル送信時に、タイムスタンプとパーミッション（0644）もいっしょに送るようにした。
    • ZMODEM受信コマンドを teraterm.ini の ZmodemRcvCommand で指定できるようにした。デフォルトは"rz"。
  • XMODEMのファイル送信前に、「rx ファイル名」コマンドを送れるようにした。
    • XMODEM受信コマンドを teraterm.ini の XmodemRcvCommand で指定できるようにした。デフォルトは""。
  • マクロコマンド 'cygconnect' を追加した。
  • マクロコマンド 'getdate, gettime で、書式を指定できるようにした。
  • マクロコマンド 'scpsend' を追加した。
  • マクロコマンド 'scprecv' を追加した。
  • ファイルのドラッグアンドドロップ時に確認するかどうかを選択できるようにした。
    • teraterm.ini に ConfirmFileDragAndDrop を追加した。デフォルトはon。
  • SelectOnlyByLButton が on の状態で、別のアプリケーションでクリップボードのコピーしたデータを、TeraTerm側でペーストしようとした場合、TeraTermに選択状態のバッファがあると、そのバッファの内容がペーストされてしまう問題を修正した。
  • FileSendFilter が設定されていると、ファイルダイアログの拡張子フィルタが正しく動作しない問題を修正した。
  • ZMODEMによるファイル送信時に、すでにサーバ側に同一ファイルが存在した場合、ファイルハンドルの二重クローズをしていたバグを修正した。
  • telnet キープアライブ処理が thread-safe になっていなかった問題を修正した。
  • Terminal Setup の New-line (transmit) が空欄になる問題を修正した。
  • Dell の USB キーボードで矢印キーが効かないことがある問題に対応した。
    cf. http://www.neocom.ca/forum/viewtopic.php?p=2565
  • SSH2対応TTSSH(2.45)へ差し替えた
  • CygTerm+ 1.07_14へ差し替えた
  • Oniguruma 5.9.1へ差し替えた

2007.12.4 (Ver 4.56)

  • アプリケーションキーパッド/カーソルモードを無効にできるようにした。アプリケーションキーパッド/カーソルモードについては、「キーパッドモードについて」を参照してください。
    • teraterm.ini に DisableAppKeypad および DisableAppCursor エントリを追加した。
    • キーボード設定ダイアログにチェックボックスを追加した。
  • COMポートを開く時に、バッファをクリアするか制御できるようにした。
    • teraterm.ini に ClearComBuffOnOpen エントリを追加した。onでバッファクリア（TeraTerm2.3互換）、offでクリアしない。デフォルトはon。
  • New connection ダイアログの Host ドロップダウンで、Ctrl+u ショートカットキーをサポートした。「カーソルから左端までの文字列を削除」に対応する。
  • シリアルポートのボーレートを指定するコマンドラインオプション /BAUD を追加した。
  • C1制御文字を8ビット文字で送信できるようにした。
    • teraterm.ini に Send8BitCtrl エントリを追加した。デフォルトはoff。
    • S7C1T/S8C1T制御シーケンスに対応した。
    • DECSCL制御シーケンスによるC1制御モードの変更に対応した。
  • KAM(キーボードロック), DECNKM(数値キーパッドモード変更)制御シーケンスに対応した。
  • Fileメニュー配下の"Change directory"において、"New dir"にフォルダを選択するダイアログから選択できるようにした。
  • マウスドラッグによる選択を、左ボタンでのみ有効にする機能を追加した。
    • teraterm.ini に SelectOnlyByLButton エントリを追加した。デフォルトは on。
    • Additional settings ダイアログにチェックボックスを追加した。
  • UTF-8エンコーディングにおいて、単独の合成用濁点(U+3099)/合成用半濁点(U+309A)を、濁点(U+309B)/半濁点(U+309C)として表示するようにした。
  • マクロコマンド clipb2varで、クリップボードのテキストデータの256バイト目以降を取得できるようにした。
    • クリップボードのデータのコピー開始位置をコマンドの引数で指定できるようにした。
    • クリップボードのデータが長くてコピーしたデータが途中で切り捨てられた場合は、resultに2をセットするようにした。
  • マクロコマンド do - loop を新規追加した。
  • マクロコマンド until - enduntil を新規追加した。
  • マクロコマンド callmenu を新規追加した。
    • サンプルマクロ screencapture.ttl を追加した。
  • Telnetコマンドの自動検出を無効化できるようにした。
    • teraterm.ini に TelAutoDetectエントリを追加した。デフォルトはon。
  • メニューから選択領域を解除できるようにした。編集メニュー配下に「選択を解除」を追加した。主にマクロから呼ばれて使われる事を想定しています。
  • ログ採取のファイル選択ダイアログにおいて、「標準のログ保存先フォルダ」が存在するならそこを初期フォルダにするようにした。
  • ウィンドウの透明度を 255 に変更できない問題を修正した。
  • サーバから送信されるタイトル文字列の末尾 1 文字が削られる問題を修正した。
  • New connection ダイアログから Telnet 接続を開始したとき、TCPLocalEcho/TCPCRSend の設定が使用されてしまうことがある問題を修正した。
  • 継続行連結コピーを有効に設定している時、テーブルをコピーが正しく動作しない場合がある問題を修正した。
  • DeleteキーでDELを送信する設定で Num Lock の状態が Off の時、数値キーパッドの"."でDELが送信されていたのを修正した。
  • マクロの wait コマンドが長い文字列を待てなくなっていたのを修正した。4.54でのエンバグ。
  • ウィンドウの設定ダイアログのカラー設定で、値が15以下の時にPageUpキーを押すと255になるのを修正した。
  • COMポート番号を強制付け替えした場合に、レジストリに残っている古いFriendlyNameが表示されてしまう問題を修正した。パッチ作成に感謝します＞xoxo氏
  • TEKウィンドウのウィンドウの設定ダイアログで、“常に標準の背景色を使う”チェックボックスを表示しないようにした。
  • TEKウィンドウのフォント設定ダイアログで、ユーザインタフェイスにメッセージファイルのデータを使っていなかったのを修正した。
  • SSH2対応TTSSH(2.44)へ差し替えた
  • TeraTerm Menu(1.07)へ差し替えた

2007.10.14 (Ver 4.55)

  • アプリケーションエラーが発生したときに、スタックトレースとレジスタ情報をメッセージボックスに表示させるようにした。メッセージボックスの内容は CTRL+C でクリップボードへコピーできる（Windows2000以降）。
  • New connection ダイアログの Host ドロップダウンで、Ctrl+d, Ctrl+k ショートカットキーをサポートした。それぞれ「一文字削除」「行末まで削除」に対応する。
  • シリアル接続のCOM最大ポートを256まで拡張した。
  • フォントの Bold style 設定のデフォルト値を On に変更した。
  • getdir マクロコマンドでクラッシュする問題を修正した。
  • ログファイル名に strftime のフォーマットを指定したときに展開されない問題を修正した。
  • SSH2対応TTSSH(2.43)へ差し替えた

2007.9.30 (Ver 4.54)

  • バッファの画面表示部分の選択をできるようにした。編集メニュー配下に「表示画面を選択」を追加した。
  • COMポートのDevice descriptionを接続ダイアログに表示するようにした。
  • telnetキープアライブ機能を追加した。
    • 一定時間パケットの送信を行わなかった時、TELNET NOPコマンドを送信する。
    • teraterm.iniの設定パラメータTelKeepAliveIntervalを追加。デフォルトは300(秒)。0でOFF。
    • TCP/IP setupダイアログにキープアライブ設定用項目を追加した。
  • 接続断のアクセラレータキーとして Alt+I を追加した。
  • マクロの演算子にシフト演算子 >>, <<, >>> を追加した。
  • マクロの演算子の優先度を変更した。
    • 新:
優先度  演算子
1       not ~ ! +(単項) -(単項)
2       * / %
3       + -
4       >> << >>>
5       and &
6       xor ^
7       or |
8       < > <= >=
9       = == <> !=
10      &&
11      ||

旧:
優先度  演算子
1       not ~ ! +(単項) -(単項)
2       * / %
2       and &
3       + -
3       or xor | ^
4       = <> < > <= >=
5       &&
6       ||
  • マクロコマンド rotateleft, rotateright を新規追加した。
  • マクロコマンド setenv を新規追加した。
  • マクロコマンド filenamebox を新規追加した。
  • シリアル接続のCOM最大ポートを200まで拡張した。
  • ログ採取のファイル選択ダイアログにおいて、初期フォルダを決め打ちしないようにした。
  • New connection ダイアログの Host ドロップダウンで、Ctrl+p, Ctrl+n, Ctrl+b, Ctrl+f, Ctrl+a, Ctrl+e ショートカットキーをサポートした。それぞれ↑, ↓, ←, →, Home, End キーに対応する。
  • 設定ファイルの保存時に VTPos と TEKPos を保存しないようにした。
  • ブロードキャストコマンドの履歴の保存先を broadcast.log に変更した。
  • ブロードキャストコマンドの履歴の保存数を設定できるようにした。
    • teraterm.ini に MaxBroadcatHistory エントリを追加した。
  • マクロコマンド messagebox, yesnobox, inputbox, passwordbox, statusbox に、'\n' と '\t' を特殊文字として解釈するかどうかを制御する引数を追加した。
  • 初回のウィンドウのサイズ変更ができないことがある問題を修正した。
  • 編集メニューの“全て選択”で、最終行の改行が選択されない問題を修正した。
  • Windows Vistaでマウスホイールが効かない問題を修正した。
  • repeatを使わないターゲットに対して、Kermit処理が失敗するバグを修正した。Anders Larsen氏に感謝します。
  • 内部で使用している文字列系関数のセキュアバージョンへの全置換を実施。
    • ビルドオプションから _CRT_SECURE_NO_DEPRECATE を削除した。
  • SSH2対応TTSSH(2.42)へ差し替えた
  • TeraTerm Menu(1.06)へ差し替えた
  • TTProxy(1.0.0.14)へ差し替えた

2007.8.8 (Ver 4.53)

  • ログファイル名中の &h を、接続中のホスト名に変換する機能を追加した。
  • 標準のログ保存先を指定できるようにした。
    • teraterm.ini に LogDefaultPath エントリを追加した。
    • Additional Settings タブにエディットコントロールを追加した。
  • 接続時に自動的にログ採取を開始できるようにした。
    • teraterm.ini に LogAutoStart エントリを追加した。
    • Additional Settings タブにチェックボックスを追加した。
  • ファイル送信ダイアログでファイル名フィルタをかけられるようにした。
    • teraterm.ini に FileSendFilter エントリを追加した。
  • 行末のタブを次の行に自動改行するようにした。
    • teraterm.ini に VTCompatTab エントリを追加した。行末タブの扱いをvt100/xterm風にする。デフォルトはoff。
  • シリアル接続のCOM最大ポートを200まで拡張した。
  • タイトルバーに TCP ポート番号とシリアルポートのボーレートを表示できるようにした。
  • URLクリッカブルへのEmacs対応。行末が \ である場合、URL構成文字として削除するようにした。
  • マクロコマンド tolower を新規追加した。
  • マクロコマンド toupper を新規追加した。
  • マクロコマンド break を新規追加した。
  • マクロコマンド inputbox に引数を追加した。この新しい引数にデフォルト文字列を渡すことができる。
  • マクロの演算子に論理演算子 &&, ||, ! およびビット演算子 &, |, ^, ~ を追加した。なお、and, or, xor, notはビット演算子である（TeraTermオリジナル仕様）。
  • エクスプローラに"Cygterm Here"コンテキストメニューを追加できるようにした。エクスプローラの任意のディレクトリから CygTerm を起動できる。
    • 環境変数PATHへ X:\cygwin\bin を追加することなく、CygTermを起動することができる"cyglaunch.exe"を同梱した。
  • HTMLヘルプのオーナーが常にデスクトップになるように変更した。
  • 空のマクロファイルを include してもエラーとしないようにした。
  • cygterm.cfg を保存する時、コメントや未知の設定も残すようにした。
  • 利用可能なCOMポートがない時、新しい接続ダイアログでシリアルポートを無効にした。
  • hlp 形式のヘルプ(ttermpj.hlp)を削除した。
  • タイムスタンプ付きログで1KBごとに不要な改行が入るバグを修正。Gentaro氏に感謝します。
  • ttpmacro.exeに256バイト以上のコマンドラインパラメータ指定があると、BOF(Buffer Over Flow)で落ちるバグを修正した。
  • マクロファイルに 256 バイトを越える長い行があると、BOF(Buffer Over Flow)で落ちるバグを修正した。
  • マクロ実行中に、サーバからの受信データをマクロへDDE送信しないことがある問題への対処を追加した。
  • マクロコマンド var2clipb で、不正にメモリを解放していた問題を修正した。
  • teraterm.ini の CRReceive に "LF" が保存・読み込みできない問題を修正した。
  • ウィンドウの幅を120ドット（XPのLUNAスタイルでは94ドット）より小さくすると、ウィンドウサイズを変更できなくなる事がある問題を修正した。TeraTerm 2.3オリジナルバグ。
  • statusbox で、既存の statusbox にメッセージを表示したときに '\n' が改行にならない問題を修正した。
  • いくつかのマクロで、渡されたファイル名が ':' で始まっている場合にエラーとならないことがある問題を修正した。
  • マクロで、"a < b < c" のような式の評価が行えない問題を修正した。
  • pause マクロコマンドを実行中に、マクロプログラムのコントロールウィンドウを操作できなくなる問題を修正した。
  • TTX KanjiMenu Plugin 0.1.3(ttxkanjimenu.dll)を追加した。原直(Hara Sunao)氏に感謝します。
  • SSH2対応TTSSH(2.41)へ差し替えた
  • CygTerm+ 1.07_13へ差し替えた
  • LogMeTT 2.9.2へ差し替えた
  • Oniguruma 5.9.0へ差し替えた

2007.5.7 (Ver 4.52)

  • マクロの yesnobox のボタンが両方とも OK になっていた問題を修正した。
  • Additional settings のマウスカーソルとANSIカラーの設定を Visual タブに移動した。
  • 右クリックによる貼り付けをする前に、ユーザに問い合わせできるようにした。
    • teraterm.ini に ConfirmPasteMouseRButton エントリを追加した。
    • Additional Settings タブにチェックボックスを追加した。
  • Send break のアクセラレータキーを無効にできるようにした。
    • teraterm.ini に DisableAcceleratorSendBreak エントリを追加した。
    • Additional Settings タブにチェックボックスを追加した。
  • Broadcastダイアログに"ParentOnly"チェックボックスを追加した。 Broadcastダイアログからの送信対象を親Windowのみにすることができる。 パッチ作成に感謝します＞337氏
  • Broadcastダイアログからの送信を無視可能にするオプションを追加した。
    • teraterm.ini に AcceptBroadcast エントリを追加した。
    • Additional Settings タブにチェックボックスを追加した。
  • 接続が SSH または Cygwin のときは、TCPLocalEchoおよびTCPCRSendオプションの設定を使わないようにした。
    • /E コマンドラインオプションを追加した。
  • Additional settings ダイアログから cygterm.cfg を保存したとき、LOGIN_SHELL と HOME_CHDIR が消去される問題を修正した。
  • Windows NT 4.0 においていくつかのファイル選択ダイアログが出ない問題を修正した。
  • マクロコマンド sprintf を新規追加した。
  • マクロコマンド str2int において、16進の変換ができるようにした。
  • SSH2対応TTSSH(2.40)へ差し替えた
  • TTProxy(1.0.0.13)へ差し替えた
  • LogMeTT 2.9.1へ差し替えた
    • スタンドアロンの TeraTerm マクロエディタ TTLEditor が追加された
  • Oniguruma 5.7.0へ差し替えた

2007.3.10 (Ver 4.51)

  • Windows98/NT4.0 においていくつかのファイル選択ダイアログが出ない問題を修正した。
  • マクロの pause コマンドの待ち時間に 1 秒程度の遅延があったので修正した。
  • My Documents に teraterm.ini がある場合、それを読み込むようにした。
  • ダブルクリックされた単語が行を越えていた場合、EnableContinuedLineCopy が有効なら続けて選択されるようにした。
  • Broadcast Command の履歴を保存できるようにした。
  • New ConnectionおよびSerial port setupのダイアログで、使用可能なシリアルポートのみを表示するようにした
  • ユーザインターフェイスのメッセージを読み込めるようにした。
    • 日本語メッセージファイルを同梱した。
    • teraterm.ini に UILanguageFile エントリを追加した。
  • SSH2対応TTSSH(2.39)へ差し替えた
  • CygTerm+ 1.07_11へ差し替えた
  • TTProxy(1.0.0.12)へ差し替えた
  • TeraTerm Menu(1.05)へ差し替えた
  • Oniguruma 5.5.3へ差し替えた

2007.1.22 (Ver 4.50)

  • Visual Studio 2005 Standard Edition(+SP1)でリビルドした
  • ログ採取中のマクロが停止する問題（TeraTerm 2.3オリジナルバグ）を修正した。
    ログバッファとDDEバッファのインデックスの整合が取れずに、本体からマクロへデータが送れていなかったのが原因。
  • ログファイル名がフルパスでないときに落ちるバグを修正した。
  • EnableContinuedLineCopyが有効の場合に画面右端での改行がログに記録されないバグを修正した。
  • F1-F10キーを有効にしたキーボード設定ファイル FUNCTION.CNF を追加した。
  • Fileメニュー配下に、ログ再生を行う"Replay Log.."を追加した。
  • 接続中の処理を一定時間後にキャンセルできるようにした。
    • teraterm.ini へ ConnectingTimeout エントリを追加。
    • ttermpro.exeに "/timeout=" オプションを追加した。
    デフォルト値は0で何もしない（Windows TCP/IPスタックの実装に依存）。
  • Terminal setupダイアログの New-line の Receive に "LF" を追加した。
    受信時の改行コードが LF の場合は、サーバから LF のみが送られてくると仮定し、CR+LFとして扱うようにする。
    cf. http://www.neocom.ca/forum/viewtopic.php?t=216
  • SSH2対応TTSSH(2.38)へ差し替えた
  • TTProxy(1.0.0.10)へ差し替えた
  • Oniguruma 5.5.2へ差し替えた

2006.11.20 (Ver 4.49)

  • TeraTerm本体（DDEサーバ）側でのDDEメッセージ XTYP_POKE の処理において、不正な返値をTeraTermマクロ（DDEクライアント）へ返していたバグを修正した。
  • マクロ通信において、XTYP_POKEメッセージにおけるビジー処理を行うようにした。
  • ScrollLockキーをサポートした
  • XMODEM-1Kの送信時に、相手がCRCではなくchecksumを要求するときに対応した。パッチ作成に感謝します＞Mark Deneen
  • HTMLヘルプを更新した
  • 初回インストール時に、teraterm.ini の Language/Locale/CodePage/VTFont/TEKFont セクションをインストーラから設定するように変更した。
  • SSH2対応TTSSH(2.37)へ差し替えた
  • Oniguruma 4.5.1へ差し替えた

2006.11.1 (Ver 4.48)

  • マクロコマンド 'fileread' を追加した。指定したバイト数だけファイルからの読み込みが可能となる。
  • SSH2対応TTSSH(2.36)へ差し替えた
  • Oniguruma 4.4.6へ差し替えた

2006.10.28 (Ver 4.47)

  • Fileメニューのアクセラレータキーを重複しないようにした。
  • 同期モードでのマクロ実行において、DDEバッファがフルになった場合にCPU使用率が100%となる現象を回避するようにした。
  • sendln後の無条件100ミリ秒のスリープを解除した。
  • マクロ(ttpmacro.exe)のバッファサイズを4KBから16KBへ拡張子した。また、TeraTermへの同期要求タイミングを変更した。
  • SSH2対応TTSSH(2.35)へ差し替えた
  • LogMeTT 2.8.6へ差し替えた
  • Oniguruma 4.4.5へ差し替えた

2006.10.9 (Ver 4.46)

  • Windows Vista で teraterm.ini の保存先のデフォルトがデスクトップになるのを修正した。
  • マクロコマンド 'clipb2var' を追加した。クリップボードからデータのコピーが可能となる。
  • マクロコマンド 'var2clipb' を追加した。クリップボードへのデータのコピーが可能となる。
  • 最初のウィンドウで、接続ダイアログの /L= パラメータが使用されないバグを修正した。
  • マクロコマンド 'ifdefined' を追加した。このコマンドは変数の型を返します。
  • HTMLヘルプを更新した
  • SSH2対応TTSSH(2.34)へ差し替えた
  • CygTerm+ 1.06_11へ差し替えた
  • Oniguruma 4.4.4へ差し替えた

2006.9.16 (Ver 4.45)

  • デフォルトのログファイル名を指定できるようにした。
    • エディットコントロールを "Additional settings" ダイアログに追加した。
    • teraterm.ini ファイルに LogDefaultName エントリを追加した。
    • ファイル名に strftime のフォーマットを使えるようにした。
      書式:
%a	曜日の省略形。
%A	曜日の正式名。
%b	月の省略形。
%B	月の正式名。
%c	ロケールに対応する日付と時刻の表現。
%d	10 進数で表す月の日付 (01 ～ 31)。
%H	24 時間表記の時間 (00 ～ 23)。
%I	12 時間表記の時間 (01 ～ 12)。
%j	10 進数で表す年初からの日数 (001 ～ 366)。
%m	10 進数で表す月 (01 ～ 12)。
%M	10 進数で表す分 (00 ～ 59)。
%p	現在のロケールの午前/午後。
%S	10 進数で表す秒 (00 ～ 59)。
%U	10 進数で表す週の通し番号。日曜日を週の最初の日とする (00 ～ 53)。
%w	10 進数で表す曜日 (0 ～ 6、日曜日が 0)。
%W	10 進数で表す週の通し番号。月曜日を週の最初の日とする (00 ～ 53)。
%x	現在のロケールの日付表現。
%X	現在のロケールの時刻表現。
%y	10 進数で表す西暦の下 2 桁 (00 ～ 99)。
%Y	10 進数で表す 4 桁の西暦。
%z, %Z	レジストリの設定に応じて、タイム ゾーンの名前または省略形を指定します。
    タイム ゾーンが不明な場合は指定しません。
%%	パーセント記号。
  • /M コマンドラインパラメータが指定されている場合、TeraTerm 起動時に自動的にシリアルポートへ接続しないようにした。
  • HTMLヘルプを更新した
  • SSH2対応TTSSH(2.33)へ差し替えた
  • CygTerm+ 1.06_08へ差し替えた
  • Oniguruma 4.4.1へ差し替えた

2006.8.19 (Ver 4.44)

  • Windows98/NT4.0 において ttpmacro.exe が起動直後に終了してしまう問題を修正した。
  • ttermpro.exe, ttpmacro.exe, ttpmenu.exe, keycode.exe, cygterm.exeに mutex を追加した。
  • インストーラを InnoSetup へ変更した
  • HTMLヘルプを更新した
  • SSH2対応TTSSH(2.32)へ差し替えた
  • CygTerm+ 1.06_06へ差し替えた

2006.8.4 (Ver 4.43)

  • いくつかの変数がシステム変数に使われていたので、ユーザが使えるマクロ変数が256個になるようにした。
  • マクロの inputbox のダイアログを、メッセージの長さに合わせて広げるようにした。
  • マクロのダイアログボックスに渡される "\n" が改行とみなされるようにした。
  • マクロの messagebox のダイアログサイズを変更できるようにした
  • 接続先ホストが 'telnet://' で始まってポート番号の指定がない場合、ポート番号 23 を設定するようにした。
  • SSH2対応TTSSH(2.31)へ差し替えた
  • TTProxyを2006/8/3版へ差し替えた。蛭子屋氏に感謝します。

2006.7.26 (Ver 4.42)

  • TeraTermアイコン(teraterm.ico, vt.ico)を新しくした。坂本龍彦氏に感謝します。
  • SSH2対応TTSSH(2.30)へ差し替えた
  • LogMeTT 2.8.5へ差し替えた
  • Collectorのリソース英文漏れの修正を行った

2006.7.24 (Ver 4.41)

  • ログに時刻を記録する機能を追加した。また、teraterm.iniに LogTimestamp エントリを追加した。
  • 上書きインストール時に、前回のインストールフォルダがデフォルトで指定されるようにした。
  • Collectorのリソース英文漏れの修正を行った
  • Oniguruma 4.2.0へ差し替えた

2006.7.19 (Ver 4.40)

  • ttermpro.exeとttpmacro.exeのバージョン情報を更新した
  • HTMLヘルプを更新した
  • LogMeTT 2.8.4へ差し替えた

2006.7.1 (Ver 4.39)

  • UTF-8の2バイト文字の直後に1バイト文字(ASCII)が来る場合、文字化けとなっていたバグを修正した（例：´)）。
  • Copyright表記を変更した

2006.6.23 (Ver 4.38)

  • SSH2対応TTSSH(2.28)へ差し替えた
  • HTMLヘルプを更新した

2006.6.18 (Ver 4.37)

  • タイトルに日本語を入力すると、文字化けするバグを修正した。パッチ作成に感謝します＞永田氏
  • SSH2対応TTSSH(2.27)へ差し替えた
  • Collectorのリソース英文漏れの修正を行った

2006.6.11 (Ver 4.36)

  • SSH2対応TTSSH(2.26)へ差し替えた

2006.5.25 (Ver 4.35b)

  • タブ化ソフト「Collector 3.2.3」を英語化し、同梱した。収録許可をいただいた高橋弘氏に感謝します。

2006.5.7 (Ver 4.35a)

  • SSH2対応TTSSH(2.25)へ差し替えた

2006.4.7 (Ver 4.35)

  • HTMLヘルプファイルのオーナーをデスクトップへ変更した
  • SSH2対応TTSSH(2.24)へ差し替えた

2006.4.4 (Ver 4.34)

  • SSH2対応TTSSH(2.23)へ差し替えた

2006.4.1 (Ver 4.33)

  • 半透明化を行わない場合に画面がちらつかないようにした。

2006.3.30 (Ver 4.32)

  • SSH2対応TTSSH(2.22)へ差し替えた

2006.3.28 (Ver 4.31)

  • Additional settingsダイアログにおけるウィンドウの半透明変更を即座に反映させるようにした。
  • 文字の背景色をスクリーンの背景色と一致させるパッチのバグを修正した。パッチ作成に感謝します＞337氏
  • VisualStyleが有効となるようにした
  • VT windowでの1ミリ秒スリープを削除した
  • ヘルプファイルを .hlp から .chm へ変更した
  • SSH2対応TTSSH(2.21)へ差し替えた
  • LogMeTT 2.8.3へ差し替えた

2006.3.6 (Ver 4.30)

  • ttpmacro.exeのバージョン情報を更新した
  • SSH2対応TTSSH(2.20)へ差し替えた

2006.3.3 (Ver 4.29)

  • 文字の背景色をスクリーンの背景色と一致させるようにした。
    • Window setupダイアログに"Always use Normal text's BG"チェックボックスを追加した。
    • teraterm.iniにUseNormalBGColorエントリを追加した。
    パッチ作成に感謝します＞337氏
  • Windows9x上においてインストーラから起動されるバッチファイルがうまく動かないバグを修正した。白井隆氏に感謝します。

2006.2.24 (Ver 4.28)

  • コンパイラを Visual Studio 2005 Standard Edition に切り替えた。
  • stricmp()を_stricmp()へ置換した
  • strnicmp()を_strnicmp()へ置換した
  • strdup()を_strdup()へ置換した
  • chdir()を_chdir()へ置換した
  • getcwd()を_getcwd()へ置換した
  • strupr()を_strupr()へ置換した
  • time_tの64ビット化にともなう警告メッセージを抑止した
  • Window setupでのカラー変更がリアルタイムに行われるようにした。
  • マクロ動作の高速化のため、マクロウィンドウへのコマンド表示をウェイト系に限定した。
  • SSH2対応TTSSH(2.19)へ差し替えた
  • TeraTerm Menu 1.04へ差し替えた
    • VS2005でビルドエラーとなる問題を修正した
    • EXEファイルのバージョン情報を更新した
  • Oniguruma 4.0.1へ差し替えた

2006.2.11 (Ver 4.27)

  • マクロで使用できる変数の個数を128から256へ、ラベルの個数を256から512へ拡張した。
  • TEK windowをアクティブにした状態で pause マクロを使用すると、CPU使用率が100%となる現象への暫定対処を施した(workaround)。
  • Fileメニューから TeraTerm Menu を削除した。
  • Broadcast Command使用時にウィンドウがちらつく動作を改善した。
  • Setupメニューのアクセラレータキーを変更した。
  • マクロコマンド 'mpause' を追加した。ミリ秒単位での休止が可能となる。
  • サンプルマクロ mpause.ttl を追加した。
  • マクロコマンド 'random' を追加した。乱数の生成が可能となる。
  • サンプルマクロ random.ttl を追加した。
  • CygTerm 1.06_02へ差し替えた。BabyDaemon氏に感謝します。

2006.1.21 (Ver 4.26)

  • ウィンドウへのドラッグ＆ドロップでファイル送信する前に、問い合わせダイアログを出すようにした。
  • LogMeTT 2.8.1へ差し替えた
  • Oniguruma 3.9.1へ差し替えた

2005.12.13 (Ver 4.25)

  • 設定内容がteraterm.ini以外のファイル名で保存できないバグを修正した。

2005.12.1 (Ver 4.24)

  • シリアル接続のCOM最大ポートを99まで拡張した。
  • シリアル接続のボーレートに230400, 460800, 921600を追加した。
  • LogMeTT 2.7.4へ差し替えた

2005.11.3 (Ver 4.23)

  • teraterm.iniを保存するときに書き込みできるかどうかの判別を追加した。
  • TCP/IP setupダイアログの"Term type"を常に有効とするようにした。

2005.10.21 (Ver 4.22)

  • システム変数 'groupmatchstr1'～'groupmatchstr9' を追加した。正規表現でグループマッチしたパターンが格納される。
  • Cygwin接続の複製ができるようにした
  • Mac OS X向けUTF-8において、濁点が正しく表示されないことがある問題を修正した。
  • SSH2対応TTSSH(2.18)へ差し替えた
  • TeraTerm Menuをマルチモニタ環境で使用すると、ポップアップメニューが正しいモニタに表示されないバグを修正した（TeraTerm Menu 1.03）。
  • LogMeTT 2.7.2へ差し替えた

2005.10.7 (Ver 4.21)

  • スクロールレンジを 16bit から 32bit へ拡張した
  • マクロコマンド 'waitregex' を追加した。正規表現を使った文字列の wait が可能となる。
  • システム変数 'matchstr' を追加した。正規表現でマッチしたパターンが格納される。
  • サンプルマクロ wait_regex.ttl を追加した。
  • 正規表現ライブラリ Oniguruma のバージョンをバージョン情報に追加した

2005.9.5 (Ver 4.20)

  • SSH2対応TTSSH(2.17)へ差し替え

2005.8.27 (Ver 4.19)

  • macroの除算結果が不正となるバグを修正した。白井隆氏に感謝します。
  • ttpmacro.exeのプロセス優先度は、ログ採取中も下げないようにした。
  • LogMeTT 2.6.1へ差し替えた

2005.7.24 (Ver 4.18)

  • マクロ実行中のダイアログに行番号と内容を表示するようにした。
  • Mac OS X向けUTF-8において、濁点が正しく表示されないことがある問題を修正した。
  • LogMeTT 2.5.6へ差し替えた

2005.5.29 (Ver 4.17)

  • <ESC>[J(Clear screen from cursor-position up to end)処理時において、カーソルが左上隅を指している場合にのみ、カレントバッファをスクロールアウトさせるようにした。

2005.5.28 (Ver 4.16)

  • ログ種別のplain textの情報をteraterm.iniに LogTypePlainText として残すようにした。
  • CygTermの設定を Additional settings ダイアログに追加した。
  • ブロック選択のキーバインドを Shift+MouseDrag から Alt+MouseDrag へ変更した。
  • ページをまたぐテキスト選択（選択済みテキスト領域の伸縮）をサポートした。選択範囲の開始位置は左クリック、終了位置はShift + 左クリックで指定する。
  • <ESC>[Jによる画面クリア時にカレントバッファをスクロールアウトさせるようにした。
  • マクロ使用時にCPU使用率が100%となる現象への暫定処置を施した（sendln後に無条件に100ミリ秒のスリープを追加）。

2005.4.24 (Ver 4.15)

  • ALT + Enterキー（トグル）押下でウィンドウを最大化できるようにした。
  • Eterm lookfeel alphablendの設定内容を teraterm.ini へ保存するようにした。
  • Eterm lookfeel alphablendのon/offを Additional settings ダイアログ上から設定できるようにした。
  • Windows98においてフォントがインストールされない問題を修正した。Boris氏に感謝します。
  • ライセンス文を追加した
  • マクロヘルプファイル（英語版）を更新した。Boris氏に感謝します。
  • LogMeTT 2.4.4へ差し替えた

2005.4.9 (Ver 4.14)

  • URL文字列をダブルクリックするとブラウザが起動するしかけを追加した。monkey magic氏に感謝します。teraterm.iniにURLColor, EnableClickableUrlを追加。
  • エスケープシーケンス（ESC[39m:foreground color reset, ESC[49m:background color reset）をサポートした。これによりscreen上でw3mを使用した場合、色が戻らない現象が改善される。岩本氏に感謝します。
  • Additional settingsでのマウスカーソル種別を設定時に変更されるようにした。
  • バージョン情報ダイアログのURLをダブルクリックすると、ブラウザが起動されるようにした。
  • 制限事項「SSHに対する"Duplicate session"では常にSSH2での接続を試みる」を解除した。
  • "Duplicate session"においてSSH自動ログインを行うようにした。
  • LogMeTT 2.4.3へ差し替えた

2005.3.31 (Ver 4.13)

  • 2つめ以降のTeraTermプロセスにおいて、バージョン情報が正しく取得されない問題へ対処した。
  • マウスの右ボタン押下でのペーストを禁止する設定を teraterm.ini(DisablePasteMouseRButton) および Additional settings に追加した。
  • ZMODEMの送信において、ファイルサイズが20MBを超えるとクラッシュする問題へ対処した。Thorsten Behrens氏に感謝します。
  • LogMeTT 2.4.2へ差し替え。

2005.3.13 (Ver 4.12)

  • ttermpro.exeのバージョン情報が古いままだったので修正した。
  • 全角文字（日本語）が行末をまたぐ場合、上方へスクロールしてしまう問題へ対処した（岩本氏パッチ）。
  • タイトルバーに日本語を設定する場合、Shift_JIS(CP932)へ変換するようにした（EUC-JPのみに対応）。
  • LogMeTT 2.1.2へ差し替え。

2005.2.22 (Ver 4.11)

  • ログ採取中に File -> log がグレイ表示にならない問題へ対処した。
  • Eterm風透過ウィンドウ機能を追加した。AKASI氏に感謝します。
  • VisualStyle(WindowsXP)に対応させた
  • TitleFormatにformat ID=13を新規追加した
  • キャプション表示において、COM5以上の表示に対応した。
  • ログファイルの種別に"plain text"を追加した。当該オプションを有効にすると、ログファイルにASCII非表示文字を採取しないようになる。ただし、例外キャラクタ(HT, CR, LF)は採取対象。
  • TTProxy(2004/1/22版)の新規追加。蛭子屋双六氏に感謝します。
  • LogMeTT 2.02βの新規追加。Boris氏に感謝します。
  • LogMeInを削除した
  • Additional settingsをtab control化した
  • ログ採取時のデフォルト名を"teraterm.log"に変更した

2005.1.30 (Ver 4.10)

  • 最大化ボタンを有効にした
  • TeraTerm Menu, LogMeInのアクセラレータキーを削除した
  • ログ採取時のデフォルト名(log_YYYYMMDD_HHMMSS.txt)を設定するようにした
  • Broadcast commandメニューをControl menu配下に追加した。
  • バージョンダイアログにホームページのURLを追加した。
  • "Save setup"ダイアログの初期ファイルディレクトリを、読み込まれたteraterm.iniがある箇所へ固定するよう変更した。
  • "File"配下に"View Log"メニューを追加した。
  • "Additional settings"に"View Log Editor"ボックスを追加した。
  • teraterm.iniの[Tera Term]セクションに、"ViewlogEditor"エントリを追加した。
  • SSH2対応TTSSH(1.08)へ差し替え
  • TeraTerm Menu 1.02へ差し替え。
    • デフォルトオプションに漢字コード(/KT=UTF8 /KR=UTF8)を追加した。
    • SSH自動ログインにおいて、ユーザパラメータを指定できるようにした。
    • SSH自動ログインにおいて、マクロの指定を削除した。
    • SSH自動ログインにおいて、秘密鍵ファイルの指定をできるようにした。

2005.1.10 (Ver 2.3+UTF-8 2.09)

  • マルチディスプレイ環境において、ウィンドウのリサイズを行うと、プライマリディスプレイへ戻ってしまう現象に対処。パッチ作成に感謝します＞安藤弦彦氏

2005.1.6 (Ver 2.3+UTF-8 2.08)

  • ログ採取のダイアログをオープンダイアログからセーブダイアログへ変更した
  • "Save setup"ダイアログの初期ファイルディレクトリをプログラム本体がある箇所へ固定した
  • SSH2対応TTSSH(1.07)へ差し替え

2005.1.5 (Ver 2.3+UTF-8 2.07h)

  • SSH2対応TTSSH(1.06)へ差し替え

2004.12.27 (Ver 2.3+UTF-8 2.07g)

  • SSH2対応TTSSH(1.05)へ差し替え

2004.12.23 (Ver 2.3+UTF-8 2.07f)

  • SSH2対応TTSSH(1.04)へ差し替え

2004.12.18 (Ver 2.3+UTF-8 2.07e)

  • SSH2対応TTSSH(1.03)へ差し替え

2004.12.16 (Ver 2.3+UTF-8 2.07d)

  • SSH2対応TTSSH(1.02)へ差し替え

2004.12.15 (Ver 2.3+UTF-8 2.07c)

  • フォントのファイル属性の見直し
  • インストール時にTeraTerm関連のプロセスを殺すようにした

2004.12.14 (Ver 2.3+UTF-8 2.07b)

  • teraterm.iniのスクロールバッファの初期値を 20000 へ変更。
  • フォントのインストール時に、ファイル属性を ReadOnly にするようにした。
  • TeraTerm Menu 1.01へ差し替え。ttermpro.exeの初期フォルダパスをカレントディレクトリに変更。

2004.12.11 (Ver 2.3+UTF-8 2.07a)

  • SSH2対応TTSSH(1.01)へ差し替え

2004.12.8 (Ver 2.3+UTF-8 2.07)

  • "External setup"をsetup menu配下へ"Additional settings"として移動
  • File menuに"Duplicate session"を追加（/DUPLICATEオプションを追加）
  • ttpmacro.exeのプロセス優先度は、ログ採取中のみに下げるようにした。
  • 行が連結している場合は、ログファイルに改行コードを含めないようにした（EnableContinuedLineCopy機能が有効の場合のみ）。
  • スクロールバッファの最大ライン数を400000までに拡張した。
  • SSH2対応TTSSH(1.00)へ差し替え
  • LogMeIn 1.21を同梱した。収録許可をBoris氏よりいただきました。感謝します。
  • TeraTerm Menu 0.94r2(+SSH2 support 1.00)を同梱した。収録許可を早川様よりいただきました。感謝します。
  • その他細かいバグ修正

2004.11.6 (Ver 2.3+UTF-8 2.06)

  • DEC特殊フォントによる罫線描画時にゴミが残る問題を修正した。これにより、UTF-8環境では日本語以外の言語には未対応となる。また、BOLD styleを使用すると、文字列の右端が切れなくなる。
  • 2つめ以降のTeraTermの起動時にもディスクから teraterm.ini を読むようにした。
  • エクスプローラからのディレクトリのドラッグ＆ドロップに対応した。
  • READMEをBoris Maisuradze氏に英文化していただきました。感謝します。

2004.10.25 (Ver 2.3+UTF-8 2.05a)

  • SSH2対応TTSSH(1.00 alpha4)へ差し替え

2004.10.11 (Ver 2.3+UTF-8 2.05)

  • MFC7.1 runtimeを同梱した
  • 環境変数 TERATERM_EXTENSIONS の設定有無に関わらず、常に TTSSH をロードするようにした。
  • 半角カナのUTF-8化が漏れていたのを修正した
  • INIファイルにおいてTTSSHが有効になっていると、Cygtermがうまく起動されない問題への対処（/nosshオプションを追加）。
  • SSH2対応TTSSH(1.00 alpha2)を同梱した

2004.9.29 (Ver 2.3+UTF-8 2.04a)

  • 配布形式をパッチからバイナリへ変更した。
    TeraTerm原作者（寺西様）より許可をいただきました。感謝します。

2004.9.5 (Ver 2.3+UTF-8 2.04)

  • ログ採取中のマクロ実行が停止することがある問題への対処
  • UTF-8化以降に追加した機能をGUIから設定できるようにした（Edit - External setupを追加）
  • ANSI Colorの設定内容をiniファイルへ保存するようにした

2004.8.6 (Ver 2.3+UTF-8 2.03)

  • Cygwin接続のアクセラレータキーに"Alt + G"を割り当てた
  • ログ採取ダイアログにファイル名のフルパス表示を追加した
  • ログ採取中にファイルへコメントを追加できるようにした
  • SetLayeredWindowAttributes() APIを静的リンクから動的ロードへ変更した（NT4.0対応）。
  • 差分ファイル作成ツールを WDiff から udm へ変更した

2004.4.12 (Ver 2.3+UTF-8 2.02)

  • Mac OS X(HFS+)向けUTF-8をサポート
  • 日本語以外の言語表示をサポート（ロケールとコードページ設定の追加）
  • 日本語以外の言語入力をサポート（imm32.libをリンク）
  • BOM(Byte Order Mark)を削除するようにした
  • その他細かいバグフィックス

2004.3.19 (Ver 2.3+UTF-8 2.00a)

  • READMEの記述を修正
  • READMEの英文化

2004.3.18 (Ver 2.3+UTF-8 2.00)

  • ベースソースをオリジナルからIPv6版へ変更した。
  • 半透明ウィンドウに対応した
  • Cygwin接続に対応した
  • バッファの全選択をできるようにした
  • マウスカーソルの種別を設定できるようにした
  • WinSock1.1から2.2へ切り替えた
  • その他細かいバグフィックス

2004.3.13 (Ver 2.3+UTF-8 1.02)

  • ホスト名の最大長を80へ戻した
  • 送信にもUTF-8対応した

2004.3.9 (Ver 2.3+UTF-8 1.01a)

  • SSHの利用に関する記述をREADMEに記載。
  • SSHはTTSSH 1.5.4 + IPv6 0.81にて動作確認を行った。

2004.3.6 (Ver 2.3+UTF-8 1.01)

  • ホイールマウスに対応した
  • /KR オプションに"UTF8"を追加した
  • UTF-8変換機能の強化（テーブル引きを追加）
  • ホスト名の最大長を80から1024へ拡張

2004.3.2 (Ver 2.3+UTF-8 1.00)

  • 初公開

Tera Term (オリジナル版)

1998.3.10 (Ver 2.3 & 1.4)

  • COM4 より大きいシリアルポート
  • Baud rate 14400
  • ユーザー・ショートカット・キー "EditCLS", "EditCLB", "ControlOpenTEK", "ControlCloseTEK"
  • マクロコマンド "clearscreen", "code2str", "enablekeyb", "filemarkptr", "fileseekback", "filestrseek2", "findclose", "findfirst", "findnext", "getdir", "kmtfinish", "kmtget", "makepath", "sendkcode", "setdir", "setexitcode", "str2code", "testlink"
  • マクロ演算子 "%"
  • マクロ: どの行でもコメントが置けるようになる
  • エスケープシーケンスによる印刷で直接ポートに出力
  • 特別オプション "AutoFileRename", "BackWrap", "Beep", "EnableStatusLine", "MaxComPort", "PassThruDelay", "PassThruPort", "PrnConvFF", "RussPrint", "TitleFormat"
  • 新 [Setup] TCP/IP ダイアログボックス
  • ホストリストにホスト名を自動追加
  • ロシア語文字セット追加 (CP 866, ISO 8859-5)
  • 新しいアイコン
  • 長方形領域内の文字選択
  • ユーザー定義キーでメニューコマンド実行
  • Tera Term extension interface.

1997.7.2 (Ver 2.2)

  • バグ修正

1997.6.30 (Ver 2.1)

  • インストーラー/アンインストーラー
  • 32-bit版 TTPMACRO.EXE と KEYCODE.EXE
  • ロシア語モード
  • [Edit] Copy table, [Setup] Load key map, [Window] メニュー
  • VT 端末のステータスライン
  • エスケープシーケンスによる印刷
  • ANSI フルカラー
  • コマンドラインオプション追加 (/I, /L=<log file>, /LA=<language>, /M=<macro file>, /V)
  • コマンドラインでホスト名のすぐ後のポート番号(例: "myhost.mydomain 23")
  • Tera Term 設定ファイルの読み込み専用オプション追加
  • キーボード設定ファイルの項目追加
  • ユーザー定義キーによるマクロ実行
  • TTPMACRO コマンドラインオプション追加 (/I, /V)
  • マクロコマンド多数追加

1996.6.7 (Ver 2.0)

  • 32-bit版

1996.6.7 (Ver 1.3)

  • Telnet での break 信号
  • キーボード設定ファイルの新項目(SendBreak=)
  • ポート番号付きホスト名(例: "myhost.mydomain:23")
  • コマンドライン(ホストリスト)中のコメント
  • [Setup] Serial port ダイアログボックス変更
  • Alt+マウス右ボタン。

1995.12.18 (Ver 1.2)

  • Quick-VAN
  • マクロコマンド多数追加 (制御構造, subroutine, include file)
  • 日本語/英語モード
  • マウス操作法変更
  • scroll buffer on/off
  • キーボード設定ファイルに [Shortcut keys] セクション追加
  • ファイル転送ディレクトリ保存可能になる
  • コマンドラインオプション追加 (/FD=, /H)
  • Read-only options 追加 (QVLog=, QVWinSize=, ZmodemAuto, BPAuto, VTFontSpace=, HideTitle=)。

1995.7.22 (Ver 1.1)

  • マクロコマンド多数追加(ファイル処理、文字列処理)
  • メタキー
  • 設定ファイルのread-only option (ConfirmDisconnect=)
  • log と file send、log とプロトコル転送の同時実行が可能になる。

1995.7.3 (Ver 1.0)

  • ZMODEM
  • B-Plus
  • DEC 特殊フォント
  • bold font 使用/不使用
  • telnet 接続中に終了するときの確認
  • Telnet AYT
  • bold/blink 属性の文字色設定改良
  • "Terminal size = window size" オプション
  • コマンドラインオプション追加 (/W=, /X=, /Y=, /KR=, /KT=)
  • 設定ファイルのread-only options (XmodemLog=, BPLog=, ZmodemLog=, ZmodemEscCtl=, ZmodemDataLen=, ZmodemWinSize=)
  • マクロ新機能 (pause/start/endボタン, システム変数追加, コマンド多数追加, 文字列定数のASCIIコードによる表現)。

1995.4.25 (Ver 0.9)

  • XMODEM
  • 3D dialog box (CTL3D.DLL対応)
  • XTERM sequence (titleの変更)
  • ファイルマネージャから drag&drop でtext file send
  • Popup menu
  • bold/blink のカラー設定 (bold font廃止)
  • ANSI escape sequence (カラー指定, カーソル保存/復帰)
  • log&file send改良 (binary, append, pause/start)
  • log file再生機能
  • keyboard設定ファイルのファイル名を指定
  • マクロコマンド追加
  • プリンタフォント指定 (read-only option)
  • C1制御文字無視する/しない (read only option)
  • telnet binary option (read-only option)。

1995.2.17 (Ver 0.8)

  • マクロ (Tera Term Language)。

1995.1.27 (Ver 0.7)

  • Local echo
  • VT<->TEK auto change enable/disable
  • TCP port#設定
  • telnet enable/disable
  • TEK とファイル転送機能を DLL 化
  • TEK color emulation
  • TEK line style
  • F10 key
  • コマンドライン変更。

1994.10.31 (Ver 0.6)

  • VT200 のescape sequenceによる key 設定
  • User キー定義
  • 'Help' button on dialog box
  • read-only options。

1994.10.3 (Ver 0.5)

  • JIS漢字
  • ファイル転送機能 (protocol なし text, Kermit)
  • window sizeとterminal size を独立化
  • IME 制御
  • 設定項目の追加
  • dinamic link libraries
  • XWINDOW 風 copy&paste
  • transmit delay (serial port)
  • answerback
  • host list
  • ".tt" file 廃止
  • コマンドライン変更。

1994.5.16 (Ver 0.4)

  • TEK のcopy/paste
  • 印刷機能 (VT, TEK)
  • 表示色設定 (VT, TEK)
  • VT の画面サイズ設定
  • telnet NAW option
  • VT200/300 機能の一部
  • keyboard 設定
  • Clear page
  • Reset terminal
  • Send break
  • Reset port。

1994.3.29 (Ver 0.3)

  • Telnet option negotiation
  • TEK GIN
  • window caption 設定
  • Font 設定
  • code 変換設定
  • BS key 変換設定
  • File Open/Save
  • New session
  • Clear buffer (VT)
  • Clear screen (TEK)
  • ".tt" file。

1994.X.X (Ver 0.2)

  • Port 設定 dialog
  • Help の原形

1994.X.X (Ver 0.1)

  • TCP port (Windows Sockets) 対応
  • MDI 仕様やめる
  • 可能なセッション数は、serial port は4つ,TCP はメモリと Windows Sockets の限界まで。

1994.2.24 (Ver 0.0)

  • MDI 仕様
  • Serial port のみ最大4セッション
  • VT100, TEK4010 の emulation の原形
  • copy&paste 機能
  • '.ini'file。

TTSSH

2021.6.5 (Ver 2.92)

  • 変更
    • SSH2 の共通鍵暗号方式に chacha20-poly1305@openssh.com を追加した。
    • PuTTY の秘密鍵ファイル形式バージョン3 (PPK3) に対応した。
  • バグ修正
    • Windows Vista以降でVirtual Storeが有効の場合でかつHost key rotationが有効の場合、known_hostsから元々あったホスト鍵を削除してしまう問題を修正した。
    • Windows Vista以降でVirtual Storeが有効の場合、ホスト鍵の種類が同じで、鍵の内容が異なるときに、known_hostsからの鍵削除ができない問題を修正した。
    • D&DによるSCP送信で、多数のファイルを一括送信するとエラーになる問題を修正した。
    • ユーザ認証が完了した直後にVTウィンドウのサイズを変更したり Send break を送信したりすると、サーバから切断される問題を修正した。
    • システムのメモリが不足している時、鍵交換時のホスト鍵による署名検証で不正な署名を正しい物として扱う可能性が有った問題を修正した。
    • SSH認証ダイアログで一部のコントロールが常に有効になる問題を修正した。
  • その他
    • OpenSSL 1.1.1dから1.1.1kへ差し替えた。

2019.12.7 (Ver 2.91)

  • 変更
    • New connectionダイアログの表記を「Protocol」から「IP version」に、「UNSPEC」を「AUTO」に変更した。
    • ユーザ認証ダイアログの表示タイミングをknown_hostsダイアログの後に変更した。
    • SetupダイアログにLogLevelを追加した。
    • Setupダイアログ、Authentication Setupダイアログ、Forwardingダイアログ、Key Generatorダイアログにヘルプボタンを追加した。
    • known_hostsダイアログおよびユーザ認証ダイアログの表示中に、SSHサーバ側からネットワーク切断された場合、ダイアログを自動で閉じるようにした。
    • SCP でローカル側のファイルが開けなかった時のメッセージを変更した。
  • バグ修正
    • メッセージボックスの表示に同一メッセージが複数含まれることがある問題を修正した。
    • known_hostsダイアログの表示中にSSHサーバ側からネットワーク切断されると、アプリがクラッシュすることがある問題を修正した。
    • SSH1: /nosecuritywarningオプションが機能していなかった問題を修正した。
    • ユーザ認証ダイアログで、ユーザ名を入力後のTABキーでパスフレーズ欄への移動に遅延がある問題を改善した。
    • ユーザ認証ダイアログで、ユーザ名を空欄にした後、TABキーで右側のプルダウンメニューにフォーカス移動しないことがある問題を修正した。
    • ポート転送で、クライアントにデータを送り終わる前に接続を切断する場合がある問題を修正した。
    • 接続するまでの間、正しくないプロセスIDがTTSSH.LOGに記録される問題を修正した。
    • 認証バナーにUS-ASCII以外の文字が含まれる時に正しく表示できない問題を修正した。
  • その他
    • OpenSSL 1.0.2sから1.1.1dへ差し替えた。

2019.08.31 (Ver 2.90)

  • バグ修正
    • SSH2: ポート転送でSSH通信が遅い場合において、消費メモリが肥大化してアプリが落ちる問題を修正した。
    • SSH2: SCP 転送ダイアログを閉じるときに、ファイル転送ディレクトリ設定・SCP送信先パス設定が更新されないことがある問題を修正した。
    • SSH2: Windows95/98/MeでSCP通信を開始すると、アプリが落ちる問題を修正した。
    • SSH1: 接続先のポート番号が22以外で、新規にknown_hostsファイルへホスト鍵を書き込む時、アプリが落ちることがある問題を修正した。
    • SSH1: rhosts認証ができなくなっていた問題を修正した。

2019.06.15 (Ver 2.89)

  • 変更
    • デフォルトのユーザ名に Windows のログオンユーザ名を設定できるようにした。
      • teraterm.ini に DefaultUserType エントリを追加した。デフォルトは 1。(指定したデフォルトユーザ名を使う)
    • 認証ダイアログのパスフレーズ入力欄で制御文字を使用するかどうか選択できるようにした。
  • バグ修正
    • 設定の保存時、CipherOrder, MacOrder 設定にゴミが付加される問題を修正した。
    • サーバの認証情報メッセージで echo フラグが 1 の時にもキーボードインタラクティブ認証ダイアログでパスワードがマスクされる問題を修正した。
  • その他
    • OpenSSL 1.0.2sへ差し替えた。

2019.02.28 (Ver 2.88)

  • 変更
    • 接続開始時にシェルセッションを開始しない為の /ssh-N コマンドラインオプションを追加した。
    • SSH鍵生成ダイアログの bcrypt KDF チェックボックスのデフォルトを on に変更した。
  • バグ修正
    • 旧パスワードが空文字列の時、SSH パスワード変更ダイアログでパスワードが変更出来ない問題を修正した。
  • その他
    • OpenSSL 1.0.2rへ差し替えた。

2018.11.30 (Ver 2.87)

  • その他
    • OpenSSL 1.0.2qへ差し替えた。

2018.08.31 (Ver 2.86)

  • バグ修正
    • コネクションの切断後、SSH Forwarding ダイアログで間違った設定が表示される問題を修正した。
  • その他
    • OpenSSL 1.0.2pへ差し替えた。

2018.05.31 (Ver 2.85)

  • 変更
    • /auth= コマンドラインオプションで keyboard-interactive を受け付けるようにした。
  • バグ修正
    • SSH サブシステムへの接続後に、通常の SSH (シェル)セッションが開けない問題を修正した。
  • その他
    • OpenSSL 1.0.2oへ差し替えた。

2018.02.28 (Ver 2.84)

  • 変更
    • SSH_MSG_USERAUTH_BANNER SSH メッセージに対応した。
      • teraterm.ini に AuthBanner エントリを追加した。デフォルトは 1。(VTウィンドウで表示)
    • Diffie-Hellman group exchange 鍵交換方式での最小グループサイズを 2048 に変更した。(RFC 8270)
      • 以前の動作に戻すには、teraterm.ini の GexMinimalGroupSize エントリを 1024 にする。
  • バグ修正
    • 暗号方式等のネゴシエーション時、サーバの提案が長すぎる時に落ちる問題を修正した。
    • 暗号方式で aes128-gcm@openss.com または aes256-gcm@openssh.com を使用時、MAC 方式のネゴシエーションが行えなかった時に接続を切る問題を修正した。
    • シリアルポート接続時に [File] メニューの [SSH SCP] が無効にならない問題を修正した。
    • 暗号方式で aes128-gcm@openss.com または aes256-gcm@openssh.com を使用時、使用していない MAC 方式が "About TTSSH" ダイアログに表示される問題を修正した。
    • "About TTSSH" ダイアログのサーバホスト鍵の指紋に、現在の接続に使用されていない方式の同一サーバの鍵が表示されることがある問題を修正した。
  • その他
    • OpenSSL 1.0.2nへ差し替えた。

2017.11.30 (Ver 2.83)

  • 変更
    • SSH2 の共通鍵暗号方式として以下をサポートした。
      • aes128-gcm@openssh.com
      • aes256-gcm@openssh.com
    • SSH2 の MAC アルゴリズムとして以下をサポートした。
      • hmac-sha1-etm@openssh.com
      • hmac-sha2-256-etm@openssh.com
      • hmac-sha2-512-etm@openssh.com
      • hmac-ripemd160-etm@openssh.com
      • hmac-md5-etm@openssh.com
      • hmac-sha1-96-etm@openssh.com
      • hmac-md5-96-etm@openssh.com
    • サーバに通知する端末速度を設定で変更できるようにした。
      • teraterm.ini に TerminalSpeed エントリを追加した。デフォルトは38400。
      • サーバに通知する端末速度のデフォルトを 38400bps に変更した。
  • その他
    • OpenSSL 1.0.2mへ差し替えた。

2017.08.31 (Ver 2.82)

  • 変更
    • SSH2 公開鍵認証で、PuTTY 形式の ECDSA 秘密鍵および Ed25519 秘密鍵に対応した。
    • SSH2 公開鍵認証で、SECSH(ssh.com) 形式の ECDSA 秘密鍵に対応した。
    • Dynamic ポート転送転送 (SOCKS Proxy) に対応した。
    • 一部のデバッグログの出力形式を変更した。
  • バグ修正
    • SSH2 接続時、リモートからローカルへのポート転送をサーバ接続後に追加しても有効にならない問題を修正した。
    • SSH1 接続時の端末サイズ変更通知で、正しい端末サイズ(ピクセル数)を通知するように修正した。
    • SSH_MSG_UNIMPLIMENTED メッセージを正しく扱えていない問題を修正した。
    • デバッグログでゴミが出力される問題を修正した。
  • その他
    • OpenSSL 1.0.2lへ差し替えた。
    • PuTTY 0.70 へ差し替えた。

2017.05.31 (Ver 2.81)

  • 変更
    • パスワード認証時のパスワード変更に対応した。
    • 接続時にシェルではなくサブシステムを起動する機能を追加した。
      • コマンドラインオプションに /ssh-subsystem オプションを追加した。
    • リモートホストが転送したエージェントを使用した時に通知する機能を追加した。(Windows Me, 2000 以上)
  • バグ修正
    • エージェント転送有効時、リモートホストがエージェントに大きなパケットサイズのリクエストを送ってきた時に落ちる問題を修正した。
  • その他
    • PuTTY 0.69 へ差し替えた。

2017.02.28 (Ver 2.80)

  • バグ修正
    • SCPによるファイル受信が失敗した場合、ローカルファイルの残骸を削除するようにした。
  • その他
    • OpenSSL 1.0.2kへ差し替えた
    • zlib 1.2.11へ差し替えた

2016.11.30 (Ver 2.79)

  • バグ修正
    • teraterm.iniからのOrder(CipherOrder, KexOrder, HostKeyOrder, MacOrder, CompOrder)読み込み処理において、メモリ破壊が発生する問題を修正した。
    • SCPによるファイル受信中、Tera Term(TTSSH)が応答なしになることがある問題を修正した。
  • その他
    • OpenSSL 1.0.2jへ差し替えた

2016.08.31 (Ver 2.78)

  • 変更
    • scp でのファイル受信で、ファイル名に使えない文字が含まれていた場合に、その文字を _ に置き換えるようにした。
    • ScpSendDir のデフォルト値を "~/" から "" (空文字列) に変更した。
    • コマンドラインオプションの識別を厳密にした。/ssh-A などの一部のオプションで /ssh-Axx のように後ろに余計な文字列が付いていいてもオプションとして扱っていたが、これを扱わなくした。

2016.05.31 (Ver 2.77)

  • 変更
    • TTSSH アイコン(ttsecure.ico)を新しくした。坂本龍彦氏に感謝します。
  • バグ修正
    • blowfish-ctr 共通鍵暗号で使用する鍵の鍵長を RFC 4344 に合わせて 256 ビットに変更した。
    • 鍵交換方式ですべての方式を有効にしている時に最後の方式が使われない問題を修正した。
    • X11転送の開始が接続エラー(WSANO_RECOVERY: 11003)で失敗することがある問題を修正した。
  • その他
    • OpenSSL 1.0.2hへ差し替えた
    • PuTTY 0.67 へ差し替えた

2016.03.05 (Ver 2.76)

  • 変更
    • SSH2 の diffie-hellman-group14-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512 鍵交換方式に対応した。
    • 乱数に使う arc4random() 関数の実装を OpenSSL の RC4 を使ったものから ChaCha20 ベースのものに置き換えた。
  • その他
    • OpenSSL 1.0.2gへ差し替えた

2015.12.01 (Ver 2.75)

  • 変更
    • known_hostsダイアログおよび"About TTSSH" ダイアログにおいて、サーバホスト鍵の指紋を表示するときに使うハッシュアルゴリズムを、MD5 だけでなく SHA256 も選択できるようにした。
    • DNS によるホスト鍵の確認(SSHFP)で ED25519 鍵に対応した。
    • TERATERM.INI の設定値で指定されていない鍵交換・ホスト鍵・暗号化・MAC・圧縮方式の、プログラムでの挿入位置を変更した。
      • プログラムのデフォルトで有効な方式...使用される方式の末尾に追加される
      • プログラムのデフォルトで無効な方式...使用されない方式の末尾に追加される
    • コマンドラインオプションのパース処理を変更し、パラメータの途中からでも '"' によるクオートを可能にした。
  • バグ修正
    • KDF フォーマットで保存した SSH 秘密鍵が OpenSSH で読み込めない問題を修正した。
    • ホスト公開鍵の置き換え・ホスト公開鍵の自動更新後に About TTSSH ダイアログを表示すると落ちる問題を修正した。
  • その他
    • PuTTY 0.66へ差し替えた

2015.09.01 (Ver 2.74)

  • 変更
    • "SSH 設定" ダイアログにホスト公開鍵の更新(Hostkey rotation)を追加した。
    • ホスト公開鍵の自動更新(OpenSSH 6.8以降)の確認ダイアログを、ホスト鍵の確認(セキュリティ警告)ダイアログと同様のものに変更した。
    • Diffie-Hellman group exchange 鍵交換方式で、要求するグループサイズの最小値を指定できるようにした。
      • teraterm.ini に GexMinimalGroupSize エントリを追加した。デフォルトは0。
    • デフォルトの優先する暗号アルゴリズムの順で、Arcfour系の暗号が無効になるよう優先順位を変更した。
    • X11転送失敗時のエラーメッセージにエラー番号を含めるようにした。
  • バグ修正
    • Tera Term 4.87(TTSSH 2.73) で一部の Cisco の機器へ接続できない問題への処置を追加した。
    • ホスト公開鍵の自動更新によるknown_hosts更新後、"About TTSSH" ダイアログのfingerprint表示で落ちる問題を修正した。
  • その他
    • OpenSSL 1.0.2dへ差し替えた
    • PuTTY 0.65へ差し替えた

2015.05.31 (Ver 2.73)

  • 変更
    • ホスト公開鍵の自動更新(OpenSSH 6.8)に対応した。
      • teraterm.iniに UpdateHostkeys エントリ(ホスト公開鍵の更新有無)を追加した。デフォルトはオフ。
    • /f=, /ssh-f=, /ssh-consume= コマンドラインオプションをほかのオプションよりも先に読み込むようにした。
    • Diffie-Hellman group exchange 方式での鍵交換で要求するグループのサイズを、NIST SP 800-57 での基準に合わせて増やした。
  • バグ修正
    • OpenSSH 6.8に接続できない問題を修正した。
    • 各種アルゴリズム(CipherOrder, KexOrder, HostKeyOrder, MacOrder, CompOrder)の一番先頭に0(disabled line)が来ると、アプリケーションが落ちる問題を修正した。
    • コマンドラインオプションの ; 以降がコメントとして認識されない問題を修正した。
    • セッションの複製時に引き渡すファイル名・パスワード値に ; が含まれるときにクォートされない問題を修正した。
  • その他
    • PuTTY 0.64へ差し替えた
    • OpenSSL 1.0.2aへ差し替えた

2015.02.28 (Ver 2.72)

  • 変更
    • SSH 鍵生成ダイアログで秘密鍵を保存するとき、bcrypt KDF のラウンド数を指定できるようにした
    • X11転送を指定するコマンドラインオプション /ssh-X で、転送先ディスプレイを指定できるようにした。
      • teraterm.iniに X11Display エントリを追加した。デフォルトは空。
  • バグ修正
    • KDF フォーマットでパスフレーズのない SSH 秘密鍵を使って公開鍵認証できない問題を修正した
    • 生成した SSH 秘密鍵をパスフレーズなしの KDF フォーマットで保存するときに暗号化してしまう問題を修正した
  • その他
    • OpenSSL 1.0.2へ差し替えた

2014.11.30 (Ver 2.71)

  • 変更
    • SSH切断シーケンスの処理を変更した。
  • バグ修正
    • SSHホスト鍵の置換時、Tera Term(TTSSH)が落ちる問題を修正した。
  • その他
    • OpenSSL 1.0.1jへ差し替えた

2014.08.31 (Ver 2.70)

  • 変更
    • SCP でファイルを受信したときに、ファイルの更新日時を反映するようにした。
    • エラーポップアップメッセージを抑止する設定を teraterm.ini の DisablePopupMessage エントリに追加した。
  • バグ修正
    • SCPファイル受信処理をキャンセルすると、Tera Term(TTSSH)がストールする問題を修正した。
    • ファイル名に空白や括弧が含まれていると、SCPファイル受信が失敗する問題を修正した。
    • タスクスケジューラからSCP処理が行えない問題を修正した。
  • その他
    • OpenSSL 1.0.1iへ差し替えた

2014.06.01 (Ver 2.69)

  • 変更
    • Curve25519楕円曲線DH（Diffe Hellman）アルゴリズムを使った鍵交換をサポートした。
      • Key Generatorで ED25519 鍵の作成に対応した。
      • Key Generatorで RSA/DSA/ECDSA 秘密鍵ファイルに bcrypt KDF 形式を選択可能とした。
      • Host Key algorithmに ED25519 を追加した。teraterm.ini の HostKeyOrder エントリを変更した。
    • "About TTSSH" ダイアログにホスト公開鍵の指紋およびランダムアートを表示するようにした。
    • 端末オプションのONLCR設定をサーバに通知するようにした。
  • バグ修正
    • 非暗号化PKCS #8形式の鍵を読み込めない問題を修正した。
    • ユーザ認証のダイアログを表示中に、サーバ側からネットワークが切断されると、アプリケーションフォルトで落ちる問題を修正した。
  • その他
    • OpenSSL 1.0.1gへ差し替えた

2014.02.28 (Ver 2.68)

  • バグ修正
    • SCPでファイル転送が Tera Term ウィンドウの最小化で中断される。
  • その他
    • OpenSSL 1.0.1fへ差し替えた
    • TTSSHアイコンの"T"の字を青色に変更した。

2013.11.30 (Ver 2.67)

  • バグ修正
    • SSH2 でポート転送を繰り返すと新たにポート転送接続できなくなる問題を修正した。

2013.09.01 (Ver 2.66)

  • 変更
    • SSH SCP: SCPファイル受信ディレクトリを変更した際、teraterm.iniの FileDir エントリも更新するようにした。
  • その他
    • PuTTY 0.63へ差し替えた

2013.05.31 (Ver 2.65)

  • 変更
    • SSH接続時のアイコンを指定できるようにした。
      • teraterm.iniに SSHIcon エントリを追加した。デフォルトはDefault。
      • コマンドラインオプションに /ssh-icon オプションを追加した。
  • バグ修正
    • PKCS #8形式の鍵を読み込めない問題を修正した。
    • ~/.bashrcに"stty stop undef"という定義があると、SCP送信で不正終了する問題に対処した。
  • その他
    • zlib 1.2.8へ差し替えた

2013.02.28 (Ver 2.64)

  • 変更
    • SSH2秘密鍵をパスフレーズ付きで保存する時に使用する暗号方式を3DESからAES-128に変更した。
  • その他
    • OpenSSL 1.0.1eへ差し替えた

2012.12.02 (Ver 2.63)

  • 変更
    • RFC6668(OpenSSH 6.1)で削除されたため、SSH2 の MAC アルゴリズムで hmac-sha2-256-96, hmac-sha2-512-96 のサポートを廃止した。
    • SSH2 公開鍵認証で、PuTTY 形式および SECSH(ssh.com) 形式の秘密鍵に対応した。
    • SSH Forwardingダイアログのポート番号のサービス名を追加した。
    • SSHプロトコルでは正式にサポートしているのは1024ビットであるため、SSH 鍵生成で、DSA 鍵の鍵長を 1024 ビット固定に変更した。
    • TTSSHのアイコンを緑色に変更した
  • バグ修正
    • ウィンドウサイズが小さいSSHサーバ(例:Dropbear)に対してSCP送信が失敗する問題を修正した。
    • SSH2遅延送信の不具合で、SSHデータが壊れる問題を修正した。
    • X11転送でJava Web Startを使うと、Tera TermとXmingがストールする現象への処置を行った。
    • X11転送の開始が接続エラーで失敗することがある問題を修正した。

2012.08.31 (Ver 2.62)

  • 変更
    • TERATERM.INI の [Hosts] セクションで、Hostに続く数字が飛んでいても続きを読むようにした。

2012.05.31 (Ver 2.61)

  • 変更
    • SSH Key Generatorダイアログで、公開鍵のコメントを指定出来るようにした。
    • SSH SCPダイアログで、送信先パスを指定できるようにした。
  • バグ修正
    • リモートからのデバッグメッセージ(SSH_MSG_DEBUG)を処理する箇所を追加した。
  • その他
    • OpenSSL 1.0.1cへ差し替えた
    • zlib 1.2.7へ差し替えた

2012.02.29 (Ver 2.60)

  • その他
    • 使用する PuTTY を 0.62 へ差し替えた
    • OpenSSL 1.0.0gへ差し替えた
    • zlib 1.2.6へ差し替えた

2011.12.04 (Ver 2.59)

  • 変更
    • サーバのプロトコルバージョンと指定した SSH のバージョンが一致しない場合、接続しないようにした。
    • 鍵生成ダイアログでパスワードに制御文字(^A-^_)を入力できるようにした。
    • ホスト鍵の確認(セキュリティ警告)ダイアログにDNSのSSHFP RRによる検証結果を表示する機能を追加した。
      • "SSH 設定" ダイアログにチェックボックス(Verify hostkey fingerprint by DNS)を追加した。
  • バグ修正
    • サーバのプロトコルバージョンが 1.99 の場合に、プロトコルに SSH1 を指定しても SSH2 で接続される問題を修正した。
    • X11転送で、転送先のディスプレイ番号が0以外の時に正しく転送出来なかった問題を修正した。
    • 認証に失敗したときに表示される認証ダイアログのユーザ名に、最初に入力したユーザ名ではなくデフォルトのユーザ名が入力される問題を修正した。
    • ホスト鍵のSSHFP検証を有効にしている時に、SSHFP RR が引けないとアプリケーションエラーになる問題を修正した。
  • その他
    • OpenSSL 1.0.0eへ差し替えた

2011.8.31 (Ver 2.58)

  • 変更
    • SSH2 の共通鍵暗号方式に Camellia128-CBC, Camellia128-CTR, Camellia192-CBC, Camellia192-CTR, Camellia256-CBC, Camellia256-CTR を追加した。
    • SSH2 の MAC アルゴリズムとして hmac-sha2-256, hmac-sha2-256-96, hmac-sha2-512, hmac-sha2-512-96 をサポートした。
    • "About TTSSH" ダイアログに、PuTTYのバージョンを表記するようにした。
    • 接続時に時間がかかるため、省略できる乱数の初期化を削除した。
    • ログファイルのタイムスタンプをミリ秒まで記録するようにした。
  • バグ修正
    • IPv4 フォールバックしたときに SSH 接続が無効になることがある問題を修正した。
    • ウィンドウサイズ変更通知で、正しいウィンドウサイズ(ピクセル数)を通知するように修正した。
  • その他
    • 使用する PuTTY を 0.61 へ差し替えた

2011.6.26 (Ver 2.57)

  • 変更
    • SSH鍵生成ダイアログで、鍵の種類にECDSA鍵を選んだ場合は鍵のビット数の入力ボックスを無効化するようにした。
    • KEX、ホストキー、MAC、圧縮アルゴリズムオーダーを、teraterm.iniのエントリで指定できるようにした。Setupダイアログで選択できるようにした。
      • KexOrder=56743210
      • HostKeyOrder=456230
      • MacOrder=120
      • CompOrder=3210
    • SSH2 の MAC アルゴリズムとして hmac-sha1-96, hmac-md5-96, hmac-ripemd160@openssh.com をサポートした。
    • SCP ファイル転送時、ダイアログに経過時間, 転送速度, プログレスバーを表示するようにした。
    • SSH 接続していない時は SSH SCP メニューを選択出来なくなるようにした。
  • バグ修正
    • OpenSSH 5.7以降で SSH1 接続できない問題を修正した。
    • SSH2 の SSH_MSG_CHANNEL_EXTENDED_DATA パケットを正しく処理しないことがある問題を修正した。
    • SSH2 チャネルを開けなかった場合にアプリケーションが落ちることがある問題を修正した。
    • SCPファイルの送受信を多重に実行すると、処理が不正になる問題を修正した。
    • パケット圧縮を有効にして、SCPファイル送信を行うと、アプリケーションが落ちることがある問題を修正した。

2011.3.5 (Ver 2.56)

  • 変更
    • SSHエージェント転送を要求されたときに、受け入れるかどうかユーザに確認する機能を追加した。
    • SSH2 の diffie-hellman-group-exchange-sha256, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521 鍵交換プロトコルをサポートした。
    • SSH2 の ecdsa-sha2-nistp256, ecdsa-sha2-nistp384, ecdsa-sha2-nistp521 ホスト鍵方式をサポートした。
    • SSH2 の ecdsa-sha2-nistp256, ecdsa-sha2-nistp384, ecdsa-sha2-nistp521 公開鍵認証をサポートした。
    • ssh_known_hosts に違う形式のサーバホスト鍵がある場合、鍵を置き換えるかどうかではなく追加するかどうかユーザに問い合わせるようにした。
  • バグ修正
    • SCP ファイル送信で、2GBより大きいファイルが正しく扱えない問題を修正した。
  • その他
    • OpenSSL 1.0.0dへ差し替えた

2010.12.7 (Ver 2.55)

  • 変更
    • Control menu - Send breakで、ブレーク信号(SSH2 only)を送信するようにした。"sendbreak"マクロもサポートした。
    • keyboard-interactive認証において、パスワード変更が行えるようにした。
    • 圧縮を指定するコマンドラインオプション /ssh-C,/ssh-C=,/ssh-c を追加した。
  • バグ修正
    • SSH2 認証で、サーバが認証方式を返さなかったときにアプリケーションが落ちる問題を修正した。
  • その他
    • OpenSSL 1.0.0bへ差し替えた

2010.8.31 (Ver 2.54)

  • バグ修正
    • SSH の暗号化方式として aes128-cbc が使えない問題を修正した。
  • その他
    • OpenSSL 1.0.0aへ差し替えた

2010.5.31 (Ver 2.53)

  • 変更
    • ポート転送でリッスンするアドレスを指定できるようにした。
      • ポート転送で他のホストからの接続を受け入れるかどうかの設定を削除した。
      • コマンドラインオプションを変更した。
      • 設定ダイアログを変更した。
    • SSH2 の共通鍵暗号方式に 3DES-CTR, Blowfish-CTR, CAST128-CTR を追加した。
      • teraterm.ini の CipherOrder エントリに "C", "D", "E" を追加した。
  • その他
    • OpenSSL 1.0.0へ差し替えた
    • zlib 1.2.5へ差し替えた

2009.11.10 (Ver 2.52)

  • 変更
    • 隠しオプション"/nosecuritywarning"を追加した。原則、使用禁止。
  • バグ修正
    • SSH接続の後の接続でTCPLocalEcho,TCPCRSendの設定が使われないのを修正した。

2009.7.5 (Ver 2.51)

  • 変更
    • SCP のファイル受信フォルダを選択できるようにした。
    • SCP のファイル受信時に、同名ファイルがあった場合に上書き確認するようにした。
    • 自動ログイン時にユーザ名が指定されていない場合、デフォルトのユーザ名を使うようにした。
    • パスワードをメモリに保存するかどうか設定できるよう、SSH Setup ダイアログにチェックボックスを追加した。
    • コマンドライン解析の仕様を変更した。
      • スペースを渡すために@を指定する仕様を廃止した。
      • `"' を渡すために "" を指定する仕様を追加した。
  • バグ修正
    • 接続先ホスト名に一部の漢字が使えないのを修正した。
    • Tera Termの/FD=, /K=, /M=, /L=, /R=, /W=オプションで値に空白が含まれる場合、正しく取り扱えない事があるのを修正した。
    • SSH2 の鍵交換で、アルゴリズムネゴシエーションに失敗することがあるのを修正した。
    • SCPウィンドウが最小化されても、SCP転送を中断しないようにした。
  • その他
    • OpenSSL 0.9.8kへ差し替えた

2009.3.22 (Ver 2.50)

  • 変更
    • ssh:// URLの取り扱いを一部変更した。
      • URLにポート指定が含まれていない場合、ポート22に接続するようにした。
      • ユーザ名,パスワードのパーセントエンコーディングをデコードするようにした。
    • "New Connection"ダイアログのホスト名やコマンドラインで、user@host形式のユーザ名指定を行えるようにした。
    • SSH SCPメニューにショートカットキー(&H)を追加した。
    • SSH鍵生成ダイアログで、鍵のビット数を指定できるようにした。
    • SSH鍵生成ダイアログで、鍵生成中に進捗状況を表示するようにした。
    • SSH鍵生成ダイアログで、鍵生成中に発生したイベントを破棄するようにした。
  • バグ修正
    • SCPを連続して行うと、SSH2_MSG_CHANNEL_FAILURE 受信時にアプリケーションが終了してしまう問題へ対処した。
    • SSH KeyGenerator ダイアログで、生成した鍵の保存時にアプリケーションが落ちることがある問題を修正した。
    • Windows 95 で About TTSSH ダイアログを表示するとアプリケーションが落ちることがある問題を修正した。
    • ホスト鍵確認ダイアログから認証ダイアログに戻ったときに、コマンドラインで渡された認証方式がデフォルトの認証方式で上書きされることがある問題を修正した。
  • その他
    • OpenSSL 0.9.8jへ差し替えた

2008.12.16 (Ver 2.49)

  • 変更
    • SSH2 の共通鍵暗号方式に AES128-CTR, AES192-CTR, AES256-CTR, Arcfour, Arcfour128, Arcfour256, CAST128-CBC を追加した。セキュリティ対応: CPNI-957037
      • teraterm.ini の CipherOrder エントリに"<", "=", ">", "?", "@", "A", "B" を追加した。
    • エージェント転送をサポートした。
      • SSH Setup ダイアログにチェックボックスを追加した。
      • SSH Authentication ダイアログにチェックボックスを追加した。
      • /ssh-A, /ssh-a コマンドラインオプションを追加した。
  • バグ修正
    • SSH1接続時にアプリケーションエラーで落ちる問題を修正した。2.48でのエンバグ。
    • SSH2 接続で CheckAuthListFirst が有効な場合に、有効な認証メソッドが返ってくる前に接続ダイアログの OK ボタンを押すと接続が終了する問題を修正した。
    • DISPLAY 環境変数が設定されている場合に X 転送が開始できない問題を修正した。
    • 新規接続ダイアログにおいて、Historyチェックボックスの有効化・無効化を行っていなかった問題を修正した。
    • SCPファイル送信で、ファイル名にスペースや一部の記号が含まれていると、送信できなかったり誤ったファイル名で送信される問題を修正した。

2008.9.23 (Ver 2.48)

  • OpenSSH 5.1で追加された VisualHostKey を追加した。
  • teraterm.iniの LogLevel に"200"を追加した。SSH送受信のRAWパケットデータを採取できる。
  • SSH2 RSA 接続で、サーバの鍵が短すぎるときのエラーメッセージを変更した。
  • Windows Vista で ssh_known_hosts に保存されているホスト鍵を置換しようとするとフリーズする問題を修正した。
  • OpenSSL 0.9.8iへ差し替えた

2008.6.25 (Ver 2.47)

  • SSH SCPダイアログにファイル受信先を表示するようにした。
  • ssh_known_hosts ファイルのポート番号指定に対応した。
  • TTSSH アイコン(ttsecure.ico)を新しくした。坂本龍彦氏に感謝します。
  • メモリリークを修正した。
  • SCPファイル送信後に、ファイルがロックされることがある問題へ対処した。
  • OpenSSL 0.9.8hへ差し替えた

2008.2.29 (Ver 2.46)

  • バージョンを含まない Protocol Version Exchange 行をスキップする処理を追加した（RFC4253対応）。
  • SSH SCPダイアログにおいて、ファイル受信用ユーザインターフェイスを追加した。
    • ファイル受信先は "ファイル転送のためのディレクトリ" に固定
    • 受信ファイル名は直接入力
  • Pageant(an SSH authentication agent for PuTTY, PSCP and Plink) を使用した公開鍵認証に対応した。
    • コマンドラインオプションの /auth に pageant を追加した。
  • "SECURITY WARNING" ダイアログをキャンセルするとアプリケーションエラーとなる問題の workaround を削除した。

2008.1.15 (Ver 2.45)

  • SCP(Secure Copy Protocol)によるファイル送信機能を実装した。Fileメニュー配下に"SSH SCP"を追加。
    • ファイル送信先はホームディレクトリに固定
    • ファイル受信は未サポート
    • SSH2に対応。SSH1は未サポート
    • SFTP(SSH File Transfer Protocol)は未サポート
  • パケット送信処理にTCPコネクション切断の誤検出をする問題を修正した。TTSSH 1.01で搭載したハートビートスレッドが thread-safe ではなかったのが原因。
  • New Connection ダイアログのホスト名に /ssh1, /ssh2 が含まれている場合、SSH 接続が無効になる問題を修正した。
  • デフォルトユーザ名を指定しておらず、認証方式を challenge にしており、/ask4passwd を指定している場合、SSH2_MSG_SERVICE_REQUEST を2回送信してしまう問題を修正した。
  • CheckAuthListFirst が off で、認証方式を challenge にしており、/ask4passwd を指定している場合、TIS 認証ダイアログが自動的に出現しない問題を修正した。
  • CheckAuthListFirst が on で、ユーザ名を送信できる状態になる前にユーザ名を入力してフォーカスを外した場合、OKボタンを押したあとに認証が行われない問題を修正した。

2007.12.4 (Ver 2.44)

  • SSH2 の共通鍵暗号方式に AES192, AES256, Blowfish を追加した。
    • teraterm.ini の CipherOrder エントリに"9", ":", ";"を追加した。
  • SSH2のポート転送(local-to-remote)において、サーバ側のウィンドウサイズ(remote_window)に余裕がない場合に、遅延送信を行うようにした。xtermやemacsがXmingのX11上で動かない現象が改善される。
  • サポートされていない認証方式を無効にする機能を変更した。
    • "CheckAuthListFirst" のデフォルトを Off にした。
    • "SSH Authentication" ダイアログからチェックボックスで設定できるようにした。
  • ローカルからの SSH forwarding 接続で、他のホストからの接続を受け入れる機能を変更した。
    • "SSH Forwarding" ダイアログからチェックボックスで設定できるようにした。
    • "/ssh-acceptall" コマンドラインオプションで設定できるようにした。
    • "SSH Forwarding" ダイアログから、各転送設定ごとに許可できるようにした。
  • "New connection" ダイアログの Host で指定された文字列に " /ssh", " /nossh", " /telnet" があった場合、ラジオボタンによる SSH の有効/無効より優先するようにした。
  • サーバがサポートする暗号方式をひとつもサポートしていない場合に落ちる問題を修正した。
  • SSH2パケットが"Bad packet length"になってしまう問題を修正した。TTSSH 2.42でのデグレード。
    • パケット送信処理にTCPコネクション切断の誤検出をしないようにした。
  • SSH2ポート転送(local-to-remote)において、大きなサイズのパケットをサーバから受信した場合に、ローカルクライアントへの送信が失敗する問題を修正した。TTSSHオリジナルバグ。
  • OpenSSL 0.9.8gへ差し替えた

2007.10.14 (Ver 2.43)

  • 自動ログインの認証方式にチャレンジレスポンス(キーボードインタラクティブ)を追加した。
    • コマンドラインオプションの /auth に challenge を追加した。
  • 認証を試行する前に、サポートされていない認証方式を無効にする機能を追加した。
    • teraterm.ini の TTSSH セクションに "CheckAuthListFirst" エントリを追加した。デフォルトは On。
  • known_hostsファイルへ公開鍵を追記もしくは置換する際、known_hostsダイアログでのユーザの問い合わせを確認してから、サーバ通信を再開するようにした。これによりknown_hostsの確認を待たずに、サーバへユーザ情報を送ってしまう問題を回避する。
  • New connection ダイアログの Host ドロップダウンで、Ctrl+d, Ctrl+k ショートカットキーをサポートした。それぞれ「一文字削除」「行末まで削除」に対応する。
  • OpenSSL 0.9.8fへ差し替えた

2007.9.30 (Ver 2.42)

  • New connection ダイアログで使用中のシリアルポートを表示しないようにした。
  • パスワード認証を選択しているときに keyboard-interactive 認証を使用するのをやめた。これに伴い、Authentication Setup ダイアログの keyboard-interactive チェックボックスを削除した。keyboard-interactive 認証を使用するためには、challenge/response を選択する必要がある。
  • New connection ダイアログの Host ドロップダウンで、Ctrl+p, Ctrl+n, Ctrl+b, Ctrl+f, Ctrl+a, Ctrl+e ショートカットキーをサポートした。それぞれ↑, ↓, ←, →, Home, End キーに対応する。
  • パケット送信処理にTCPコネクション切断の誤検出をしないようにした。
  • 内部で使用している文字列系関数のセキュアバージョンへの全置換を実施。
    • ビルドオプションから _CRT_SECURE_NO_DEPRECATE を削除した。

2007.8.8 (Ver 2.41)

  • keyboard-interactive認証が失敗したあとのパスワード認証の無条件トライを止めるようにした。
  • 利用可能なCOMポートがない時、新しい接続ダイアログでシリアルポートの選択を無効化した。
  • すでにソケットが開かれているためにポートフォワードを開始できないとき、ポップアップでエラーを表示しないようにした。
  • コマンドライン入力におけるBOF(Buffer Over Flow)への対処を追加した。
  • リモート側からの SSH ポートフォワード接続が失敗したときに SSH 接続が切断される問題を修正した。
  • SSH のチャネルが開けないときにソケットが開いたままになる問題を修正した。

2007.5.7 (Ver 2.40)

  • keyfile パラメータも、ダブルクォートされたファイル名を認識するようにした。
  • プレインパスワード認証と一緒にキーボードインタラクティブ認証を使用するように設定している時、SSH認証ダイアログでプレインパスワード認証がrhosts認証と表示されるのを修正した。
  • ポートフォワーディングにおいてチャネルクローズした際に、SSH2チャネル構造体の解放が漏れていたバグを修正した。
  • チャネルが開けなかったときにクラッシュしていたのを修正した。
  • ユーザ認証リストをサーバから取得するようにし、パスワード認証でのログイン時に、ユーザ認証リストに"password"がなければ、keyboard-interactive認証でのログインを試みるようにした。

2007.3.10 (Ver 2.39)

  • パケット送信関数が失敗した場合、WSAGetLastError()がWSABASEERR(10000)未満であれば、成功したものと見なすようにした。
  • SSH2 鍵のパスフレーズを間違えた場合、パスフレーズダイアログにフォーカスするようにした。
  • OpenSSL 0.9.8eへ差し替えた

2007.1.22 (Ver 2.38)

  • Cisco ルータの送信する SSH2_MSG_IGNORE のデータが不正なようなので、何も処理しないようにした。
  • パケット送信処理にTCPコネクション切断の誤検出をしないようにした。

2006.11.20 (Ver 2.37)

  • Extreme Networksスイッチにおいて共通鍵生成で失敗する現象に対するworkaround(SSH_BUG_SIGBLOB)を追加した。

2006.11.1 (Ver 2.36)

  • MACとパケット圧縮を有効にするタイミングを SSH2_MSG_NEWKEYS の送受信時に変更することにより、Tectia serverへつながらない問題を修正した。
  • SSH2_MSG_CHANNEL_EXTENDED_DATA のパケットを処理することにより、Windows上のTectia serverから標準エラー出力が送られたときに異常終了する問題を修正した。

2006.10.28 (Ver 2.35)

  • ttermpro.exeの/Fパラメータで指定されたファイルからTTSSHの設定が読まれなくなっていたのを修正した。2.34でエンバグしました。
  • SSHで接続中にNew connectionダイアログからtelnet接続できないのを修正した。2.34でエンバグしました。
  • KEX_DH_GRP1_SHA1 or KEX_DH_GRP14_SHA1における不正なメモリ解放を修正した。

2006.10.09 (Ver 2.34)

  • /ssh1, /ssh2, /telnet オプションを追加した。
  • /ask4passwd オプションを追加した。
  • ポートフォワードしているウィンドウから新規接続するとエラーが出る問題を修正した。
  • コマンドラインパラメータ名の大文字小文字を区別していなかったのを修正した。
  • スペースを含むファイル名を認識するよう修正した。
  • OpenSSL 0.9.8dへ差し替えた

2006.9.16 (Ver 2.33)

  • コマンドラインパラメータにおいて、ダブルクォーテーションで囲まれたファイル名を正しく認識するようにした。
  • パスワードはユーザ認証後に破棄するようにした。
  • OpenSSL 0.9.8cへ差し替えた

2006.8.9 (Ver 2.32)

  • タイトルバーのアイコンに小さいアイコンが使用されていなかったのを修正した。

2006.8.5 (Ver 2.31)

  • ユーザのパスワードを認証後もメモリ上に保持するかどうかを決めるチェックボックスを認証ダイアログに追加した。それにともない、teraterm.ini ファイルのTTSSHセクションに"RememberPassword"エントリを追加した。

2006.7.26 (Ver 2.30)

  • TTSSHアイコン(ttsecure.ico)を新しくした。坂本龍彦氏に感謝します。

2006.6.29 (Ver 2.29)

  • TTSSHのsetupダイアログの変更内容が次回接続時から反映されるようにした。パッチ作成に感謝します＞永田氏
  • ssh_known_filesファイルを常にTeraTermインストールディレクトリへ保存するようにした。パッチ作成に感謝します＞永田氏
  • Copyright表記を変更した

2006.6.23 (Ver 2.28)

  • SSH2遅延パケット圧縮（OpenSSH 4.2以降）をサポートした。パッチ作成に感謝します＞永田氏

2006.6.14 (Ver 2.27)

  • OpenSSH 4.3以降で遅延パケット圧縮が設定されている場合、従来のパケット圧縮を有効にした状態でのサーバへの接続ができないバグを修正した。

2006.6.11 (Ver 2.26)

  • SSH Port Forward の編集画面で Alt + キーが効かないバグを修正した。パッチ作成に感謝します＞永田氏
  • SSH Port Forward の編集画面で、TeraTermが未接続状態の場合、ポート番号不正を即座にメッセージボックスが表示されないバグを修正した。

2006.5.7 (Ver 2.25)

  • OpenSSL 0.9.8bへ差し替えた

2006.4.7 (Ver 2.24)

  • HP-UXにおいてX11 fowardingが失敗した場合に、SSH2セッションが切断されないようにした。

2006.4.4 (Ver 2.23)

  • known_hostsファイルにおいてキー種別の異なる同一ホストのエントリがあった場合、古いキーを削除するユーザダイアログオプションを追加した。パッチ作成に感謝します＞永田氏

2006.3.29 (Ver 2.22)

  • known_hostsファイルにキー種別の異なる同一ホストのエントリがあると、アプリケーションエラーとなるバグを修正した。

2006.3.27 (Ver 2.21)

  • SSH2のknown_hosts対応を追加した。
  • known_hostsダイアログにサーバの fingerprint を表示するようにした

2006.3.6 (Ver 2.20)

  • SSH2ウィンドウ制御の見直しにより、スループットを向上させた。

2006.2.24 (Ver 2.19)

  • コンパイラを Visual Studio 2005 Standard Edition に切り替えた。
  • stricmp()を_stricmp()へ置換した
  • strdup()を_strdup()へ置換した
  • authorized_keysファイルの"command="をサポートした
  • OpenSSL 0.9.8b snapshotへ差し替えた

2005.10.21 (Ver 2.18)

  • 接続ダイアログに History チェックボックスを追加した。
  • OpenSSL 0.9.8aへ差し替えた

2005.9.5 (Ver 2.17)

  • SSH自動ログイン時に認証ダイアログを /I オプション使用時にのみ最小化するようにした。

2005.8.27 (Ver 2.16)

  • SSH自動ログイン時に認証ダイアログを最小化するようにした。高橋智雄氏に感謝します。
  • zlib 1.2.3へ差し替えた

2005.7.24 (Ver 2.15)

  • SSH2ポートフォワーディングをサポートした。
  • SSH2パケット圧縮をサポートした。
  • SSH2接続時にTTY情報(VERASE)を渡すようにした。
  • SSH1接続で一度ユーザ認証に失敗すると、その後認証ができなくなるバグを修正。
  • 接続ダイアログ上で Alt+P や Alt+C などのアクセラレータキーが効かないバグを修正。
  • OpenSSL 0.9.8へ差し替えた
  • zlib 1.2.2にsecurity fix(CAN-2005-2096)を追加。

2005.5.28 (Ver 2.14)

  • 秘密鍵ファイルダイアログに3ファイルフィルタを追加した。
  • zlibのバージョン情報を"About TTSSH" ダイアログに追加した。

2005.4.24 (Ver 2.13)

  • キー作成ダイアログを追加した（Setup - SSH KeyGenerator）。
  • OpenSSL 0.9.7gへ差し替えた

2005.4.9 (Ver 2.12)

  • SSH2チャネルルックアップ機構を追加
  • キー再作成時にアプリケーションエラーとなるバグを修正（2.10でのデグレード）。
  • "Duplicate session"においてSSH自動ログインを行うようにした。

2005.3.31 (Ver 2.11)

  • SSH2認証ダイアログの Use challenge/response to log in にアクセラレータキーを割り当てた。
  • シリアルポートを開いた状態からAlt-Nで新規接続を開こうとしたとき、フォーカスを当てるようにした。
  • SSHログファイル(TTSSH.LOG)の採取データを増加した
  • NetScreen(HITACHI) workaround対応。SSH2_MSG_CHANNEL_REQUEST送信時において、wantconfirmをfalseにした（サーバからのリプライを期待しない）。
  • OpenSSL 0.9.7fへ差し替えた

2005.3.13 (Ver 2.10)

  • ttxssh.dllのバージョン情報が古いままだったので修正した。
  • SSH client ID(SSH-2.0-TTSSH/X.XX Win32)にバージョン情報を含めるようにした。
  • Tru64 UNIX workaroundを追加。Miguel氏に感謝します。
  • SSH2 log dump機構を追加した
  • SSH server IDにCR+LFが含まれていた場合、CRの除去ができていなかったバグを修正。
  • すでにログイン処理を行っている場合は、SSH2_MSG_SERVICE_REQUESTの送信は行わないようにした。
  • パスワード認証の前に行うkeyboard-interactiveメソッドで、デフォルト設定値([TTSSH] KeyboardInteractive)を無効(0)にした。OpenSSH 4.0では無効なメソッドを使用するとコネクションが切られてしまうため。また、認証ダイアログのラベル名を設定の有無により変更するようにした。
  • SSH2（keyboard-interactive認証）接続においてchallenge/response loginに対応した。

2005.2.22 (Ver 1.09)

  • ドットで始まるディレクトリにあるSSH2秘密鍵ファイルが読み込めない問題へ対処した。
  • HeartBeat(keep-alive), SSH2 keyboard-interactiveの設定をTTSSHのダイアログ上から行えるようにした。

2005.1.30 (Ver 1.08)

  • keyboard-interactive認証をサポートした。それにともない、teraterm.ini ファイルのTTSSHセクションの"KeyboardInteractive"エントリを追加した。
  • "About TTSSH" ダイアログにホームページのURL・OpenSSLバージョンを追加した。
  • SSH2認証ダイアログで、rhostsおよびTISがグレーになる前に、Enterキーを押下すると、アプリケーションエラーとなる現象に対処した。
  • 公開鍵認証自動ログインをサポート。/auth=publickey, /keyfileコマンドラインオプションを追加。

2005.1.6 (Ver 1.07)

  • telnet接続時にターミナルサイズ変更を行うと、アプリケーションエラーとなるバグを修正（1.06でのデグレード）。

2005.1.5 (Ver 1.06)

  • ターミナルサイズ変更に対応した。
  • キー再作成時にアプリケーションエラーとなるバグを修正（1.05でのデグレード）。

2004.12.27 (Ver 1.05)

  • 'Auto window close'が無効の場合、切断後の接続ができない問題を修正した。
  • SSH2 KEX処理のメモリリークを修正した。
  • SSH2秘密鍵読み込み失敗時のエラーメッセージ出力を強化した。

2004.12.23 (Ver 1.04)

  • 公開鍵認証をサポート

2004.12.18 (Ver 1.03)

  • パケット受信時におけるHMACチェックを追加
  • メッセージ認証アルゴリズムに HMAC-MD5 を追加
  • KEXにおけるRSAおよびDSSのkey verify処理を追加

2004.12.16 (Ver 1.02)

  • SSH自動ログインにおいて、まれにアプリケーションエラーとなる現象へ対処した。
  • SSH1接続時の"SECURITY WARNING"ダイアログで、キャンセルするとアプリケーションエラーとなる現象へ対処した。

2004.12.11 (Ver 1.01)

  • SSHハートビート（キープアライブ）機能を追加した。
    ハートビート間隔は、 teraterm.ini ファイルのTTSSHセクションの"HeartBeat"エントリで設定可能（デフォルトは60秒）。

2004.12.8 (Ver 1.00)

  • SSH1/SSH2自動ログインをサポート（password認証のみ）。/auth, /username, /passwdオプションを追加。
  • SSHのデフォルトバージョンを SSH2 に変更した
  • 接続ダイアログのtab orderを修正した。
  • 接続ダイアログの起動時、ホスト名にフォーカスが当たるようにした。
  • SSH2自動ログイン・サンプルマクロ(ssh2login.ttl)を同梱した

2004.11.7 (Ver 1.00 beta1)

  • 暗号アルゴリズム AES128 をサポートした
  • KEXアルゴリズム diffie-hellman-group14-sha1 (OpenSSH 3.9以降)をサポートした
  • KEXアルゴリズム diffie-hellman-group-exchange-sha1 をサポートした
  • ホストキーアルゴリズム ssh-dss をサポートした
  • "About TTSSH" ダイアログにSSH2情報を出力するようにした
  • OpenSSL 0.9.7eへ差し替えた
  • READMEをBoris Maisuradze氏に英文化していただきました。感謝します。

2004.10.25 (Ver 1.00 alpha4)

  • ウィンドウサイズ制御の不具合を修正した。
  • データ通信確立後のDH鍵再作成に対応した。
  • その他細かいバグフィックス

2004.10.17 (Ver 1.00 alpha3)

  • ウィンドウサイズ制御処理を追加した
  • コネクションを切断する際、サーバ側へ SSH2_MSG_CHANNEL_CLOSE を送るようにした。
  • terminal typeが環境変数TERMへ渡されるようにした

2004.10.11 (Ver 1.00 alpha2)

  • SSH1をサポートした
  • SSH sessionが切断されるバグ（"Oversized packet received from server"と表示されて、コネクションが切れる問題）を修正した
  • /1, /2 オプションの追加
  • teraterm.ini ファイルにSSH protocol versionのエントリを追加した

2004.8.8 (Ver 1.00 alpha1a)

  • DLLをrelease build版へ差し替えた

2004.8.5 (Ver 1.00 alpha1)

  • 初公開

CygTerm+

v1.07_29 2016/11/26 (by maya)

  • アイコンを変更した。

v1.07_28 2016/02/17 (by doda)

  • デバッグモードを追加した。

v1.07_27 2016/02/09 (by doda)

  • -cd オプション(HOME_CHDIR=y) より -d オプションでのディレクトリ指定を優先するようにした。
  • -ls オプション(LOGIN_SHELL=y) の指定時に -d オプションを指定した場合、CHERE_INVOKING=y をセットするようにした。

v1.07_26 2015/12/14 (by doda)

  • ssh 認証エージェント転送で複数コネクションに対応した。

v1.07_25 2015/02/21 (by doda)

  • TERM 環境変数が正しく設定されるようにした。

v1.07_24 2013/08/15 (by maya)

  • 64bit Cygwin でも動作するようにした。

v1.07_23 2011/04/18 (by doda)

  • -d オプションで指定されたディレクトリへの移動が失敗した時、エラーメッセージを表示するようにした。

v1.07_22 2011/03/03 (by maya)

  • インストーラから起動チェックをするための mutex を削除した。

v1.07_21 2011/02/28 (by maya)

  • インストーラから起動チェックをするための mutex を追加した。

v1.07_20 2010/10/20 (by doda)

  • セキュリティ修正: '-d' オプションでのディレクトリ移動のタイミングを遅らせた。

v1.07_19 2010/01/28 (by doda)

  • '-s' オプションの引数に 'AUTO' を受け付けるようにした。

v1.07_18 2010/01/19 (by doda)

  • '-d' オプションの引数にダブルクォートが含まれていた場合、ダブルクォートを削除するようにした。

v1.07_17 2009/06/16 (by doda)

  • telnet接続受け入れ時、TELNET SGA/ECHOオプションのネゴシエーションを行うようにした。

v1.07_16 2008/11/21 (by doda)

  • ssh認証エージェント転送機能を有効にするオプションを '-a' から '-A' に変更した。
  • ssh認証エージェント転送機能を無効にする '-a' オプションを追加した。

v1.07_15 2008/11/01 (by doda)

  • ssh認証エージェント転送機能を追加した。OpenSSHのssh認証エージェントに対応したプログラムが、CygTerm+を通してPageantにアクセスできるようになる。
    • ssh認証エージェント転送機能を有効にする '-a' オプションを追加した。

v1.07_14 2007/12/17 (by doda)

  • ターミナルエミュレータに追加オプションを指定する '-o' オプションを追加した。

v1.07_13 2007/08/03 (by maya)

  • 開始ディレクトリを指定する '-d' オプションを追加した。

v1.07_12 2007/06/10 (by doda)

  • telnet接続の待ち受け時間を設定するオプション SOCKET_TIMEOUT を追加した。

v1.07_11 2007/01/31 (import from cygterm v1.07)

  • gcc 3.4 での WinMainCRTStartup() 再定義エラー回避
  • 連続出力時でもキーボード割り込みが入るように。

v1.06_11 2006/09/29 (by maya)

  • 環境変数と /etc/passwd の HOME を使わないようにした。
    Cygwin によってセットされた HOME が利用される。関連項目 /etc/profile
  • 設定ファイルの優先順位を変更した。
    コマンドライン引数 > ~/.cygtermrc > /etc/cygterm.conf > cygterm.cfg > /etc/passwd

v1.06_10 2006/09/28 (by doda)

  • ユーザ名を得るのに、環境変数USERNAMEの代わりにgetlogin()を使うようにした。

v1.06_09 2006/09/25 (by doda)

  • SHELLが設定されていない場合は、/etc/passwdからシェルの情報を得るようにした。

v1.06_08 2006/08/30 (by maya)

  • cygterm.cfg を設定ファイルの中で最優先されるようにした。

v1.06_07 2006/08/19 (by maya)

  • Windows の 環境変数 HOME が設定されていれば使うようにした。

v1.06_06 2006/08/18 (by doda)

  • -sと-tオプションのパラメータの長さを制限した。

v1.06_05 2006/08/18 (by maya)

  • インストーラから起動チェックをするため、mutex を作成した。

v1.06_04 2006/08/15 (by doda)

  • シェルをログインシェルとして呼び出すオプション LOGIN_SHELL を追加した。
    LOGIN_SHELL: yes | no

v1.06_03 2006/08/15 (by doda)

  • ホームディレクトリで起動するのを選択するオプション HOME_CHDIR を追加した。
    HOME_CHDIR: yes | no

v1.06_02 2006/02/09 (by babydamons@yahoo.co.jp)

  • CygTermのアイコンが作成されました。（"DotWork 2.50"にて作成）
    DotWork 2.50 は右記のURLより入手可能です。 http://www5a.biglobe.ne.jp/~suuta/.
    すばらしいソフトウェアを公開していただき、"suuta at hamal dot freemal dot ne dot jp"に感謝致します。
  • Makefileが修正されました。"clean"ターゲットでcygterm.icoを削除しないように。

v1.06_01 2006/02/08 (by babydamons@yahoo.co.jp)

  • TeraTerm Project へインポートした。
  • 以下の設定ファイルの読み込みをサポート:
    • /etc/cygterm.conf
    • ~/.cygtermrc
  • シェルがユーザのホームディレクトリで起動されるように。
  • アカウントの設定情報を/etc/passwdからgetpwnam(3)で読み込むように。
    アカウント名は環境変数USERNAMEからgetenv(3)で取得してます。
  • Makefile修正：ディフォルトでアイコンつきの.exeをビルドします。

v1.06 2004/01/24

  • コマンドライン・オプションを追加。
    • -t 'terminal-emulator' (ターミナル・エミュレータ指定)
    • -p port-number (接続先ポート番号指定)
    • -dumb (ダムターミナル指定)
    • -s 'shell' (シェル指定)
    • -v 'env-var' (環境変数指定)
  • Makefile修正
    • make install で BINDIR が存在しなければエラーになるように。
  • ソースファイル英文化 (cygterm.cc, README.txt)

v1.05 2003/01/14

  • Ctrl+SPACE(NUL)が送信できるように修正。
    改行コード CR+NUL を処理する方法として単純に NUL文字を無視していたため、Ctrl+SPACE 押下時でも NUL が送信されなかった。

v1.04 2002/12/08

  • ターミナル・エミュレータおよびシェルの起動に失敗したときにエラーメッセージを表示するようにした。
  • Makefile修正
    • make install で cygterm.cfg を上書きしないように。
    • gccオプションに -fno-exceptions を追加、GCC-3のリンクエラー回避。

v1.03 2002/07/24

  • ターミナル・エミュレータが通知してくるターミナルタイプに、大文字が含まれていれば、それを小文字に変換するように修正。
    ターミナル・エミュレータによっては環境変数 TERM の値が 'ANSI' 'VT100' のように大文字になり terminfo にマッチしないため。(Windows 2000 telnet.exe 等)

v1.02 2002/07/22

  • ターミナル・エミュレータがコンソール・アプリケーションのときに起動できなかったのを修正。(Windows 2000 telnet.exe 等)
    CreateProcess()呼出しミス。
  • ターミナル・エミュレータから CR+LF が送られてきたら LF は転送しないようにし、改行が２回発生するのを修正。(Windows 98 telnet.exe 等)
  • バージョン番号を cygterm.exe に埋め込むようにした。
    確認方法は $ strings cygterm.exe | grep version

v1.01 2002/07/19

  • zsh, tcsh で動作しなかったのを修正。擬似端末のオープン方法が悪く、zsh, tcsh では起動とともに入力がブロックされた。

v1.00 2000/12/17

  • 初期バージョン完成

cyglaunch

2011.6.26 (Ver 1.03)

  • ドライブのルートディレクトリへの CygTerm Here が正しく働かない問題を修正した。
  • UNC パスのディレクトリへの CygTerm Here が正しく働かない場合が有る問題を修正した。

2010.12.7 (Ver 1.02)

  • セキュリティ修正: カレントディレクトリを cyglaunch.exe があるディレクトリに変更してから cygterm.exe を起動するようにした。

2009.3.22 (Ver 1.01)

  • PATH環境変数の長さが1024バイト以上になっても、切り捨てないようにした。

2007.8.8 (Ver 1.00)

  • 初版

TTProxy

2019.12.7 (Ver 1.0.0.26)

  • バグ修正
    • HTTPプロキシ接続がエラーとなり、ステータスコードが400,401,403,405,406,407以外だった場合、メッセージボックスにゴミが表示される問題を修正した。

2019.08.31 (Ver 1.0.0.25)

  • 変更
    • SOCKS4/5とネゴシエーションが失敗した場合、エラー情報をメッセージに追加した。
  • バグ修正
    • OSによって設定ダイアログが正しく動作しない不具合を修正。teraterm 4.103でのエンバグ。
    • ホスト名の設定がドメインの場合において、IPv6/IPv4フォールバックが動作しない問題を修正した。かつ、プロキシサーバに接続できない場合、Connection refusedダイアログが3回連続表示される問題も修正した。
    • SOCKS4/5とネゴシエーション中に、SOCKSサーバからデータ受信できない場合、エラー扱いにできていないことがある問題を修正した。

2016.11.30 (Ver 1.0.0.24)

  • HTTP プロキシで認証を使用すると接続時に落ちる問題を修正した。
  • HTTP プロキシで認証を使用するときに、認証情報が正しく base64 エンコードされないことがある問題を修正した。
  • HTTP プロキシ接続は CONNECT メソッドを使用しているので HTTP/1.0 から HTTP/1.1 に変更した。

2016.08.31 (Ver 1.0.0.23)

  • コマンドラインオプションに -noproxy を追加した。-proxy=none:// と同様にデフォルトのプロキシ設定を無効化する。
  • TTX ロード時の優先順位 (order) を 0 から 10 に変更した。

2015.12.01 (Ver 1.0.0.22)

  • コマンドラインオプションのパース処理を変更し、パラメータの途中からでも '"' によるクオートを可能にした。

2015.05.31 (Ver 1.0.0.21)

  • /F= コマンドラインオプションをほかのオプションよりも先に読み込むようにした。

2014.06.01 (Ver 1.0.0.20)

  • 言語ファイルが反映されないことがある問題を修正した。
  • sslタイプのプロキシ種類を表示しないようにした(今までも動作していなかった)。

2014.02.28 (Ver 1.0.0.19)

  • スペースを含むコマンドラインパラメータの解析に失敗する問題を修正した。

2011.3.5 (Ver 1.0.0.18)

  • IPv6 に対応した。
    • プロキシサーバに IPv6 アドレスを指定できない問題を修正した。
    • IPv6 アドレスを持つプロキシサーバに IPv6 で接続しない問題を修正した。
    • SOCKS5 プロキシ接続で実ホストへの IPv6 アドレス指定での接続が出来ない問題を修正した。
  • 名前解決のタイミングを変更した。
    • HTTP/TELNET プロキシ接続でローカル側で名前解決が出来ないホストに対して接続できない問題を修正した。
    • SOCKS プロキシ接続で設定に関わらず常にローカル側で名前を解決しようとする問題を修正した。

2010.12.7 (Ver 1.0.0.17)

  • ポート番号に5桁の数字を指定して保存すると落ちる問題を修正した。

2009.11.10 (Ver 1.0.0.16)

  • コマンドラインパラメータの解析に失敗して接続に失敗することがある問題を修正した。
    1.0.0.13 の修正が不完全だったため。

2008.2.29 (Ver 1.0.0.15)

  • 32767を超えるポート番号が扱えない問題を修正した。
  • 設定ダイアログで、プロキシ形式が NONE の場合に OK ボタンを押すと、ホスト名がないと警告が出てダイアログが閉じられない問題を修正した。

2007.9.30 (Ver 1.0.0.14)

  • ユーザインターフェイスのメッセージを読み込めるようにした。

2007.5.7 (Ver 1.0.0.13)

  • "protocol://<user<:password>@>proxyserver:proxyport" 形式のパラメータをサポートしないようにした。
    TeraTerm パラメータの "telnet://server<:port>" 形式と競合するため。

2007.3.8 (Ver 1.0.0.12)

  • 英語以外の Windows で日本語リソースが使用されていたのを修正した。
  • 日本語 Windows で無条件に日本語リソースが使用されていたのを修正した。
    98/Me/Vista では SetThreadLocale が無効なので使用しないようにした。

2007.2.6 (Ver 1.0.0.11)

  • URL デコードとエンコードに失敗していた。
    ホスト名・ユーザ名・パスワードに [-\.0-9A-Z_a-z] の範囲外の文字が含まれていた場合、TeraTerm の "New connection" ダイアログから接続できない問題を修正した。

2006.12.12 (Ver 1.0.0.10)

  • TeraTerm のダイアログの言語を使用して SetThreadLocale するのをやめた。

2006.11.23 (Ver 1.0.0.9)

  • TeraTerm のコマンドラインパラメータに telnet://host 形式を指定した場合に刺さるバグを回避した。
    プロキシの接続先ポート番号が 0 の場合は、制御を TeraTerm に戻すようにした。

2006.8.1 (Ver 1.0.0.8)

  • 原作者の蛭子屋双六さんに許諾を得て、ソースをインポートした。

TeraTerm Menu

2021.6.5 (Ver 1.16)

  • リストへ登録するボタンのツールチップの文言をRegister, Unregisterに変更した。
  • バージョン情報に余計な￥が表示されていた問題を修正した。

2017.11.30 (Ver 1.15)

  • ttpmenu.ini を使っている場合にすべてのホスト設定名を格納するバッファサイズを拡張した(2.6KB -> 10KB)。

2016.11.30 (Ver 1.14)

  • TeraTermアイコン(teraterm.ico)を新しくした。

2015.05.31 (Ver 1.13)

  • SSH セッションの開始時に引き渡すファイル名・パスワード値に ; が含まれるときにクォートされない問題を修正した。

2014.08.31 (Ver 1.12)

  • タスクトレイに表示されないことがある問題を修正した。

2011.12.04 (Ver 1.11)

  • パスワードに制御文字(^A-^_)を入力できるようにした。

2011.6.26 (Ver 1.10)

  • アイコンリソースの開放漏れを修正した。

2009.7.5 (Ver 1.09)

  • TTSSH のコマンドライン仕様変更に対応した。

2008.6.25 (Ver 1.08)

  • Pageant に対応した。
  • TeraTermアイコン(teraterm.ico)を新しくした。坂本龍彦氏に感謝します。

2007.12.4 (Ver 1.07)

  • TeraTerm Menuの設定を .ini ファイルへ保存できるようにした。.iniファイルを使う場合は、"ttpmenu.exe"があるディレクトリに"ttpmenu.ini"（0バイトで可）を設置する。ただし、レジストリから.iniファイルへの移行は自動で行なわないので、手動で再登録すること。パッチ作成に感謝します＞まつも氏。
  • keyboard-interactive認証(/challenge)へ対応させた。
  • メッセージファイルがないときにファイルダイアログの拡張子フィルタが正しく動作しない問題を修正した。
  • アプリケーションを相対パスで指定しているとき、起動しないことがある問題を修正した。

2007.9.30 (Ver 1.06)

  • ユーザインターフェイスのメッセージを読み込めるようにした。

2007.3.10 (Ver 1.05)

  • Windows Vista で、ポップアップメニューが正しい位置に表示されない問題を修正した。

2006.2.24 (Ver 1.04)

  • VS2005でビルドエラーとなる問題を修正した

2005.1.30 (Ver 1.03)

  • TeraTerm Menuをマルチモニタ環境で使用すると、ポップアップメニューが正しいモニタに表示されないバグを修正した。

2005.1.30 (Ver 1.02)

  • オプションに漢字コード(/KT=UTF8 /KR=UTF8)を追加した。
  • SSH自動ログインにおいて、ユーザパラメータを指定できるようにした。
  • SSH自動ログインにおいて、マクロの指定を削除した。
  • SSH自動ログインにおいて、秘密鍵ファイルの指定をできるようにした。

2004.12.14 (Ver 1.01)

  • ttermpro.exeの初期フォルダパスをカレントディレクトリに変更。

2004.12.8 (Ver 0.94r2)

  • TeraTerm Menu 0.94r2(+SSH2 support 1.00)を同梱した。収録許可を早川様よりいただきました。感謝します。

TTX KanjiMenu

2021.6.5 (Ver 0.1.8)

  • 韓国語モードで UTF-8m が表示されない問題を修正した。

2016.11.30 (Ver 0.1.7)

  • 漢字コード変更時、Tera Termの内部の漢字コード関連の状態をクリアするようにした。

2009.7.5 (Ver 0.1.6)

  • Language 設定が Korean の時にも対応した。

2009.3.22 (Ver 0.1.5)

  • 送受信両方を同時に変更できるようにした。
    • teraterm.ini に UseOneSetting エントリを追加した。デフォルトはoff。
  • Windows 95 でメニューが表示されない問題を修正した。

2008.2.29 (Ver 0.1.4)

  • "Recv: UTF-8m" を選択できない問題を修正した。

2007.8.8 (Ver 0.1.3)

  • Win98/Me/NT4.0 で起動エラーが出るため、LIBCMT.LIB をスタティックリンクするようにした。
  • 共有変数への漢字コード設定時に範囲チェックを追加した。
  • Language 設定が Japanese のときのみ表示されるように変更した。

2007.5.25 (Ver 0.1.2)

  • 原作者の原直さんに許諾を得て、ソースをインポートした。

TTXAlwaysOnTop

2009.7.5 (Ver 1.01)

  • ユーザインターフェイスのメッセージを読み込めるようにした。

2008.12.16 (Ver 1.00)

  • 初版。

TTXKCodeChange

2013.02.28 (Ver 1.01)

  • 設定のスタックへの保存/復元に対応した。
  • シーケンスが連続した時に後ろのシーケンスが処理されない問題を修正した。

2008.12.16 (Ver 1.00)

  • 初版。

TTXResizeMenu

2019.12.7 (Ver 1.06)

  • メニューの16番目以降のアクセスキーが誤っているのを修正した。

2018.11.30 (Ver 1.05)

  • ウインドウサイズを増減させる為のメニューIDを追加した。(ショートカットキー定義用)

2018.08.31 (Ver 1.04)

  • Windows 95/NT4.0 で TTXResizeMenu が読み込まれない問題を修正した。
  • Windows 95/98/Me/NT4.0 でメニューに TTXResizeMenu が表示されない問題を修正した。

2014.08.31 (Ver 1.03)

  • メニュー項目として、画面の高さ/幅いっぱいというのを設定できるようにした。

2013.02.28 (Ver 1.02)

  • 端末の高さとして受け付ける値を200から500へ増やした。

2010.2.10 (Ver 1.01)

  • デフォルトのメニューを廃止した。

2008.12.16 (Ver 1.00)

  • 初版。

TTXttyrec

2019.12.7 (Ver 1.04)

  • Vim の編集画面を再生した時、予期しない Pause や再生速度の変更が起こる問題を修正した。

2017.02.28 (Ver 1.03)

  • 再生終了後、再度再生する為の [Replay again] を [File] メニューに追加するようにした。

2010.2.20 (Ver 1.02)

  • teraterm.ini の RecordStartSize エントリのデフォルトを on に変更した。

2009.7.5 (Ver 1.01)

  • 再生速度をタイトルに表示するようにした。peterprvy氏に感謝します。
  • ノーウェイトモードを追加した。
    • /ttyplay-nowait コマンドラインオプションを追加した。
  • 記録開始時に、現在のウィンドウサイズをウィンドウサイズ変更制御シーケンスとして記録出来るようにした。
    • teraterm.ini に RecordStartSize エントリを追加した。デフォルトはoff。
  • 再生速度の変更が正しく動かないのを修正した。peterprvy氏に感謝します。
  • 大きなデータセグメントが正しく再生できないのを修正した。

2008.12.16 (Ver 1.00)

  • 初版。

TTXViewMode

2008.12.16 (Ver 1.00)

  • 初版。

TTXRecurringCommand

2016.11.30 (Ver 1.05)

  • 送信するコマンドの末尾に改行を付加する設定を追加した。

2015.12.01 (Ver 1.04)

  • コマンドラインオプションのパース処理を変更し、パラメータの途中からでも '"' によるクオートを可能にした。

2013.11.30 (Ver 1.03)

  • コマンド用のバッファを50バイトから1024バイトに変更した。

2011.12.04 (Ver 1.02)

  • 有効/無効にする為のメニューIDを追加した。(マクロ用)
  • /F= オプションによる設定ファイルの指定に対応した。

2010.2.10 (Ver 1.01)

  • 送信間隔の最小値を 10 秒から 1 秒に変更した。
  • コントロールメニューから、有効/無効を直接切り替えられるようにした。
  • ユーザインターフェイスのメッセージを読み込めるようにした。

2009.6.30 (Ver 1.00)

  • 初版。


Tera Term Pro 2.3との差分

Tera Term(Tera Term 4.58)とTera Term Pro 2.3との機能差分について以下に示します。

機能差分一覧

項目 | Tera Term Pro 2.3 | Tera Term
ソースコード | 開示 | 開示
開発環境 | Visual C++ 5.0 / Watcom C/C++ 11.0 | Visual Studio 2005[*1]
ライセンス | プロプライエタリ[*2] | 修正BSDライセンス[*3]
アイコン | Tera Term [*4] | Tera Term [*4]
TTSSHアイコン | TTSSH | TTSSH [*4]
最大COMポート | 16 | 256
シリアルスピード | 110～115200 | 110～921600
プラグイン組み込み | 環境変数"TERATERM_EXTENSIONS"の設定が必要 | 設定不要
リンクライブラリ | SSLeay, zlib | OpenSSL(暗号化ライブラリとして使用。TLSのためには使用していない) zlib Oniguruma PuTTY(Pageantとの連携のために使用。通信や端末エミュレーションのためには使用していない)
TTSSH | SSH 1.5 | SSH 1.5 and 2
サポートSSHプロトコル | シェル、ポート転送、X11転送 | シェル、ポート転送、X11転送、SCP
未サポートSSHプロトコル | SFTP, SCP | SFTP
SSH共通鍵暗号アルゴリズム | 3DES, DES, Blowfish | 3DES-CBC, Blowfish, AES128, AES192, AES256
SSHパケット圧縮 | Yes | Yes。SSH2遅延パケット圧縮もサポート。
Pageant[*5]との連携 | No | Yes
日本語文字コード | EUC-JP/Shift_JIS/JIS | EUC-JP/Shift_JIS/JIS/UTF-8/UTF-8 MAC
Unicode | 未サポート | 単一言語サポート[*6]
IPv6 | No | Yes
半透明ウィンドウ | No | Yes
ハートビート[*7] | No | telnet, SSH1 and 2
ウィンドウの最大化 | No | Yes
スクロールロックキー | No | Yes
右クリックの禁止 | No | Yes
オンラインヘルプ | WinHelp | HtmlHelp
クリッカブルURL | No | Yes
ホイールマウス | No | Yes
国際化対応 | No | Yes[*8]
プロキシ | No | Yes[*9](HTTP, TELNET, SOCKS4, SOCKS5)
xterm 256色モード | No | Yes

  • [*1] 一部MFC(C++)を使用しているため、Express Editionではビルドができない。
  • [*2] 改造版 Tera Term を不特定多数の人に配布する場合には作者（寺西高氏）の許可が必要。ただし、プラグインは除く。いかなる場合においても金銭的利益を得るためにTera Termを配布するには作者（寺西高氏）の許可が必要。
  • [*3] 修正BSDライセンスに準拠する。
  • [*4] アイコンの制作は坂本龍彦氏による。
  • [*5] PuTTYやWinSCPなどで使われるSSH認証エージェント
  • [*6] 内部でUnicode(UCS-2)とMBCSとの相互変換を行っているため、多言語同時表示は不可。すなわち、日本語版Windows上で日本語以外の言語を表示することはできない。ロケール設定により、中国語版Windows上でUTF-8による中国語を扱うことは可能。
  • [*7] NAT環境において一定時間通信がないと、ルータが通信経路テーブルをクリアしてしまうために、SSHセッションが切断されてしまうという現象に対して、ハートビート機能により現象を回避することができる。
  • [*8] 言語ファイル(lang\*.lng)によりメニューやメッセージの表示言語を切り替えることができる。切り替えの有効化にはTera Termの再起動が必要。
  • [*9] TTProxyを使用。

そのほかの細かな新機能について以下に示します。

  • ANSIカラー色変更&行連結機能
  • マウスカーソルの種別変更
  • ログファイルへのコメント追加
  • Broadcast command機能
  • バッファの全選択
  • ホスト名の最大長拡張
  • TeraTerm Menu, LogMeTTの同梱
  • セッションの複製
  • スクロールバッファの最大長拡張
  • エクスプローラからのディレクトリのドラッグ&ドロップに対応
  • 2つめ以降のTera Termの起動時にもディスクから teraterm.ini を読む
  • VisualStyle(WindowsXP)対応
  • 新しいタイトルフォーマット
  • ログ採取の新しいタイプを追加
  • デフォルトログファイル名（strftimeフォーマット使用可）
  • SSH認証鍵作成ウィザード
  • CygTermダイアログ設定
  • Collectorによるタブ化
  • <ESC>[Jによる画面クリア時にカレントバッファをスクロールアウト
  • ログ再生メニューの追加
  • 改行コード LF のサポート
  • バッファの画面表示部分の選択
  • 接続ダイアログのHostドロップダウンにbash styleショートカットキー(C-u, C-d, C-k, C-p, C-n, C-b, C-f, C-a, C-a)を追加

修正されたオリジナルバグ

  • ウィンドウの幅を84ドット（XPのLUNAスタイルでは94ドット）より小さくすると、ウィンドウサイズを変更できなくなることがある。
  • ttpmacro.exeに256バイト以上のコマンドラインパラメータ指定があると、BOF(Buffer Over Flow)で落ちる。
  • マクロファイルに 256 バイトを越える長い行があると、BOF(Buffer Over Flow)で落ちる。
  • マクロ実行中に、サーバからの受信データをマクロへDDE送信しないことがある（setsyncコマンドによる同期はttermpro.exeとttpmacro.exe間のDDE通信のみに適用されるため）。
  • マクロの pause コマンドの待ち時間に 1 秒程度の遅延が発生することがある。
  • ログ採取中のマクロの実行処理が停止することがある。
  • マクロ実行中にCPU使用率が100%となることがある。
  • マクロの除算結果が不正となる。
  • ZMODEMの送信において、ファイルサイズが20MBを超えるとクラッシュする。

新しいショートカットキー

キー | 機能
ScrollLock | Tera Termウィンドウのスクロールロック/ロック解除（トグル）
Alt + Enter | ウィンドウの最大化（トグル）
Alt + D | セッションの複製（SSH, telnetのみ）
Alt + G | Cygwin接続
左クリック → Shift+左クリック | ページをまたぐテキスト選択、選択済みテキスト領域の伸縮
Shift + マウスドラッグ | 廃止（ページをまたぐテキスト選択サポートのため）
Alt + マウスドラッグ | ブロック選択

新設されたマクロコマンド

コマンド | 機能
connect | SSHによる自動ログイン用パラメータを追加。
waitregex | waitlnコマンドの正規表現バージョン。1つの行に対するパターンマッチを正規表現で行うことができる。
ifdefined | 変数のタイプを調べることができる。
mpause | ミリ秒単位でのスリープを行う。
sprintf | C言語のprintfライクに書式指定の文字列を生成できる。
str2int | 16進の文字列も数値へ変換できるようにした。
fileread | ファイルから指定したバイト数のデータを読み込む。
clipb2var | クリップボードからデータを読み出す。
var2clipb | クリップボードへデータを書き出す。
random | 乱数を生成する。
tolower | アルファベットを小文字にする。
toupper | アルファベットを大文字にする。
break | forやwhileループから抜ける。
inputbox | デフォルト文字列を指定できるようにした。
rotateleft | 左方向にビットローテートする。
rotateright | 右方向にビットローテートする。
setenv | 環境変数の設定および変更。
filenamebox | ファイル名を選択するダイアログボックスを開く。
do - loop | ループ制御
until - enduntil | ループ制御
callmenu | Tera Termウインドウのメニューを呼び出す。
cygconnect | Cygwinへ接続する。
scpsend | SCPプロトコルでファイルを送信する。
scprecv | SCPプロトコルでファイルを受信する。
getver | Tera Termのバージョンを取得する。
setbaud | シリアルポートのスピードを変更する。

新設されたteraterm.iniのエントリ

"Tera Term"セクションについて以下に示します。

エントリ | 意味
UILanguageFile | I18N向けの言語ファイルの指定。デフォルトはEnglish。
ConnectingTimeout | TCP接続状態で、切断するまでのタイムアウト時間（秒）。Tera Termの/timeoutコマンドラインオプションでも変更可能。
DisablePasteMouseRButton | マウスの右クリックでのペーストを禁止する。
ConfirmPasteMouseRButton | マウスの右クリックでのペースト前に問い合わせダイアログを表示する。
DisableAcceleratorSendBreak | シリアルコンソールにおいて Alt+B によるBreak送信を無効にする。
ANSIColor | 16色のカラーテーブルの設定情報。
EnableContinuedLineCopy | 行連結機能を有効にする。
MouseCursor | マウスカーソルの種別を変更する。
AlphaBlend | ウィンドウの半透明度を設定する。
CygwinDirectory | Cygwinのインストール先を指定する。
ViewlogEditor | ログを開くエディタを指定する。
Locale | Unicodeを扱うためのOSのロケールを指定する。
CodePage | Unicodeを扱うためのOSのコードページを指定する。
UseNormalBGColor | 文字の背景色をスクリーンの背景色と一致させる。
KanjiReceive | "UTF-8"と"UTF-8m"の追加。
KanjiSend | "UTF-8"の追加。UTF-8-MACでは送信時はNFCでよいので"UTF-8m"は不要。
URLColor | クリッカブルURLの強調表示の色。実際には動作しない。
EnableClickableUrl | クリッカブルURLを有効にする。
LogTypePlainText | ログ採取のファイル形式を plain text （制御コードを含まない）にする。
LogTimestamp | ログ採取時に行の先頭に、採取時のOSのタイムスタンプを挿入する。
LogDefaultName | ログ採取時のデフォルトのファイル名を設定する。strftime形式も使用可能。
LogDefaultPath | ログ採取時のデフォルトパス名を設定する。
LogAutoStart | 接続時に自動的にログ採取を行う。
BroadcastCommandHistory | Broadcast Commandのコマンド履歴をteraterm.iniへ保存する。
AcceptBroadcast | "off"の場合、Broadcast Commandダイアログを呼び出したウィンドウにはコマンドを送出しない。
TitleFormat | フォーマットIDに"13", "29", "45", "61"を追加。
FileSendFilter | 送信ダイアログのファイル名フィルタを設定する。
VTCompatTab | 行末のタブ表示を VT 端末互換にする。
MaxBroadcatHistory | ブロードキャストコマンドの履歴の保存数
DisableAppKeypad, DisableAppCursor | アプリケーションキーパッド/カーソルモードを無効にできるようにした。
ClearComBuffOnOpen | シリアルポートのバッファをクリアしない。
Send8BitCtrl | C1 制御文字 ($80-$9F) を送信に使用する。
SelectOnlyByLButton | マウスドラッグによる選択を、左ボタンでのみ有効にする。
TelAutoDetect | Telnetコマンド自動検出の無効化
ZmodemRcvCommand | ZMODEM の受信コマンド
XmodemRcvCommand | XMODEM の受信コマンド
ConfirmFileDragAndDrop | ドラッグ&ドロップによるファイル送信の確認
TranslateWheelToCursor | アプリケーションカーソルモード時のマウスホイールの動作
HostDialogOnStartup | 起動時の "New Connection" ダイアログの表示
MouseEventTracking | マウス操作の通知
KillFocusCursor | フォーカスが外れた時にもカーソルを表示する
ConfirmChangePaste | 改行を含むクリップボードのペースト時に確認ダイアログを表示する
MaximizedBugTweak | ウィンドウ最大化時の画面スクロール方法

"TTSSH"セクションについて以下に示します。

エントリ | 意味
CipherOrder | 3DES-CBCの"7"、AES128の"8"、AES192の"9"、AES256の":"、Blowfish(SSH2)の";"を追加。
ProtocolVersion | SSHプロトコルバージョン
HeartBeat | キープアライブ（ハートビート）間隔
RememberPassword | パスワードをメモリ上へ保持するかどうか。
CheckAuthListFirst | 認証を試行する前に、サポートされていない認証方式を無効にする。


構成要素

Tera Term は、以下のモジュール(コンポーネント)で構成されています。

Tera Term

ターミナルエミュレータ本体です。 TeraTerm Project に移管してから、UTF-8 表示の対応をはじめ多くの改良がなされています。

原作開発者 | T. Teranishi (寺西 高)
後継開発者 | TeraTerm Project
ライセンス | BSD Style License 詳細は「ライセンス」を参照してください。
著作権 | 「著作権」を参照してください。
改版履歴 | 「改版履歴」を参照してください。

SSH2対応TTSSH

TTSSH(SSH1のみ対応)をSSH2にも対応させたモジュールであり、Tera Term上でSSH2(Secure Shell version 2)を利用することが可能となります。

原作開発者 | Robert O'Callahan
後継開発者 | TeraTerm Project
ライセンス | BSD Style License 詳細は「ライセンス」を参照してください。
著作権 | 「著作権」を参照してください。
改版履歴 | 「改版履歴」を参照してください。

CygTerm+

Tera Term と Cygwin 上のシェルを中継し、コマンドプロンプトの代わりに Tera Term を使って Cygwin を操作するためのプログラムです。

原作開発者 | NSym
後継開発者 | TeraTerm Project
ライセンス | GPL version 2 詳細は「ライセンス」を参照してください。
著作権 | 「著作権」を参照してください。
改版履歴 | 「改版履歴」を参照してください。
ソースコード | ja.osdn.net を参照してください。

TTProxy

プロキシ接続をサポートする拡張モジュールです。

原作開発者 | 蛭子屋双六
後継開発者 | TeraTerm Project
ライセンス | BSD Style License 詳細は「ライセンス」を参照してください。
著作権 | 「著作権」を参照してください。
改版履歴 | 「改版履歴」を参照してください。

TeraTerm Menu

自動ログインを支援する常駐ソフトです。

原作開発者 | S.Hayakawa (早川信平)
後継開発者 | TeraTerm Project
ライセンス | BSD Style License 詳細は「ライセンス」を参照してください。
著作権 | 「著作権」を参照してください。

TTX KanjiMenu

メニューから漢字コードを変更するための拡張モジュールです。

原作開発者 | Sunao HARA (原直)
後継開発者 | TeraTerm Project
ライセンス | BSD Style License 詳細は「ライセンス」を参照してください。
著作権 | 「著作権」を参照してください。

LogMeTT

マクロを駆使しての自動操縦を支援するランチャーソフトです。

開発者 | Boris Maisuradze(NeoCom Ltd.)
ライセンス・著作権等 | 同梱の LogMeTT_license.txt を参照してください。

Collector

アプリケーションをタブ化するソフトです。

開発者 | Hiroshi Takahashi
ライセンス・著作権等 | 同梱の Collector\readme.txt を参照してください。


ライセンス・著作権

概要

構成モジュール

  • Tera Term ... 三条項BSDライセンス
  • TTSSH ... 三条項BSDライセンス
  • CygTerm+ ... GPL v2
  • TTProxy ... 三条項BSDライセンス
  • TeraTerm Menu ... 三条項BSDライセンス
  • TTX KanjiMenu ... 三条項BSDライセンス
  • 追加プラグイン ... 三条項BSDライセンス
  • Collector ... フリーウェア ソースコード提供なし
  • LogMeTT, TTLEditor ... フリーウェア プロプライエタリ・ライセンス ソースコード提供なし

使用しているライブラリ(ソースコード)

  • Oniguruma ... 二条項BSDライセンス
  • SFMT ... 三条項BSDライセンス
  • OpenSSH ... BSDスタイルライセンス
  • OpenSSL ... OpenSSL License(Apache License 1.0) と SSLeay License(四条項BSDライセンス) のデュアルライセンス(両方が適用される)
  • zlib ... zlibライセンス
  • PuTTY ... MITライセンス
  • The reference C implementation of Argon2 ... Creative Commons CC0 1.0 License/Waiver または Apache License 2.0

Tera Term

ライセンス

Copyright (C) 1994-1998 T. Teranishi
(C) 2004-2021 TeraTerm Project
All rights reserved.

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice,
     this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright notice,
     this list of conditions and the following disclaimer in the documentation
     and/or other materials provided with the distribution.
  3. The name of the author may not be used to endorse or promote products derived
     from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
OF SUCH DAMAGE.

著作権

  本プログラムはフリーソフトウェアです。BSDライセンスのもとに配布されています。

  Tera Term Proは寺西高氏の著作物です。
  ANSIカラー色変更＆行連結パッチは多賀奈由太氏に著作権があります。
  UTF-8化およびSSH2化のコードについては、著作権は平田豊にあります。
  IPv6版Tera Term Proは加藤淳也氏の著作物です。
  CygtermはNSym氏の著作物です。
  TTSSHはRobert O'Callahan氏の著作物です。
  TeraTerm Menuは早川信平氏の著作物です。
  LogMeTTはBoris Maisuradzeの著作物です。
  Eterm風透過ウィンドウ機能はAKASI氏に著作権があります。
  TTProxyは蛭子屋双六氏の著作物です。
  日本語版Tera Termは高橋靖英氏および橋井健人氏に著作権があります。
  クリッカブルURLパッチはmonkey magic氏に著作権があります。
  マルチディスプレイ対応パッチは安藤弦彦氏に著作権があります。
  鬼車はK.Kosako氏の著作物です。ライセンス情報については同梱のOniguruma-LICENSE.txtをご覧下さい。
    本プログラムは、鬼車と静的リンクしています。
  SFMT は斎藤睦夫氏と松本眞氏の著作物です。ライセンス情報については同梱のSFMT-LICENSE.txtをご覧下さい。
    本プログラムは、SFMT のソースコードを使用しています。
  Tera Termに関するパッチの一部は永田真也に著作権があります。
  Tera Termのアイコンは坂本龍彦氏に著作権があります。
  HTMLヘルプの一部は市村光康氏、桑田政輝氏、橋井健人氏、平田豊に著作権があります。
  TTX KanjiMenu Pluginは原直氏の著作物です。

  本プログラムは商用利用問わず無償で利用できますが、作者は本プログラムの使用にあたり
  生じる障害や問題に対して一切の責任を負いません。

  URL: https://ttssh2.osdn.jp/
  Project: https://ja.osdn.net/projects/ttssh2/
  forum(英語): http://logmett.com/support-forums
  ML: http://www.freeml.com/info/teraterm@freeml.com

  Tera Term Pro(オリジナル): http://hp.vector.co.jp/authors/VA002416/
  ANSIカラー色変更＆行連結パッチ: http://www.sakurachan.org/ml/teraterm/msg00264.html
  IPv6版Tera Term Pro: http://win6.jp/TeraTerm/index.html
  Eterm風透過ウィンドウ機能パッチ：http://www.geocities.co.jp/SiliconValley-PaloAlto/4954/av.html
  Oniguruma: https://github.com/kkos/oniguruma

  Special thanks to ... (敬称略)
  ・寺西高 (T.Teranishi) - オリジナルの Tera Term Pro の作者
    URL: http://hp.vector.co.jp/authors/VA002416/
  ・平田豊 (Yutaka Hirata) - UTF-8対応 & SSH2対応

SSH2対応TTSSH

ライセンス

(C)1998-2001 Robert O'Callahan
(C) 2004-2021 TeraTerm Project
All rights reserved.

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice,
     this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright notice,
     this list of conditions and the following disclaimer in the documentation
     and/or other materials provided with the distribution.
  3. The name of the author may not be used to endorse or promote products derived
     from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
OF SUCH DAMAGE.

著作権

  本プログラムはフリーソフトウェアです。BSDライセンスのもとに配布されています。

  TTSSHはRobert O'Callahan氏の著作物です。
  TTSSHのSSH2化のコードについては、著作権は平田豊にあります。
  OpenSSLはOpenSSL Projectの著作物です。ライセンス情報については同梱のOpenSSL-LICENSE.txtをご覧下さい。
    本プログラムは、OpenSSLと静的リンクしています。
  zlibはGreg RoelofsとJean-loup Gailly氏の著作物です。ライセンス情報については同梱のzlib-LICENSE.txtをご覧下さい。
    本プログラムは、zlibと静的リンクしています。
  OpenSSHの著作権は、各開発者にあります。詳しくは同梱のOpenSSH-LICENSE.txtをご覧ください。
    本プログラムは、OpenSSHのソースコードを使用しています。
  PuTTYはSimon Tatham氏の著作物です。ライセンス情報については同梱のPuTTY-LICENCE.txtをご覧下さい。
    本プログラムは、PuTTYのソースコードを使用しています。
  The reference C implementation of Argon2 は Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, Samuel Neves 各氏の著作物です。ライセンス情報については同梱のArgon2-LICENCE.txtをご覧下さい。
    本プログラムは、The reference C implementation of Argon2 のソースコードを使用しています。
  TTSSHに関するパッチの一部は永田真也に著作権があります。
  TTSSHのアイコンは坂本龍彦氏に著作権があります。

  本プログラムは無償で利用できますが、作者は本プログラムの使用にあたり
  生じる障害や問題に対して一切の責任を負いません。

  URL: https://ttssh2.osdn.jp/
  Project: https://ja.osdn.net/projects/ttssh2/
  forum(英語): http://logmett.com/support-forums
  ML: http://www.freeml.com/info/teraterm@freeml.com

  Special thanks to ... (敬称略)
  ・Robert O'Callahan - オリジナルの TTSSH の作者
  ・平田豊 (Yutaka Hirata) - SSH2対応

技術

TTSSHは以下の技術を利用しています:
鍵交換方式: diffie-hellman-group1-sha1, diffie-hellman-group14-sha1, diffie-hellman-group-exchange-sha1, diffie-hellman-group-exchange-sha256, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521
サーバホスト鍵の公開鍵アルゴリズム: ssh-rsa1, ssh-dss, ssh-rsa, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384, ecdsa-sha2-nistp521, ssh-ed25519
暗号化アルゴリズム: DES, 3DES, AES(128bit,192bit,256bit), Blowfish(128bit), ARCFOUR(128bit,256bit), CAST-128(128bit), Camellia(128bit,192bit,256bit)
MACアルゴリズム: hmac-sha1, hmac-md5, hmac-sha1-96, hmac-md5-96, hmac-ripemd160@openssh.com, hmac-sha2-256, hmac-sha2-256-96, hmac-sha2-512, hmac-sha2-512-96
公開鍵認証の公開鍵アルゴリズム: ssh-dss, ssh-rsa, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384, ecdsa-sha2-nistp521

CygTerm+

ライセンス

Using Cygwin with a terminal emulator.
Copyright (C) 2000-2006 NSym
(C) 2004-2016 TeraTerm Project

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.

著作権

  本プログラムはフリーソフトウェアです。GPL version 2のもとに配布されています。
  GPL v2 の詳細については同梱のCygTerm+-LICENCE.txtをご覧下さい。

  CygTermは、NSym氏の著作物です。
  各機能拡張パッチは、パッチ作成者の著作物です。

  本プログラムは無償で利用できますが、作者は本プログラムの使用にあたり
  生じる障害や問題に対して一切の責任を負いません。

  URL: https://ttssh2.osdn.jp/
  Project: https://ja.osdn.net/projects/ttssh2/
  ML: http://www.freeml.com/info/teraterm@freeml.com

  Special thanks to ... (敬称略)
  ・NSym - オリジナルの CygTerm の作者
    URL: https://googledrive.com/host/0B1s-dM6d6yC4fmhEZ3c0VTNFWEFtV3daUlRGQmFHVnBmVHRybUNnUVliNWktNDRlZ2NnZTQ/index.html

TTProxy

ライセンス

Copyright (C) 2003-2006 蛭子屋本舗
(C) 2004-2016 TeraTerm Project
All rights reserved.

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice,
     this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright notice,
     this list of conditions and the following disclaimer in the documentation
     and/or other materials provided with the distribution.
  3. The name of the author may not be used to endorse or promote products derived
     from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
OF SUCH DAMAGE.

著作権

  本プログラムはフリーソフトウェアです。BSDライセンスのもとに配布されています。

  TTProxyは、蛭子屋双六氏の著作物です。
  機能拡張パッチは、各パッチ作成者の著作物です。

  本プログラムは無償で利用できますが、作者は本プログラムの使用にあたり
  生じる障害や問題に対して一切の責任を負いません。

  URL: https://ttssh2.osdn.jp/
  Project: https://ja.osdn.net/projects/ttssh2/
  ML: http://www.freeml.com/info/teraterm@freeml.com

  Special thanks to ... (敬称略)
  ・蛭子屋双六 - オリジナルの TTProxy の作者
    URL: http://yebisuya.dip.jp/Software/TTProxy/

TeraTerm Menu

ライセンス

Copyright(C) 1997-2003 S.Hayakawa
(C) 2004-2016 TeraTerm Project
All rights reserved.

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice,
     this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright notice,
     this list of conditions and the following disclaimer in the documentation
     and/or other materials provided with the distribution.
  3. The name of the author may not be used to endorse or promote products derived
     from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
OF SUCH DAMAGE.

著作権

  本プログラムはフリーソフトウェアです。BSDライセンスのもとに配布されています。

  TeraTerm Menuは、早川信平氏の著作物です。

  本プログラムは無償で利用できますが、作者は本プログラムの使用にあたり
  生じる障害や問題に対して一切の責任を負いません。

  URL: https://ttssh2.osdn.jp/
  Project: https://ja.osdn.net/projects/ttssh2/
  ML: http://www.freeml.com/info/teraterm@freeml.com

  Special thanks to ... (敬称略)
  ・S.Hayakawa - TeraTerm Menu の作者
    URL: http://park11.wakwak.com/~shinpei/freesoft/

TTX KanjiMenu

ライセンス

Copyright (C) 2007 Sunao HARA
(C) 2004-2021 TeraTerm Project
All rights reserved.

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice,
     this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright notice,
     this list of conditions and the following disclaimer in the documentation
     and/or other materials provided with the distribution.
  3. The name of the author may not be used to endorse or promote products derived
     from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
OF SUCH DAMAGE.

著作権

  本プログラムはフリーソフトウェアです。BSDライセンスのもとに配布されています。

  TTX KanjiMenuは原直氏の著作物です。

  本プログラムは無償で利用できますが、作者は本プログラムの使用にあたり
  生じる障害や問題に対して一切の責任を負いません。

  URL: https://ttssh2.osdn.jp/
  Project: https://ja.osdn.net/projects/ttssh2/
  ML: http://www.freeml.com/info/teraterm@freeml.com

  Special thanks to ... (敬称略)
  ・原直 (Sunao HARA) - オリジナルの TTX KanjiMenu の作者
    URL: http://naoh16.seesaa.net/article/35220277.html


動作環境

Tera Term は以下の OS で動作します。

  • Microsoft Windows 95 (*1) (*2) (*3) (*4)
  • Microsoft Windows 98, 98 Second Edition
  • Microsoft Windows Me
  • Microsoft Windows NT 4.0 SP6 (*2) (*4)
  • Microsoft Windows 2000
  • Microsoft Windows XP
  • Microsoft Windows Vista
  • Microsoft Windows Server 2003, 2003 R2
  • Microsoft Windows Server 2008, 2008 R2
  • Microsoft Windows 7
  • Microsoft Windows 8
  • Microsoft Windows Server 2012
  • Microsoft Windows 8.1
  • Microsoft Windows Server 2012 R2
  • Microsoft Windows 10

注1: Windows 3.1 はサポートされていません。
注2: x64 および IA-64 Windows もサポートされています。(WOW64 による)
注3: Tera TermのインストーラはWindows2000未満をサポートしません。(バージョン4.95以降)
注4: CygTerm+はWindows Vista以降のサポートとなります(バージョン4.105以降)。古いWindowsで動作させたい場合は、古いWindowsに対応したCygwinを使ってCygTerm+をソースコードからビルドしてください。
(*1) Windows Sockets2.0 が必要です。
(*2) Internet Explorer 5 以上が必要です。
(*3) LogMeTT, TTLEditor は動きません。
(*4) Tahoma フォントのインストールを推奨します。


エミュレーション

  • DEC VT100 と VT200/300/400/500 の一部 [*1]
  • VT100 では対応していない ANSI 制御シーケンス(カラー指定等)にも対応しています。
  • xterm拡張の制御シーケンス(マウス対応や256色表示等)にも対応しています。
  • Bold (強調)属性の文字に対して、bold スタイルのフォントの使用/不使用が選択でき、また色を付けて表示することができます。
  • Blink (点滅)属性の文字は実際には点滅せず、色付き文字で表示されます。
  • 倍角文字、VT52 モードには対応していません。
  • Tektronix TEK4010 と上位機種の一部

[*1] DEC特殊フォント
LinuxのTUI(Text User Interface)などで使われる罫線は、DEC特殊フォント(Tera Special font)として処理します。 DEC特殊フォントは、<ESC>(0 という特殊なエスケープシーケンスで定義されており、 0140(0x60) ～ 0176(0x7f) に罫線でアサインされています。
参照: Q & A集


対応制御シーケンス

C0 制御文字

コード | 略号 | 機能
0x00 | NUL |
0x01 | SOH |
0x02 | STX |
0x03 | ETX |
0x04 | EOT |
0x05 | ENQ | アンサーバック文字列送信
0x06 | ACK |
0x07 | BEL | ビープ音を鳴らす
0x08 | BS | カーソルを1桁左に移動
0x09 | HT | カーソルを次のタブストップに移動
0x0a | LF | Line feed または New line 動作を行う。Line feed/New line モードの設定により動作が変わる。
0x0b | VT | LFと同じ
0x0c | FF | LFと同じ
0x0d | CR | カーソルを行頭に移動
0x0e | SO | GL へ G1 を呼び出す
0x0f | SI | GL へ G0 を呼び出す
0x10 | DLE |
0x11 | DC1 |
0x12 | DC2 |
0x13 | DC3 |
0x14 | DC4 |
0x15 | NAK |
0x16 | SYN |
0x17 | ETB |
0x18 | CAN |
0x19 | EM |
0x1a | SUB |
0x1b | ESC | エスケープシーケンスの開始
0x1c | FS |
0x1d | GS |
0x1e | RS |
0x1f | US |

C1制御文字

コード | 7bit表現 | 略号 | 機能
0x80 |  | PAD |
0x81 |  | HOP |
0x82 |  | BPH |
0x83 |  | NBH |
0x84 | ESC D | IND | カーソルを一行下に移動
0x85 | ESC E | NEL | カーソルを次の行の先頭に移動
0x86 |  | SSA |
0x87 |  | ESA |
0x88 | ESC H | HTS | カーソル位置にタブストップを設定する
0x89 |  | HTJ |
0x8a |  | VTS |
0x8b |  | PLD |
0x8c |  | PLU |
0x8d | ESC M | RI | カーソルを一行上に移動
0x8e | ESC N | SS2 | GL または GR へ G2 を次の一文字に限り呼び出す
0x8f | ESC O | SS3 | GL または GR へ G3 を次の一文字に限り呼び出す
0x90 | ESC P | DCS | Device Control Sequence (DCSシーケンスを参照)
0x91 |  | PU1 |
0x92 |  | PU2 |
0x93 |  | STS |
0x94 |  | CCH |
0x95 |  | MW |
0x96 |  | SPA |
0x97 |  | EPA |
0x98 | ESC X | SOS | 文字列開始 (SOSシーケンスを参照)
0x99 |  | SGCI |
0x9a |  | SCI |
0x9b | ESC [ | CSI | CSIシーケンスを開始 (CSIシーケンスを参照)
0x9c | ESC \ | ST | 文字列終端。DCS, SOS, OSC, PM, APC シーケンスの終端。
0x9d | ESC ] | OSC | Operating System Command (OSCシーケンスを参照)
0x9e | ESC ^ | PM | Privacy Message (PMシーケンスを参照)
0x9f | ESC _ | APC | Application Program Command (APCシーケンスを参照)

エスケープシーケンス

シーケンス | 略号 | 機能
ESC 6 | DECBI | カーソルを左に 1 桁移動する。カーソルが左端に有った場合、画面を右に 1 桁スクロールする。スクロールした結果画面の右にはみ出した部分は失われる。
ESC 7 | DECSC | カーソル位置を保存する
ESC 8 | DECRC | 保存したカーソル位置を復元する
ESC 9 | DECFI | カーソルを右に 1 桁移動する。カーソルが右端に有った場合、画面を左に 1 桁スクロールする。スクロールした結果画面の左にはみ出した部分は失われる。
ESC = | DECKPAM | アプリケーションキーパッドモードに設定する。
ESC > | DECKPNM | ノーマルキーパッドモードに設定する。
ESC D | IND | カーソルを一行下に移動
ESC E | NEL | カーソルを次の行の先頭に移動
ESC H | HTS | 現在のカーソル位置にタブストップを設定する
ESC M | RI | カーソルを一行上に移動
ESC N | SS2 | GL または GR へ G2 を次の一文字に限り呼び出す
ESC O | SS3 | GL または GR へ G3 を次の一文字に限り呼び出す
ESC P | DCS | Device Control Sequence (DCSシーケンスを参照)
ESC X | SOS | 文字列開始 (SOSシーケンスを参照)
ESC Z | DECID | 端末IDを返答する
ESC [ | CSI | CSIシーケンスを開始 (CSIシーケンスを参照)
ESC \ | ST | 文字列終端。DCS, SOS, OSC, PM, APC シーケンスの終端。
ESC ] | OSC | Operating System Command (OSCシーケンスを参照)
ESC ^ | PM | Privacy Message (PMシーケンスを参照)
ESC _ | APC | Application Program Command (APCシーケンスを参照)
ESC c | RIS | 端末リセット
ESC g | - | 可視ベル
ESC n | LS2 | GL へ G2 を呼び出す
ESC o | LS3 | GL へ G3 を呼び出す
ESC | | LS3R | GR へ G3 を呼び出す
ESC } | LS2R | GR へ G2 を呼び出す
ESC ~ | LS1R | GR へ G1 を呼び出す
ESC SP F | S7C1T | 7ビットモード。応答に7ビットシーケンスを使う。
ESC SP G | S8C1T | 8ビットモード。応答に8ビットシーケンスを使う。
ESC # 8 | DECALN | 画面を'E'で埋める
ESC $ | 文字集合の指示 (ISO/IEC 2022)
ESC (
ESC )
ESC *
ESC +

CSIシーケンス

シーケンス | 略号 | 機能
CSI Ps @ | ICH | カーソル位置に Ps 個空白を挿入する。Ps の省略時の値は 1。
CSI Ps A | CUU | カーソルを Ps 行上に移動する。Ps の省略時の値は 1。
CSI Ps B | CUD | カーソルを Ps 行下に移動する。Ps の省略時の値は 1。
CSI Ps C | CUF | カーソルを Ps 桁右に移動する。Ps の省略時の値は 1。
CSI Ps D | CUB | カーソルを Ps 桁左に移動する。Ps の省略時の値は 1。
CSI Ps E | CNL | カーソルを Ps 行下の 1 桁目に移動する。Ps の省略時の値は 1。
CSI Ps F | CPL | カーソルを Ps 行上の 1 桁目に移動する。Ps の省略時の値は 1。
CSI Ps G | CHA | カーソルを現在の行の Ps 桁目に移動する。Ps の省略時の値は 1。
CSI Ps1 ; Ps2 H | CUP | カーソルを Ps1 行目の Ps2 桁目に移動する。Ps1, Ps2 の省略時の値は 1。
CSI Ps I | CHT | カーソルを Ps 個後ろのタブストップに移動する。Ps の省略時の値は 1。
CSI Ps J ED 画面消去。Ps の省略時の値は 0。
Ps = 0      カーソル位置から画面末尾までを消去する。
   = 1      画面先頭からカーソル位置までを消去する。
   = 2      画面全体を消去する。
CSI Ps K EL 行消去。Ps の省略時の値は 0。
Ps = 0      カーソル位置から行末までを消去する。
   = 1      行頭からカーソル位置までを消去する。
   = 2      行全体を消去する。
CSI Ps L | IL | カーソルのある行の前に Ps 行空行を挿入する。Ps の省略時の値は 1。
CSI Ps M | DL | カーソルのある行から Ps 行を削除する。Ps の省略時の値は 1。
CSI Ps P | DCH | カーソル位置の文字を Ps 文字削除する。Ps の省略時の値は 1。
CSI Ps S | SU | 画面を Ps 行上にスクロールする。Ps の省略時の値は 1。
CSI Ps T | SD | 画面を Ps 行下にスクロールする。Ps の省略時の値は 1。
CSI Ps X | ECH | カーソル位置から Ps 文字を消す(空白にする)。Ps の省略時の値は 1。
CSI Ps Z | CBT | カーソルを Ps 個前のタブストップに移動する。Ps の省略時の値は 1。
CSI Ps ` | HPA | カーソルを現在の行の Ps 桁目に移動する。Ps の省略時の値は 1。
CSI Ps a | HPR | カーソルを Ps 桁右に移動する。Ps の省略時の値は 1。
CSI Ps b | REP | 最後に出力した文字を Ps 回繰り返す。Ps の省略時の値は 1。
CSI Ps c DA 端末特性報告。省略時の Ps の値は 0。
Ps = 0    端末特性を要求する。
応答: 端末IDの設定により異なる。
  VT100     ESC [ ? 1 ; 2 c
  VT100J    ESC [ ? 5 ; 2 c
  VT101     ESC [ ? 1 ; 0 c
  VT102     ESC [ ? 6 c
  VT102J    ESC [ ? 15 c
  VT220J    ESC [ ? 62 ; 1 ; 2 ; 5 ; 6 ; 7 ; 8 c
  VT282     ESC [ ? 62 ; 1 ; 2 ; 4 ; 5 ; 6 ; 7 ; 8 ; 10 ; 11 c
  VT320     CSI ? 63 ; 1 ; 2 ; 6 ; 7 ; 8 c
  VT382     CSI ? 63 ; 1 ; 2 ; 4 ; 5 ; 6 ; 7 ; 8 ; 10 ; 15 c
  VT420     CSI ? 64 ; 1 ; 2 ; 7 ; 8 ; 9 ; 15 ; 18 ; 21 c"
  VT520     CSI ? 65 ; 1 ; 2 ; 7 ; 8 ; 9 ; 12 ; 18 ; 19 ; 21 ; 23 ; 24 ; 42 ; 44 ; 45 ; 46 c
  VT525     CSI ? 65 ; 1 ; 2 ; 7 ; 9 ; 12 ; 18 ; 19 ; 21 ; 22 ; 23 ; 24 ; 42 ; 44 ; 45 ; 46 c
CSI Ps d | VPA | カーソルを桁位置を変えずに Ps 行目に移動する。Ps の省略時の値は 1。
CSI Ps e | VPR | カーソルを Ps 行下に移動する。Ps の省略時の値は 1。
CSI Ps1 ; Ps2 f | HVP | カーソルを Ps1 行目の Ps2 桁目に移動する。Ps1, Ps2 の省略時の値は 1。
CSI Ps g TBC タブストップの削除。Ps の省略時の値は 0。
Ps = 0      カーソル位置のタブストップを削除する。
   = 3      すべてのタブストップを削除する。
CSI Pm h | SM | モードを設定する。(モード (標準)を参照)
CSI Pm i MC 印刷モード
Ps = 0      画面を印刷する。
   = 4      プリンタコントローラモードを無効にする。
   = 5      プリンタコントローラモードを有効にする。
CSI Ps j | HPB | カーソルを Ps 桁左に移動する。Ps の省略時の値は 1。
CSI Ps k | VPB | カーソルを Ps 行上に移動する。Ps の省略時の値は 1。
CSI Pm l | RM | モードを解除する。(モード (標準)を参照)
CSI Pm m | SGR | 文字属性を設定する。省略時の Pm の値は 0。(文字属性を参照)
CSI Ps n DSR 端末の状態を報告する。
Ps = 5      端末の状態を報告する。常に CSI 0 n (準備OK)を返す。
            応答: CSI s n
              s = 0    正常
   = 6      カーソルの位置を報告する。(CPR)
            応答: CSI r ; c R
              r    行位置
              c    桁位置
CSI Ps1 ; Ps2 r DECSTBM 上下マージン(スクロールリージョン)を設定する。
Ps1    上マージンの行位置。省略時は 1。
Ps2    下マージンの行位置。省略時は画面下端。
CSI s | SCP | 現在のカーソル位置を保存する。DECLRMM がリセットされている時のみ有効。
CSI Ps1 ; Ps2 s DECSLRM 左右マージン(スクロールリージョン)を設定する。DECLRMM がセットされている時のみ有効。
Ps1    左マージンの行位置。省略時は 1。
Ps2    右マージンの行位置。省略時は画面右端。
CSI Ps1 ; Ps2 ; Ps3 t (DECSLPP) ウィンドウ操作
Ps1 =  1    ウィンドウを通常表示状態にする。
    =  2    ウィンドウを最小化する。
    =  3    ウィンドウ位置を Ps2, Ps3 に移動する。
    =  4    ウィンドウサイズを高さ Ps2 ドット, 幅 Ps3 ドットに変更する。
    =  5    ウィンドウを前面に移動する。
    =  6    ウィンドウを背面に移動する。
    =  7    ウィンドウを再描画する。
    =  8    端末サイズを Ps2 行, Ps3 桁に変更する。
    =  9    端末の最大化状態を変更する。
            Ps2 = 0    ウィンドウを通常サイズに変更する。
                = 1    ウィンドウを最大化する。
    = 10    端末のフルスクリーンモードを変更する。現在は端末の最大化で代用している。
            Ps2 = 0    フルスクリーン状態を解除する
                = 1    フルスクリーン状態にする
                = 2    フルスクリーン状態を変更する(トグル)

    = 11    ウィンドウの最小化状態を報告する。
            応答: CSI s t
              s = 1    通常状態
                = 2    最小化状態

    = 13    ウィンドウの位置を報告する。
            Ps2 = 省略, 0, 1
                       ウィンドウ全体の位置を報告する
                = 2    テキスト領域の位置を報告する
            応答: CSI 3 ; x ; y t
              x    ウィンドウ左上角の X 座標
              y    ウィンドウ左上角の Y 座標

    = 14    ウィンドウのサイズを報告する。
            Ps2 = 省略, 0, 1
                       テキスト領域のサイズを報告する
                = 2    ウィンドウ全体のサイズを報告する
            応答: CSI 4 ; y ; x t
              y    ウィンドウの高さ
              x    ウィンドウの幅

    = 15    ルートウィンドウのサイズをピクセル数で報告する。
            応答: CSI 5 ; y ; x t
              y    ルートウィンドウの高さ(ピクセル)
              x    ルートウィンドウの幅(ピクセル)

    = 16    文字サイズを報告する。
            応答: CSI 6 ; y ; x t
              y    文字の高さ(ピクセル)
              x    文字の幅(ピクセル)

    = 18    端末サイズを報告する。
            応答: CSI 8 ; y ; x t
              y    端末サイズの高さ(行数)
              x    端末サイズの幅(文字数)

    = 19    ルートウィンドウのサイズを文字数で報告する。
            応答: CSI 9 ; y ; x t
              y    ルートウィンドウの高さ(行数)
              x    ルートウィンドウの幅(文字数)

    = 20    アイコンラベルを報告する。
            応答: OSC L title ST
              title    アイコンラベル (ウィンドウタイトル)

    = 21    ウィンドウタイトルを報告する。
            応答: OSC l title ST
              title    ウィンドウタイトル
    = 22    ウィンドウタイトルをスタックに保存する。
            Ps2 = 0, 1, 2    ウィンドウタイトルを保存する。
    = 23    ウィンドウタイトルをスタックから復元する。
            Ps2 = 0, 1, 2    ウィンドウタイトルを復元する。
CSI u | RCP | 保存したカーソル位置を復元する。
CSI < r | TTIMERS | IME の開閉状態を復元する。
CSI < s | TTIMESV | IME の開閉状態を保存する。
CSI < Ps t TTIMEST IME の開閉状態を設定する。省略時の Ps の値は 0。
Ps = 0      IME を閉じる。
   = 1      IME を開く。
CSI = Ps c DA3 (Tertiary DA) 第三端末特性報告。省略時の Ps の値は 0。
Ps = 0      第三端末特性要求
            応答: DCS ! | dddddddd ST
              dddddddd  端末固有ID
CSI > Ps c DA2 (Secondary DA) 第二端末特性報告。省略時の Ps の値は 0。
Ps = 0      第二端末特性要求
            応答: CSI > 32 ; 331 ; 0 c
CSI > 3 ; Ps1 ; Ps2 ; Ps3 ; Ps4 J - 矩形消去。
Ps1   消去領域の上辺
Ps2   消去領域の左辺
Ps3   消去領域の下辺
Ps4   消去領域の右辺
CSI > 3 ; Ps1 ; Ps2 K - 現在の行の Ps1 桁目から Ps2 桁目までを消去する。
CSI > 5 ; Ps K -
Ps = 3..6   Draw Line
   = 12     Set foreground color
CSI ? Ps J DECSED 選択的画面消去。保護されていない文字のみを消去する。Ps の省略時の値は 0。
Ps = 0      カーソル位置から画面末尾までの保護されていない文字を消去する。
   = 1      画面戦闘からカーソル位置までの保護されていない文字を消去する。
   = 2      画面全体の保護されていない文字を消去する。
CSI ? Ps K DECSEL 選択的行消去。保護されていない文字のみを消去する。Ps の省略時の値は 0。
Ps = 0      カーソル位置から行末までの保護されていない文字を消去する。
   = 1      行頭からカーソル位置までの保護されていない文字を消去する。
   = 2      行全体の保護されていない文字を消去する。
CSI ? Pm h | DECSET | DEC/xterm 拡張のモードを設定する。(モード (DEC/xterm拡張)を参照)
CSI ? Pm i DECMC 印刷モード
Pm =  1     カーソル行を印刷する。
   =  4     自動プリントモードを無効にする。
   =  5     自動プリントモードを有効にする。
CSI ? Pm l | DECRST | DEC/xterm 拡張のモードを解除する。(モード (DEC/xterm拡張)を参照)
CSI ? Ps n DECDSR 端末の状態を報告する。
Ps = 55     ロケータデバイスの状態を報告する。常に CSI ? 50 n (準備OK)を返す。
            応答: CSI ? s n
              s = 50    Locator ready.
CSI Ps SP q DECSCUSR カーソル表示形式変更。Ps の省略時の値は 0。
Ps = 0,1    ブロックカーソル / 点滅
   = 2      ブロックカーソル / 非点滅
   = 3      下線カーソル / 点滅
   = 4      下線カーソル / 非点滅
   = 5      縦線カーソル / 点滅
   = 6      縦線カーソル / 非点滅
CSI ! p | DECSTR | ソフトリセット
CSI Ps1 ; Ps2 " p DECSCL 端末動作モード設定
Ps1 = 61    VT-Level 1 (VT100モード)
    = 62    VT-Level 2 (VT200モード)
    = 63    VT-Level 3 (VT300モード)
    = 64    VT-Level 4 (VT400モード)
    = 65    VT-Level 5 (VT500モード)

Ps2 = 0     8 bit モード (S8C1T)
    = 1     7 bit モード (S7C1T)
    = 2     8 bit モード (S8C1T)
CSI Ps " q DECSCA 文字の保護属性を設定する。保護されている文字は選択的消去の対象外になる。
Ps = 0      保護属性の解除。これ以降に出力される文字は保護されていない状態になる。
   = 1      保護属性の設定。これ以降に出力される文字は保護状態になる。
   = 2      保護属性の解除。これ以降に出力される文字は保護されていない状態になる。
CSI Ps $ p (Standard)
CSI ? Ps $ p (DEC/xterm) 		DECRQM モード問い合わせ。端末にモード(標準, DEC/xterm拡張)の状態を問い合わせる。
Ps: 問い合わせるモード。
応答: CSI Ps1 ; Ps2 $ y     -- 標準モード
      CSI ? Ps1 ; Ps2 $ y   -- DEC/xterm拡張モード
  Ps1   問い合わせたモード番号
  Ps2 = 0    非対応
      = 1    セット
      = 2    リセット
      = 3    常にセット
      = 4    常にリセット
CSI Ps1 ; Ps2 ; Ps3 ; Ps4 ; Pm $ r DECCARA 範囲内文字属性設定。Ps1行目のPs2桁目からPs3行目のPs4桁目の間の文字属性をPmに設定する。
Ps1   範囲指定の開始位置の行位置。省略時は1。
Ps2   範囲指定の開始位置の桁位置。省略時は1。
Ps3   範囲指定の終了位置の行位置。省略時は画面の行数と同じ値。
Ps4   範囲指定の終了位置の桁位置。省略時は画面の桁数と同じ値。
Pm    設定する文字属性。";" で区切る事によって複数指定出来る。
開始位置および終了位置の扱いはDECSACEの設定によって変わる。
DECSACEで0または1が設定された場合は、開始位置から終了位置の間の連続領域が対象範囲となる。
DECSACEで2が設定された場合は、開始位置を左上、終了位置を右下とした矩形領域が対象範囲となる。
CSI Ps1 ; Ps2 ; Ps3 ; Ps4 ; Pm $ t DECRARA 範囲内文字属性反転。Ps1行目のPs2桁目からPs3行目のPs4桁目の間の文字属性Pmを反転する。
Ps1   範囲指定の開始位置の行位置。省略時は1。
Ps2   範囲指定の開始位置の桁位置。省略時は1。
Ps3   範囲指定の終了位置の行位置。省略時は画面の行数と同じ値。
Ps4   範囲指定の終了位置の桁位置。省略時は画面の桁数と同じ値。
Pm    反転する文字属性。";" で区切る事によって複数指定出来る。
開始位置および終了位置の扱いはDECSACEの設定によって変わる。
DECSACEで0または1が設定された場合は、開始位置から終了位置の間の連続領域が対象範囲となる。
DECSACEで2が設定された場合は、開始位置を左上、終了位置を右下とした矩形領域が対象範囲となる。
CSI Ps1 ; Ps2 ; Ps3 ; Ps4 $ z DECERA 矩形消去。Ps1 ～ Ps4 の省略時の値は現在のカーソル位置。
Ps1   消去領域の上辺
Ps2   消去領域の左辺
Ps3   消去領域の下辺
Ps4   消去領域の右辺
CSI Ps1 ; Ps2 ; Ps3 ; Ps4 $ { DECSERA 選択的矩形消去。矩形内の保護されていない文字を消去する。Ps1 ～ Ps4 の省略時の値は現在のカーソル位置。
Ps1   消去領域の上辺
Ps2   消去領域の左辺
Ps3   消去領域の下辺
Ps4   消去領域の右辺
CSI Ps $ } DECSASD ステータス行から/へ移動。Ps の省略時の値は 0。
Ps = 0      主画面へ移動。
   = 1      ステータス行へ移動。
CSI Ps $ ~ DECSSDT ステータス行の表示状態の変更。Ps の省略時の値は 0。
Ps = 0      ステータス行を表示しない。
     1      ステータス行を表示しない。
     2      ステータス行を表示する。
CSI Ps1 ; Ps2 ; Ps3 ; Ps4 ' w DECEFR filter rectangle 設定。
Ps1   filter rectangle の上辺
Ps2   filter rectangle の左辺
Ps3   filter rectangle の下辺
Ps4   filter rectangle の右辺
filter rectangle は常にワンショットモード扱いになる。一度フィルタイベントを送信すると filter rectangle は無効になる。
CSI Ps1 ; Ps2 ' z DECELR DEC ロケータ報告モード。
Ps1 = 0     ロケータ報告を無効にする
    = 1     ロケータ報告を有効にする
    = 2     ワンショットモード。次の一回の報告だけロケータ報告を有効にし、その後無効にする。
Ps2 = 0     文字モード。2 と同じ。
    = 1     ピクセルモード。位置をピクセル単位で報告する。
    = 2     文字モード。位置を文字単位で報告する。
CSI Pm ' { DECSLE ロケータイベント設定。
Pm = 0      ボタンダウン/アップイベントを無効にする。filter rectangle を無効にする。
   = 1      ボタンダウンイベントを有効にする。ボタンが押されると、DECRQLP と同じ形式でロケータ位置を報告する。
   = 2      ボタンダウンイベントを無効にする。
   = 3      ボタンアップイベントを有効にする。ボタンが離されると、DECRQLP と同じ形式でロケータ位置を報告する。
   = 4      ボタンアップイベントを無効にする。
CSI ' | DECRQLP ロケータの位置を応答する。
応答: CSI Pe ; Pb ; Pr ; Pc ; Pp & w
Pe: イベントコード
Pe =  0     ロケータ報告が無効
   =  1     ロケータ位置要求(DECRQLP) を受けた
   =  2     左ボタンが押された
   =  3     左ボタンが離された
   =  4     中ボタンが押された
   =  5     中ボタンが離された
   =  6     右ボタンが押された
   =  7     右ボタンが離された
   =  8     ボタン 4 が押された (未対応)
   =  9     ボタン 4 が離された (未対応)
   = 10     ロケータが filter rectangle の外に出た。

Pb: ボタン状態。押されているボタンに対応する以下の値の合計。
  1    右ボタン
  2    中ボタン
  4    左ボタン
  8    ボタン4 (未対応)

Pr: 縦位置。画面上端を 1 とする。

Pc: 横位置。画面左端を 1 とする。

Pp: ページ。常に 1。

モード (標準)

モード | 略号 | 設定(SM) | 解除(RM)
2 | KAM | キーボードをロックする。キー入力はすべて無視される。 | キーボードのロックを解除する。
4 | IRM | 挿入モードに設定する。 | 上書きモードに設定する。
12 | SRM | ローカルエコーを無効にする。 | ローカルエコーを有効にする。
20 | LNM | New line モード。 - LF, FF, VT で、カーソルが次の行の行頭に移動するようになる。 - 改行コード(送信) の設定が "CR+LF" に変更される。 | Line feed モード。 - LF, FF, VT で、カーソルが次の行の同じ桁位置に移動するようになる。 - 改行コード(送信) の設定が "CR" に変更される。
33 | WYSTCURM | カーソルの点滅を無効にする。 | カーソルの点滅を有効にする。
34 | WYULCURM | カーソルの形状を下線カーソルにする。 | カーソルの形状をブロックカーソルにする。

モード (DEC/xterm拡張)

モード | 略号 | 設定(DECSET) | 解除(DECRST)
1 | DECCKM | アプリケーションカーソルモードに設定する。 | ノーマルカーソルモードに設定する。
3 | DECCOLM | ウィンドウの横幅を 132 桁にする。 | ウィンドウの横幅を 80 桁にする。
5 | DECSCNM | 反転表示モード。文字色と背景色を入れ替える。 | 通常表示モード。文字色と背景色を通常状態に戻す。
6 | DECOM | 行数の基準位置を上マージンにする。上下マージンの外にカーソルを移動できないようにする。カーソル位置を上マージンの 1 桁目に移動する。 | 行数の基準位置を画面上端にする。上下マージンの外にカーソルを移動できるようにする。カーソル位置を画面上端の 1 桁目に移動する。
7 | DECAWM | 行末での自動改行を有効にする。 | 行末での自動改行を無効にする。
8 | DECARM | キーボードのオートリピートを有効にする。 | キーボードのオートリピートを無効にする。
9 | XT_MSE_X10 | X10 互換マウス報告モードに設定する。 | マウス報告モードを解除する。
12 | XT_CBLINK | カーソルの点滅を無効にする。 | カーソルの点滅を有効にする。
19 | DECPEX | 印刷範囲を画面全体にする。 | 印刷範囲をスクロールリージョン内にする。
25 | DECTCEM | カーソルを表示する。 | カーソルを非表示にする。
38 | DECTEK | TEKウィンドウに切り替える。 | 何も行わない。
47 | XT_ALTSCRN | 代替画面バッファに切り替える。 | 標準画面バッファに切り替える。
59 | DECKKDM | 漢字端末モードに設定する。 | カタカナ端末モードに設定する。
66 | DECNKM | アプリケーションキーパッドモードに設定する。 | 数値キーパッドモードに設定する。
67 | DECBKM | Backspace キーで BS を送出する。 | Backspace キーで DEL を送出する。
69 | DECLRMM | 左右マージンを有効にする。DECSLRM による左右マージン設定が有効になる。SCP によるカーソル位置保存が無効になる。 | 左右マージンを無効にする。DECSLRM による左右マージン設定が無効になる。SCP によるカーソル位置保存が有効になる。
1000 | XT_MSE_X11 | マウス報告モードに設定する。マウスボタンの押し/離し,ホイールの回転を報告する。 | マウス報告モードを解除する。
1002 | XT_MSE_BTN | ボタンイベントマウス報告モードに設定する。通常のマウス報告モードの他に、マウスボタンを押している間のマウスの動きも報告する。 | マウス報告モードを解除する。
1003 | XT_MSE_ANY | 全イベントマウス報告モードを有効にする。ボタンイベントマウス報告モードの他に、マウスボタンを押していない状態でもマウスの動きを報告する。 | マウス報告モードを解除する。
1004 | XT_MSE_WIN | フォーカス報告モードに設定する。 | フォーカス報告モードを解除する。
1005 | XT_MSE_UTF | xterm (UTF-8) 形式の拡張マウス報告形式を有効にする。 | 拡張マウス報告形式を解除する。
1006 | XT_MSE_SGR | xterm (SGR) 形式の拡張マウス報告形式を有効にする。 | 拡張マウス報告形式を解除する。
1015 | - | rxvt-unicode 形式の拡張マウス報告形式を有効にする。 | 拡張マウス報告形式を解除する。
1047 | XT_ALTS_47 | 代替画面バッファに切り替える。 | 画面全体を消去した後、標準画面バッファに切り替える。
1048 | XT_ALTS_48 | 現在のカーソル位置を保存する。 | 保存したカーソル位置を復元する。
1049 | XT_EXTSCRN | 現在のカーソル位置を保存後、代替画面バッファに切り替え、画面全体を消去する。 | 画面全体を消去し、標準画面バッファに切り替えた後、保存したカーソル位置を復元する。
2004 | RL_BRACKET | Bracketed paste mode を有効にする。 | Bracketed paste mode を無効にする。
7727 | - | Application Escape mode を有効にする。 | Application Escape mode を無効にする。
7786 | - | マウスホイール - カーソルキー変換を有効にする。 | マウスホイール - カーソルキー変換を無効にする。
8200 | TTCTH | 画面クリア(ED 2)時にカーソルを左上に移動する。 | 画面クリア(ED 2)時にカーソル位置を移動しない。

文字属性 (SGR)

番号 | 属性
0 | 全ての属性を解除する。
1 | 太字属性を設定する。
4 | 下線属性を設定する。
5 | 点滅属性を設定する。
7 | 反転属性を設定する。
22 | 太字属性を解除する。
24 | 下線属性を解除する。
25 | 点滅属性を解除する。
27 | 反転属性を解除する。
30 | 文字色を黒(色番号0)に設定する。
31 | 文字色を赤(色番号1)に設定する。
32 | 文字色を緑(色番号2)に設定する。
33 | 文字色を黄色(色番号3)に設定する。
34 | 文字色を青(色番号4)に設定する。
35 | 文字色を赤紫(色番号5)に設定する。
36 | 文字色を水色(色番号6)に設定する。
37 | 文字色を白(色番号7)に設定する。
38 ; 2 ; r ; g ; b 38 ; 2 ; r : g : b 38 ; 2 : r : g : b 38 : 2 : r : g : b | RGB値指定での文字色変更。文字色を R:r, G:g, B:b で表される色に設定する。 現在の実装では256色パレット中で指定したRGB値に最も近い色が使われる。
38 ; 5 ; Ps 38 ; 5 : Ps 38 : 5 : Ps | 文字色を色番号 Ps に設定する。
39 | 文字色を標準の文字色に設定する。
40 | 背景色を黒(色番号0)に設定する。
41 | 背景色を赤(色番号1)に設定する。
42 | 背景色を緑(色番号2)に設定する。
43 | 背景色を黄色(色番号3)に設定する。
44 | 背景色を青(色番号4)に設定する。
45 | 背景色を赤紫(色番号5)に設定する。
46 | 背景色を水色(色番号6)に設定する。
47 | 背景色を白(色番号7)に設定する。
48 ; 2 ; r ; g ; b 48 ; 2 ; r : g : b 48 ; 2 : r : g : b 48 : 2 : r : g : b | RGB値指定での背景色変更。背景色を R:r, G:g, B:b で表される色に設定する。 現在の実装では256色パレット中で指定したRGB値に最も近い色が使われる。
48 ; 5 ; Ps 48 ; 5 : Ps 48 : 5 : Ps | 背景色を色番号 Ps に設定する。
49 | 背景色を標準の背景色に設定する。
90 | 文字色を暗い灰色(色番号8)に設定する。
91 | 文字色を明るい赤(色番号9)に設定する。
92 | 文字色を明るい緑(色番号10)に設定する。
93 | 文字色を明るい黄色(色番号11)に設定する。
94 | 文字色を明るい青(色番号12)に設定する。
95 | 文字色を明るい赤紫(色番号13)に設定する。
96 | 文字色を明るい水色(色番号14)に設定する。
97 | 文字色を明るい白(色番号15)に設定する。
100 | 背景色を暗い灰色(色番号8)に設定する。
101 | 背景色を明るい赤(色番号9)に設定する。
102 | 背景色を明るい緑(色番号10)に設定する。
103 | 背景色を明るい黄色(色番号11)に設定する。
104 | 背景色を明るい青(色番号12)に設定する。
105 | 背景色を明るい赤紫(色番号13)に設定する。
106 | 背景色を明るい水色(色番号14)に設定する。
107 | 背景色を明るい白(色番号15)に設定する。

DCSシーケンス

シーケンス | 略号 | 機能
DCS Ps1 ; Ps2 | Pt ST | DECUDK | ユーザキー定義。
DCS ! { Pt ST | DECSTUI | 端末固有 ID を Pt に変更する。LockTUID 設定が off の時のみ有効。
DCS $ q Pt ST DECRQSS 設定問い合わせ。
Pt: 問い合わせる設定
Pt = m    SGR
   = r    DECSTBM
   = s    DECSLRM
   = " p  DECSCL
   = " q  DECSCA
   = SP q DECSCUSR
   = * x  DECSACE

応答: DCS Ps $ r Pt ST
Ps = 0    正常な問い合わせ。Pt は該当の設定を現在の状態に変更するためのシーケンスから先頭の CSI を除いた物。
   = 1    不正な問い合わせ。Pt は無し。
DCS + q Pt ST - Termcap/Terminfo文字列問い合わせ。
Pt: 問い合わせるキャパビリティ。一文字辺り2桁の16進数値形式で指定する。

応答: DCS Ps + r Pt ST
Ps = 0   不正な問い合わせ。Pt は無し。
   = 1   正常な問い合わせ。
         Pt は Pt1 = Pt2 形式。Pt1 は問い合わせたキャパビリティ。Pt2 はその値。共に一文字辺り2桁の16進数値形式となる。

OSCシーケンス

形式

OSC Ps ; Pt ST
OSC Ps ; Pt BEL
Ps | 機能
0, 1, 2 | ウィンドウタイトルを Pt に変更する。
4 色を設定する。 Pt は c ; spec という書式で、色番号 c の色を spec に設定する。
spec は以下の形式を受け付ける。
rgb:r/g/b
rgb:rr/gg/bb
rgb:rrr/ggg/bbb
rgb:rrrr/gggg/bbbb
#rgb
#rrggbb
#rrrgggbbb
#rrrrggggbbbb
?
spec が "?" の時は問い合わせ。該当の色を以下の形式で応答する。
OSC 4 ; c ; rgb:rrrr/gggg/bbbb ST
5 文字属性の色を設定する。 Pt は c ; spec という書式で、c に対応する文字属性の色を spec に設定する。
c と文字属性の対応は以下の通り。
c = 0   高輝度
  = 1   下線
  = 2   点滅
  = 3   反転
spec の形式は、OSC 4 の spec と同じ。
10 | VTウィンドウの文字色を Pt に設定する。Pt の形式は、OSC 4 の spec と同じ。
11 | VTウィンドウの背景色を Pt に設定する。Pt の形式は、OSC 4 の spec と同じ。
15 | TEKウィンドウの文字色を Pt に設定する。Pt の形式は、OSC 4 の spec と同じ。
16 | TEKウィンドウの背景色を Pt に設定する。Pt の形式は、OSC 4 の spec と同じ。
52 クリップボードへのアクセス。
Pt = Pc ; Pd
クリップボード Pc の内容を Pd にする。
Pc: クリップボードの種類。 c p s 0 1 2 3 4 5 6 7 の 0 個以上の組み合わせを受け付ける。ただし現状ではこのパラメータは無視される。
Pd: クリップボードに設定するデータ。base64 形式でエンコードする。
Pd が "?" の時は問い合わせ。クリップボードの内容を、設定と同じ形式で応答する。
104 | 色番号 Pt を初期値に戻す。
105 | 番号 Pt に対応する文字属性の色を初期値に戻す。番号と文字属性の対応は OSC 5 の c と同じ。
110 | VTウィンドウの文字色を初期値に戻す。
111 | VTウィンドウの背景色を初期値に戻す。
115 | TEKウィンドウの文字色を初期値に戻す。
116 | TEKウィンドウの背景色を初期値に戻す。

SOSシーケンス

形式

SOS Pt ST

対応しているSOSシーケンスはありません。すべて無視します。

PMシーケンス

形式

PM Pt ST

対応しているPMシーケンスはありません。すべて無視します。

APCシーケンス

形式

APC Pt ST

対応しているAPCシーケンスはありません。すべて無視します。

参考文献

  • ECMA-48
  • VT100.net
  • Xterm control sequences
  • Locator input models for ANSI Terminals (sixth revision)
  • all-escapes.txt
  • aixterm


Q & A集

作者に連絡をする前にこのページをよく読んでください。

[Tera Term について]

Q. Tera Term の最新版はどこで入手可能か?
A. https://ttssh2.osdn.jp/から入手できます。
(上記のサイト、ディレクトリは将来変更される可能性があります。)

Q. Tera Term の次のバージョンはいつ出るのか?
A. 定期リリースは 3 ヶ月に一回、2月/5月/8月/11月の末に出ます。諸々の理由により多少遅れる場合が有ります。
A. セキュリティホール等の致命的な問題が見つかった場合、定期リリース以外のタイミングでも新しいバージョンが出る事が有ります。

Q. Tera Term の実行プログラムやソースコードを商用利用して問題ないか?
A. まったく問題ありません。連絡も不要です。Tera TermはBSD Licenseに基づいて配布されています。

Q. Tera Term の開発に参加したい。
A. 誰でも参加自由です。OSDN にアカウントを作成した上で、作者に連絡願います。

Q. Tera Term のスクリーンショットを利用してもいいですか？
A. ライセンスに従って、ユーザの自己責任でお使いください。

[基本的な使い方]

Q. ホストに接続できない。
A. 以下のことを確認してみてください。

  • コントロールパネルのネットワークの設定。
  • 他の TCP/IP アプリケーションは使えますか? (telnet, FTP, WWW ブラウザなど)
  • ホスト名または IP アドレスはあってますか?
  • 他のマシンでそのホストに接続できますが?

ネットワークに関する設定法について作者に質問しないでください。インターネット関係の入門書や雑誌を読むか、ネットワーク(プロバイダー)の管理者に聞いてください。

Q. ダイアルアップ TCP/IP (PPP) 接続で、Tera Term を使うにはどうしたらよいか? (電話回線で、いわゆる「インターネット」する人の場合)
A. Tera Term を起動する前に、ダイアルアップ(PPP)接続を確立させてください。Windows 95 の場合は、「ダイアルアップ ネットワーク」を使用します。
ダイアルアップ(PPP)接続が確立したら Tera Term を起動し、[File] New connection ダイアログボックスで、ホスト名またはホストの IP アドレスを入力してホストに telnet 接続をします。ホスト名または IP アドレスがわからない場合は、ホストの管理者に聞いてください。
PPP 接続の場合、シリアルポートは Tera Term ではなく PPP 接続ソフトによって制御されます。 Tera Term のシリアルポート接続機能は、従来のパソコン通信的接続のためのもので、PPP 接続とは関係ありません。

Q. Telnet でホストに接続し、その後ログアウトしたときに Tera Term が勝手に終了してしまい困る。
A. [Setup] TCP/IP の Auto window close を off にしてください。

Q. Telnet 接続をしたいのに、起動すると勝手にシリアルポートが開かれてしまう。
A. [Setup] General で Default port を "TCP/IP" にしてください。

[日本語]

Q. 日本語が入力/表示できない。
A. まずは [Setup] General で Language が "Japanese" になっていることを確認してください。
次に [Setup] Terminal で Kanji (receive) と Kanji (transmit) を "SJIS", "EUC", "JIS", "UTF-8" の中から１つ選び両方とも同じものにしてください。
4つともためしてうまくいくものを探してください。より確実にはホストの管理者にどの日本語コードを指定すべきか聞いてください。
A. ホストで使われている日本語コードが JIS 以外の場合で、日本語の入力ができない場合、ホストで 8 bit 文字の入力ができるように設定されていない
可能性があります。8 bit 文字を入力可能にするには、例えば以下のようなコマンドで設定してください。

stty pass8 -istrip	(SunOS等の unix の場合)
set term /eight		(VMS の場合)

詳しくは、ホストの管理者等に聞いてください。

Q. 漢字モードを JIS や EUC にしたとき Shift-JIS や UTF-8 の漢字を受信すると Tera Term がハングアップする。
A. 「C1 制御文字を使用しない」を読んでください

Q. [Setup] Terminalで Kanji-Out で ^[(H を設定できるようにしてほしい。
A. 「正しくない "Kanji-out" を使用可能にする。」を読んでください。

Q. 最初は正しく表示されていたが、何かの拍子に文字が正しく表示されなくなる。
A. ホスト側が壊れた文字列を送ってきたり、Tera Term の受信漢字コードの設定と異なる漢字コードの文字列を送って来た場合、それ以降の文字表示が正しく行われなくなる場合があります。以下のことを試してみてください。

  • [Control] Reset Terminal (端末リセット) で表示状態をリセット出来ます。
  • ホスト側で利用する漢字コードと Tera Term の受信漢字コードの設定を合わせてください。
  • ホスト側のバグ等で壊れた文字列が送られて来る事があります。ホスト側の OS や利用しているソフトウェアに対してバグ報告をしたり、(あれば)パッチを適用したりしてホスト側が壊れた文字列を送らないようにしてください。
  • 漢字コードとして UTF-8 のみを利用している場合、[Setup] General の Language を UTF-8 に変更すると症状が軽減される場合があります。
  • 「2バイト文字(漢字)の1バイト目と2バイト目の間に制御文字等が入った場合、1バイト目を無効にする」の設定を行うと症状が軽減される場合があります。

[キーボード]

Q. Backspace または Delete (DEL) キーを押してもカーソルの一つ左の文字が消せない。
A. Backspace キーについては [Setup] Keyboard の Backspace key を on または off に変えてみてください。Delete キーについては、 [Setup] Keyboard の Delete key を on にしてください。ただしホストによっては Delete キーが使えない場合があります。

Q. テンキー(数値キーパッド)でキーに書いてある文字が正しく入力できない。
Q. テンキー(数値キーパッド)で "/", "*", "-", "+" が入力できない。
A. 「テンキー(数値キーパッド)について」を読んでください。

Q. F1-F4 キーが使えない。
A.「F1-F4 キー」を押すことによって VT100 の PF1-PF4 キーの機能を実現させたいという意味ならば、「VT100 の PF1-PF4 キー」を読んでください。

Q. 何々キーが使えない。
A. この種の質問はたいていの場合答えられません。そのキーを押した時に送出されるべき文字(列)あるいは実行されるべき機能がわからないことが多いからです。もしそれがわかる場合は、キーボード設定ファイルを設定することによってそのキーを使えるようにすることができます。 KEYCODE.TXTを読んでください。

Q. 某社の unix に接続し、DEL キーを押して実行中のプログラムを中断しようとしたができない。
A. [Setup] Keyboard の Delete key を on にしてください。

Q. [Edit] Paste (Copy) の ショートカットキーは Alt+V (Alt+C) になっているが、他のアプリケーションと同じ Ctrl+V (Ctrl+C) にしたい。
A. Ctrl+V は、ホストに ^V 文字を送出するために使うことがあるので、初期設定では、ショートカットキーになっていません。Ctrl+V を [Edit] Paste のショートカットキーにする方法は、「ユーザー・ショートカット・キー」と KEYCODE.TXT を読んでください。

[ファイル転送]

Q. XMODEM/ZMODEM/B-Plus/Quick-VAN によるファイル転送がうまくいかない。
Q. メニューの XMODEM/ZMODEM/B-Plus/Quick-VAN が灰色になっていて使えない。
A. 「XMODEM のヒント」, 「ZMODEM のヒント」, 「B-Plus のヒント」, 「Quick-VAN のヒント」を読んでください。

Q. あるホストへログインし、そこから他のホストへログインした場合、終端ホストと Tera Term の間でのファイル転送がうまくいかない。
A. 「中間ホストを経由してホストに接続した場合のファイル転送」 を参考にしてください。

[その他]

Q. Tera Term extension interface とは何?
A. Tera Term と add-on モジュールの間のインターフェイスです。Add-on モジュールは DLL の形で作成され、Tera Term のユーザーインターフェイス関数、設定関数、Winsock 関数をフックすることができます。現在利用可能な add-on モジュールについては、Tera Term home page を見てください。

Q. 罫線文字 ("Tera Special" フォント) が正常に表示されない。
A. コントロールパネルの「フォント」で、"Tera Special" フォントを削除し、システムを再起動し、"Tera Special" フォントをコントロールパネルの「フォント」で手動で再インストールしてください。

Q. 罫線 (DEC 特殊フォント) を表示させると、線に隙間ができたり、辺と角がなめらかにつながらなかったりする。
A. Tera Term では DEC 特殊フォントを表示させるため、独自の True Type フォント "Tera Special" (TSPECIAL.TTF) を用います。画面に表示させるときは、普通の文字のフォントと同じ大きさにスケールしますが、その倍率によっては、罫線に隙間ができるなどの問題が発生します。さまざまな大きさ、縦横比のフォントに "Tera Special" を完全に適合させるのは不可能なので、普通の文字のフォントの種類や大きさをいろいろ変えて、問題が起きないものを使用してください。

Q. [Setup] Font ダイアログボックスのリストに含まれるフォントの種類が少ないのはなぜ?
Q. [Setup] Font ダイアログボックスでなぜ "Times" フォントが選択できない?
A. Tera Term は"ＭＳ 明朝"や "Terminal" のような固定幅フォントしか使用しません。なぜなら VT 端末を正しくエミュレートするためには文字を等間隔で表示しなければならないからです。"Times" のような可変幅(プロポーショナル)フォントを等間隔に表示させるようにするにはプログラムが複雑になるためTera Term はそれらのフォントを使用していません。
A. Windows 7 では、非表示に設定されたフォントはダイアログボックスでリストに含まれません。コントロールパネルのフォントで、使いたいフォントを表示するように設定してください。

Q. ダブルクリックで単語を選択するときの単語の区切り方を以前のバージョンの Tera Term と同じにしてほしい。
A. 「ダブルクリックによる単語選択の区切り文字」を読んでください。

Q. 何かの拍子に TEK window が勝手に開いてしまって困る。
A. [Setup] Terminal で Auto change (VT<->TEK) という項目を off にしてください。
On になっていると、TEK4010 というグラフィック端末のコントロールシーケンスを受信したとき TEK window が自動的に開きます。

Q. マクロをつかって、モデムに設定コマンド (AT...)を複数行送ろうとしたが、送るのが速すぎてモデムがコマンドを正常にうけつけない。
A. モデムによっては、あるコマンド行を処理してる間に、次のコマンドが送られてくると、処理中のコマンドをキャンセルする、というようなものがあります。モデムから「OK」が来たのを確認した後に次のコマンドを送るようにするか、[Setup]Serial port で Transmit delay の msec/line の値を増やしてみてください。(例えば 200 msec/line にする)

Q. MS Net meeting をインストールしたところ、キーボード設定ファイル (*.CNF) のアイコンが Net meeting のものに変わってしまったが、問題はないか?
A. アイコンが変わっただけで内容は変化しませんし、Tera Term はキーボード設定ファイルを読むことができるので問題ありません。ただしアイコンをダブルクリックすると Net meeting が起動してしまいますので、しないでください。

Q. Windows NT の at コマンド(スケージュル機能)で Tera Term を起動することができない。
A. at コマンドで /interactive オプションを指定してください。

Q. コマンドラインオプションの/W=やマクロのsettitleコマンドでウィンドウタイトルが変更できない。
A. Linuxの一部のディストリビューションなどではウィンドウタイトルを変更する制御シーケンスを送信するよう設定されている場合があり、変更したウィンドウタイトルがホスト側に書き換えられてしまう事があります。この場合は以下のどちらかを行ってください。

  • ホスト側のシェル等の設定で、ウィンドウタイトルを変更する制御シーケンスを送出しないように設定する
  • [Setup]Additional SettingのGeneralタブにある Accept Window Title Change Request を off に変更する


要望集

作者に連絡をする前にこのページをよく読んでください。
ここではユーザーの方々からよくよせられる要望をまとめます。ここに書いてあることを作者に要望や催促をしないでください。
ここに書いてないことはすでに対応されている場合がありますので、このヘルプ、MACRO ヘルプ、READMEJ.TXT、KEYCODE.TXT、Tera Term home page をよく読んでください。

将来対応するかもしれないもの

  • VT100の倍角文字、点滅文字
  • ECMA-48端末の低輝度文字、イタリック体、高速点滅文字、不可視文字、抹消線文字
  • VT3XXの文字(行)間罫線
  • ツール・バー、ステータス・バー
  • ダイアラー
  • キーボード設定用ユーティリティー
  • メニューやダイアログボックスのカスタマイズ
  • 文字列検索機能
  • TEK window の画面バッファ & スクロール・バー
  • TEK window の印刷の解像度を改善する。
  • ファイル転送時の転送速度、残り時間、棒グラフ表示 [1]
  • ZMODEM の転送再開機能
  • Chinese & Korean [2]文字コード
  • [File] Print setup コマンド
  • スクロールバッファの内容、選択された文字をファイルに保存[3]
  • 画面/文字色の指定をカラーパレットで行う
  • 132 桁モードのとき小さいフォントに切り替える
  • 英語 Windows で漢字表示
  • 内部処理のUnicode化
  • SFTP(SSH File Transfer Protocol)
  • OpenSSHのProxyCommand

将来対応するかもしれないもの(MACRO 関係)

  • 配列変数 [4]
  • "exec" コマンドでリダイレクション対応
  • バイナリデータを "wait" で待てるようにする。
  • 既に起動しているTera Termへのconnect

遠い遠い将来に対応するかもしれないもの

  • TEK41XX, 42XX 端末のエミュレーション
  • Televideo, Wyse 端末のエミュレーション
  • TN3270
  • 開いているシリアルポートを他のアプリケーションと同時共有可能にする。
  • 行入力モード、行入力のためのウィンドウを用意する。
  • Kermit の転送速度改善 [5]
  • 可変幅(プロポーショナル)フォント
  • ANSI/AVATAR
  • ReGIS
  • シクセル
  • マクロで直接通信ポートを操作
  • xterm, DEC Locator mode以外のマウスプロトコル(NetTerm等)

注

  1. ^ Ver. 4.60でプログレスバーの表示に対応しました。
  2. ^ 韓国語文字セット(KS5601)には、Ver. 4.60で対応しました。
  3. ^ Tera Termのインストール先ディレクトリにある、screencapture.ttlが利用できるかもしれません。
  4. ^ Ver. 4.72で対応しました。
  5. ^ Ver. 4.73でLong Packetに対応しました。


作者への連絡

ネットワーク設定、接続法、ホストの設定、キーボード設定法、マクロファイル作成法等、Tera Term の使い方に関する質問を作者にしないでください。 どうか付属文書をご覧ください。最新情報や、便利な情報・ツール等は Tera Term の Home Page で見つかるかもしれません。

Tera Term の Home Page: https://ttssh2.osdn.jp/ (将来変更されるかもしれません。)

著作権や使用条件に関する質問や、特別な使用および配布形態に関する許可の申請等はどうぞメールしてください。 質問やバグ報告や要望ではなく単にメッセージを送りたい場合もどうぞ。

バグの報告や要望をする場合は以下を必ずよく読んでください:

  • Q & A
  • 要望集
  • Tera Term 設定ファイル (要望がすでに実現されているかもしれません。)
  • MACRO ヘルプ
  • KEYCODE.TXT
  • その他、このヘルプの関係する部分
  • 付属文書
    • LogMeTT_README.txt
    • Collector\readme.txt

またバグ報告の場合は、それが設定の問題ではないということ、Tera Term 固有の問題であるということ、をできるだけ確認してみてください。
Tera Term だけではなく他のアプリケーション(例えば Windows 95/NT 標準付属の telnet.exe) でも同じ問題が起こる場合は Tera Term のバグではない場合が多いです。考えられる原因やその問題が必ず起こるような条件を見つけていただくと作者は非常に助かります。報告の際は、Tera Term のバージョンや関係すると思われる情報を書いてください。

作者にメールを送ってくださった場合、返事がかなり遅れたり、出せない場合もよくありますのでご了承ください。
また、すでに報告されているバグや出されている要望、Tera Term 付属文書に答えが書いてある質問等は返事を省略させていただくかもしれません(せっかくメール送ってくださったのに本当にすみません)。

作者のメールアドレス: ttssh2-contact@lists.osdn.me (将来変更されるかもしれません。)


用語集

ホスト
このヘルプでは、接続先のコンピュータ(ホスト・コンピュータ)のことをホストといいます。
ホスト名
Telnet 等で接続先のホストを指定するために使用する名前です。"." で区切られた複数の文字列で構成されます(例: "host.domain.xx.jp")。
一番最初の文字列はホスト・コンピュータの名前を表し、それ以降はそのコンピュータが属するネットワークや国を表します。 ホスト名にはそれに対応する IP アドレスがあります。
プロトコル
このヘルプでは「規約」、「規格」という意味でこの言葉が使われています。
B-Plus
アメリカの BBS、CompuServe のために開発されたファイル転送プロトコル。日本では NIFTY-Serve で使用されています。
BBS
Bulletin Board System (掲示板システム)の略。NiftyServe のような、いわゆるパソコン通信サービスのことです。
DOS/V (ドス・ブイ）
日本アイ・ビー・エムが開発した日本語 DOS (ディスクオペレーティングシステム)。いわゆる「DOS/V パソコン」は DOS/V に対応した IBM PC/AT 互換機の俗称です(外国の人に「DOS/V」といってもたいてい通じません)。
IBM PC/AT
IBM 社の PC の名前です。現在 PC/AT そのものは製造されていませんが、それと互換性をもたせつつ性能を向上させた PC (IBM PC/AT 互換機)が現在でも 世界中で広く使用されつづけています。
IP アドレス
Telnet 等で接続先ホストを指定するために使用する4つの数字の列です。4つの数字は "." で区切られます(例: 11.11.11.11)。IP アドレスは覚えにくいので、 かわりにホスト名を指定して接続する方が便利です。
Kermit
アメリカのコロンビア大学で開発されたファイル転送プロトコル。Kermit プロトコルに対応したソフトが、多くの PC, OS 用に開発されています。
Tera Term の Kermit は今のところ基本的機能しか持っていないので、本家の Kermit に比べると転送速度があまり速くありません。
PC98
かつては、NEC の PC98XX シリーズの PC の略語として使われてきましたが、最近ではマイクロソフトの策定した PC のハードウェア仕様の名前としても使われています(両者は関係ありません)。また 1997 年の末頃から世にでた NEC の PC98 NX シリーズの PC は、後者の仕様にしたがったもので IBM PC/AT 互換機(いわゆる 「DOS/V パソコン」)とほぼ同じものと考えてよいでしょう。PC98 NX に Tera Term をインストールする時はキーボードの種類に 「IBM PC/AT キーボード」を指定してください。
PPP (ダイアルアップ接続)
Point-to-Point Protocol の略で、シリアル回線や電話回線のような一対一回線において TCP/IP 等のネットワークプロトコルを実現させるための規格です。 電話回線をとおして「インターネットする」場合に通常 PPP が使われます。
Quick-VAN
日本の BBS、PC-VAN のために開発されたファイル転送プロトコル。XMODEM プロトコルをベースにしてるようですが、 転送速度をあげるための工夫等がなされています。
TCP/IP
インターネットで使用されているデータ転送を制御するためのプロトコル。
TEK4010
Tektronix 社の端末の名前です。図やグラプなどを表示することができ、かつては科学技術系の分野で広く用いられていたようです。
現在は、X Window 環境などに取って替わられつつありますが、TEK エミュレーターを使用している人はまだまだいます(作者も含めて)。
大部分のユーザーは Tera Term の TEK エミュレーション機能を使うことはないでしょう。
TEK window
TEK 端末のエミュレーションをするウィンドウで、タイトル文字列の一番右に「TEK」と表示されています。Tera Term を起動したときは表示されません。 [Control] Open TEK コマンドで、TEK window を開くことができます。
Telnet
TCP/IP を使用し、ホストコンピュータと端末を接続するためのプロトコル。最近は、Nifty-Serve などの BBS に接続するためにも使用されています。
VT100
DEC 社の端末の名前です。かつて、Unix や VAX/VMS 等のコンピューターの端末として広く用いられていました。現在は、 VT100 そのものはほとんど 使用されていませんが、その仕様が事実上の標準となっているため、PC や ワークステーションで動く VT100 エミュレーターが多く作られています。
VT220 や VT382 などは、VT100の上位互換端末の名前です。
VT window
Tera Term のメインウィンドウのことです。起動したときに現れるウィンドウで、タイトル文字列の一番右に「VT」と表示されています。
VT 端末のエミュレーションをします。
Winsock
Windows Sockets の略。MS-Windows で TCP/IP 環境を実現するためのソフトウエアの規格。WINSOCK.DLL または WSOCK32.DLL というファイルを含むソフトを Windows にインストールすると、telnet, WWW, ftp などの TCP/IP を使用するアプリケーションが使用可能になります。
Windows 95 と Windows NT には Winsock 対応ソフト(ドライバー)が標準添付されています。
XMODEM
1977 年に Ward Christensen によって開発されたファイル転送プロトコル。その後 XMODEM/CRC, XMODEM-1k などの拡張プロトコルが開発されました。
転送速度が遅い、8-bit コードすべてを通す通信回線でなければ使用できないなどの制限があります。
YMODEM
XMODEM を拡張したファイル転送プロトコル。長い間 Tera Term では対応していませんでしたが、Ver 4.66 から対応しました。
ZMODEM
XMODEM, YMODEM を(それらの原形をとどめないほどに)改良したファイル転送プロトコル。エラー訂正機能が強化され、制御文字の一部を通さない回線にも対応し、転送速度をあげるための工夫がなされています。


執筆者一覧

  • 橋井 健人(Taketo Hashii) mail2tkt at gmail.com
  • 市村 光康(Mitsuyasu Ichimura) (JG8NID) jg8nid at gmail.com
  • 平田豊
  • 神村航(Wataru Kamimura) wkamimur at gmail.com
  • 永田真也(NAGATA Shinya)
  • 岩本 浩一(IWAMOTO Kouichi) sue at iwmt.org


キーボード

キーボードに関するいくつかの設定は [Setup] Keyboard でできます。

キーボード設定ファイルを書きかえることで自由にキー設定を変更することができます。詳しくは、KEYCODE.TXT を読んでください。

ショートカット・キー

VT window

ヒント: 「ユーザー・ショートカット・キー」

Alt+B
ブレーク信号を送出します。
Alt+C
マウスで選択した文字列をクリップボードへコピーします。
Alt+D
セッションを複製します。
Alt+G
Cygwin接続を呼び出します。
Alt+I
切断メニューを呼び出します。
Alt+N
新しいホストまたはシリアルポートに接続します。
Alt+P
現在の画面または、マウスで選択された文字を印刷します。
Alt+Q または Alt+F4
Tera Term を終了します。
Alt+R
クリップボードの中の文字列をホストへ送出し、続いて改行コードも送出します。
Alt+T
Telnet の AYT (Are You There) コマンドを送出します。通常ホストはこれに呼応して何等かのメッセージを送り返してきます。Telnet 接続のときだけ使用できます。
Alt+V
クリップボードの中の文字列をホストへ送出します。
Ctrl+Esc
アプリケーションの切り替えをします。

TEK window

Alt+C
マウスで選択された領域の画像をクリップボードへコピーします。
Alt+O
VT window に移動します。
Alt+P
画面全体または、マウスで選択された領域の画像を印刷します。
Alt+Q または Alt+F4
TEK window を閉じます。
Alt+R
VT window と同じ。
Alt+V
VT window と同じ。
Ctrl+Esc
VT window と同じ。

メタ・キー (Meta key)

[Setup] Keyboard で Meta key を選択すると、VTWindow で Alt キーをメタ・キーとして使うことができます。例えば Alt+A を押すと、ESC A を送出します。メタ・キーモードでは、Alt キーを使うショートカット・キー(Alt+C 等)は使用できなくなります。


マウス

VT window

マウスホイール
ホイールの回転でスクロールバーを上下させることができます。また、アプリケーションカーソルモード時(viやless等を使用時)には、ホイールの回転を上下のカーソルキーとして送信する事ができます。
タイトルバー上でマウスホイール
ウィンドウのタイトルバー上でホイールを回転させると、ウィンドウの透過値を一時的に変更することができます（この値は保存できません）。
ウィンドウのアクティブ状態が変更されると、設定された透過値に戻ります。
左ボタンでドラッグ
文字列を選択し、それをクリップボードにコピーする。
Alt キーを押しながら左ボタンでドラッグ
長方形の領域内の文字を選択し、それをクリップボードにコピーする。
左ボタンをダブルクリック
1語選択し、それをクリップボードにコピーする。
左ボタンをトリプルクリック
1行選択し、それをクリップボードにコピーする。
右ボタンでドラッグ
文字列を選択し、それをクリップボードにコピーし、さらにそれをホストへ送出する。
DisableMouseRButtonPaste および SelectOnlyByLButton が無効のときに動作する。
右ボタンをクリック
クリップボードの中の文字列をホストへ送出する。
DisableMouseRButtonPaste が無効のときに動作する。
タイトルバーの上で左ボタンをダブルクリック
Term size = win sizeの設定によって動作が変わります。
onの時
ウィンドウのサイズを最大化します。既に最大化されている場合は、もとのサイズに戻します。
offの時
ウインドウサイズ(ウインドウの実際の大きさ)がターミナルサイズ(端末の論理的な画面の大きさ)と異なるとき、ウィンドウサイズをターミナルサイズと同じになるように変更します。その後、もう一度タイトルバーをダブルクリックすると、もとのウインドウサイズに戻ります。
Ctrl キーを押しながら左ボタンをクリック
メニューバーがなければ、ポップアップメニューが現れます。メニューバーを隠すには、[Setup] Window で Hide menu bar を選択してください。
Alt キーを押しながら左ボタンでウィンドウをドラッグ
タイトルバーがない場合、ウィンドウを移動します。タイトルバーを隠すには、[Setup] Window で Hide title bar を選択してください。
Alt キーを押しながら右ボタンをクリック
タイトルバーがない場合、ウィンドウを最小化します。
ファイル/フォルダをドラッグし、ウィンドウにドロップ
ドロップされたファイル/フォルダを、「SCPで送信」「ファイルの内容を送信」「ファイル名をペースト」することができます。
確認ダイアログの表示
ConfirmFileDragAndDrop が on のとき
ドロップするとダイアログが表示されます。
ただし、ダイアログで "次のドロップ時、ダイアログを表示しない" をチェックして OK を押すと表示されなくなります。その後は CTRL キーを押しながらドロップすればダイアログが表示されます。
ConfirmFileDragAndDrop が off のとき
1つのファイルをドロップすると、ダイアログを表示せずに処理します。デフォルトの処理はSend File (Paste content of file)です。
1つまたは複数のフォルダをドロップすると、ダイアログを表示せずに処理します。デフォルトの処理はPaste Filenameです。
これら以外(複数のファイル/ファイルとフォルダ)の場合はダイアログが表示されます。また、上記の場合でも、CTRL キーを押しながらドロップするとダイアログが表示されます。
ダイアログ
ファイル/フォルダをドロップしたときの動作を指定します。
SCP
SCP でファイルを送信します。
SSH2 接続の場合で、ドロップ内容がファイルだけのとき選択できます。
dest
送信先を指定します。
空白の場合はホームディレクトリになります。
注意："~" は送信先の OS やシェルによって使えないことがあります。
Send File (Paste content of file)
ファイルの内容を端末内に送信(ペースト)します。
ドロップ内容がファイルだけのとき選択できます。
Binary
チェックが入っているときは、ファイルの内容がそのまま送信されます。
チェックが入ってないときは、漢字コード、改行コードは変換されます。
Paste Filename
ファイル名/フォルダ名をペーストします。
Escape
チェックが入っていると次の処理が行われます。
  • パス区切りを "\" から "/" へ変換します。
  • " ;&()$!`'[]{}#^~"の文字を"\"でエスケープします。
Separator is Space
複数ドロップされたとき、ファイル名の区切りはスペースとなります。
Separator is NewLine
複数ドロップされたとき、ファイル名の区切りは改行となります。
同じ処理を次の N 個のファイルに適用
チェックが入っていると、同時にドロップされた残りのファイル/フォルダも同様に処理します。
次のドロップ時、同じ処理を行う
ダイアログの設定内容をメモリに記憶し、次にドロップされたときに利用（ダイアログが表示される場合には ダイアログの設定に反映、そうでなければユーザへ確認せずに同じ処理を）します。
次のドロップ時、ダイアログを表示しない
チェックが入っていると、次回のファイルドロップ時にダイアログが表示されなくなり、 ユーザへ確認せずにファイル/フォルダを処理します。
このチェックボックスは ConfirmFileDragAndDrop が off のときのみチェックすることができます。
この設定は ConfirmFileDragAndDrop とは別の設定であり、 [Setup] Save Setup で設定を保存しても保存されません。
たとえば「次のドロップ時、同じ処理を行う」で SCP を選んだあとにフォルダをドロップするなど、 処理できない（確認が必要な）場合や、CTRL キーを押しながらドロップした場合は、ダイアログが表示されます。
中ボタンでドラッグ・中ボタンをクリック
これらのアクションはサポートされなくなりました。

TEK window

左ボタンでドラッグ
画像を選択します。
右ボタンをクリック
VT window と同じ。
Ctrlキーを押しながら左ボタンを押す
VT window と同じ。


ショートカット

ScrollLock
Tera Termウィンドウのスクロールロック/ロック解除（トグル）
Ctrl + Tab, Ctrl + Shift + Tab
Tera Termウィンドウの切り替え
Alt + Enter
ウィンドウの最大化（トグル）
Alt + Space Alt + X
ウィンドウの最大化
Alt + N
新しい接続を開く
Alt + D
セッションの複製（SSH, telnetのみ）
Alt + G
Cygwin接続
Ctrl + Up/Down cursor
上下方向へ一行スクロール
Ctrl + PageUp/PageDown
上下方向へページ単位スクロール
Ctrl + Home
バッファの先頭へ移動
Ctrl + End
バッファの末尾へ移動
Alt + C, Ctrl + Insert, マウスドラッグ
選択文字列をクリップボードへコピーする
Alt + V, Shift + Insert, マウスホイールボタン・右クリック
クリップボードからペーストする
F1 key
Num pad NumLockキー押下
F2 key
Num pad '/' キー押下
F3 key
Num pad '*' キー押下
F4 key
Num pad '-' キー押下
Alt + マウスドラッグ
ブロック選択
左クリック Shift+左クリック
ページをまたぐテキスト選択、選択済みテキスト領域の伸縮
マウスホイールボタンスクロール
上下方向へ一行スクロール
ファイルをウィンドウへドラッグ
ファイルの内容を貼り付ける
フォルダをウィンドウへドラッグ
フォルダのフルパスを貼り付ける


SSH 接続

Tera Term の特徴とも言える SSH 接続について解説します。Tera Term は TTSSH プラグインを導入すると SSH 接続に対応します。

前提知識

SSH には SSH1、SSH2 の2種類のプロトコルがあります。SSH2 は SSH1 の上位互換ではないので注意が必要です。接続するホストに応じて適切に選択する必要があります。TTSSH は両方のバージョンに対応しています。

また、SSH の接続方法には

  • パスワード認証
  • 公開鍵（と秘密鍵のペアによる）認証
    • 認証エージェント Pageant を利用する
  • SSH1 における rhosts 認証
  • SSH1 における challenge/response(TIS) 認証
  • SHS2 における keyboard-interactive 認証
があります。ここでは需要が多いと思われる認証方法について触れたいと思います。

接続の手順

Tera Term を起動すると、下図のようなダイアログによりログイン方法を選ぶことができます。

SSH で接続する場合、デフォルトから変更する箇所は「SSH version」です。接続先のサーバにあわせて選択してください。

接続すると、今度は認証方法を選択するダイアログが現れます。
デフォルト値を"TTSSH: Authentication Setup" ダイアログボックスで設定することができます。

TTSSH は複数の認証方法をサポートしていますが、明示的に一つの認証方法を選択する必要があります。一つの認証方法に失敗した場合、続けて別の種類の認証を試みることはありません。
たとえば OpenSSH クライアントではパスワード認証と keyboard-interactive 認証の見た目がそう変わらないためサーバの認証方式を意識せずにログインできますが、TTSSH はそうではありません。keyboard-interactive 認証と公開鍵認証をサポートしているサーバにパスワード認証でログインしようとしても必ず失敗します。

  • パスワード認証を使用する場合は「Use plain password to log in」にチェックがついていることを確認し、ユーザ名とパスワードを入力します。これらが正しければ無事ログインできます。
    ※パスワード送信時の SSH パケットは暗号化されているので、TELNET のようにパスワードが平文で送信されることはありません。
  • 公開鍵認証を用いる場合は、上から2番目の「Use RSA/DSA/ECDSA/ED25519 key to log in」にチェックをつけ、「Private key file:」ボタンを押して秘密キーのファイルを指定します。その後ユーザ名と秘密キーのパスフレーズを入力してログインします。
    ※OpenSSH 形式のほか、TTSSH 2.63(Tera Term 4.76) 以降では PuTTY 形式・SECSH(ssh.com) 形式の SSH2 秘密鍵に対応しています。
  • keyboard-interactive認証を使用する場合は「Use keyboard-interactive to log in」にチェックをつけ、ユーザ名を入力します。
    サーバからのプロンプトと文字列を入力するダイアログが表示されるので、パスワードを入力します。
  • Pageant を用いて認証する場合は「Use Pageant」にチェックをつけ、ユーザ名を入力します。

ユーザ名入力

このダイアログが表示されたときに 設定によってあらかじめ ユーザ名が入力されます。

また、 ユーザ名が入力されていた時、または、ユーザ名を入力して入力欄からフォーカスが移動した時、 設定によってサーバーへアクセスします。

ユーザ名の入力欄の横のボタンを押すとオプションを選択できます。 ユーザ名が入力されていない場合は、tabキーでこのボタンにフォーカスが移動します。 ユーザ名が入力されている場合は、tabキーでパスワード / パスフレーズの入力欄に フォーカスが移動します。

Use default usename
設定のデフォルトユーザ名を入力します。 デフォルトユーザ名を設定していない場合は選択できません。
Use logon usename
Windows のログオンユーザ名を入力します。

パスワード / パスフレーズ入力

パスワード / パスフレーズの入力欄は、通常のダイアログと違い以下のような動作となります。

  • Control + A ～ Z, [, \, ], ^, _ で制御文字 (0x01 - 0x1F) を入力できます。この動作がデフォルトです
  • Control + V は SYN (0x16) の入力となりますので、貼り付けには利用できません。貼り付けを行うには Shift + Insert を使用してください。

入力欄の横のボタンを押すとオプションを選択できます。

Paste from clipboard
クリップボードからパスフレーズをペーストします。
Paste from clipboard and clear clipboard
クリップボードからパスフレーズをペーストしてクリップボードを空にします。
Use control characters
チェックが入っていると制御文字を入力することができますが、 Control + Vでクリップボードのペースト等の操作はできません。 チェックが入っていないと制御文字を入力できませんが、 Control + Vでクリップボードのペースト等の操作が可能です。
Show passphrase
パスフレーズを表示するか、伏字にするか選択できます

セキュリティ警告

ssh_known_hosts ファイル

SSH 接続時には SSH サーバのホスト鍵をチェックし、一致する鍵が ssh_known_hosts にない場合には警告を表示します。
チェックの結果は以下のように分類されます。

  • ssh_known_hosts に接続中のホストの鍵が一つも登録されていない
  • ssh_known_hosts に接続中のホストの鍵が登録されているが、鍵の種類が違う
  • ssh_known_hosts に接続中のホストの鍵が登録されており、鍵の種類が同じだが、同一の鍵ではない
  • ssh_known_hosts に接続中のホストの鍵が登録されており、鍵の種類が同じで、同一の鍵である (警告は表示されない)

警告が表示された場合には、意図しないサーバに接続しているか中間者攻撃に遭っている可能性があります。
しかし、始めてサーバに接続するときや、サーバの再インストールなどにより SSH サーバのホスト鍵が変更された場合にもこの警告が表示されます。「警告ダイアログに表示されている、接続中の SSH サーバのホスト鍵の指紋」と「接続しようとしている SSH サーバのホスト鍵の正確な指紋」を比較してください。

OpenSSH の場合、サーバ管理者は以下のようなコマンドでサーバのホスト鍵の指紋を取得できます。

ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub

SSHFP RR

SSH 接続時に、RFC 4255 に規定されている SSHFP RR (Secure SHell FingerPrint Resource Record) による検証が可能ですが、現在のTera Termでは DNSSEC 検証ができないので参考程度の位置づけとなります。

ドメインの所有者であれば DNS の SSHFP レコードに SSH サーバホスト鍵の指紋を登録することが可能です。クライアント(Tera Term)は SSHFP レコードを取得し、接続中のサーバホスト鍵と比較することで検証が可能です。
この機能は Windows リゾルバの制限により Windows 2000 以降でのみ有効です。

SSHFP に関して規定している RFC 4255 には「DNSSEC 認証されていない SSHFP RR を信頼してはならない」とあります。
Tera Term が利用している Windows リゾルバは DNSSEC の署名が検証ができないため、常に DNSSEC 検証に失敗します。

キーの生成

ここで、公開鍵認証に用いる公開鍵・秘密鍵ペアの生成方法を説明します。鍵ファイルを生成するには [Setup] メニューから「SSH KeyGenerator...」を選択します。

選択すると、鍵の生成ダイアログが現れます。

「Key type」でキーの種類を選べますが、SSH1 プロトコルで使用する場合には「RSA1」を、SSH2 プロトコルで使用する場合には「RSA」「DSA」「ECDSA」「ED25519」を選択します。選択後、「Generate」ボタンを押すとパスフレーズの入力を催されますので、キーのパスフレーズ（パスワードのようなもの。ただし空白を含んでもいいし、一般にパスワードよりも長い物が指定可能）を入力します。入力した後は、「Save public key」ボタン、「Save private key」ボタンを押してキーを保存します。ファイル名は必要がなければデフォルトのままで構いません。保存が終わったら「Cancel」で終了します。

このキー・ファイルの使用方法ですが、デフォルトで保存した場合、拡張子が「pub」となっているファイル（「公開鍵」）の内容を、サーバの指定の場所に保管します。（一般的には (home dir)/.ssh/authorized_keys に内容を追加します。）また、拡張子が付いていないファイルは「秘密鍵」となり、ログイン時に指定する事となります。

注意：秘密鍵（private key）は第三者に絶対に知られてはいけないため、管理を厳重に行うようにしてください。また、誤ってサーバへ転送してしまわないようにしてください。


Cygwin接続

ローカルの Cygwin 環境に Tera Term から接続できます。
Cygwin は、Windows 上で Linux のような環境を提供するソフトウェアです。
Cygwin は、オープンソースソフトウェアです。

※注意：Cygwin 1.5.x は Windows 7 をサポートしていないようです。Windows 7 以降では Cygwin 1.7.x を利用してください。

Cygterm+

Tera Term は Cygwin に接続するために、内部で Cygterm+ を利用しています。
Fileメニューから「Cygwin connection」を選択する、もしくは Alt+G を押下すると、Cygwin へ接続します。

設定の保存

cygterm.exe から起動された状態で設定保存 [Setup] [Save setup] を行わないよう注意してください。TCP/IP設定の Telnetポート番号が 23 以外で保存され、通常の Telnet目的の実行時に接続できず、慌てることになってしまいます。
TCP/IP Port# に 23 を指定して設定保存し直せば元に戻ります。

Cygwin の探し方

Cygterm+ を起動するには Cygwin のインストールパスを見つける必要があります。Tera Term と cyglaunch は次の順序で Cygwin のインストールパスを探します。

  1. TERATERM.INI
    1. teraterm.exe が読み込んでいる TERATERM.INI、あるいは cyglaunch.exe のフォルダにある TERATERM.INI の CygwinDirectory エントリを読む
    2. CygwinDirectory の下に bin\cygwin1.dll があるか調べる
    3. bin\cygwin1.dll があれば PATH 環境変数にパスを追加する
    4. cygterm.exe を起動する
  2. PATH 環境変数
    1. PATH 環境変数が通っているフォルダに bin\cygwin1.dll があるか調べる
    2. cygterm.exe を起動する
  3. ドライブルート総当たり
    1. C から Z まで、ドライブルート直下の cygwin あるいは cygwin64 フォルダに bin\cygwin1.dll があるか調べる
    2. bin\cygwin1.dll があれば PATH 環境変数にパスを追加する
    3. cygterm.exe を起動する

1. の「TERATERM.INI の CygwinDirectory」の設定は、インストール時には空文字列になっているので無視されます。自動検索がうまくいかない場合は手動で Cygwin のインストールパスを設定してください。
フォーマットは「ドライブ名：￥ディレクトリ」です。

----------------------------
; Cygwin install path
CygwinDirectory = c:\cygwin
; 64bit Cygwin
; CygwinDirectory=c:\cygwin64
----------------------------

64bit Cygwin

64bit Cygwin に接続するには 64 bit Cygwin環境 でビルドされた cygterm+ プログラムが必要です。通常はTera Termのインストーラが、インストールされているCygwinのバージョンを判定して適切な実行ファイルをコピーします。
インストーラの判定が正しく動作していない場合は、手動で cygterm+-x86_64 フォルダ内の実行ファイルを Tera Term のインストールフォルダに上書きするか、自分でCygterm+をビルドし直してください。

Cygterm+をビルドする

Tera Term に同梱されている実行ファイルに問題があってうまく起動しない場合は、Cygterm+ をビルドし直してください。
最新のソースコードは cygterm+.tar.gz として同梱されています。

ビルドに必要なパッケージ
32bit Cygwin | 64bit Cygwin
Devel/gcc-g++ Devel/make Devel/mingw-gcc-core | Devel/gcc-g++ Devel/make Devel/mingw64-x86_64-gcc-core

Cygterm Here

インストーラで選択すると、フォルダの右クリックや開いているフォルダに Cygterm Here というコンテキストメニューが追加されます。選択されているフォルダで Cygwin 接続を開くことができます。

一般的な環境で動作するようにパラメータを設定していますが、csh/tcsh では CHERE_INVOKING をチェックしないことがあります。必要であれば /etc/csh.login を修正するか Cygterm Here のレジストリ設定を下記のように変更してください。

"C:\Program Files\teraterm\cyglaunch.exe" -nocd -v CHERE_INVOKING=y -d "\"%L\""
↓
"C:\Program Files\teraterm\cyglaunch.exe" -nocd -nols -d "\"%L\""


Proxy 接続

Tera Term で実装された Proxy 接続について解説します。

前提知識

Proxy とは、下図のようにインターネット環境とLAN環境が切り離されたネットワーク構成のとき、外部との接続に用いる手段です。ゲートウェイがNATに対応しておらず、直接外部に接続できない場合に設置されていることがあります。

このような形態で使われる Proxy にはいくつもの種類があります。Tera Term では TTProxy プラグインを導入すると次のような種類の Proxy に対応します。

  • HTTP (*)
  • TELNET（telnet 用）
  • SOCKS4
  • SOCKS5

設定方法

設定の手順

具体的な設定方法ですが、まず、[Setup] メニューから「Proxy...」を選択します。

次に、下図の「Proxy Setup」ダイアログが現れますので、「Type」に使用する Proxy の種類を、「Hostname」に Proxy サーバのホスト名（もしくは IP アドレス）を指定、「Port number」に Proxy のポート番号を入力して「OK」をクリックします。「Username」と「Password」は Proxy での認証が必要な場合にのみ入力してください。

これで Proxy の設定は完了ですから、通常の接続を行います。

HTTP プロキシを使うときの注意点

HTTP プロキシサーバは通常 HTTP リクエストを扱うために設置されているので、設定によっては以下のような接続を許さないことがあります。

  • 通信内容が HTTP, HTTPS ではない
  • 通信先のポート番号が 80, 443 ではない
  • CONNECT メソッドで接続しようとするが、通信先のポート番号が 443 ではない

通常の TELNET サーバや SSH サーバへの接続は上記の条件に該当するため、このような設定のプロキシサーバを通信の中継に利用することはできません。


LogMeTT Tutorial

1. LogMeTTとは

LogMeTTはターミナルエミュレータTeraTerm Macroのランチャーツールです。TeraTermからリモートホストへ自動ログインしたり、さまざまな処理を行わせたりすることができます。ログインの自動化ツールとしてはTeraTerm Menuがありますが、ssh2接続やスケジュール機能、自動ログ取得機能、接続ホストごとに配色設定などを設定できる等の利点があります。また、ツリー構造でホストごと、マクロごとに階層化できるためサーバ管理に向いています。USA在住のBoris氏により開発されています。LogMeTTはTeraTermインストーラに付属しています。

2. LogMeTTでできること

TeraTerm Macroを使いリモートホストへの自動接続を管理することができます。ホストをツリー構造で登録することができるので、ホストが多数ある場合でも効率的に管理することが可能です。また、工夫次第であらゆる作業を自動化できます。※ただし、2006/11Verssion2.8(Release6)現在、TeraTerm Menuにあるようなキーボードショートカットによる即時起動のような機能は利用できません。

3. 起動方法

LogMeTTはTeraTermのFileメニューから呼び出すことで起動することができます。起動すると、常駐プロセスとしてタスクトレイにアイコンが表示されます。

4. 設定

ここからは、実際にLogMeTTを使ってリモートホストへSSH2による接続を自動化する設定を紹介します。簡単な操作でTeraTermの自動化を体験してみてください。

1. LogMeTTのタスクトレイアイコン(上記3.の図にある丸囲い）を右クリックして“Configure…”を選択する。

2. 設定ダイアログが表示される。“Settings”タブの下にある、“General”タブに “Run at log on to Windows”にチェックを入れると(下図参照)Windowsログオン時にLogMeTTが自動起動される。

3. “Settings” タブの下にある “New Connections”タブで、Log file creationが "Start logging"になっていると、メニューから起動した場合自動的にログが取得されるようになる。(“TeraTermをインストールしたディレクトリ\Logs\LogMeTTメニュー名_日付時間.log”として保存される)

4. メニューバーの“Connection”から“Add Child”を選ぶと、エントリが一つ追加される。画面左のThis computerを右クリックしても“Add Child”が選択できる。

5. “This computer”の下に“Unnamed connection #1”というアイコンが追加されるので、そのアイコンを選択し“F2”キーを押して名前をつける。

6. “Macro”タブを選び、リモートホストへログインするためのマクロを記述する。たとえば、ユーザ名を固定とし、パスワードはダイアログボックスで入力させたい場合は、次のようなマクロを書く。もちろん、パスワードをマクロ内に記述してもよいが、マクロの取り扱いには注意すること。
※セキュリティに配慮したマクロ(パスワードの暗号化等)については5.セキュリティに配慮したマクロについてを参照

＝注意＝
この記述はTeraTerm Macroなのでシングルクォート ' ダブルクォート " に気をつけること。下記をコピーして貼り付けると安全

username = 'nike'
hostname = '192.168.1.3'

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

msg = 'Enter password for user '
strconcat msg username
passwordbox msg 'Get password'

msg = hostname
strconcat msg ':22 /ssh /auth=password /user='
strconcat msg username
strconcat msg ' /passwd='
strconcat msg inputstr

connect msg

7. F9キーを押して、マクロが正常に動作するか検証する。 問題なければ、右上にあるApplyボタンを押して設定内容を保存する。

8. 登録したリモートホストはタスクトレイの右クリックメニューから選択することができる。

9. “Popup”タブにメッセージを記述しておくと、

実行時に下記のポップアップメッセージが表示される。

重要なホストに接続する際や、root等の特権アクセスのマクロにPopupで注意を促す際等に利用する。ポップアップメッセージではOKを押すとマクロが実行され、Cancelを押すとMacroは実行されない。

10. “Colors”タブでは、接続メニュー毎にTeraTermの配色を変更できる。 Popup同様、重要なホストに接続する際等のメニュー配色を変えるなどに利用する。ユーザ毎、ホスト毎に配色を変更する事で誤操作の予防にもなる。

11. Scheduleタブでは、設定したマクロを自動実行させることができる。 上手くマクロを組めば、下記のような事が可能になる。

  • 定期的に電源をon/off
  • “Settings”タブの“User Data”タブ項目と組み合わせ、障害発生時にe-mailや電話させるなどの自動処理
  • 定時バックアップ、ステータスチェック

※注意:メニューの階層は親から順番に実行されてしまうため、子をスケジュールに入れておくとその直系親ツリーがすべて実行される。単一タスクとして行いたい場合は独立させること（This computer直下)。また、ホストとLogMeTTを実行するPCの時刻差異に注意すること。

Scheduleを実行する場合は、後述の自動ログをONにすることを推奨する。(後で何が起きたかわからなくなってしまわないように)

5. セキュリティに配慮したマクロについて

この項目は、TeraTerm Macroに関するTopicです。

“4. 設定”で紹介したマクロではマクロ内にユーザ名が記述されており、セキュリティ上あまり良くないと思われます。パスワードは毎回入力するタイプです。これを、ユーザ名、パスワードを暗号化したファイルに保存する方式を紹介します。

1. パスワードを暗号化して記憶（ローカル保存）するマクロ＝自動ログイン

※ユーザ名を scott ホスト名を remote.host パスワードファイルの保存先を C:\mydata\filename.dat とした場合のマクロ例です。

; setting
hostname = 'remote.host'
username = 'scott'
getpassword 'C:\mydata\filename.dat' 'usrpass' inputstr

; connection & login
msg = hostname
strconcat msg ':22 /ssh /2 /auth=password /user='
strconcat msg username
strconcat msg ' /passwd='
strconcat msg inputstr
connect msg

※getpassword 'filepath\filename' '識別子' $格納変数

同一格納ファイルに複数の識別子でパスワードを暗号化保存できます。

このマクロは、最初の一度だけパスワードを聞かれますが、その後はC:\mydata\filename.datに保存された暗号化パスワードが利用されるためLogMeTTメニューからの選択だけで自動ログインが可能になります。

2. ユーザIDとパスワードを両方暗号化して記憶（ローカル保存）するマクロ＝自動ログイン

ホスト名を remote.host ユーザIDとパスワードファイルの保存先を C:\mydata\filename.dat とした場合のマクロ例です。

; setting
hostname = 'remote.host'
getpassword 'C:\mydata\filename.dat' 'usrid' username
getpassword 'C:\mydata\filename.dat' 'usrpass' inputstr

; connection & login
msg = hostname
strconcat msg ':22 /ssh /2 /auth=password /user='
strconcat msg username
strconcat msg ' /passwd='
strconcat msg inputstr
connect msg

※getpassword 'filepath\filename' '識別子' $格納変数

このマクロではユーザIDも識別子usridとして格納しています。最初のログイン時にはユーザIDとパスワードの両方を入力しなければなりませんが、2回目以降は同様にLogMeTTメニューからの選択だけで自動ログインが可能になります。同じように、getpasswordを利用することでホスト名を暗号化してしまうことも可能ですが、TeraTermのヒストリに過去接続したホストが残る場合もありますのでセキュリティを考慮する場合は様々な注意が必要です。ホスト名、そのホストに登録されているID、パスワード等のすべてを暗号化して隠すことができるマクロです。

3. telnetを利用する場合

telnet(ポート23)を利用して接続する場合は接続マクロが一部違いますので注意してください。これは、telnetが接続セッション確立後に認証を行うためです。

; setting
hostname = 'remote.host'
getpassword 'C:\mydata\filename.dat' 'usrid' username
getpassword 'C:\mydata\filename.dat' 'usrpass' inputstr
;; login session ※
UsernamePrompt = 'Please login:'
PasswordPrompt = 'Please Enter password:'

; connection
msg = hostname
strconcat msg ':23'
strconcat msg ' /nossh'
connect msg

; login
wait   UsernamePrompt
sendln username
wait   PasswordPrompt
sendln inputstr

※telnetではログインするホストの応答内容にあわせて記述を変更する必要があります。(ログインプロンプト)

暗号化して記憶（ローカル保存）したファイルの取り扱いについて

保存されたパスワードファイルを安全に保管することで、たとえばrootユーザで接続する場合はそのファイルが必要になるような運用を行うことができます。管理者は最初に一度だけ複雑で長いパスワードを設定し、ファイル保存後は破棄してしまってかまわないのです。

上記のマクロ例のようにローカル保存する場合は、セキュリティの観点からスタートアップにパスワード格納ファイルの削除バッチファイルを入れておくと、ログイン後最初の一度だけパスワード認証が必要になり、セキュリティと利便性の両立などを図ることができます。

完全なセキュリティはありませんが、機密性を強化するのに役立ててください。

6. 最新版の入手先

TeraTermに付属しているLogMeTTは基本的にリリース時点での最新版を同梱するようにしていますが、別プロダクトですのでリリースによってはLogMeTTの最新版が先に提供されることもあります。最新版のダウンロードはこちら

また、LogMeTTのメニュー“Help”から“Check for updates”を選択しても最新版を入手可能です。

7. 連絡先

e-mail: boris at logmett.com


Tera Term Menu Tutorial

1. Tera Term Menuとは

Tera Term Menu(ttpmenu.exe)とは、Tera Termをボタン一発で起動することができるランチャーツールです。 Tera Term Menuは早川信平氏による著作物ですが、現在ではTeraTerm Projectによりメンテナンスされており、Tera Termのインストールパッケージにも含まれています。

2. レジストリ

Tera Term Menuの設定情報は、レジストリ(HKEY_CURRENT_USER\Software\ShinpeiTools\TTermMenu)に記録されます。 レジストリではなく、iniファイルを使いたい場合は、あらかじめ"ttpmenu.exe"があるディレクトリに"ttpmenu.ini"（0バイトで可）を設置しておきます。
NOTE: レジストリデータは自動的にiniファイルにエクスポートされません。 こちらにある変換スクリプトをご利用ください。

3. 起動方法

Tera Term Menuを起動すると、アプリケーションがタスクトレイに常駐します。タスクトレイのアイコンを左クリックすると、メニューリストからランチャーを起動することができます。右クリックすると、メニューリストの登録やTera Term Menuの動作設定を行うことができます。

4. 設定

初めてTera Term Menuを使う場合、何もランチャーが登録されていないので、まずはメニューリストの作成から行います。タスクトレイのアイコンを右クリックして、"List Configuration"を選びます。次に、右側にある"Configuration"において、項目を入力し、←ボタンを押下すると、左側の"List Item"にメニュー登録されます。

上記は、192.168.153.128というLinuxマシン(Fedora)にSSH接続する例を示しています。SSH接続する場合は、"use SSH"にチェックを入れます。SSH接続するポート番号が22番以外のものを指定したい場合は、Host Nameに「IPアドレス:ポート番号」という記載をします。
公開鍵認証を行いたい場合は、Keyfileに秘密鍵ファイルを指定します。

サーバへ接続する際、より詳細な指定をしたい場合は、"details"ボタンを押下して、下記の設定画面を呼び出します。

上記の例では、Optionに"/KT=UTF8 /KR=UTF8"を指定しています。これはTera Termのコマンドラインにそのまま渡されます。すなわち、この例においては、Tera Termが下記のようなコマンドラインパラメータで起動されることを意味しています。

"C:\Program Files\teraterm\ttermpro.exe" 192.168.153.128:22 /ssh /auth=password /user=yutaka /passwd=****** /KT=UTF8 /KR=UTF8

メニューリストの登録が完了すると、Tera Term Menuのアイコンを左クリックすることで、メニューリストが表示されるようになり、Tera Termが容易に起動できるようになります。

5. 連絡先

TeraTerm Projectまで。


Unicode設定

UTF-8化を行うには、Tera Termの「Setup[設定]」メニューから「General[全般]」 を選び、「Language[言語]」を "UTF-8", "Japanese" および "Korean" のいずれかへ変更します。

Language 設定が UTF-8 の時は Japanese に比べて以下の機能を使わなく(使えなく)なります。

  • JIS, EUC, SJIS 等の UTF-8 以外の文字コード
  • ISO/IEC 2022での日本語文字セットの指示
  • TTXKanjiMenu プラグイン

Languageに "Japanese" と "Korean" のいずれかを選んだ場合、次に「Setup[全般]」 メニューから「Terminal[端末]」を選択すると出る "Terminal setup[端末の設定]" ダイアログの「Kanji(receive)[漢字-受信]」および「Kanji(transmit)[漢字-送信]」 にて、"UTF-8" を選んでください。Tera Termの再起動は必要ありません。
コマンドラインの「/KT」および「/KR」オプションにおいて、"UTF8" を指定すると、 送信および受信コードに UTF-8 を設定することができます。

現状のTera Termは内部設計がUnicode対応になっておらず、 以下に示すように文字コードは二段変換になっています。

UTF-8 <-----> Unicode(UTF-16LE) <-----> MBCS
        (1)                       (2)

(1)において、4.102から 4byte UTF-8 に対応したため、UTF-8のデコード時に Unicode の情報が欠落することはなくなりました。
漢字コード(受信) に UTF-8m が選択されていると結合文字(combining character)の処理が一部が行われます。Mac OS X(HFS+)を考慮したものとなっ ています。
(2)において、UnicodeとMBCS(Multiple Byte Character Set)の相互変換を行うために、 ロケール(言語指定)を正しく設定する必要があります。

Unicodeによるローカライズ言語を扱えるようにするためには、teraterm.iniファイルにロケールの設定が必要となります。下記にサンプルを示します。

; Locale for Unicode
Locale = japanese

この設定は、"Terminal setup[端末の設定]" ダイアログの 「Locale[ロケール]」でも設定できます。

ロケールに設定できる内容については、下記のサイトを参照してください。

  • Language Strings

設定例: WindowsXP 簡体字中国語

  • Setup -> Terminal で locale=chs に設定する
  • Setup -> Font で フォント名=NSimSun, 文字セット=CHINESE_GB2312, サイズ=9 に設定する。

設定例: WindowsXP 米国

; Locale for Unicode
Locale = american

また、MBCSを表示する為にフォントを正しく設定する必要があります。
「Setup[設定]」メニューの「Font[フォント]」で、"フォント"に使用する言語の文字が 扱えるフォントを、"文字セット" に使用する言語の文字セットを指定してください。
ロケールおよびフォントが正しく設定されていれば、英語版Windowsで日本語を表示したり、 日本語版Windowsで韓国語を表示したりする事も可能です。
ただし多言語対応していないので、一つのTera Termウィンドウで日本語と韓国語を同時に 表示したりする事は出来ません。

※注意: Mac OS X

"UTF-8m" はMac OS X(HFS+)向けのエンコーディング指定です。受信のみのサポートです。
「/KR」コマンドラインでは"UTF8m"を指定することができます。

参考: Language Strings for Locale

Primary language | Sublanguage | Language string
Chinese | Chinese | "chinese"
Chinese | Chinese (simplified) | "chinese-simplified" or "chs"
Chinese | Chinese (traditional) | "chinese-traditional" or "cht"
Czech | Czech | "csy" or "czech"
Danish | Danish | "dan" or "danish"
Dutch | Dutch (default) | "dutch" or "nld"
Dutch | Dutch (Belgium) | "belgian", "dutch-belgian", or "nlb"
English | English (default) | "english"
English | English (Australia) | "australian", "ena", or "english-aus"
English | English (Canada) | "canadian", "enc", or "english-can"
English | English (New Zealand) | "english-nz" or "enz"
English | English (United Kingdom) | "eng", "english-uk", or "uk"
English | English (United States) | "american", "american english", "american-english", "english-american", "english-us", "english-usa", "enu", "us", or "usa"
Finnish | Finnish | "fin" or "finnish"
French | French (default) | "fra" or "french"
French | French (Belgium) | "frb" or "french-belgian"
French | French (Canada) | "frc" or "french-canadian"
French | French (Switzerland) | "french-swiss" or "frs"
German | German (default) | "deu" or "german"
German | German (Austria) | "dea" or "german-austrian"
German | German (Switzerland) | "des", "german-swiss", or "swiss"
Greek | Greek | "ell" or "greek"
Hungarian | Hungarian | "hun" or "hungarian"
Icelandic | Icelandic | "icelandic" or "isl"
Italian | Italian (default) | "ita" or "italian"
Italian | Italian (Switzerland) | "italian-swiss" or "its"
Japanese | Japanese | "japanese" or "jpn"
Korean | Korean | "kor" or "korean"
Norwegian | Norwegian (default) | "norwegian"
Norwegian | Norwegian (Bokmal) | "nor" or "norwegian-bokmal"
Norwegian | Norwegian (Nynorsk) | "non" or "norwegian-nynorsk"
Polish | Polish | "plk" or "polish"
Portuguese | Portuguese (default) | "portuguese" or "ptg"
Portuguese | Portuguese (Brazil) | "portuguese-brazilian" or "ptb"
Russian | Russian (default) | "rus" or "russian"
Slovak | Slovak | "sky" or "slovak"
Spanish | Spanish (default) | "esp" or "spanish"
Spanish | Spanish (Mexico) | "esm" or "spanish-mexican"
Spanish | Spanish (Modern) | "esn" or "spanish-modern"
Swedish | Swedish | "sve" or "swedish"
Turkish | Turkish | "trk" or "turkish"


透過ウィンドウ

Tera Termはウィンドウの半透明をサポートしています。現在、半透明ウィンドウは2種類のタイプがあり、ユーザは好きな方を選択することができます。

(1) 半透明ウィンドウ

この機能を使うと、Tera Termのウィンドウを半透明にすることができます。この機能は、Windows2000以降で有効です。
この設定は、[Setup] Additional settings の Visual タブで行えます。
透明度は0～255の範囲で指定することができ、値を小さくするほど透明度は強くなります。デフォルトは255（不透明）です。

(2) Eterm風半透明ウィンドウ

この機能を使うと、Eterm風の半透明ウィンドウを使用することができます。この機能を有効にすると、Tera Termのウィンドウは半透明化され、壁紙と指定した画像ファイル(*.jpg)と混合されて描画されるようになります。
この機能は、[Setup] Additional settings の Visual タブで有効にするか、直接 teraterm.ini の"BGEnable=on"と変更してください。

そのほかの設定については「Eterm風半透明ウィンドウ」を参照してください。

(3) 背景画像の貼り付け

Eterm lookfeelとBackground Imageを同時に有効にすることで、端末の背景に任意の画像を貼り付けることができます。
この場合、半透明化はされません。


ヒント

  • Tera Term の設定法
  • ログの取り方、ログの再生機能
  • ユーザー・ショートカット・キー
  • テンキー(数値キーパッド)について
  • キーパッドモードについて
  • VT100 の PF1-PF4 キー
  • パソコン通信的接続法
  • XMODEM のヒント
  • ZMODEM のヒント
  • B-Plus のヒント
  • Quick-VAN のヒント
  • 中間ホストを経由してホストに接続した場合のファイル転送
  • TCP/IP 接続で 23 以外の TCP port 番号を使用する場合の注意
  • ダブルクリックによる単語選択の区切り文字
  • C1 制御文字を使用しない
  • 正しくない "Kanji-out" を使用可能にする
  • TELNET プロトコルに関連付ける
  • vim からの制御シーケンスの使用例
  • 名前付きパイプ
  • IMEのヒント
  • Virtual Store


漢字コードの自動制御

制御シーケンスで送受信漢字コードを変更出来るようにする

機能

TTXKcodeChange プラグインを入れると、リモート側から制御シーケンスを使用して送受信漢字コードの設定が変更出来るようになります。
以下の制御シーケンスをサポートしています。

<OSC>5963;Pt<ST>
<OSC>5963;Pt<BEL>
設定用シーケンス
Ptは Key=Value の形式で指定し、;で区切る事で複数指定する事もできます。現在のところ、以下のKeyが使えます。
KT  -- 送信漢字コード
       Valueとして SJIS, EUC, JIS, UTF8 を受け付けます。
KR  -- 受信漢字コード
       Valueとして SJIS, EUC, JIS, UTF8, UTF8m を受け付けます。
<OSC>5964;Pt<ST>
<OSC>5964;Pt<BEL>
問い合わせ用シーケンス
Ptには問い合わせる設定を指定します。;で区切る事で複数指定する事もできます。問い合わせに対して、以下の形式の応答を返します。
Key=Value;[Key=Value;...]

使用例

ログインシェルがzshの時の設定例です。

[.zloginの記述]
echo -n "\e]5964;kt;kr\a"              # KT/KRの設定を問い合わせる
read -t 1 TT_ORG_KCODE                 # 応答を待つ(タイムアウト:1秒)
if [ $? -eq 0 ]; then
  echo -n "\e]5963;kr=euc;kt=euc\a"    # 応答があったなら設定を変更する
fi

[.zlogoutの記述]
# .zloginで漢字コードの設定が保存されていたら、その設定に戻す。
if [ " ${TT_ORG_KCODE}" != " " ]; then
  echo -n "\e]5963;${TT_ORG_KCODE}\a"
fi

解説

受信データのフックのサンプルです。
受信データを監視し、対応している制御シーケンスだった場合は設定の変更を行います。
問い合わせに対する応答は、送信バッファを直接書き換えるという少々強引な方法を取っています。

このプラグインを改造すれば、他の設定も制御シーケンスで変更出来るようになるかもしれません。

バグ

  • 制御シーケンスのパース部分は少々いい加減です。
  • 使用している制御シーケンスのパラメータ番号の選び方が安易です。
  • 将来的にこの機能はTera Term本体に組み込まれるかもしれません。
  • シリアル接続で使用するには、Tera Term 4.60以降が必要です。
  • 送信バッファの空きが少ない場合、問い合わせに対する応答が途中で切れる場合があります。


ウィンドウサイズ変更プラグイン

Tera Term のメニューに [Resize] メニューを追加する。

機能

TTXResizeMenu プラグインを入れると、Tera Term のメニューに [Resize] メニューを追加する事が出来ます。
[Resize] メニュー内の項目が選択されると、そのサイズに Tera Term の VT ウィンドウのサイズが変更されます。

使用方法

プラグインを入れただけでは [Resize] メニューは表示されません。
設定ファイルにメニュー項目を登録する必要があります。

メニュー内の項目を変更したい場合は、TERATERM.INI に [Resize Menu] セクションを作成し、"ResizeMenuN = X, Y" の形式で指定して下さい。N は 1 からの連番です。
X または Y のいずれかが 0 の時は、その要素は変更されません。例えば 0, 37 の時は、横幅は変更せずに縦幅を 37 行に変更します。
X または Y の値を -1 にした場合、画面サイズを超えない範囲での最大値として扱われます。
メニューの項目数は最大で 20 です。

設定例

[Resize Menu]
;
; 横幅 80桁, 縦幅 37行
ResizeMenu1 =  80, 37
;
; VTの標準サイズ
ResizeMenu2 =  80, 24
;
; 横幅は変更せずに、縦幅を52行にする。
ResizeMenu3 =   0, 52
;
; 縦幅は変更せずに、横幅を132桁にする。(VTの132桁モード(DECCOLM)相当)
ResizeMenu4 = 132,  0

ToDo

  • メニューの項目を、設定ダイアログから変更できるようにする。


[File] メニュー

New connection...
新しいホストまたはシリアルポート、名前付きパイプに接続します。
Duplicate session
現在のセッションを複製します。 TELNET, SSH, Cygwin 接続のみが複製されるます。
Log...
受信される文字をファイルに書き込みます。
Pause Logging
ログの記録を一時中断します。
Comment to Log...
ログファイルへコメントを追加することができます。 追加できるコメントは最大255文字までです。
View Log
ログファイルを開きます。
Show Log dialog...
ログダイアログを表示します。
Stop Logging
ログの記録を終了します。
Send file...
ファイルを送信します。
Transfer
Kermit/XMODEM/YMODEM/ZMODEM/B-Plus/Quick-VAN プロトコルでファイルを転送します。
SSH SCP
SCP プロトコルでファイルを転送します。
Change directory...
ファイル転送のためのディレクトリを変更します。
Replay Log...
バイナリログを再生します。/R オプションと等価です。
Print...
現在の画面または、マウスで選択された文字を印刷します。
Disconnect
接続を切ります。 TCP/IP 接続時で Auto window close オプションが選択されている場合、Tera Term を終了します。
Exit
Tera Term を終了します。 ホストまたはシリアルポートに接続されている場合は、接続を切ります。
Exit All
すべての Tera Term を問い合わせせずに終了します。 ホストまたはシリアルポートに接続されている場合は、接続を切ります。


New Connection ([File] メニュー)

新しいホストまたはシリアルポート、名前付きパイプに接続します。また、ログ再生も行えます。 すでに接続されているときは、別の Tera Term セッションを起動します。

"New connection" ダイアログボックス

TCP/IP

Host
接続するホスト名または IP address(IPv4 & IPv6) 、名前付きパイプをキーボードで入力して指定するか、 リストの中から選択してください。リストを編集するには [Setup] TCP/IP を使ってください。
IPv6アドレスは角括弧（大括弧）で囲みます（RFC3986 / RFC5952 参照）。
また、ホスト名だけでなく以下のような、 コマンドライン 文字列を指定することもできます。
    myhost.example.com                  通常はホスト名または IP address だけ
    myhost.example.com:23               ホスト名とポート番号
    foohost.example.org /F=FOOHOST.INI  ホスト名+設定ファイル名を指定
    /C=1                                シリアルポートを指定することも可能
    /R=LOG.DAT                          ホストやポートに接続せずに、ログファイルの内容を再生
    [2001:db8:1:2:8401:2ff:fe03:405]    IPv6アドレス
    [fe80::8401:2ff:fe03:405%3]:8022    IPv6アドレス + ポート番号
    user@myhost.example.com:10022 /ssh  22番ポート以外へのSSH接続
    ssh://user@myhost.example.com       SSHプロトコル(ssh://)への接続
    \\.\pipe\vmware-serial-port         名前付きパイプへの接続
このエディットコントロールでは、Ctrl+a(キャレットを先頭へ移動) Ctrl+e(キャレットを最後尾へ移動) Ctrl+b(キャレットを1文字後ろへ移動) Ctrl+f(キャレットを1文字前へ移動) Ctrl+n(1つ下のHost設定を選択) Ctrl+p(1つ上のHost設定を選択) Ctrl+d(一文字削除) Ctrl+k(行末まで削除) Ctrl+u(行頭まで削除) を使うことができます。
History
TTSSH 有効時に表示されます。
このオプションを選択すると入力したホスト名は、対象のホストへ接続しようとした場合にホストリストの先頭に追加されます。
このチェックボックスは [Setup] メニュー の History の機能を利用します。
Telnet
Telnet プロトコルを使用します。
SSH
TTSSH 有効時に表示され、デフォルトで選択されます。
SSH プロトコルを使用します。
Other
TTSSH 有効時に表示されます。
Telnet / SSH 以外のプロトコルを使用します。
TCP port#
選択したサービスによって、ポート番号を指定してください。
デフォルトは、以下の通りです。
Service | TCP port# | 備考
Telnet | 23 | well-known ports
SSH 22 well-known ports
TTSSH 有効時に表示されます。
Other | （任意） | TTSSH 有効時に表示されます。
SSH version
TTSSH 有効時に表示されます。
SSH1 / SSH2 から接続に利用するバージョンを選択します。
IP version
AUTO / IPv6 / IPv4 から選択します。
AUTO は、指定したホスト名に紐づく IP アドレスに対し、接続を試みます。
この時 IPv6 / IPv4 のどちらで接続するのかは、OS の設定（IP バージョンの優先順位）によります。

注:
Telnet が選択されて、かつ TCP port# が 23 のときだけ、Tera Term から自発的に telnet の option negotiation を開始します。 それ以外の場合でも Tera Term はホストから送られてきた telnet コマンドに応答することができます。

参照:
Telnet 用ポート番号 / 非 telnet 接続用の端末設定

Serial

Port
接続するシリアルポートをリストの中から選択してください。リストに表示されるシリアルポート番号の最大値はデフォルトで256となっています。また、利用可能なシリアルポートが存在しない場合は表示されません。MaxComPortで最大値を変更できます。


Log ([File] メニュー)

ホストから受信した文字をファイルに書き込みます。

"Log" ダイアログボックス(ファイル名指定)

File Name
書き込むファイルのファイル名を入力または選択してください。
Binary
ホストから受信した文字をそのままファイルに書き込みたい場合は選択してください。 選択しない場合は、漢字コード、改行文字は変換され、 エスケープシーケンスは取り除かれてから書き込まれます。
Append
すでに存在するファイルに追加して書き込みたい場合は選択してください。 選択しない場合は上書きされます。
Plain text
ASCII 非表示文字を書き込みたくない場合は選択してください。
※Binary オプションが有効の場合は選択不可であり、設定は無効化されます。
Hide dialog
ログ転送のダイアログを表示したくない場合は選択してください。
Include screen buffer
現在の端末バッファをすべてログファイルに書き出してから、ログ採取を開始します。
Timestamp
ログの行頭に時刻を追加したい場合は選択してください。行の最初の文字が出力された時刻が追加されます。
タイムスタンプの種別として以下が選択できます。
Local Time
ローカルタイムでの日時を記録します。
UTC
UTC での日時を記録します。
Elapsed Time (Logging)
ログ取得開始からの経過時間を記録します。
Elapsed Time (Connection)
接続開始からの経過時間を記録します。
Local Time, UTC での日時のフォーマットは LogTimestampFormat の設定に従います。
Elapsed Time (Logging), Elapsed Time (Connection) では LogTimestampFormat の設定は無視されます。
※Binary オプションが有効の場合は選択不可であり、設定は無効化されます。

"Log" ダイアログボックス(ファイルへ書き込み中)

Close
Close ボタンを押すとファイルへの書き込みを終了します。
Pause/Start
Pause ボタンを押すとファイルへの書き込みを一時中断します。 このとき Pause ボタンは Start ボタンに変化します。 その後 Start ボタンを押すと書き込みを再開します。


Send file ([File] メニュー)

ファイルを送信します。

"Send file" ダイアログボックス(送信前のファイル名指定)

File Name
送信するファイルのファイル名を入力または選択してください。 すでに存在するファイルでなければなりません。
Binary
ファイルの内容をそのまま送信したい場合は選択してください。 選択しない場合は、漢字コード、改行文字が変換されて送信され、 TAB ($09), LF ($0A), CR ($0D)以外の制御文字は送信されません。

"Send file" ダイアログボックス(送信中)

Close
Close ボタンを押すとファイルの送信を中止します。
Pause/Start
Pause ボタンを押すとファイルの送信を一時中断します。 このとき Pause ボタンは Start ボタンに変化します。 その後 Start ボタンを押すと送信を再開します。


Kermit Get ([File] Transfer メニュー)

Kermit プロトコルでファイルを受信します。 ホスト側の Kermit が server の状態の時にこのコマンドを使用してください。

"Kermit Get" ダイアログボックス

受信したいホスト側のファイルのファイル名を入力してください。 受信したファイルは、現在のディレクトリの中に、 ホスト側と同じファイル名で保存されます。


Kermit Send ([File] Transfer メニュー)

Kermit プロトコルでファイルを送信します。その前にホスト側の Kermit の Receive コマンドまたは Server コマンドを実行してください。

"Kermit Send" ダイアログボックス

送信するファイルのファイル名を入力または選択してください。 すでに存在するファイルでなければなりません。 同時に複数のファイルを選択することもできます。


XMODEM Receive ([File] Transfer メニュー)

XMODEM プロトコルでファイルを受信します。 その前にホスト側の XMODEM の送信コマンドを起動してください。

"XMODEM Receive" ダイアログボックス

File Name

受信するファイルのファイル名を入力または選択してください。

Option

Checksum/CRC
エラー検出の種類 (Checksum/CRC) を選択してください。
パケットサイズ(1K) は送信側でのみ指定できます。
Binary
バイナリファイルを受信する場合は選択してください。 逆にテキストファイルを受信する場合は選択しないでください。

XMODEM のヒント


XMODEM Send ([File] Transfer メニュー)

XMODEM プロトコルでファイルを送信します。 その前にホスト側の XMODEM の受信コマンドを起動してください。

"XMODEM Send" ダイアログボックス

File Name

受信するファイルのファイル名を入力または選択してください。

Option

1K
パケットサイズ 1K で送信する場合には選択してください。
エラー検出の種類(Checksum/CRC)は受信側でのみ指定できます。

XMODEMのヒント


ZMODEM Send ([File] Transfer メニュー)

ZMODEM プロトコルでファイルを送信します。 その前にホスト側の ZMODEM の送信コマンドを起動してください。

"ZMODEM Send" ダイアログボックス

File Name

送信するファイルのファイル名を入力または選択してください。 すでに存在するファイルでなければなりません。 同時に複数のファイルを選択することもできます。

Option

Binary
バイナリファイルを送信するときは選択してください。 逆にテキストファイルを送信する場合は選択しないでください。

ZMODEMのヒント


B-Plus Send ([File] Transfer メニュー)

B-Plus プロトコルでファイルを転送します。 その前に BBS のアップロードコマンドを起動してください。

"B-Plus Send" ダイアログボックス

送信するファイルのファイル名を入力または選択してください。 すでに存在するファイルでなければなりません。

B-Plusのヒント


Quick-VAN Send ([File] Transfer メニュー)

Quick-VAN プロトコルでファイルを送信します。 その前に BBS のアップロードコマンドを起動してください。

"Quick-VAN Send" ダイアログボックス

送信するファイルのファイル名を入力または選択してください。 すでに存在するファイルでなければなりません。 同時に複数のファイルを選択することもできます。

Quick-VANのヒント


Change directory ([File] メニュー)

ファイル転送のためのディレクトリを変更します。

"Change directory" ダイアログボックス

新しいディレクトリを入力してください。
この設定値が使用されるとき、環境変数が含まれていれば展開されます。


Print ([File] メニュー)

"印刷" ダイアログボックス

印刷範囲の選択
"全ページ" を選択すると、現在の画面を印刷します。
"選択した部分"を選択すると、マウスで選択した領域の画像を印刷します。


[Edit] メニュー

Copy
マウスで選択した文字列を、クリップボードへコピーします。
注意: 通常は、このコマンドを使う必要はありません。 マウスで文字を選択すると、自動的にクリップボードへコピーされます。 選択されている文字列を再コピーする場合にこのコマンドを使用してください。
Copy table
マウスで選択した文字列をクリップボードへコピーします。 コピーされた文字列が複数の単語で構成されている場合、 単語間の各空白文字列はそれぞれ一つの Tab 文字に変換されます。 このコマンドにより画面上の表をコピーして、それを Excel などの表計算ソフトに貼り付けることができます。
Paste
クリップボードの中の文字列をホストへ送出します。
Paste<CR>
クリップボードの中の文字列をホストへ送出し、 続いて改行コードも送出します。
Clear screen
画面を消去します。
Clear buffer
スクロールバッファーの内容と画面を消去します。
Cancel selection
選択領域を解除します。クリップボードの内容は変化しません。
Select screen
画面表示部分を選択し、クリップボードにコピーします。
Select all buffer
バッファをすべて選択し、クリップボードにコピーします。


[Setup] メニュー

変更した設定は自動的に保存されません。変更を恒久的に維持するには [Save setup...] メニューから手動で保存する必要があります。

Terminal...
端末エミュレーションの設定をします。
Window...
画面表示の設定をします。
Font...
フォントを変更します
Keyboard...
キーボードの設定をします。
Serial port...
シリアルポートの設定をします。
Proxy...
プロキシの設定をします。
SSH...
SSH 全般の設定をします。
SSH Authentication...
SSH 認証の設定をします。
SSH Forwarding...
SSH ポートフォワーディングの設定をします。
SSH Keygenerator...
SSH のキーペア認証で用いるキーの生成を行います。
TCP/IP...
TCP/IP の設定をします。
General...
その他の設定をします。
Additional settings...
UTF-8化以降に追加した機能に関するオプションの設定をします。
Save setup...
現在の設定を Tera Term 設定ファイルに保存します。
Restore setup...
設定ファイルの内容にしたがって Tera Term を設定しなおします。
Setup directory...
読み込んでいる設定ファイルのパスを開きます。
Load key map...
キーボード設定ファイル の内容にしたがってキーボードを設定しなおします。


Terminal ([Setup] メニュー; 日本語モード)

このページは Setup - General で Language に Japanese を選択した時の説明です。 他の言語モード使用時は以下のページを参照してください。

  • 英語モードのヘルプ
  • 韓国語モードのヘルプ
  • ロシア語モードのヘルプ
  • UTF-8モードのヘルプ

"Terminal setup" ダイアログボックス

Terminal size
ターミナルサイズ(端末画面の論理サイズ)。 横 X 縦 の文字数で指定します。 ウインドウサイズ(実際の画面の大きさ)と必ずしも同じではありません。
Term size = win size
このオプションを選択した場合、ターミナルサイズとウィンドウサイズを常に等しくします。
Auto window resize
このオプションを選択した場合、ターミナルサイズが変更されたときに、 ウインドウサイズも同じ大きさに自動的に変更されます。
New-line (receive)
CR
何も変換しません。
CR+LF
受信された 改行文字 CR ($0D) を CR+LF ($0D $0A)に変換します。
例) "CR LF" が受信された場合、"CR LF LF" に変換されます。
LF
受信された 改行文字 LF ($0A) を CR+LF ($0D $0A)に変換します。
例) "CR LF" が受信された場合、"CR CR LF" に変換されます。
AUTO
受信された 改行文字 CR ($0D), 改行文字 LF ($0A) を CR+LF ($0D $0A)に変換します。
例) "CR LF" が受信された場合、変換しません。
"CR" が受信された場合、"CR LF" に変換されます。
"LF" が受信された場合、"CR LF" に変換されます。
New-line (transmit)
CR
何も変換しません。
CR+LF
送信時に改行文字 CR ($0D) を CR+LF ($0D $0A) に変換します。
LF
送信時に改行文字 CR ($0D) を LF ($0A) に変換します。
Terminal ID
ホストに報告する Terminal ID。Terminal ID は telnet の terminal type とは違います。Telnet の terminal type を変更するには [Setup] TCP/IP コマンドを使用してください。
Local echo
キー入力等により送出する文字をそのまま画面に表示します。
Answerback
ホストから ENQ ($05) 文字が送られてきた時に、送り返す文字列。 文字列中に含まれる表示不可能な文字(制御文字)は、"$" と それにつづく ASCII コード(2桁の16進数) で表現してください。 例えば、文字列 "ABC <CR> <LF>" をアンサーバックする場合、次のように入力してください。

ABC$0D$0A

Auto switch (VT<->TEK)
エスケープシーケンスを判別して、自動的に VT window から TEK window へ制御を移します(逆も同様)。
Kanji (receive)
ホストから送られてくる漢字コード (SJIS, EUC, JIS, UTF-8, UTF-8m の5種類)。
7bit katakana (receive)
ホストから送られてくる"半角"片仮名コードが 7 bit で表現されている (SO/SI を用いたシフト制御を用いている)場合に選択してください。 Kanji (receive) が JIS の場合のみ有効です。
Kanji (transmit)
送出する漢字コード (SJIS, EUC, JIS, UTF-8 の4種類)。
7bit katakana (transmit)
送出する"半角"片仮名コードを7bitで表現する (SO/SI を用いたシフト制御を用いる)場合に選択してください。 Kanji (transmit) が JIS の場合のみ有効です。
Kanji-in (transmit)
Kanji (transmit) が JIS のときに使用するエスケープシーケンス (漢字コードを G0 に指示するシーケンス。 ^[$@ または ^[$B )。 ホストから送られてくるエスケープシーケンスはどちらでも構いません。
Kanji-out (transmit)
Kanji (transmit) が JIS のときに使用するエスケープシーケンス (ASCII または JIS ローマ字コードを G0 に指示するシーケンス。 ^[(B または ^[(J )。 ホストから送られてくるエスケープシーケンスはどちらでも構いません。

注意: ^[(H は初期設定では選択できません。
→ ^[(H を選択可能にする。

locale
ロケール。 詳細はUnicode設定を参照。


Window ([Setup] メニュー)

"Window setup" ダイアログボックス

Title
ウインドウのタイトル。
Cursor shape
カーソルの形。Block, Vertical line, Horizontal line の3つから選べます。
Enable bold font
Bold (強調)属性の文字を bold スタイルのフォントで表示するようにします。 この場合、画面にゴミが残ったり、細かい文字がつぶれて読みにくくなったりすることがあります。
Hide title bar
タイトルバーとメニューバーを消します。 ウィンドウを移動させるには Alt キーを押しながら左マウスボタンでウィンドウをドラッグしてください。
ウインドウを最小化させるには Alt キーを押しながら右マウスボタンを押してください。 Ctrl キーを押しながら左マウスボタンを押すとポップアップメニューが現れます。
Hide menu bar
メニューバーを消します。 Ctrl キーを押しながら左マウスボタンを押すとポップアップメニューが現れます。
16 Colors (PC style)
PC形式の16色モードに対応します。 このモードでは、Bold(強調)/Blink(点滅)属性が文字/背景色の属性の一部として使用され、 エスケープシーケンスにより指定可能な文字/背景色が8色から16色に増えます。
16 Colors (aixterm style)
aixterm形式の16色モードに対応します。このモードでは、 エスケープシーケンスにより指定可能な文字/背景色が8色から16色に増えます。
注:このモードの背景色を色番号9に変更するシーケンス(<CSI>100m)は、 rxvt形式の文字/背景色のリセットのシーケンスと衝突しています。そのため、 このモードを有効にすると、<CSI>100mの動作が今までと違うものになります。 <CSI>100mが今まで通り文字/背景色のリセットとして動作して欲しい場合は、 このモードをOffにしてください。
256 Colors (xterm style)
xterm形式の256色モードに対応します。このモードでは、 エスケープシーケンスにより指定可能な文字/背景色が8色から256色に増えます。 また、エスケープシーケンスによる色テーブルの変更が行えるようになります。
Scroll buffer
スクロールバッファーを使用可能にします。 また、スクロールバッファの行数が設定できます。 行数は 10000 以上には設定できません。 メモリが足りない場合は適当に減らされます。
「スクロールバッファーの最大行数」も参照してください。
Color
Text
文字の色
Background
背景の色
Attribute
色を設定したい文字の属性 (Normal, Bold, Blink, Reverse, URL)
注：現在 URL 属性を表示する機能は無効になっています。
Reverse
文字の色と背景の色を交換します。
R, G, B
指定した文字属性の色のRGB値を指定します。
Always use Normal text's BG
Onにすると、Bold, Blink, URL属性の背景色の設定は無視され、 Normalの背景色が使われるようになります。


Font ([Setup] メニュー)

VT ウィンドウとダイアログのフォントを各々変更します。

フォント ダイアログボックス

フォント
変更したいフォントをリストの中から選択してください。 日本語を表示するためには日本語フォントを選択する必要があります。
スタイル
選択しても無視されます。
サイズ
フォントのサイズをポイント数で指定してください。
文字セット
表示したい文字セットをリストの中から選択してください。

注

  • Tera Term 付属のフォント Tera Special はこのダイアログボックスでは選択できません。 Tera Term によって自動的に使用されます。
  • デフォルト設定では OS で非表示に設定されたフォントは一覧に現れません。 非表示のフォントを選択するには Additiona settings ダイアログの General タブにある List hidden fonts in font dialog の設定を有効にしてください。
  • Additional settings ダイアログ の Visual タブにある Font quality でフォントの品質を選択することができます。
  • ダイアログフォントに極端に大きなサイズや横幅の広いフォントを設定すると、 表示される文字が欠けたり、ダイアログが画面からはみ出して[ok]ボタン等が押せなくなることがあります。


Keyboard ([Setup] メニュー)

"Keyboard setup" ダイアログボックス

Transmit DEL by:
Backspace key
このオプションが選択されると backspace キーを押した時に DEL 文字 (ASCII $7F) が送出されます。 選択されないと BS 文字 (ASCII $08) が送出されます。
また、このオプションが選択された(選択されない)時でも Ctrl+Backspace で BS (DEL) 文字を送出できます。
Delete key
このオプションが選択されると Delete (Del) キーを押した時に DEL 文字が送出されます。 このオプションが選択されない場合、Delete キーの機能は キーボード設定ファイル により決定されます。
Meta key
Alt キーをメタ・キー (meta key) として使います。 例えば、Alt+A を押すと、ESC A を送出します。 メタ・キーモードでは、ショートカット・キーは一部を除いて使用できなくなります。
メタ・キーを有効にしつつ AltGr キーとの組み合わせで文字を入力をしたい場合は、設定値を left にします。※NT 4.0 以降のみ対応
Disabled mode:
Application Keypad
アプリケーションキーパッドモードを無効にします。
アプリケーションキーパッドモードを無効にすると、 なにかの拍子でアプリケーションキーパッドモードに移行してしまい 数値キーパッドが使えなくなるというトラブルを防ぐ事ができます。 しかし、アプリケーションキーパッドモードを使用している アプリケーションでは不具合が起きるかもしれません。
Application Cursor
アプリケーションカーソルモードを無効にします。

キーボード設定ファイル を書きかえることで自由にキー設定を変更することができます。

ロシア語モードのヘルプ


Serial port ([Setup] メニュー)

"Serial port setup" ダイアログボックス

OK button
現在の接続状態を見て、シリアル接続の動作を表します。
新しいウィンドウで接続 ... TCP/IP接続中のため、新しいウィンドウでシリアル接続を行います。
新規オープン ... シリアル接続を行います。
クローズ＆新規オープン ... 現在開いているCOMポートを閉じて、新しいCOMポートでシリアル接続を行います。
現在の接続を再設定 ... 現在開いているCOMポートの設定を変更します。
Cancel button
設定変更をキャンセルして、ダイアログを終了します。
Help button
ヘルプを表示します。
Port
使用するポートです。リストに表示されるシリアルポート番号の最大値はデフォルトで256となっています。MaxComPortで最大値を変更できます。
Speed, Data, Parity, Stop bits, Flow control
シリアルポートのパラメータです。 接続するモデム等の設定にあわせてください。

Speed は任意の数値を指定することができます。選択・指定した設定が実際に反映されるかは、シリアルポートのチップ・ドライバの仕様によります。

Flow controlは以下が設定できます。
Xon/Xoff ... ソフトウェアフロー
RTS/CTS ... ハードウェアフロー(RTS/CTS)
DSR/DTR ... ハードウェアフロー(DSR/DTR)
none ... フロー制御なし

注: Data を 7 にすると、XMODEM, ZMODEM, B-PLUS, Quick-VAN によるファイル転送はできません。 また Flow control を Xon/Xoff にすると、XMODEM, Quick-VAN によるファイル転送はできません。

注: バージョン4.104以前の"hardware"はRTS/CTSに該当します。

Transmit delay
Tera Term が文字(行)を送出したあと次の文字(行)を送出するまでの待ち時間。 単位はミリ秒です。1文字(行)ごとの待ち時間を設定できます。
Tera Term から大量の文字を送出したときにモデムやホストが文字を取りこぼす場合には適当な待ち時間を設定してみてください。
COMポートの詳細情報
テキストボックスでは選択中のCOMポートに関する詳細情報を表示します。
CTRL+Aで全選択ができます。CTRL/SHIFT+ホイールで横スクロールができます。


Proxy ([Setup] メニュー)

注意：設定を有効にするには、設定の保存とTera Termの再起動が必要です。

"Proxy Setup" ダイアログボックス

Type
プロキシのタイプを設定します。
  • Without Proxy：プロキシを使用しません。
  • HTTP：HTTP プロキシを使用します。
  • TELNET：TELNET プロキシを使用します。
  • SOCKS4：SOCKS4 プロキシを使用します。※IPv6 はプロトコルによりサポートされていません。
  • SOCKS5：SOCKS5 プロキシを使用します。
Hostname
プロキシサーバを指定します。

ホスト名、IPv4アドレス、IPv6アドレスが指定できます。
IPv6アドレスは角括弧（大括弧）で囲む必要はありません。

Port number
プロキシサーバのポート番号を指定します。
Username
プロキシサーバの利用に認証が必要な場合、そのユーザ名を指定します。
Password
プロキシサーバの利用に認証が必要な場合、そのパスワードを指定します。
Other setup
"Other Setup" メニューに移ります。

"Other Setup" メニュー

Common setup

Connection Timeout
プロキシとの通信 (接続維持用の通信を含む。) がここで指定した秒数だけ途絶えたら接続を切ります。
Proxy connection log
プロキシとの通信を指定したファイルに記録します。

SOCKS proxy setup

Name で名前解決の方法を指定します。

auto resolve
自動
resolve remote
SOCKS サーバ側で名前解決します。
resolve local
Tera Term が動いている PC で名前解決します。

TELNET Proxy setup

TELNET プロキシに関する設定を行います。

Hostname prompt
ホスト名の入力を催すプロキシ側のプロンプトを指定します。
Username prompt
ユーザ名の入力を催すプロキシ側のプロンプトを指定します。
Password
パスワードの入力を催すプロキシ側のプロンプトを指定します。
Connected
接続完了のメッセージを指定します。
Error message
プロキシ側からのエラーメッセージの表示を指定します。


SSH ([Setup] メニュー)

"TTSSH: Setup" ダイアログボックス

Preferred cipher order
SSH 接続で使用する暗号の種類を順序を付けて指定します。
<ciphers below this line are disabled>以下の暗号は使用されません。
aes256-gcm@openssh.com | not RFC5647, PROTOCOL of OpenSSH
camellia256-ctr | draft-kanno-secsh-camellia-02
chacha20-poly1305@openssh.com | PROTOCOL.chacha20poly1305 of OpenSSH
aes256-ctr | RFC4344
camellia256-cbc | draft-kanno-secsh-camellia-02
aes256-cbc | RFC4253
camellia192-ctr | draft-kanno-secsh-camellia-02
aes192-ctr | RFC4344
camellia192-cbc | draft-kanno-secsh-camellia-02
aes192-cbc | RFC4253
aes128-gcm@openssh.com | not RFC5647, PROTOCOL of OpenSSH
camellia128-ctr | draft-kanno-secsh-camellia-02
aes128-ctr | RFC4344
camellia128-cbc | draft-kanno-secsh-camellia-02
aes128-cbc | RFC4253
3des-ctr | RFC4344
3des-cbc | RFC4253
blowfish-ctr | RFC4344
blowfish-cbc | RFC4253
cast128-ctr | RFC4344
cast128-cbc | RFC4253
3DES(SSH1)
arcfour256 | RFC4345
arcfour128 | RFC4345
arcfour | RFC4253
Blowfish(SSH1)
DES(SSH1)
SSH Known Hosts
SSH で接続したホスト (とホスト公開鍵) が格納されるファイルを指定します。
Host key rotation

ホスト公開鍵の自動更新(OpenSSH 6.8以降)を実施するかどうかを設定することができます。

SSH サーバはホスト鍵を持っていますが、何らかの理由でこのホスト鍵を変更することがあります。
この場合 SSH サーバによっては新しいホスト鍵の一覧をクライアントに送信し、クライアントにホスト鍵一覧の更新を促します。
TTSSH はこの機能に対応しており、新しいホスト鍵の一覧を受信したときにクライアント側の known hosts リストを更新することができます。

無効
更新を行いません
有効
known hostsファイルを自動更新します
確認する
known hostsファイルを更新する際、問い合わせを行います。
HeartBeat (keep-alive)
一定時間ごとにパケットをホストに送信し、接続を維持します。 (特に NAT 環境下で有効。) 0を指定すると当該機能を無効化します。
Remember password in memory
認証に成功したパスワードをメモリ上に保存します。保存されたパスワードは "Duplicate session" をしたときに使用されます。Tera Termのセッションが切断される際に、メモリは消去されます。
Enable agent forwarding
Pageant を利用した SSH エージェント転送を有効にします。
Confirm agent forwarding
リモートから SSH エージェント転送が要求されたとき、要求に応えて Pageant に問い合わせるかどうかユーザに確認します。
Verify host key fingerprint by DNS
SSHFP リソースレコードを利用して SSH サーバホスト鍵を検証するか指定します。
この検証結果は参考程度の位置づけです。
KEX order (SSH2 only)
SSH2 接続で使用するKEX(鍵交換)の種類を順序を付けて指定します。
<KEXs below this line are disabled>以下の暗号は使用されません。
ecdh-sha2-nistp256 | RFC5656
ecdh-sha2-nistp384 | RFC5656
ecdh-sha2-nistp521 | RFC5656
diffie-hellman-group18-sha512 | RFC8268
diffie-hellman-group16-sha512 | RFC8268
diffie-hellman-group14-sha256 | RFC8268
diffie-hellman-group-exchange-sha256 | RFC4419
diffie-hellman-group-exchange-sha1 | RFC4419
diffie-hellman-group14-sha1 | RFC4253
diffie-hellman-group1-sha1 | RFC4253
MAC order (SSH2 only)
SSH2 接続で使用するMACの種類を順序を付けて指定します。
<MACs below this line are disabled>以下の暗号は使用されません。
hmac-sha2-512-etm@openssh.com
hmac-sha2-256-etm@openssh.com
hmac-sha1-etm@openssh.com
hmac-sha2-512 | RFC6668
hmac-sha2-256 | RFC6668
hmac-sha1 | RFC4253
hmac-ripemd160-etm@openssh.com
hmac-ripemd160@openssh.com
hmac-md5-etm@openssh.com
hmac-md5 | RFC4253
hmac-ripemd160-etm@openssh.com
hmac-md5-96-etm@openssh.com
hmac-sha1-96 | RFC4253
hmac-md5-96 | RFC4253
Host key order (SSH2 only)
SSH2 接続で使用するホスト鍵の種類を順序を付けて指定します。
<Host keys below this line are disabled>以下の暗号は使用されません。
ecdsa-sha2-nistp256 | RFC5656
ecdsa-sha2-nistp384 | RFC5656
ecdsa-sha2-nistp521 | RFC5656
ssh-ed25519 | draft-ietf-curdle-ssh-ed25519-02
ssh-rsa | RFC4253
ssh-dss | RFC4253
Compression order (SSH2 only)
SSH2 接続で使用する圧縮方式を順序を付けて指定します。
<Compressions below this line are disabled>以下の暗号は使用されません。
zlib@openssh.com | 遅延圧縮(認証成功後に圧縮を開始する)
zlib
none | 圧縮なし
Compression level
通信路の圧縮レベルを指定します。 右にスライドさせるほど圧縮が強くかかります。 (但し、ADSL や FTTH 等高速な回線ではレスポンスが悪くなる場合もあります。)
SSH1 の場合は、Compression level が 0 であれば圧縮が無効、1 以上であれば圧縮が有効になります。
SSH2 の場合は、Compression order で圧縮を有効にします。そのうえで Compression level を 1 以上にすると圧縮が有効になります。
LogLevel
TTSSHのデバッグレベルを指定します。
デバッグレベルが 0 より大きい場合、デバッグ情報が ttermpro.exe があるディレクトリ配下に
「TTSSH.LOG」、「ssh2connect.log」、「ssh2packet.log」というファイルに記録されます。
値 | 意味
0 | 無効
5 | Fatal
10 | Error
30 | Warning
50 | Notice
80 | Information
100 | Verbose
200 | SSH Dump


SSH Authentication ([Setup] メニュー)

"TTSSH: Authentication Setup" ダイアログボックス

User name
ユーザ名の指定がないときに使用するユーザ名を指定します。
Check the supported authentication methods before loginがチェックされていると、ユーザ名は変更できなくなります。
Do not enter username
入力しません。
Use default username
選択するとデフォルトユーザ名を使用します。
デフォルトユーザ名はエディットボックスで設定します。 デフォルトユーザ名が空の場合は何も入力されません。
Use logon username
Windows のログオンユーザ名を使用します。
デフォルトで使用する認証方法を設定します。
Use plain password to log in
パスワード認証を用いる場合に指定します。
Use RSA/DSA/ECDSA/ED25519 key to login
あらかじめ作成した RSA/DSA/ECDSA/ED25519 鍵を用いた認証方法を選択します。
Private key file
OpenSSH 形式の秘密鍵ファイルを指定します。
TTSSH 2.63(Tera Term 4.76) 以降では PuTTY 形式・SECSH(ssh.com) 形式の SSH2 秘密鍵にも対応しています。
Use rhost to login (SSH1)
ホストの設定で rhost が利用できる場合に選択します。
Local user name
ユーザ名を指定します。
Host private key file
OpenSSH 形式の秘密鍵ファイルを指定します。
Use SSH1:challenge/response(TIS) / SSH2:keyboard-interactive to log in
SSH1
チャレンジ/レスポンス認証(TIS認証)を用いる場合に指定します。 サーバによっては S/Key 認証になる場合があります。
SSH2
キーボード・インタラクティブ認証を用いる場合に指定します。 FreeBSD 等のパスワード認証を無効に設定したサーバへ、パスワードを使ってログインする場合は、 この認証方式を使います。
この認証方式では、入力した内容が暗号化された状態でサーバへ送られます。 認証の為にパスワードを入力した場合は、パスワード認証と同じように、 暗号化されたパスワードが通信路を流れます。
Use Pageant
Pageant と通信して RSA/DSA 鍵を用いた認証をする場合に指定します。
TTSSH は秘密鍵ファイルを扱いません。
Check the supported authentication methods before login (SSH2)
ログイン前にサーバで有効な認証方式を確認し、サポートされていない認証方式を無効にする。
認証ダイアログの表示と同時に、バックグラウンドでユーザ名のみを使用してサーバにアクセスする。このためには接続開始時にユーザ名が確定している必要がある。デフォルトユーザ名またはコマンドラインによるユーザ名がある場合はこれが使用される。
また、ユーザ名を入力したあとフォーカスを失った場合は、ユーザ名への入力内容が使用され、その後ユーザ名の変更はできなくなる。


SSH Forwarding ([Setup] メニュー)

"TTSSH: Forwarding" ダイアログボックス

SSH 通信を使ってポート転送を行う設定ができます。
SSH 経由で暗号化して、既存のプロトコルをセキュアな通信を行わせる場合に指定します。

Port Forwarding

Add...
Forward する方向、ポート番号を指定して一覧に追加します。
Edit...
選択された Forwarding の設定を編集します。
Remove...
選択された Forwarding の設定を削除します。

X Forwarding

Display remote X application on local X server
このチェックボックスをオンにすると、サーバ上の X クライアントとPC上の X サーバの間の通信が暗号化されます。

"TTSSH: Forwarding Edit" ダイアログボックス

各転送設定を編集する。

local forwarding

Forward local port
転送するローカル側のポート番号
listen
ローカル側のリッスンアドレス。省略すると localhost が使われる。
to remote machine
転送先のホスト名
port
転送先のポート番号

remote forwarding

Forward remote server port
転送するリモート側のポート番号
listen
リモート側のリッスンアドレス。省略すると localhost が使われる。
SSH1プロトコルでは利用されない。
to local machine
転送先のホスト名
port
転送先のポート番号

dynamic forwarding

Forward dynamic port
ダイナミック転送するローカル側のポート番号。SOCKS Proxy として動作する。
listen
ローカル側のリッスンアドレス。省略すると localhost が使われる。


SSH Keygenerator ([Setup] メニュー)

"TTSSH: Key Generator" ダイアログボックス

詳しい解説はSSH 接続の「キーの生成」 をご覧下さい。

Key type
生成する鍵の種類を指定します。
RSA1
SSH1用 RSA鍵を生成します。
RSA
SSH2用 RSA鍵を生成します。
DSA
SSH2用 DSA鍵を生成します。
鍵長が1024ビット以外のDSA鍵は、SSHプロトコルとして非正規の鍵であり、サーバによっては使えない可能性がありますので作成できません。
DSA鍵の鍵長を1024ビットより大きくしても、セキュリティを高める事にはなりません。 より強度の高い鍵を使いたい場合は、RSA鍵やECDSA鍵を使用して下さい。
ECDSA-256
SSH2用 ECDSA(256bit)鍵を生成します。
ECDSA-384
SSH2用 ECDSA(384bit)鍵を生成します。
ECDSA-521
SSH2用 ECDSA(521bit)鍵を生成します。
ED25519
SSH2用 ED25519鍵を生成します。
Key Bits
生成する鍵の鍵長を指定します。
bcrypt KDF
秘密鍵フォーマットとして bcrypt KDF を指定します。
Generate
鍵を生成します。
Key passphrase
生成した秘密鍵に付けるパスフレーズを指定します。
Confirm passphrase
秘密鍵に付けるパスフレーズの確認をします。 Key passphraseと同じものを入力してください。
Save public key
生成した公開鍵を保存します。
Save private key
生成した秘密鍵を保存します。
秘密鍵は AES-128 で暗号化されます。(Tera Term 4.76(TTSSH 2.63) までは 3DES で暗号化されました)


TCP/IP ([Setup] メニュー)

"TCP/IP setup" ダイアログボックス

Host list
[File] New connection を実行した時に現れるダイアログボックスのホストリストが編集できます。 ホスト名または IP address をリストに加えることができます。 よく接続するホストをこのリストに登録しておくと便利です。
また、ホスト名だけでなく以下のような コマンドライン 文字列をリストに登録することもできます。
      myhost.mydomain                     通常はホスト名または IP address だけ
      myhost.mydomain:23                  ホスト名とポート番号
      foohost.foodomain /F=FOOHOST.INI    ホスト名+設定ファイル名を指定
      /C=1                                シリアルポートを指定することも可能
      /R=LOG.DAT                          ホストやポートに接続せずに、ログファイルの内容を再生
History
このオプションを選択すると、[File] New connection ダイアログボックスで入力されたホスト名がホストリストの先頭に追加されます。
Auto window close
このオプションを選択すると、ホストとの接続が切れたとき自動的に Tera Term を終了します。
TCP port#
ポート番号。Telnet を使用するときは、通常23にします。
Telnet
Telnet プロトコルを使用します。通常は選択してください。
Keep alive
一定間隔で Telnet サーバに対して、NOP(IAC NOP: 255 241)を送信します。キープアライブ(ハートビート)機能とも呼ばれます。0で当該機能は無効となります。デフォルトは300秒(5分)です。
Terminal type
Telnet プロトコルで接続したときホストに報告する terminal type。
TermTypeを"xterm"に設定することにより、ANSIカラーに対応しているvim6などでカラー表示をさせることができます。これはオリジナルからある機能です。
Windows の Telnet サーバは "xterm" を正しく受け付けないので、"vt100" か "ANSI" を指定してください。


General ([Setup] メニュー)

"General setup" ダイアログボックス

Default port
Tera Term をコマンドラインパラメーターなしで起動したときに接続するポートの種類 (TCP/IP または Serial)。
Language
ターミナルエミュレーションの言語モード(英語/日本語/韓国語/ロシア語/UTF-8)。 日本語を表示するためには Japanese または UTF-8 を選択する必要があります。 日本語 EUC や SJIS 等の文字コードを利用することがある場合は Japanese を、 これらを使用せずに UTF-8 のみを使用する場合は UTF-8 を選択してください。
LanguageUI
言語ファイル(lang\*.lng)の指定により、メニューやメッセージの言語を切り替えることができます。 言語ファイルも参照のこと。 日本語メニューを表示するためには Japanese.lng を選択してください。


Additional settings ([Setup] メニュー)

"General" タブ

Enable clickable URL
URL をダブルクリックしたときにブラウザを起動する機能を有効にします。
Disable accelerator send break
Alt-B で break を送信する機能を無効にします。
Accept broadcast
ブロードキャストコマンドを受け入れます。
この設定は "Realtime mode" が off のブロードキャスト送信に対して有効です。"Realtime mode" が on のブロードキャスト送信は、この設定値にかかわらず受信されます。
Mouse wheel scroll line
マウスホイールによるスクロール行数を設定します。
Auto scroll only in bottom line
最下行を表示していない状態では自動的にスクロールしないようにします。
Clear display when window resized
VTウィンドウのサイズを変更した時に、表示内容をクリアするかどうかを設定します。
Change cursor shape with IME state
IMEがonの時に、カーソルを網掛けにするか設定します。
List hidden fonts in font dialog
Windows 7以降には各フォントをフォント一覧に表示するか非表示にするかを設定する機能が追加されました。Tera Term のこの設定を有効にすると、OS側で非表示に設定されたフォントもフォント設定ダイアログで選択できるようになります。
Title format
ウィンドウタイトルの形式を設定します。
Display host/port name
ホスト名またはシリアルポート名を表示します
Display session number
セッション番号を表示します
Display VT/TEK
VTまたはTEKを表示します
Swap hostname and title position
ホスト名とタイトルテキストの位置を入れ換え、ホスト名を先に表示します
Display tcp port number
TCP ポート番号を表示します (TCP/IP 接続時のみ)
Display serial port speed
シリアルポートのスピードを表示します (シリアル接続時のみ)

"Control Sequence" タブ

Accept mouse event tracking
ホスト側のアプリケーションによって、VT window がマウストラッキングモードに変更された場合、Tera Term はマウス操作をホストへ報告するようになります。
マウストラッキングモードはxtermの拡張機能ですので、TERM環境変数が"xterm"以外だとホスト側のアプリケーションはこの機能を使わないかもしれません。
Disable mouse event tracking when Control is pressed
マウストラッキングモード時、Controlキーが押されている間はマウス操作を通知しないようにします。
Accept window title change request
リモートからのウィンドウタイトル変更要求を受け入れるかを設定します。
off
受け入れない
overwrite
受け入れ、リモートからのウインドウタイトルのみを表示する
ahead
受け入れ、リモートからのウインドウタイトルを標準のタイトルの前に追加する
last
受け入れ、リモートからのウインドウタイトルを標準のタイトルの後ろに追加する
Window title report
dtterm のウィンドウタイトルおよびアイコンラベル報告要求に対して、どのように応答するかを変更できます。
ignore
報告要求に対して何も応答しないようにする
accept
現在のウィンドウタイトルを報告する。現在のウィンドウタイトルを報告するのはセキュリティ上危険ですので、本当に必要な時のみこの設定を行うようにしてください。
empty
ウィンドウタイトルは空だと報告する
Window control sequence
この設定が on になっていると、dttermのウィンドウ操作制御シーケンスの内、位置移動, 最小化, 最大化, 最前面移動, 最背面移動, リフレッシュ, ウィンドウサイズ変更(ピクセル単位, 文字単位) が有効になります。
Window report sequence
この設定が on になっていると、dttermのウィンドウ情報報告の制御シーケンスの内、ウィンドウ状態報告, ウィンドウ位置報告, ウィンドウサイズ報告(ピクセル単位, 文字単位), ルートウィンドウサイズ報告 が有効になります。
セキュリティ上の理由等でウィンドウの情報を報告したくない場合は無効にしてください。
Cursor control sequence
カーソル形状を制御するシーケンスを使用するかどうかを設定します。
この設定が on になっていると、DECSCUSR(カーソル形状変更), WYSTCURM(Wyse非点滅カーソル), WYULCURM(Wyse下線カーソル), AT&T 610のカーソル点滅制御シーケンスに応じて、カーソル形状が変更されます。

vimを使用している場合、この機能を on にして ~/.vimrc に以下のように追加すると入力モードに応じてカーソル形状が変わるようになります。

set t_SI=^[[3\ q
set t_EI=^[[1\ q
注: ^[ はControl-V Control-[で入力する
アプリケーション終了後に、カーソルを点滅状態に戻すには、以下のように設定をします。
ncurses 5.7 の terminfo では xterm のカーソルの非表示(civis)/通常表示(cnorm)/強調表示(cvvis)はそれぞれ以下のようになっています。
civis=\E[?25l
cnorm=\E[?12l\E[?25h
cvvis=\E[?12;25h
この設定だと、カーソルの通常表示時は非点滅に、強調表示時は点滅するようになります。 このため terminfo 対応のアプリケーションがカーソルを通常表示しようとした時に点滅しなくなります。
対応としては、カーソルの点滅制御を無視する為に CursorCtrlSequence を off に設定するか、カーソル表示状態変更時に点滅状態を変更しないように以下の手順をホスト側で実施してください。
% infocmp xterm > xterm.ti
生成されたxterm.tiを編集し、cnorm, cvvisの値を \E?25h に変更する
% tic -o ~/.terminfo xterm.ti
システム全体に反映させるためには root で以下を実行
# tic xterm.ti
Clipboard access from remote
ホストからのクリップボードへのアクセスを許可するか設定します。
off
クリップボードへのアクセスを許可しない
write only
クリップボードへの書き込みを許可する
read only
クリップボードへの読み込みを許可する
read/write
クリップボードへの読み書き両方を許可する
Notify clipboard access from remote
ホストからのクリップボードへのアクセスを通知するか設定します。
Accept clearing scroll buffer from remote
ホストからのスクロールバッファクリア要求を受け入れるかを設定します。有効にすると clear コマンドでスクロールバッファが消去されるようになります。

"Copy and Paste" タブ

Enable continued line copy
継続している行を改行せずにコピーする機能を有効にします。
Disable mouse R button paste
右クリックでクリップボードの内容を貼り付ける機能を無効にします。
Confirm mouse R button paste
右クリックでクリップボードの内容を貼り付けるとき、 ポップアップメニューで確認する機能を有効にします。
Select only by L button
マウスドラッグによる選択を、左ボタンでのみ有効にする。
Trim trailing new line character when pasting
貼り付け時に末尾の改行を削除する。
Normalize line break when pasting
貼り付け時に改行を正規化します。クリップボードの内容の改行が CR や LF だった時に、すべて CR+LF に変換します。
Confirm change paste
クリップボードに改行コード(CR/LF)を含む場合、マウスの右クリックおよびAlt+Vで Tera Termウィンドウへ貼り付けようとするタイミングで、確認ダイアログを表示させることができます。 誤操作により、端末へ予期せぬコマンド投入を防ぐことができます。
String file
クリップボードに、この設定で指定したファイル内に存在するテキストが含まれる場合、マウスの右クリックおよびAlt+Vで Tera Termウィンドウへ貼り付けようとするタイミングで、確認ダイアログを表示させることができます。 誤操作により、端末へ予期せぬコマンド投入を防ぐことができます。
この設定は、ConfirmChangePasteの設定が有効な場合に作用します。
Delimiter characters
単語選択の区切り文字を設定します。
Paste delay per line
複数行のデータを貼り付けるとき、改行が現れるごとにデータの送信を遅延させることができます。遅延する時間をミリ秒で設定します。
Disabling text selection when the window is activated
非選択状態のウィンドウを、文字領域をマウスでクリックすることで 選択するとき、文字の選択を禁止します。

"Visual" タブ

Window Opacity / Active
Window Opacity / Inactive
VT ウィンドウがアクティブ(フォーカスがある)時、および非アクティブ(フォーカスがない)時の不透明度を設定できます。 値は0～255の範囲で指定することができ、値を小さくするほど透明度は強くなります。
Eterm lookfeel
Eterm風の半透明ウィンドウを使用することができます。
注意：設定を有効にするには、設定の保存とTera Termの再起動が必要です。
Mixed ThemeFile to Background
Eterm lookfeel機能が有効の場合、壁紙とテーマファイルの画像を混合するかどうか指定できます。
なお、Background Imageとは同時に使用できません。
Background Image
Eterm lookfeel機能が有効の場合、背景画像を指定することができます。
Image Brightness
Eterm lookfeel機能が有効の場合、背景画像の明るさを0～255の範囲で指定することができます。
値が小さいほど明るくなります。

詳しくは「透過ウインドウ」 を参照してください。

MouseCursor
マウスカーソルの種別を設定することができます。
ARROW = 標準の矢印カーソル
IBEAM = アイビーム (縦線) カーソル (デフォルト)
CROSS = 十字カーソル
HAND  = ハンドカーソル
Font quality
フォントの品質を設定することができます。OSが対応している種類のみ有効に動作します。
Default         = OSの設定(スクリーン フォントの縁を滑らかにする)に依存
Non-Antialiased = アンチエイリアスを無効にする
Antialiased     = アンチエイリアスを有効にする
ClearType       = ClearTypeを利用する
ANSI color
PC形式およびaixterm形式の16色モードで使用する色のRGB値を設定します。
Enable Bold attribute color
Enable Blink attribute color
Enable Reverse attribute color
Enable URL attribute color
Enable ANSI color
それぞれの色属性および色設定を有効にします。
もしANSI colorを無効にした場合、16色および256色モードも無効になります。
Underline URL string
URL 文字列に下線属性を有効にします。

"Log" タブ

View log editor
ログを表示するエディタを指定します。
Default log file name(strftime format)
標準のログファイル名を指定します。strftime の書式が使用できます。
書式:
&h      ホスト名。未接続の場合は空。
&p      TCP ポート番号。未接続の場合は空。TCP 接続でないときも空。
&u      ログオン中のユーザ名。
%a      曜日の省略形。
%A      曜日の正式名。
%b      月の省略形。
%B      月の正式名。
%c      ロケールに対応する日付と時刻の表現。
%d      10 進数で表す月の日付 (01 ～ 31)。
%H      24 時間表記の時間 (00 ～ 23)。
%I      12 時間表記の時間 (01 ～ 12)。
%j      10 進数で表す年初からの日数 (001 ～ 366)。
%m      10 進数で表す月 (01 ～ 12)。
%M      10 進数で表す分 (00 ～ 59)。
%p      現在のロケールの午前/午後。
%S      10 進数で表す秒 (00 ～ 59)。
%U      10 進数で表す週の通し番号。日曜日を週の最初の日とする (00 ～ 53)。
%w      10 進数で表す曜日 (0 ～ 6、日曜日が 0)。
%W      10 進数で表す週の通し番号。月曜日を週の最初の日とする (00 ～ 53)。
%x      現在のロケールの日付表現。
%X      現在のロケールの時刻表現。
%y      10 進数で表す西暦の下 2 桁 (00 ～ 99)。
%Y      10 進数で表す 4 桁の西暦。
%z, %Z  レジストリの設定に応じて、タイム ゾーンの名前または省略形を指定します。
    タイム ゾーンが不明な場合は指定しません。
%%      パーセント記号。
Default log save folder
標準のログ保存先を指定します。ログファイルがフルパスで指定されなかったときに使用されます。
Auto start logging
接続時に自動的にログ採取を開始する機能を有効にします。ログファイル名には、標準のログファイル名が使用されます。
/nolog コマンドラインオプションが指定されていると、当該機能は無効化されます。
Log Rotate
ログのローテートを有効にします。ローテートされたログファイルには、拡張子に .1, .2, .3 … と付与されます。
Size
ログをローテートさせる上限サイズを設定します。単位に"KB", "MB"を指定することもできます。
Rotate
ログをローテートさせる世代数を設定します。"0"の場合は、世代管理をしません。
Log option
ログファイルの種別を設定します。
Binary
ホストから受信した文字をそのままファイルに書き込みたい場合は選択してください。 選択しない場合は、漢字コード、改行文字は変換され、 エスケープシーケンスは取り除かれてから書き込まれます。
Append
すでに存在するファイルに追加して書き込みたい場合は選択してください。 選択しない場合は上書きされます。
Plain text
ASCII 非表示文字を書き込みたくない場合は選択してください。
※Binary オプションが有効の場合は選択不可であり、設定は無効化されます。
Hide dialog
ログ転送のダイアログを表示したくない場合は選択してください。
Include screen buffer
現在の端末バッファをすべてログファイルに書き出してから、ログ採取を開始します。
Timestamp
ログの行頭に時刻を追加したい場合は選択してください。行の最初の文字が出力された時刻が追加されます。
タイムスタンプの種別として以下が選択できます。
Local Time
ローカルタイムでの日時を記録します。
UTC
UTC での日時を記録します。
Elapsed Time (Logging)
ログ取得開始からの経過時間を記録します。
Elapsed Time (Connection)
接続開始からの経過時間を記録します。
Local Time, UTC での日時のフォーマットは LogTimestampFormat の設定に従います。
Elapsed Time (Logging), Elapsed Time (Connection) では LogTimestampFormat の設定は無視されます。
※Binary オプションが有効の場合は選択不可であり、設定は無効化されます。

"Cygwin" タブ

Cygwin install path
Cygwin のインストール先を指定します。
CygTerm
CygTerm の設定をします。各項目の意味については、CygTerm+ 設定ファイル を参照してください。

注: version 4.88以前のバージョンでは設定後に自動でcygterm.cfgを更新していましたが、version 4.89以降では自動での更新を行わないようになりました。
cygterm.cfgを更新するためには Setup - Save Setup を行う必要があります。


Save setup ([Setup] メニュー)

現在の設定をTera Term 設定ファイル に保存します。

"Save setup" ダイアログボックス

Tera Term 設定ファイルのファイル名を指定してください。 指定したファイルがすでに存在する場合は上書きされます。
ファイル名の拡張子を省略した場合、".INI" が拡張子となります。


Restore setup ([Setup] メニュー)

Tera Term 設定ファイル の内容にしたがって Tera Term を設定しなおします。

"Restore setup" ダイアログボックス

すでに存在する Tera Term 設定ファイルのファイル名を指定してください。 ファイル名の拡張子を省略した場合、".INI" が拡張子となります。


Setup directory ([Setup] メニュー)

Tera Termが現在読み込んでいる設定ファイルに対して、下記の操作を行うことができます。
Virtual Store(Windows Vista以降)が働いている場合は、設定ファイルのVirtual Store先が操作対象となります。

...
設定ファイルのパスをエクスプローラで開きます。
Open File
設定ファイルをView log editorで指定したアプリケーションで開きます。


Load key map ([Setup] メニュー)

キーボード設定ファイル の内容にしたがってキーボードを設定しなおします。

"Load key map" ダイアログボックス

すでに存在するキーボード設定ファイルのファイル名を指定してください。 ファイル名の拡張子を省略した場合、".CNF" が拡張子となります。


[Control] メニュー

Reset terminal
ターミナルの各種モードをリセットします。
Are you there
Telnet の AYT (Are You There) コマンドを送出します。 通常ホストはこれに呼応して何等かのメッセージを送り返してきます。 Telnet 接続のときだけ使用できます。
Send break
ブレーク信号を送出します。sendbreak マクロコマンドも参照。
Reset port
シリアルポートをリセットします。 シリアルポート接続のときだけ使用できます。
Broadcast command
ブロードキャストコマンドを送信するためのダイアログを表示します。
Open TEK
TEK window を開きます。
Close TEK
TEK window を閉じます。
Macro
マクロを実行します。
Show Macro Window
実行中のマクロウィンドウを表示します。


Broadcast command ([Control] メニュー)

"Realtime mode" が off の場合

コマンド入力コントロール
各ウィンドウに送信するコマンドを入力します。
Enter key
上記コントロールで入力したコマンドを送信するとき、改行を付加するか選択します。改行として送信する改行コードを "CRLF", "CR", "LF" から選択します。
Submit
コマンドを送信します。"AcceptBroadcast" が有効なウィンドウはコマンドを受信します。
History
送信したコマンドの履歴を保存するかどうか選択します。保存する件数は "MaxBroadcatHistory" で設定できます。
Send to this process only
この設定を有効にすると、この "Broadcast command" ダイアログを出現させた Tera Term ウィンドウにのみコマンドを送信します。
ウィンドウリスト
コマンドを送信するウィンドウを選択します。

"Realtime mode" が on の場合

コマンド入力コントロール
このコントロールにフォーカスした状態で押したキーは、下記ウィンドウリストで選択されたウィンドウに送信されます。"AcceptBroadcast" が無効なウィンドウもコマンドを受信します。
ウィンドウリスト
コマンドを送信するウィンドウを選択します。


[Window] メニュー

実行中の Tera Term ウインドウをこのメニューのリストから選び、 画面の一番前に表示させます。 最大で9個のウィンドウがリストに表示されます。 実行中のウィンドウが9個より多く、リストにないウィンドウを選択したい場合は、 このメニューにある Window コマンドを使用してください。

Window...
実行中の Tera Term ウインドウを画面の一番前に表示させたり閉じたりします。
Minimize All
すべての Tera Term ウィンドウを最小化します。
Restore All
すべての Tera Term ウィンドウを通常表示にします。
Cascade
Tera Term ウィンドウを重ねて表示します。
Stacked
Tera Term ウィンドウを上下に並べて表示します。
Side By Side
Tera Term ウィンドウを左右に並べて表示します。
Undo - Cascade|Stacked|Side By Side
並び替えたTera Term ウィンドウを元の位置に戻します。


Window ([Window] メニュー)

実行中の Tera Term ウインドウを画面の一番前に表示させたり閉じたりします。

"Window list" ダイアログボックス

Window
実行中の Tera Term ウインドウのリスト。一つ選択してください。
Open
選択されたウインドウを画面の一番前に表示させ、 そしてこのダイアログボックスを閉じます。
Close window
選択されたウインドウを閉じます。


[Help] メニュー

Index
このヘルプを表示します。
About Tera Term...
Tera Term に関する情報を表示します。


[Resize] メニュー

登録されたウィンドウサイズのリストが表示されます。
項目が選択されると、その内容に従って VT ウィンドウのサイズが変更されます。

注

  • TTXResizeMenu プラグインを入れた時のみ使用できます。
  • メニュー項目が登録されていない状態では、[Resize] メニューは表示されません。使用する為にはメニュー項目を登録する必要があります。


[File] メニュー(TEK window)

Print...
画面全体または、マウスで選択された領域の画像を印刷します。
Exit
TEK windowを閉じます｡


Print (TEK window [File] メニュー)

"印刷" ダイアログボックス

印刷範囲の選択
"全ページ" を選択すると、現在の画面を印刷します。
"選択した部分"を選択すると、マウスで選択した領域の画像を印刷します。


[Edit] メニュー (TEK window)

Copy
マウスで選択された領域の画像をクリップボードへコピーします。
Copy screen
画面全体の画像をクリップボードへコピーします。
Paste
クリップボードの中の文字列をホストへ送出します。
Paste<CR>
クリップボードの中の文字列をホストへ送出し、続いて改行コードも送出します。
Clear screen
画面を消去します。


[Setup] メニュー (TEK window)

Window...
画面の設定をします。
Font...
フォントを変更します｡


Window (TEK window [Setup] メニュー)

"Window setup" ダイアログボックス

Title
ウィンドウのタイトル。
Cursor shape
カーソルの形。Block, Vertical line, Horizontal line の3つから選べます。
Hide title bar
タイトルバーとメニューバーを消します。ウィンドウを移動させるには Alt キーを押しながら右マウスボタンでウィンドウをドラッグしてください。ウインドウを最小化させるには Alt キーを押しながら左マウスボタンを押してください。Ctrl キーを押しながら左マウスボタンを押すとポップアップメニューが現れます。
Hide menu bar
メニューバーを消します。Ctrl キーを押しながら左マウスボタンを押すとポップアップメニューが現れます。
Color emulation
文字やグラフィックの色を指定するエスケープシーケンスを有効にします。このオプションを選択すると、選択しない場合に比べメモリ消費量が増加します。必要のない場合は選択しないでください。
Color
Text
文字の色
Background
背景の色
Reverse
文字の色と背景の色を交換します。


Font (TEK window [Setup] メニュー)

フォントを変更します｡

フォント ダイアログボックス

フォント
変更したいフォントをリストの中から選択して下さい。
サイズ
フォントのサイズをポイント数で指定して下さい｡


[VT-window] コマンド

VT window へ移動します。


[Window] メニュー (TEK window)

実行中の Tera Term ウインドウをこのメニューのリストから選び、画面の一番前に表示させます。最大で9個のウィンドウがリストに表示されます。実行中のウィンドウが9個より多く、リストにないウィンドウを選択したい場合は、このメニューの一番下にある Window コマンドを使用してください。

Window...
実行中の Tera Term ウインドウを画面の一番前に表示させたり閉じたりします。


[Help] メニュー (TEK window)

Index
このヘルプを表示します｡
Using help
ヘルプの使い方の説明を表示します。
About Tera Term...
Tera Term に関する情報を表示します｡


Tera Term Pro コマンドライン

Tera Term Pro を起動するときのコマンドライン(ショートカットのリンク先)の形式

TTERMPRO [ <host>[[:]<TCP port#>] | telnet://<host>[:<TCP port#>][/] | \\<server>\pipe\<pipe name>]
         [/B] [/BAUD=<speed>] [/C=<serial port#>] [/DS] [/E] [/ES]
         [/F=<setup file>] [/FD=<file transfer directory>]
         [/H] [/I] [/K=<keyboard setup file>]
         [/KR=<kanji code (receive)>] [/KT=<kanji code (transmit)>]
         [/L=<log file>] [/LA=<language>] [/M=<macro file>] [/NOLOG]
         [/P=<TCP port#>] [/R=<replay file>] [/SPEED=<speed>] [/T=<telnet flag>]
         [/TEKICON=<icon name>] [/TIMEOUT=<connecting timeout value>]
         [/V] [/VTICON=<icon name>] [/W="<window title>"] [/WAITCOM]
         [/X=<window pos (x)>] [/Y=<window pos (y)>] [/PIPE]
         [/AUTOWINCLOSE=<flag>] [/OSC52=<operations to permit>]
         [;<comment>]

オプション

<host>
ホスト名または IP アドレス
<host>:<TCP port#>
TCP ポート番号つき <host>
<host> と <TCP port#> の間に":"が置かれる。
<host> <TCP port#>
TCP ポート番号つき <host>
<host> と <TCP port#> の間に1個以上の空白文字が置かれる。
<host> のすぐ後にくる数字は TCP ポート番号とみなされる。
telnet://<host>[:<TCP port#>][/]
URL形式 - telnetハンドラ用
TCP ポート番号および末尾の / は省略可能。
TCP ポート番号が省略された場合は23となる。(設定ファイルのTCPPortの値は無視される)
\\<server>\pipe\<pipe name>
パイプ名
<server> 上の名前付きパイプ <pipe name> に接続する。
\\.\pipe\<pipe name> とした場合はローカルの名前付きパイプに接続する。
/B
Telnet バイナリオプション
/BAUD=<speed>
シリアルポートのスピードを指定します。/SPEED= と同じ動作です。 指定した値が実際に反映されるかは、シリアルポートのチップ・ドライバの仕様によります。
/C=<serial port#>
シリアルポート
  • /C=1 COM1
  • /C=2 COM2
  • /C=3 COM3
  • :
  • /C=256 COM256
シリアルポート番号の最大値はデフォルトで256となっています。MaxComPortで最大値を変更できます。
/CDATABIT=<value>
シリアルポートのデータビット
  • /CDATABIT=7 7bit
  • /CDATABIT=8 8bit
/CPARITY=<value>
シリアルポートのパリティ
  • /CPARITY=none none
  • /CPARITY=odd odd
  • /CPARITY=even even
  • /CPARITY=mark mark
  • /CPARITY=space space
/CSTOPBIT=<value>
シリアルポートのストップビット
  • /CSTOPBIT=1 1bit
  • /CSTOPBIT=1.5 1.5bit
  • /CSTOPBIT=2 2bit
/CFLOWCTRL=<value>
シリアルポートのフロー制御
  • /CFLOWCTRL=x Xon/Xoff
  • /CFLOWCTRL=hard RTS/CTS
  • /CFLOWCTRL=rtscts RTS/CTS
  • /CFLOWCTRL=none none
  • /CFLOWCTRL=dsrdtr DSR/DTR
/CDELAYPERCHAR=<value>
シリアルポートの一文字あたりの送信遅延時間(ミリ秒)
  • /CDELAYPERCHAR=n nミリ秒
/CDELAYPERLINE=<value>
シリアルポートの一行あたりの送信遅延時間(ミリ秒)
  • /CDELAYPERLINE=n nミリ秒
/DS
起動時に "New connection" ダイアログを表示しない
/E
TCPLocalEcho/TCPCRSend の設定を無効にする
/ES
起動時に "New connection" ダイアログを表示する
Tera Term はポートの種類が TCP/IP の場合に "New connection" ダイアログを表示しますが、HostDialogOnStartup を off にすることでダイアログを表示しないようにできます。/ES オプションは HostDialogOnStartup が off になっていても "New connection" ダイアログを表示させるために用います。
Tera Term はポートの種類が Serial の場合には "New connection" ダイアログを表示しません。ポートの種類が Serial の場合に /ES オプションはなにも作用しません。
/F=<setup file>
設定ファイル
/F=TERATERM.INI (省略時)
ファイル名が絶対パスでないときは、ttermpro.exe からの相対パスと見なされます。
/FD=<file transfer directory>
ファイル転送用ディレクトリ
/H
タイトルバーを隠す
/I
起動時にアイコン状態にする
※ログオフ状態でWindowsタスクスケジューラから実行する場合にも指定してください。
/K=<keyboard setup file>
キーボード設定ファイル
/K=KEYBOARD.CNF (省略時)
ファイル名が絶対パスでないときは、ttermpro.exe からの相対パスと見なされます。
/KR=<kanji code (receive)>
漢字コード (受信)
  • /KR=SJIS
  • /KR=EUC
  • /KR=JIS
  • /KR=UTF8 UTF-8(正規化形式 C: Windows, Linux)
  • /KR=UTF8m UTF-8(正規化形式 D: Mac OS X)
  • /KR=KS5601 韓国語モード用
/KT=<kanji code (transmit)>
漢字コード (送信)
  • /KT=SJIS
  • /KT=EUC
  • /KT=JIS
  • /KT=UTF8
  • /KT=KS5601 韓国語モード用
/L=<log file>
起動時にログを開始
/LA=<language>
言語モード
  • /LA=E 英語
  • /LA=J 日本語
  • /LA=K 韓国語
  • /LA=R ロシア語
  • /LA=U UTF-8
/M=<macro file>
起動時にマクロを実行
ファイル名が絶対パスでないときは、ttermpro.exe からの相対パスと見なされます。
/MN=<multicastname>
sendmulticast マクロコマンドで指定するためのマルチキャスト名
/NOLOG
起動時にログを開始しない
/OSC52=<operations to permit>
ホストからのクリップボードアクセスで許可する操作
  • /OSC52=off 許可しない
  • /OSC52=read 読み込みのみ許可する
  • /OSC52=write 書き込みのみ許可する
  • /OSC52=readwrite 読み書きを許可する
/P=<TCP port#>
TCP ポート番号
/R=<replay file>
ファイルを再生
/SPEED=<speed>
シリアルポートのスピードを指定します。/BAUD= と同じ動作です。 指定した値が実際に反映されるかは、シリアルポートのチップ・ドライバの仕様によります。
/T=<telnet flag>
  • /T=1 Telnet プロトコルを使用
  • /T=0 Telnet プロトコルを不使用
/TEKICON=<icon name>
TEKウインドウのウインドウアイコンを指定する。icon nameには、設定ファイルのTEKIcon設定と同じ物が使用できる。
/TIMEOUT=<connecting timeout value>
接続中の処理をキャンセルするまでの時間（秒単位）
/V
ウィンドウが見えない状態で起動
/VTICON=<icon name>
VTウインドウのウインドウアイコンを指定する。icon nameには、設定ファイルのVTIcon設定と同じ物が使用できる。
/W=<window title>
ウィンドウのタイトル
/WAITCOM
起動時に/Cで指定されたシリアルポートが存在しない場合、シリアルポートの接続を待ちます。
/X=<window position (x)>
ウィンドウの位置(水平)
/Y=<window position (y)>
ウィンドウの位置(垂直)
/PIPE
名前付きパイプへ接続する。このオプションを指定すると、以下のルールでホスト名(パイプ名)が補われる。
  • ホスト名が \ で始まる場合はそのまま使われる。
  • ホスト名に \ が含まれない場合は先頭に \\.\pipe\ が付加される。
  • ホスト名の先頭以外に \ が有る場合は、それより前をサーバ名、後ろをパイプ名として扱う。
/AUTOWINCLOSE=<flag>
自動的にウィンドウを閉じる(AutoWinClose)
  • /AUTOWINCLOSE=on 切断時、自動的にウィンドウを閉じる。
  • /AUTOWINCLOSE=off 切断時、自動的にウィンドウを閉じない。
;<comment>
コメント。コマンドラインの最後に置く必要がある。

例

TTERMPRO
TTERMPRO myhost.example.com
TTERMPRO myhost.example.com:23
TTERMPRO myhost.example.com 23
TTERMPRO 192.0.2.1
TTERMPRO myhost.example.com /T=0 /P=7
TTERMPRO \\.\pipe\vmware-serial-port
TTERMPRO /C=1
TTERMPRO /F=TELNET.INI
TTERMPRO foohost.example.org /F=FOOHOST.INI
TTERMPRO /C=2 /SPEED=9600 /F=MYSETUP.INI
TTERMPRO /K=MYKEY.CNF /W="My host"
TTERMPRO /R=README.TXT ; replay a file
TTERMPRO myhost /B /X=100 /Y=50
TTERMPRO /PIPE pipename ; \\.\pipe\pipename への接続

省略時の値

以下の省略時の値は Tera Term 設定ファイルに保存されています。

<TCP port#>
/B
<speed>
<serial port#>
<file transfer directory>
/H
<kanji code (receive)>
<kanji code (transmit)>
<language>
<macro file>
<telnet flag>
<icon name>
<window title>
<window pos (x)>
<window pos (y)>

注

[1] <telnet flag> が 1 で、かつ <TCP port#> が 23 のときだけ、Tera Term から自発的に telnet の option negotiation を開始します。それ以外の場合でも Tera Term はホストから送られてきた telnet コマンドに応答することができます。

[2] パラメータの値にスペースや `"' を含めるためには、値全体を `"' で囲んでください。
値に " を含めるためには、連続した `"'("") を指定してください。(バージョン 4.63以降)

/F="C:\Document and Settings\user\My Documents\teraterm\server1.INI"
/W="Tera Term"
/W="""Tera Term"""
/W="Tera;Term"

参照

Telnet 用ポート番号 / 非 telnet 接続用の端末設定


コマンドライン

TTPMACRO.EXE [/I] [/V] [<macro file> [<parameters>...]]

オプション

/I
起動時に MACRO をアイコン化する
/V
起動時に MACRO を隠す
<macro file>
マクロファイル名
ファイル名が絶対パスでないときは、ttpmacro.exe からの相対パスと見なされる。
ファイル名（パスを除く）はシステム変数 param1 および params[1] に格納される。
<parameters>
マクロファイルへ渡されるパラメータ。
先頭からシステム変数 params の 3 番目の要素(params[2])から順番に格納される。
同時に param2 ～ param9 にも格納される。

システム変数

コマンドラインに応じて以下のシステム変数が設定される。

params
パラメータが格納される文字列型配列。
params[0] にはコマンドライン文字列全体が格納され、params[1] にはマクロファイル名が格納される。
params[2] 以降はマクロファイルに渡されるパラメータが順番に格納される。
param1
params[1] と同じ。マクロファイル名が格納される。
param2 ～ param9
params[2] ～ params[9] と同じ。
マクロファイルに渡されるパラメータが順番に格納される。
params[10] 以降に相当する変数は無い。
paramcnt
params に格納されたパラメータの数。マクロファイル名を表す params[1] の分も含む。

params 配列の各要素と、param1～param9 は文字列型なので、最長 511 文字までが格納される。


TTSSH コマンドライン

TTSSH command line

TTSSHでは以下のコマンドラインオプションが使用できます。

オプション

<username>@<host>[:<#TCP port>]
ホスト名指定ではTera Term本体が対応している形式の他に、ttssh拡張としてユーザ名付きも使えます。
<scheme>://[<username>[:<password>]@]<host>[:<TCP port>][/]
URL形式も拡張されます。
<scheme>には、ssh, ssh1, ssh2, slogin, slogin1, slogin2が使えます。
ポート番号が指定されなかった場合は22が使われます。(設定ファイルのTCPPortの値は無視されます)
/f=<file>
teraterm.iniファイル(file)を読み込む
ファイル名が絶対パスでないときは、ttxssh.dll からの相対パスと見なされます。
/ssh-f=<file>
teraterm.iniファイル(file)を読み込む
ファイル名が絶対パスでないときは、ttxssh.dll からの相対パスと見なされます。
/ssh-consume=<file>
teraterm.iniファイル(file)の読み込み後、当該ファイルを削除する。
ファイル名が絶対パスでないときは、ttxssh.dll からの相対パスと見なされます。
/t=<value>
  • value=2 SSH を有効にする
  • value=2以外 SSH を無効にする
/nossh
SSH 接続を無効にする
/telnet
SSH 接続を無効にする
さらに、Telnet プロトコルを使用する。Tera Term の /T=1 と同じ。
/1
SSH1 で接続する
/ssh1
SSH1 で接続する
/2
SSH2 で接続する
/ssh2
SSH2 で接続する
/ssh-autologin
空のパスワードでの自動ログインを試みる
/ssh-autologon
空のパスワードでの自動ログインを試みる
/auth=<mode>
<mode> で指定された認証方式で自動ログインを試みる
  • password パスワード認証
  • publickey 公開鍵認証
  • challenge SSH1:チャレンジレスポンス(TIS)認証 / SSH2:キーボードインタラクティブ認証
  • keyboard-interactive challenge と同じ
  • pageant Pageant を用いた公開鍵認証
/user=<username>
ユーザ名を指定する
/passwd=<password>
パスワードを指定する
/keyfile=<file>
秘密鍵を指定する
ファイル名が絶対パスでないときは、ttxssh.dll からの相対パスと見なされます。
/ask4passwd
自動ログインをせず、パスワードを聞く
/auth=<mode> は、認証方式のみを意味するようになる
/ssh-L[<listen_addr>:]<port1>:<host>:<port2>[,[<listen_addr>:]<port1>:<host>:<port2>[,...]]
ローカルのリッスンアドレス(<listen_addr>)ポート(<port1>)からリモート側ホスト(<host>)のポート(<port2>)へポートフォワーディングする
<listen_addr>を省略すると、localhostでリッスンする
/ssh-R[<listen_addr>:]<port1>:<host>:<port2>[,[<listen_addr>:]<port1>:<host>:<port2>[,...]]
リモートのリッスンアドレス(<listen_addr>)ポート(<port1>)からローカル側ホスト(<host>)のポート(<port2>)へポートフォワーディングする
<listen_addr>を省略すると、localhostでリッスンする
SSH1プロトコルでは<listen_addr>は利用されない
/ssh-D[<listen_addr>:]<port>[,[<listen_addr>:]<port>[,...]]
ローカルのリッスンアドレス(<listen_addr>)ポート(<port>)への接続をダイナミック転送する
SOCKS Proxy として動作する
<listen_addr>を省略すると、localhostでリッスンする
/ssh-X[[<hostname>]:<displaynumber>[.<screennumber>]]
X11転送を有効にする
転送先ディスプレイを指定した場合は、その転送先へX11接続を転送する。
転送先ディスプレイを指定しなかった場合は、以下の優先順位で転送先が決定される。
  1. 設定ファイルの [TTSSH] セクションの X11Display 設定
  2. 環境変数 DISPLAY の値
  3. localhost:0.0
/ssh-A
エージェント転送を有効にする
/ssh-a
エージェント転送を無効にする
/ssh-agentconfirm=<on/off>
  • on エージェント転送要求を受け入れるか確認する
  • off エージェント転送要求を受け入れるか確認しない
/ssh-v
ログレベルを VERBOSE モードにする
/ssh-C
圧縮を有効にする(圧縮レベルは6)
/ssh-C=<level>
圧縮レベル(0-9)を指定して圧縮を有効にする
/ssh-c
圧縮を無効にする
/ssh-icon=<icon>
SSH接続時のアイコンを指定する。
  • flat TTSSH2.77以降の緑のフラットアイコン
  • green TTSSH2.63から2.76までの緑のアイコン
  • yellow TTSSH2.62までの黄色のアイコン
  • default デフォルトのアイコン (flatと同じ)
/ssh-subsystem=<subsystem>
シェルではなく<subsystem>で指定したサブシステムを起動する。
/ssh-N
接続時にシェルセッションを開始しない。
/nosecuritywarning
SSHセキュリティ警告(known_hosts)を無視する。原則、使用禁止。
※本オプションは、工場などの閉じた環境で、機器の自動試験を実現するために用意されました。
通信にセキュリティリスクがある場合は、絶対に当該オプションを使用しないでください。
いずれにおいても自己責任でお願いします。

パラメータの値にスペースやセミコロンを含めるためには、値全体を `"' で囲んでください。(バージョン 4.63(TTSSH 2.51)以降)
値に `"' を含めるためには、連続した `"'("") を指定してください。(バージョン 4.63(TTSSH 2.51)以降)

以前の仕様
パラメータの値にスペースを含めるためには、`@' を指定してください。'@' を含めるためには '@@' を指定してください。(バージョン 4.10-4.62(TTSSH 1.08-2.50))

例

ttermpro.exe server1:22 /ssh /ssh-L30025:smtpsrv1:25 /ssh-L30110:pop3srv1:110
ttermpro.exe server1:22 /ssh /ssh-D1080
ttermpro.exe server2:22 /ssh /ssh-X
ttermpro.exe server2:22 /ssh /ssh-Xlocalhost:3.0
ttermpro.exe server3:22 /ssh /2 /auth=password /user=guest /passwd=guest
ttermpro.exe server4:22 /ssh /2 /auth=publickey /user=admin /keyfile=pathofkeyfile /ask4passwd
ttermpro.exe ssh://user:password@server5/ /auth=password
ttermpro.exe server6:22 /ssh /2 /auth=publickey /user=guest /keyfile="C:\Users\foo\Documents\My keys\id_ed25519" /passwd="Yu/eA;G2"
ttermpro.exe server7:22 /ssh /2 /auth=password /user=guest /passwd="foo""bar"

例: Pageantとの連携

Pageantをスタートアップフォルダへ設置させます。

C:\usr\pageant.exe c:\usr\Identity.ppk

Tera TermからPageantを利用して、公開鍵認証による接続をするには以下のようにします。

ttermpro.exe shell.osdn.net:22 /ssh /auth=pageant /user=yutaka


CygTerm+ コマンドライン

cygterm.exe [-t 'terminal-emulator'] [-p port-number] [-dumb]
            [-s 'shell'] [-ls | -nols] [-cd | -nocd] [-A | -a]
            [-v 'env-var' ...] [-d 'directory'] [-o 'option']
-t 'terminal-emulator'
ターミナル・エミュレータを指定します。 指定形式は設定ファイルの TERM と同じです。 空白文字を含む場合は必ずクォートで囲みます。
-p port-number
ターミナル・エミュレータを起動するのではなく、 ローカルホストのこのポート番号への接続を試みます。 他のアプリケーション・プログラムが -p オプションを使って、 cygterm.exe 経由で Cygwinを利用する、等が考えられます。
-dumb
TELNETオプション・ネゴシエーションを行いません。 さらに TELNETコマンドが送信されてきても無視します。 シェル側の環境変数 TERM は 'dumb' となります。
-s 'shell'
Cygwin上のシェルを指定します。 指定形式は設定ファイルの SHELL と同じです。 空白文字を含む場合は必ずクォートで囲みます。 必ずしもシェルコマンドである必要はありません。
-ls
シェルをログインシェルとして起動します。
-nols
シェルを(ログインシェルではなく)通常のシェルとして起動します。
-cd
カレントディレクトリをホームディレクトリに移動してからシェルを起動します。
-nocd
カレントディレクトリを移動せずにシェルを起動します。
-A
ssh認証エージェント転送機能を有効にします。 OpenSSHのssh認証エージェントに対応したプログラムが、 CygTerm+を通してPageantにアクセス出来るようになります。
-a
ssh認証エージェント転送機能を無効にします。
-v 'env-var'
シェル起動時に設定しておきたい環境変数を指定します。 指定形式は設定ファイルの ENV_X と同じです。 空白文字を含む場合は必ずクォートで囲みます。 -v オプションはいくつでも指定できます。
-d 'directory'
カレントディレクトリを指定されたディレクトリに移動してから シェルを起動します。
-o 'option'
ターミナル・エミュレータへの追加のパラメータを指定します。 TERMを変えずに追加のパラメータを指定したい時に使います。

ターミナル・エミュレータもしくは接続先ポート番号、と Cygwin側シェルの指定が最低必要となります。 これらがコマンドライン・オプションによって与えられるならば、設定ファイル cygterm.cfg が無くても実行できます。

cygterm.exe は cygwin1.dll を利用する Win32アプリケーションです。Cygwin上から実行することも、Windows上のショートカットから実行することもできます。

※ Windows上から実行するには cygwin1.dll のディレクトリパスがWindows環境変数 PATH に追加されている必要があります。(通常 Cygwinルートディレクトリ\bin)


TTProxy コマンドライン

形式

TTProxy では、以下のコマンドラインパラメータが使用できます。

-proxy=protocol://<user<:password>@>proxyserver:proxyport
protocol://<user<:password>@>proxyserver:proxyport/realhost
-noproxy
protocol
プロキシのプロトコル
以下の種類が使用可能です。
  • http
  • telnet
  • socks4
  • socks5
  • none
proxyserver
プロキシサーバ
proxyport
プロキシサーバのポート番号
realhost
実際に接続したいサーバ
user
プロキシで認証が必要な場合のユーザ名
password
プロキシで認証が必要な場合のパスワード
-noproxy
プロキシ設定を無効化する。-proxy=none:// と同じ。

使用例

ttermpro.exe -proxy=socks5://user:pass@proxy:1080 sshserver /ssh
ttermpro.exe -proxy=telnet://proxy:8023 telnetserver:23 /nossh
ttermpro.exe -proxy=none:// sshserver /ssh
ttermpro.exe -noproxy sshserver /ssh

注意

以下の形式は使用できません。

protocol://<user<:password>@>proxyserver:proxyport/realhost:ポート番号

Tera Term が処理する telnet://server<:port> 形式のパラメータと競合するため、プロキシサーバを指定するために以下の形式を使用することはできなくなりました。

protocol://<user<:password>@>proxyserver:proxyport


TTXttyplay コマンドライン

TTXttyplay command line

TTXttyplayでは以下のコマンドラインオプションが使用できます。

オプション

/ttyplay
TTXttyplayを有効にします。Tera Termの/R=オプションで指定されたファイルを、ttyrec形式のファイルとして再生します。
/ttyplay-nowait
ノーウェイトモード。

例

ttermpro.exe /ttyplay /R="C:\Documents and Settings\doda\My Documents\record.tty"
ttermpro.exe /ttyplay /ttyplay-nowait /R=example.tty


Tera Term 設定ファイル

起動時または、[Setup] Restore setupを実行したとき、設定ファイルの内容にしたがい Tera Term が初期化されます。
コマンドラインで設定ファイル名を指定することができます。ファイル名の拡張子を省略した場合は、".INI"であるとみなされます。
コマンドラインでファイル名を指定しない場合、"My Documents"[*1] に TERATERM.INI が存在すれば "My Documents" の TERATERM.INI が読み込まれ、存在しない場合は ttermpro.exe と同じディレクトリの TERATERM.INI が読み込まれます。

[*1] My Documentsのデフォルトの場所

OS | 場所
Vista/7/8/10 | %UserProfile%\Documents
2000/XP | %UserProfile%\My Documents
NT4.0 | C:\Winnt\Personal\ユーザ名\Personal
ME | C:\My Documents, C:\WINDOWS\Profiles\ユーザ\My Documents
95/98 | C:\My Documents

Tera Term 設定ファイルの全項目一覧

変更した設定は設定ファイルに自動的に保存されません。現在の設定を設定ファイルに保存するには、[Setup] Save setupを実行してください。

Tera Term 設定ファイルの特別オプション

以下の設定をするには、ユーザーは Tera Term 設定ファイルを直接編集しなければなりません。

ターミナルエミュレーション

  • バック・ラップ (back wrap)
  • BEL 文字受信時の動作
  • C1 制御文字($80-$9F)を使用しない
  • C1 制御文字($80-$9F)を送信に使用する
  • JIS 漢字送出の時、正しくない "kanji-out" シーケンス ^[(H を使用可能にする
  • 2バイト文字(漢字)の1バイト目と2バイト目の間に制御文字等が入った場合、1バイト目を無効にする
  • 受信した文字をすべて表示するようにする
  • ステータスラインを使用不可にする
  • TEK GIN report のマウスコードの値を設定する
  • 行末のタブ表示を VT 端末互換にする
  • 画面クリア時にカレントバッファをスクロールアウトさせるかどうか設定する
  • 対応していないUnicodeの文字をワイド文字として扱うか設定する
  • UnicodeからDEC特殊文字へのマッピングを設定する
  • ファンクションキー等のデフォルトの動作
  • AltキーでMSBをセットした文字を送信する
  • 代替画面バッファを無効にする
  • 端末固有IDを設定する
  • 端末固有IDを変更可能にする
  • タブストップ位置の変更を禁止する
  • ベル過使用時の一時無効化
  • ISO/IEC 2022のシフト機能による文字セットの切り替えを禁止する

ウィンドウ

  • 自動的な文字列コピーをしない
  • ダブルクリックによる単語選択の区切り文字
  • ポップアップメニューを使用不可にする
  • "Show menu bar" コマンドを隠す
  • 言語モードの選択を不可にする
  • スクロールバッファーの最大行数
  • 点滅しないカーソル
  • 一度にスクロールする最大の行数を設定する
  • マウスでウィンドウを選択したときの文字の選択を禁止する
  • タイトルの形式
  • 白色および黒色属性の文字の実際の色
  • 文字(行)間にすきまをあける
  • [Window] メニューを隠す
  • Eterm風半透明ウィンドウ
  • ウィンドウ最大化時のスクロール方法
  • フォーカスが外れた時にもカーソルを表示する
  • ウィンドウの初期位置を固定する
  • ウィンドウ位置を保存する
  • ウィンドウアイコンを変更する
  • マウスでの文字の選択の開始を遅らせる

通信

  • シリアルポート番号の最大値
  • シリアルポートのバッファをクリアしない
  • TCP/IP 回線切断の確認をしない
  • Telnet のバイナリオプション
  • Telnet のエコーオプション
  • Telnet のログ
  • Telnet 用ポート番号 / 非 telnet 接続用端末設定
  • Telnet コマンド自動検出の無効化
  • 行単位送信モードの無効化
  • シリアルポートでブレーク信号を送出する時間の長さ
  • シリアルポートの切断・再接続を検出する
  • サーバに通知する端末速度を変更する

ファイル転送

  • 受信したファイルの名前を自動的に変更して上書きを避ける
  • B-Plus 受信の自動起動
  • B-Plus ですべての制御文字をエスケープする
  • B-Plus のログ
  • Kermit のログ
  • Quick-VAN のログ
  • Quick-VAN のウィンドウサイズ
  • XMODEM のログ
  • XMODEM の受信コマンド
  • XMODEM のタイムアウト
  • YMODEM のタイムアウト
  • ZMODEM 受信/送信の自動起動
  • ZMODEM 送信の設定
  • ZMODEM ですべての制御文字をエスケープする
  • ZMODEM のログ
  • ZMODEM の受信コマンド
  • ZMODEM のタイムアウト
  • 送信ダイアログのファイル名フィルタ
  • ドラッグ&ドロップによるファイル送信の確認
  • ファイル送信時の転送状況ダイアログを表示しない
  • シリアル接続における高速なファイル転送

印刷

  • エスケープシーケンスによる印刷の遅延
  • エスケープシーケンスによる印刷で直接ポートに出力
  • エスケープシーケンスによる印刷を行わない
  • エスケープシーケンスによる印刷時の改ページを禁止する
  • プリンタフォントの指定
  • ページ余白の指定
  • 印刷の倍率
  • 印刷フォントのロシア語コードセット (ロシア語モードのみ)

その他

  • 接続時のビープ音
  • IME (日本語入力システム)に関する設定
  • 起動時にマクロを実行
  • ユーザインタフェースの言語ファイル
  • ブロードキャストコマンドの履歴の保存数
  • アプリケーションカーソルモード時のマウスホイールの動作
  • 起動時の "New Connection" ダイアログの表示
  • マウスの中ボタンによる貼り付けを有効にする
  • メニューの New connection を無効にする
  • メニューの Duplicate session を無効にする
  • メニューの Send break を無効にする
  • 切断時に画面をクリアする
  • New Connection のアクセラレータキーを無効にする
  • Duplicate session のアクセラレータキーを無効にする
  • Cygwin connection のアクセラレータキーを無効にする
  • クリッカブル URL で起動するブラウザ
  • ログファイルを排他ロックする
  • ログファイルを遅延書き込みする
  • ログの行頭に追加するタイムスタンプのフォーマットを指定する
  • ログの行頭に追加するタイムスタンプの時刻にUTCを使用する

TTSSH

  • 認証バナーの表示方法
  • メッセージボックスの抑止
  • Diffie-Hellman 群交換方式鍵交換での群の最小サイズ
  • ログレベル
  • X11転送での転送先ディスプレイ指定


キーボード設定ファイル

キーボード設定ファイルは、キーボードの各キーとそれに割りあてるられる機能(VT 端末の機能、ユーザー定義文字列の送出、Tera Term コマンドの実行、マクロの実行)を定義します。

Tera Term インストール時のキー設定は各キーの機能が VT 端末にできるだけ近くなるようにされています。 キーボード設定ファイルを編集することによって、自由にキー設定を変更することができます。 ファイル形式については、配布ファイルに含まれているKEYCODE.TXTを読んでください。

コマンドラインで Tera Term が読み込むキーボード設定ファイルの名前を指定することができます。 ファイル名の拡張子を省略した場合は、".CNF"であるとみなされます。ファイル名を指定しない場合、ファイル KEYBOARD.CNF が読み込まれます。

配布パッケージには以下のキーボード設定ファイルが含まれています。

IBMKEYB.CNF
IBM-PC/AT (いわゆる DOS/V マシン) 101 (106) キーボード用設定ファイルの例 (Windows 95/NT 用)
PC98KEYB.CNF
NEC PC 98 キーボード用設定ファイルの例 (Windows 95 用)
NT98KEYB.CNF
NEC PC 98 キーボード 用設定ファイルの例 (Windows NT 用)
FUNCTION.CNF
IBMKEYB.CNF をベースにしたカスタマイズ例
  • F1-F10 が有効
  • エディタキーパッド(*1)と特殊キー(*2)は、キートップに刻印された名称に対応する VT220 端末キー用のシーケンス(*3)を送出する
EDITOR.CNF
IBMKEYB.CNF をベースにしたカスタマイズ例
  • エディタキーパッド(*1)は、キートップに刻印された名称に対応する VT220 端末キー用のシーケンスを送出(*3)する
KEYBOARD.CNF
インストール時には EDITOR.CNF と同一

(*1) ここで言うエディタキーパッドとは、Ins, Del, Home, End, PageUp, PageDown キーのことを指します。
(*2) ここで言う特殊キーとは、テンキーの *, /, +, -, Ctrl+"+" キーのことを指します。
(*3)VT220 端末ではこれらのキーの位置が 一般的な 101(106) キーボードとは異なっています。FUNCTION.CNF, EDITOR.CNF 以外のキーボード設定ファイルでは、VT220 端末でその位置に配置されているキーに相当するキー用のシーケンスが送出されるようになっています。これはオリジナルの Tera Term Pro の仕様をそのまま踏襲したものです。
一方 FUNCTION.CNF, EDITOR.CNF では、各特殊キーのキートップに刻印された名称に相当するキー用のシーケンスが送出されるようになっています。これにより、特殊キーに対応したアプリケーション上では、各特殊キーは刻印された名称どおりのキーとして機能するようになると思います。

インストーラーは EDITOR.CNF を KEYBOARD.CNF としてコピーします。 もし違う設定を使いたい場合には、自分で適切なファイルをコピーして KEYBOARD.CNF を作成し直してください。

PC98 NX シリーズの PC の場合、IBMKEYB.CNF を使用してください。


TTSSH known_hosts ファイル

known_hostsファイルの書式は以下のとおりです。

  書式:
    ホスト名  キー種別  ホスト公開鍵

    #  コメント
    !  否定

   例:
    192.168.1.2 ssh-rsa AAAAB3NzaC1...nXIDE=
    192.168.1.2 ssh-dss AAAAB3NzaC1...nXIDE=
    192.168.1.2 1024 35 13032138...794461
    #192.168.1.3 ssh-rsa AAAAB3NzaC1...nXIDE=
    192.168.1.2 1024 35 13032138...794461
    *.example.com,!mail.example.com ssh-rsa AAAAB3NzaC1...nXIDE=


CygTerm+ 設定ファイル

cygterm.cfg は設定ファイルです。 使用する端末エミュレータのコマンドラインや起動するシェルのコマンドライン等を設定します。
cygterm.cfg は cygterm.exe と同じディレクトリにないといけません。

cygterm.cfg の例

TERM = C:\program files\ttermpro\ttermpro.exe %s %d /KR=SJIS /KT=SJIS
TERM_TYPE = vt100
PORT_START = 20000
PORT_RANGE = 40
SHELL = /bin/bash
ENV_1 = MAKE_MODE=unix
ENV_2 = HOME=/home
  :         :
TERM
ターミナル・エミュレータの起動コマンドラインです。 コマンド名は Windows環境でパスが通ってなければフルパスで書きます。 ホスト指定のところは %s とし、ポート指定のところは %d とします。
TERM_TYPE
ターミナル・エミュレータがターミナルタイプを与えてくれなかった 場合に採用するターミナルタイプです。 (デフォルト: vt100)
シェル上、環境変数 TERM にセットされます。
PORT_START
使い始める (使ってよい最小の) ポート番号です。 (デフォルト: 20000)
PORT_RANGE
使ってよいポート番号の個数です。 (デフォルト: 40)
PORT_START ～ PORT_START+PORT_RANGE の範囲で空きポートを探します。 この数だけ同時実行できることになります。
SHELL
Cygwin側シェル (通常 /bin/bash) の起動コマンドラインです。 (デフォルト: /etc/passwdの情報を使用) コマンド名のフルパスか、"AUTO"を指定します。
ENV_X
シェル起動時に設定しておきたい環境変数です。「変数名=値」の形式 (putenv形式) で記述します。 ENV_ で始めればいくつでも記述できます。
LOGIN_SHELL
シェルをログインシェルとして起動するかどうかを指定します。 デフォルトは無効です。
一般的なシェルではログインシェルとして起動されると、.profileや .loginなどのログイン時のみ読み込むスタートアップファイルを実行 します。 これらのファイルでは、通常、以下のような事が行われます。
  • PATHやUSER等の各種環境変数の設定を行う
  • 端末の設定を適切に行う
  • カレントディレクトリをユーザのホームディレクトリに変更する。
一部のシェル(tclshなど)やシェル以外のプログラムを起動する場合は 効果がありません。
HOME_CHDIR
patch level 01 に含まれる"ホームディレクトリへの移動"を機能させるか どうかを指定します。デフォルトは無効です。
SOCKET_TIMEOUT
Tera Termからのtelnet接続を待ち受けるソケットのタイムアウトを指定します。 (デフォルト: 5秒)


言語ファイル

Tera Term のメニューやダイアログには、英語のメッセージが割り当てられています。
言語ファイルを作成することにより、メッセージをローカライズすることができます。
また、このファイルにはダイアログのフォントとフォントサイズも指定することができます。

インストーラは、lang フォルダの中に日本語・ドイツ語・フランス語・ロシア語・韓国語・中国語の言語ファイルをコピーします。
また、インストーラは指定された言語が使用されるように、TERATERM.INI の UILanguageFile に言語ファイル名を指定します。

フォントの指定

インストーラは、フォントだけを指定するテンプレートとして Default.lng をコピーします。
フォントの指定は以下のようなフォーマットで行います。

; 大きいフォント
DLG_SYSTEM_FONT=System,12,0
; 小さいフォント
DLG_TAHOMA_FONT=Tahoma,8,0

一つ目にはフォント名を指定します。

二つ目にはフォントサイズを数字で指定します。

三つ目にはフォントのキャラクタセットを数字で指定します。

0   ANSI
1   既定の文字セット
2   シンボル(記号)
77  Mac
128 日本語(Shift_JIS)
129 韓国語(EUC-KR)
130 韓国語(Johab)
134 簡体字中国語(GB2312)
136 繁体字中国語(Big5)
161 ギリシャ語
162 トルコ語
163 ベトナム語
177 ヘブライ語
178 アラビア語
186 バルト言語
204 キリル言語
222 タイ語
238 中央ヨーロッパ言語
255 OEM/DOS

詳しくは msdn ライブラリの LOGFONT 構造体の lfCharset の説明を参照してください。


    KEYCODE.EXE for Tera Term
    T. Teranishi

    Copyright(C) 1994-1998 T. Teranishi
    All Rights Reserved.

KEYCODE.EXE は Tera Term のキーボード設定ファイルの中で用いられる PC key code
を調べるためのユーティリティーです。この文書では、KEYCODE.EXE の使用法および
キーボード設定ファイルの形式について説明します。

キーボード設定を変えたい場合は、この文書と Tera Term ヘルプをよく
読んでください。作者にキーボード設定に関する質問をしないでください。

-------------------------------------------------------------------------------
1. インストール

Windows Windows 3.1 または NT 3.X の場合、プログラムマネージャーに KEYCODE.EXE
のアイコンを登録してください。Windows 95 または Windows NT 4.0 の場合は
KEYCODE.EXE のショートカットを好きな場所(フォルダ、スタートメニュー、
デスクトップなど)に作成してください。

-------------------------------------------------------------------------------
2. 使用法

KEYCODE.EXE を起動すると、"Push any key." というメッセージが表示されます。
そこで、あるキーまたはキーの組み合わせ (Ctrl+ キーなど)を押すと、
"Key code is XXXX." (XXXX は最大4桁の10進数)と表示され、PC key code を知ること
ができます。

-------------------------------------------------------------------------------
3. キーボード設定ファイルについて

キーボード設定ファイルは、キーボードの各キーとそれに割りあてられる機能
(VT 端末の機能、ユーザー定義文字列の送出、Tera Term コマンドの実行、
マクロの実行)を定義します。

Tera Term インストール時のキー設定は各キーの機能が VT 端末にできるだけ近く
なるようにされています。キーボード設定ファイルを編集することによって、
自由にキー設定を変更することができます。

Tera Term のコマンドラインで Tera Term が読み込むキーボード設定ファイルの
ファイル名を指定することができます (Tera Term ヘルプ参照)。ファイル名の
拡張子を省略した場合は ".CNF" であるとみなされます。ファイル名を指定しない
場合、ファイル KEYBOARD.CNF が読み込まれます。

配布パッケージには以下のキーボード設定ファイルが含まれています。

IBMKEYB.CNF	IBM-PC/AT (いわゆる DOS/V マシン) 101 (106) キーボード用
        設定ファイルの例 (Windows 95/NT 用)

PC98KEYB.CNF	NEC PC98 キーボード用設定ファイルの例 (Windows 3.1/95 用)

NT98KEYB.CNF	NEC PC98 キーボード用設定ファイルの例 (Windows NT 用)
        (Tera Term Pro にのみ含まれています。)

KEYBOARD.CNF	標準キーボード設定ファイル
        上記 3 つのうちどれかをコピーしたもの

インストーラーは IBMKEYB.CNF, PC98KEYB.CNF, NT98KEYB.CNF のうち適切なものを
コピーして KEYBOARD.CNF ファイルを作成します。どれがコピーされるかは、
インストール中にユーザーが指定したキーボードの種類により決定されます。
もしインストール時にキーボード指定を間違った場合は、自分で適切なファイルを
コピーして KEYBOARD.CNF を作成し直してください。

*** 注意: PC98 NX シリーズの PC の場合、インストーラーで
    「IBM-PC/AT キーボード」を選択してください。***
...............................................................................
3.1 キーボード設定ファイルの形式

キーボード設定ファイルの中で用いられる PC key code は PC の各キーまたはキーの
組み合わせに対応した数値で、使用するキーボードによって異なります。

キーボード設定ファイルには、[VT editor keypad], [VT numeric keypad].
[VT function keys], [X function keys], [Shortcut keys], [User keys] の6つの
セクションが存在します。

1) [VT editor keypad] セクション
VT 端末のエディターキーを PC キーに割り当てます。

    形式:
        <VT editor key name>=<PC key code>

    <VT editor key name>
        Up, Down, Right, Left, Find, Insert, Remove, Select,
        Prev, Next

    <PC key code>
        PC key code (10進数)

    例:
        Up=328

2) [VT numeric keypad] セクション
VT端末の数値キーを PC キーに割り当てます。

    形式:
        <VT numeric key name>=<PC key code>

    <VT numeric key name>
        Num0, Num1, Num2, Num3, Num4, Num5, Num6, Num7, Num8,
        Num9, NumMinus, NumComma, NumPeriod, NumEnter, PF1,
        PF2, PF3, PF4

    <PC key code>
        PC key code (10進数)

    例:
        Num0=82

    注意: VT 端末ではメインキーパッドの "Enter" キーと数値キーパッドの
    "Enter" キーが違う文字列を送出するモードがあるので、"NumEnter=" の
    後にはメインキーの "Enter" の PC key code を書かないでください。
    メインキーパッドの "Enter" と数値キーパッドの "Enter" が同じ
    PC key code を発生するキーボード(例えば PC9801 キーボード)の場合は
    注意が必要です。

3) [VT function keys] セクション
VT 端末のファンクションキーを PC キーに割り当てます。

    形式:
        <VT function key name>=<PC key code>

    <VT function key name>
        (VT 端末のファンクションキー)
        Hold, Print, Break, F6, F7, F8, F9, F10, F11, F12,
        F13, F14, Help, Do, F17, F18, F19, F20
        (VT 端末の"ユーザー定義キー")
        UDK6, UDK7, UDK8, UDK9, UDK10, UDK11, UDK12, UDK13,
        UDK14, UDK15, UDK16, UDK17, UDK18, UDK19, UDK20

    <PC key code>
        PC key code (10進数)

    例:
        F6=64

4) [X function keys] セクション
Xterm の F1-F5 キー、およびバックタブキーを PC キーに割り当てます。

    形式:
        <Xterm function key name>=<PC key code>

    <Xterm function key name>
        XF1, XF2, XF3, XF4, XF5, XBackTab

    <PC key code>
        PC key code (10進数)

    例:
        XF1=59

5) [Shortcut keys] セクション
Tera Term の機能をPC キーに割り当てます。

    形式:
        <Shortcut key name>=<PC key code>

    <Shortcut key name>	機能
    ---------------------------------------------------------
    EditCopy		[Edit] Copy コマンド
    EditPaste		[Edit] Paste コマンド
    EditPasteCR		[Edit] Paste<CR> コマンド
    EditCLS 		[Edit] Clear screen コマンド
    EditCLB 		[Edit] Clear buffer コマンド
    ControlOpenTEK		[Control] Open TEK コマンド
    ControlCloseTEK 	[Control] Close TEK コマンド
    LineUp			一行スクロールアップ
    LineDown		一行スクロールダウン
    PageUp			一ページスクロールアップ
    PageDown		一ページスクロールダウン
    BuffTop 		バッファー先頭へスクロール
    BuffBottom		バッファー最後へスクロール
    NextWin 		次の Tera Term ウィンドウへ移動
    PrevWin 		前の Tera Term ウィンドウへ移動
    NextShownWin 		次の最小化されていない Tera Term ウィンドウへ移動
    PrevShownWin 		前の最小化されていない Tera Term ウィンドウへ移動
    LocalEcho		Local echo を on/off する

    <PC key code>
        PC key code (10進数)

    例:
        LineUp=1352

6) [User keys] セクション
ユーザーキーと、そのキーを押したときに実行される機能
(文字列の送出、マクロファイルの実行、メニューコマンドの実行)を
定義します。

    形式:
        <User key name>=<PC key code>,<Control flag>,<文字列>

    <User key name>
        User1, User2, User3,...., User99
        最大99個まで設定可能、例えば10個設定する場合は User1 から
        順番に User10 までを使用し、それ以外の名前を使用してはなら
        ない。

    <PC key code>
        PC key code (10進数)

    <Control flag>
        キーを押したときに <文字列> をどのように取り扱うかを指定
        するフラグ。
            0	<文字列>をそのまま送出する。
            1	<文字列>に含まれる漢字や改行コードを
                Tera Term の設定にあわせて変換し、変換
                された文字列を送出する。
            2	<文字列>のファイル名のマクロファイルを
                実行する。
            3	メニュー ID <文字列> で指定される
                Tera Term のメニューコマンドを実行する。

    <文字列>:
        <Control flag> が 0 または 1 の場合、キーを押したときに
        送出される文字列。表示不可能な文字(制御文字等)はその
        ASCII コードを $ と2文字の16進数で表現する
        (例: CR 文字は '$0D')。"$" そのものは "$24" で表現する。
        「付録 A  ASCII コード表」参照。

        <Control flag> が 2 の場合、実行されるマクロファイルの
        ファイル名。

        <Control flag> が 3 の場合、実行されるメニューコマンドの
        メニュー ID (数字)。「付録 B  メニュー ID 表」参照。

    例:
        User1=1083,0,telnet myhost
        User2=1084,0,$0D$0A
        User3=1085,1,こんにちは。
        User4=1086,2,test.ttl
        User5=1087,3,50110

...............................................................................
3.2 注意

1つの PC key code はキーボード設定ファイルの中で一回だけ使用することが
できます。もし、1つの PC key code を複数のキー定義で使用した場合、
Tera Term がキーボード設定ファイルを読み込んだときに、
"Key code XXX is used more than once" という警告メッセージが表示されます。
この場合ある一つのキー定義だけが有効になり、その他は無視されます。

あるキー設定項目にどの PC キーも割り当てたくない場合は、以下のように
PC key code の代わりに "off" を指定してください。

EditCopy=off

...............................................................................
3.3 可能なキーの組み合わせ

キーボード設定ファイルで設定可能な PC のキーは, KEYCODE.EXE で PC key code が
表示されるキーです。単一のキーだけでなく、Ctrl, Shift, Alt を用いたキーの組み
合わせでも PC key code を表示させることができます。可能な組み合わせを
以下に示します。

    Shift+key
    Ctrl+key
    Shift+Ctrl+key
    Shift+Alt+key
    Ctrl+Alt+key
    Shift+Ctrl+Alt+key

Tera Term や Windows のショートカットキーに割り当てられているキーの組み合わせ
(例えば Alt+key など)はキーボード設定ファイルで指定できません。

ただし、Altキーをメタ・キーとして使う設定にしている場合(設定->キーボードにある
Metaキーにチェックをいれている状態)はAlt+keyも指定する事ができます。
キーコードは KEYCODE.EXE で調べられますが、単体のAltキーとの組合せには
対応していません。Altキーとの組合せでのキーコードを調べるには、単独での
キーコードを調べて、その値に2048を足してください。

たとえば、Alt+Vのキーコードは V が 47 なので、2095 となります。

; Shift + Insert
EditPaste=850

これを例えば EditPaste=2095 に変更すれば、Metaキーをパススルーにしていても
Alt+Vで張り付けができるようになります。

Shift+Insertを残したままAlt+Vでの張り付けを行いたい場合は、KEYBOARD.CNF の
[User keys]セクションに以下の設定を追加します。

User1=2095,3,50230

...............................................................................
3.4 Q & A

キーボード設定がよくわからない場合、この文書と Tera Term ヘルプを
よく読んでください。作者にキーボード設定に関する質問をしないでください。

Q. Tera Term を起動するたびに "Key code XXX is used more than once" という
   メッセージがでる。
A. 「3.2 注意」を参照。

Q. PC の F1 キーを VT100 の PF1 キーとして使いたい。以下のように設定したが
   うまくいかない。

   [VT function keys]
   F1=PF1		(これはまちがい)

A. 左辺は **PC** のキーの名前ではなく **VT端末** のキーの名前を指定しなけ
   ればなりません。また、右辺にはキーの名前ではなく、キーコードを指定して
   ください。「3.1 キーボード設定ファイルの形式」を参照。
   また、キー設定を変えるときは、キーコードの重複使用をしないようにして
   ください(「3.2 注意」を参照)。

   以下のように設定してください。

   [VT function keys]
   PF1=59			(59 は F1 キーのキーコード)
   [X function keys]
   ;XF1=59			(キーコード 59 の重複使用をさける)
   XF1=off			("off" で置き換える)

Q. F1 キーを押したときにエスケープシーケンス ESC [ A を送出するように
   するための設定方法は?
A. ユーザーキーを使えば、好きな文字列を送出することができます。
   くわしくは、「3.1 キーボード設定ファイルの形式」を読んでください。
   また、キー設定を変えるときは、キーコードの重複使用をしないようにして
   ください(「3.2 注意」を参照)。

   以下のように設定してください。

   [X function keys]
   ;XF1=59			(F1 キーのキーコード 59 の重複使用をさける)
   XF1=off			("off" で置き換える)
   [User keys]
   User1=59,0,$1B[A		(ESC の ASCII コードは $1B)

-------------------------------------------------------------------------------
付録 A	ASCII コード表 (16 進表現)

例えば、"A" の ASCII コードは $41。

------------------------------------------------------------
 Char    Code | Char    Code | Char    Code | Char    Code |
------------------------------------------------------------
 NUL (^@) $00 | DLE (^P) $10 | SPACE    $20 | 0        $30 |
 SOH (^A) $01 | DC1 (^Q) $11 | !        $21 | 1        $31 |
 STX (^B) $02 | DC2 (^R) $12 | "        $22 | 2        $32 |
 ETX (^C) $03 | DC3 (^S) $13 | #        $23 | 3        $33 |
 EOT (^D) $04 | DC4 (^T) $14 | $        $24 | 4        $34 |
 ENQ (^E) $05 | NAK (^U) $15 | %        $25 | 5        $35 |
 ACK (^F) $06 | SYN (^V) $16 | &        $26 | 6        $36 |
 BEL (^G) $07 | ETB (^W) $17 | '        $27 | 7        $37 |
 BS  (^H) $08 | CAN (^X) $18 | (        $28 | 8        $38 |
 HT  (^I) $09 | EM  (^Y) $19 | )        $29 | 9        $39 |
 LF  (^J) $0A | SUB (^Z) $1A | *        $2A | :        $3A |
 VT  (^K) $0B | ESC (^[) $1B | +        $2B | ;        $3B |
 FF  (^L) $0C | FS  (^\) $1C | ,        $2C | <        $3C |
 CR  (^M) $0D | GS  (^]) $1D | -        $2D | =        $3D |
 SO  (^N) $0E | RS  (^^) $1E | .        $2E | >        $3E |
 SI  (^O) $0F | US  (^_) $1F | /        $2F | ?        $3F |
------------------------------------------------------------
 Char    Code | Char    Code | Char    Code | Char    Code |
------------------------------------------------------------
 @        $40 | P        $50 | `        $60 | p        $70 |
 A        $41 | Q        $51 | a        $61 | q        $71 |
 B        $42 | R        $52 | b        $62 | r        $72 |
 C        $43 | S        $53 | c        $63 | s        $73 |
 D        $44 | T        $54 | d        $64 | t        $74 |
 E        $45 | U        $55 | e        $65 | u        $75 |
 F        $46 | V        $56 | f        $66 | v        $76 |
 G        $47 | W        $57 | g        $67 | w        $77 |
 H        $48 | X        $58 | h        $68 | x        $78 |
 I        $49 | Y        $59 | I        $69 | y        $79 |
 J        $4A | Z        $5A | j        $6A | z        $7A |
 K        $4B | [        $5B | k        $6B | {        $7B |
 L        $4C | \        $5C | l        $6C | |        $7C |
 M        $4D | ]        $5D | m        $6D | }        $7D |
 N        $4E | ^        $5E | n        $6E | ~        $7E |
 O        $4F | _        $5F | o        $6F | DEL      $7F |
------------------------------------------------------------

...............................................................................
付録 B	メニュー ID 表

メニュー ID の指定法については「3.1  キーボード設定ファイルの形式」を参照。
メニュー ID は将来変更される可能性があります。

1) VT window

メニューコマンド                    ID
-----------------------------------------
[File] New connection               50110
[File] Duplicate session            50111
[File] Cygwin connection            50112
[File] Log                          50120
[File] Comment to Log               50121
[File] View Log                     50122
[File] Show Log dialog              50123
[File] Send file                    50130
[File] Transfer/Kermit/Receive      50141
[File] Transfer/Kermit/Get          50142
[File] Transfer/Kermit/Send         50143
[File] Transfer/Kermit/Finish       50144
[File] Transfer/XMODEM/Receive      50145
[File] Transfer/XMODEM/Send         50146
[File] Transfer/YMODEM/Receive      50157
[File] Transfer/YMODEM/Send         50158
[File] Transfer/ZMODEM/Receive      50151
[File] Transfer/ZMODEM/Send         50152
[File] Transfer/B-Plus/Receive      50153
[File] Transfer/B-Plus/Send         50154
[File] Transfer/Quick-VAN/Receive   50155
[File] Transfer/Quick-VAN/Send      50156
[File] Change dir                   50170
[File] Replay Log                   50171
[File] LogMeTT                      50172
[File] Print                        50180
[File] Disconnect                   50190
[File] Exit                         50199
[File] Exit All                     50200
[Edit] Copy                         50210
[Edit] Copy table                   50220
[Edit] Paste                        50230
[Edit] PasteCR                      50240
[Edit] Clear screen                 50250
[Edit] Clear buffer                 50260
[Edit] Cancel selection             50270
[Edit] Select screen                50280
[Edit] Select all                   50290
[Setup] Terminal                    50310
[Setup] Window                      50320
[Setup] Font                        50330
[Setup] Keyboard                    50340
[Setup] Serial port                 50350
[Setup] TCPIP                       50360
[Setup] General                     50370
[Setup] Additional settings         50375
[Setup] Save setup                  50380
[Setup] Restore setup               50390
[Setup] Setup directory             50391
[Setup] Load key map                50395
[Control] Reset terminal            50410
[Control] Are you there             50420
[Control] Send break                50430
[Control] Reset port                50440
[Control] Broadcast command         50445
[Control] Open TEK                  50450
[Control] Close TEK                 50460
[Control] Macro                     50470
[Control] Show Macro Window         50480
[Window] Window                     50810
[Window] Minimize All               50811
[Window] Restore All                50812
[Window] Cascade                    50813
[Window] Stacked                    50814
[Window] Side by Side               50815
[Window] Undo - XXX                 50816
[Help] Index                        50910
[Help] About Tera Term              50990

TTSSH メニューコマンド              ID
-----------------------------------------
[Setup] SSH                         52310
[Setup] SSH Authentication          52320
[Setup] SSH Forwarding              52330
[Setup] SSH KeyGenerator            52340
[Help] About TTSSH                  52910

TTProxy メニューコマンド            ID
-----------------------------------------
[Setup] Proxy                       53310
[Help] About TTProxy                53910

TTXKanjiMenu メニューコマンド       ID
-----------------------------------------
[KanjiCode] Recv: Shift_JIS         54010
[KanjiCode] Recv: EUC-JP            54011
[KanjiCode] Recv: JIS               54012
[KanjiCode] Recv: UTF-8             54013
[KanjiCode] Recv: UTF-8m            54014
[KanjiCode] Send: Shift_JIS         54110
[KanjiCode] Send: EUC-JP            54111
[KanjiCode] Send: JIS               54112
[KanjiCode] Send: UTF-8             54113
[KanjiCode] Use one setting         54200

TTXAlwaysOnTop メニューコマンド     ID
-----------------------------------------
[Control] Always on top             55000
-- SetWindowPos(HWND_TOP)           55001 (メニュー割り当て無し)
-- SetWindowPos(HWND_BOTTOM)        55002 (メニュー割り当て無し)
-- SetWindowPos(HWND_TOPMOST)       55003 (メニュー割り当て無し)
-- SetWindowPos(HWND_NOTOPMOST)     55004 (メニュー割り当て無し)

TTXResizeMenu メニューコマンド      ID
-----------------------------------------
[Resize] Menu(1) - Menu(20)         55101 - 55120
-- Increase window width            55151 (メニュー割り当てなし)
-- Decrease window width            55152 (メニュー割り当てなし)
-- Increase window height           55153 (メニュー割り当てなし)
-- Decrease window height           55154 (メニュー割り当てなし)

TTXViewMode メニューコマンド        ID
-----------------------------------------
[Setup] ViewMode password           55200
[Control] View mode                 55210

TTXttyrec メニューコマンド          ID
-----------------------------------------
[File] TTY Record                   55301

TTXttyplay メニューコマンド         ID
-----------------------------------------
[File] TTY Replay                   55302

TTXRecurringCommand メニューコマンド ID
-----------------------------------------
[Setup] Recurring Command           55500
[Control] Recurring Command         55501
-- Enable Recurring Command         55502 (メニュー割り当て無し)
-- Disable Recurring Command        55503 (メニュー割り当て無し)

2) TEK window

メニューコマンド                    ID
-----------------------------------------
[File] Print                        51110
[File] Exit                         51190
[Edit] Copy                         51210
[Edit] Copy screen                  51220
[Edit] Paste                        51230
[Edit] PasteCR                      51240
[Edit] Clear screen                 51250
[Setup] Window                      51310
[Setup] Font                        51320
[VTWin]                             51410
[Window] Window                     51810
[HELP] Index                        51910
[HELP] About Tera Term              51990


鬼車 正規表現 Version 6.9.6    2020/07/31

使用文法: ONIG_SYNTAX_ONIGURUMA (既定値)

1. 基本要素

  \       退避修飾 (エスケープ)  正規表現記号の有効/無効の制御
  |       選択子
  (...)   式集合   (グループ)
  [...]   文字集合 (文字クラス)

2. 文字

  \t              水平タブ         (0x09)
  \v              垂直タブ         (0x0B)
  \n              改行             (0x0A)
  \r              復帰             (0x0D)
  \b              後退空白         (0x08)
  \f              改頁             (0x0C)
  \a              鐘               (0x07)
  \e              退避修飾         (0x1B)
  \nnn            八進数表現                 符号化バイト値
  \xHH            十六進数表現               符号化バイト値
  \x{7HHHHHHH}    (1-8桁)  拡張十六進数表現  コードポイント値
  \o{17777777777} (1-11桁) 拡張八進数表現    コードポイント値
  \uHHHH          拡張十六進数表現           コードポイント値
  \cx             制御文字表現               コードポイント値
  \C-x            制御文字表現               コードポイント値
  \M-x            超  (x|0x80)               コードポイント値
  \M-\C-x         超 + 制御文字表現          コードポイント値

  ※ \bは、文字集合内でのみ有効

2.1 コードポイント連続表記

  十六進数表現コードポイント (1-8桁)
  \x{7HHHHHHH 7HHHHHHH ... 7HHHHHHH}

  八進数表現コードポイント (1-11桁)
  \o{17777777777 17777777777 ... 17777777777}

3. 文字種

  .        任意文字 (改行を除く: オプションに依存)

  \w       単語構成文字

           Unicode以外の場合:
             英数字, "_" および 多バイト文字。

           Unicodeの場合:
             General_Category -- (Letter|Mark|Number|Connector_Punctuation)

  \W       非単語構成文字

  \s       空白文字

           Unicode以外の場合:
             \t, \n, \v, \f, \r, \x20

           Unicodeの場合:
             U+0009, U+000A, U+000B, U+000C, U+000D, U+0085(NEL),
             General_Category -- Line_Separator
                              -- Paragraph_Separator
                              -- Space_Separator

  \S       非空白文字

  \d       10進数字

           Unicodeの場合: General_Category -- Decimal_Number

  \D       非10進数字

  \h       16進数字    [0-9a-fA-F]

  \H       非16進数字

  \R       汎改行  (* 文字集合の中では使用できない)
           "\r\n" or \n,\v,\f,\r  (* 但し \r\nから\rにはバックトラックしない)

           Unicodeの場合:
             "\r\n" or \n,\v,\f,\r or U+0085, U+2028, U+2029

  \N       非改行文字  (?-m:.)

  \O       真任意文字  (?m:.)      (* 原作)

  \X       文章区分    \X === (?>\O(?:\Y\O)*)

           この演算子の意味は、オプション (?y{..})の設定によって変化する。

           \Xは照合の開始位置が区分の境界かどうかを確認しない。
           それを確実にしたければ、\y\Xと書けば良い。

           [拡張書記素房-状態のとき] (デフォルト)
             Unicodeの場合:
               参照 [Unicode Standard Annex #29: http://unicode.org/reports/tr29/]

             Unicode以外の場合:  \X === (?>\r\n|\O)

           [単語-状態のとき]
             現在、Unicodeしかサポートしていない。
             参照 [Unicode Standard Annex #29: http://unicode.org/reports/tr29/]

  Character Property

    * \p{property-name}
    * \p{^property-name}    (negative)
    * \P{property-name}     (negative)

    property-name:

     + 全てのエンコーディングで有効
       Alnum, Alpha, Blank, Cntrl, Digit, Graph, Lower,
       Print, Punct, Space, Upper, XDigit, Word, ASCII,

     + EUC-JP, Shift_JISで有効
       Hiragana, Katakana

     + UTF8, UTF16, UTF32で有効
       doc/UNICODE_PROPERTIES参照

4. 量指定子

  欲張り

    ?       一回または零回
    *       零回以上
    +       一回以上
    {n,m}   (n <= m)  n回以上 かつ m回以下
    {n,}    n回以上
    {,n}    零回以上n回以下 ({0,n})
    {n}     n回

  無欲

    ??      零回または一回
    *?      零回以上
    +?      一回以上
    {n,m}?  (n <= m)  n回以上 かつ m回以下
    {n,}?   n回以上
    {,n}?   零回以上n回以下 (== {0,n}?)

        {n}? はONIG_SYNTAX_JAVAとONIG_SYNTAX_PERLでのみ無欲な指定子
        (その場合には、態々そう書く意味はないが)
        デフォルトの文法では、/a{n}?/ === /(?:a{n})?/

  強欲 (欲張りで、繰り返しに成功した後は回数を減らすような後退再試行をしない)

    ?+      一回または零回
    *+      零回以上
    ++      一回以上
    {n,m}   (n > m)  m回以上 かつ n回以下

        {n,m}+, {n,}+, {n}+ は、ONIG_SYNTAX_JAVAとONIG_SYNTAX_PERLでのみ
        強欲な指定子

    例. /a*+/ === /(?>a*)/

5. 錨

  ^       行頭
  $       行末
  \b      単語境界
  \B      非単語境界

  \A      文字列先頭
  \Z      文字列末尾、または文字列末尾の改行の直前
  \z      文字列末尾
  \G      探索開始位置
  \K      保持 (結果の開始位置をこの位置に保つ)

  \y      文章区分 境界
  \Y      文章区分 非境界

          この演算子の意味は、オプション (?y{..})の設定によって変化する。

           [拡張書記素房-状態のとき] (デフォルト)
             Unicodeの場合:
               参照 [Unicode Standard Annex #29: http://unicode.org/reports/tr29/]

             Unicode以外の場合:
               \rと\nの間を除く全ての位置

           [単語-状態のとき]
             現在、Unicodeしかサポートしていない。
             参照 [Unicode Standard Annex #29: http://unicode.org/reports/tr29/]

6. 文字集合

  ^...    否定   (最低優先度演算子)
  x-y     範囲   (xからyまで)
  [...]   集合   (文字集合内文字集合)
  ..&&..  積演算 (^の次に優先度が低い演算子)

     例. [a-w&&[^c-g]z] ==> ([a-w] and ([^c-g] or z)) ==> [abh-w]

  ※ '[', '-', ']'を、文字集合内で通常文字の意味で使用したい場合には、
     これらの文字を'\'で退避修飾しなければならない。

  POSIXブラケット ([:xxxxx:], 否定 [:^xxxxx:])

    Unicode以外の場合:

      alnum    英数字
      alpha    英字
      ascii    0 - 127
      blank    \t, \x20
      cntrl
      digit    0-9
      graph    多バイト文字全部を含む
      lower
      print    多バイト文字全部を含む
      punct
      space    \t, \n, \v, \f, \r, \x20
      upper
      xdigit   0-9, a-f, A-F
      word     英数字, "_" および 多バイト文字

    Unicodeの場合:

      alnum    Letter | Mark | Decimal_Number
      alpha    Letter | Mark
      ascii    0000 - 007F
      blank    Space_Separator | 0009
      cntrl    Control | Format | Unassigned | Private_Use | Surrogate
      digit    Decimal_Number
      graph    [[:^space:]] && ^Control && ^Unassigned && ^Surrogate
      lower    Lowercase_Letter
      print    [[:graph:]] | [[:space:]]
      punct    Connector_Punctuation | Dash_Punctuation | Close_Punctuation |
               Final_Punctuation | Initial_Punctuation | Other_Punctuation |
               Open_Punctuation
      space    Space_Separator | Line_Separator | Paragraph_Separator |
               U+0009 | U+000A | U+000B | U+000C | U+000D | U+0085
      upper    Uppercase_Letter
      xdigit   U+0030 - U+0039 | U+0041 - U+0046 | U+0061 - U+0066
               (0-9, a-f, A-F)
      word     Letter | Mark | Decimal_Number | Connector_Punctuation

7. 拡張式集合

  (?#...)           注釈

  (?imxWDSPy-imxWDSP:式)   式オプション

                            i: 大文字小文字照合
                            m: 複数行
                            x: 拡張形式
                            W: wordがASCIIのみ (\w, \p{Word}, [[:word:]])
                               word境界がASCIIのみ (\b)
                            D: digitがASCIIのみ (\d, \p{Digit}, [[:digit:]])
                            S: spaceがASCIIのみ (\s, \p{Space}, [[:space:]])
                            P: POSIXプロパティがASCIIのみ (W,D,Sを全て含んでいる)
                               (alnum, alpha, blank, cntrl, digit, graph,
                                lower, print, punct, space, upper, xdigit, word)

                            y{?}: 文章区分状態
                               このオプションは\X, \y, \Yの意味を変更する。
                               現在このオプションはUnicodeでしかサポートしていない
                               y{g}: 拡張書記素房-状態 (デフォルト)
                               y{w}: 単語-状態
                                     参照 [Unicode Standard Annex #29]

  (?imxWDSPy-imxWDSP)  孤立オプション

                      * これは次の')'またはパターンの終わりまでのグループを形成する
                        /ab(?i)c|def|gh/ == /ab(?i:c|def|gh)/

  (式)              捕獲式集合
  (?:式)            非捕獲式集合

  (?=式)            先読み
  (?!式)            否定先読み

  (?<=式)           戻り読み
  (?<!式)           否定戻り読み

                    * 戻り読み、否定戻り読みの式の中では、不在停止演算子
                      (?~|expr)と範囲消去演算子(?~|)を使用することはできない

                    * 戻り読み、否定戻り読みの中では、ignore-caseオプションの
                      対応が制限される。一文字と一文字の間の変換しか対応しない。
                      (Unicodeでの複数文字の変換に対応しない)

  (?>式)            原子的式集合
                    式全体を通過したとき、式の中での後退再試行を行なわない

  (?<name>式), (?'name'式)
                    名前付き捕獲式集合
                    式集合に名前を割り当てる(定義する)。
                    (名前は単語構成文字でなければならない。)

                    名前だけでなく、捕獲式集合と同様に番号も割り当てられる。
                    番号指定が禁止されていない状態 (10. 捕獲式集合 を参照)
                    のときは、名前を使わないで番号でも参照できる。

                    複数の式集合に同じ名前を与えることは許されている。
                    この場合には、この名前を使用した後方参照は可能であるが、
                    部分式呼出しはできない。

  <呼び出し>

  * 内容の呼び出し
  (?{...contents...})           前進中のみの呼び出し
  (?{...contents...}D)          Dは方向指定文字
                                D = 'X': 前進中および後退中
                                    '<': 後退中のみ
                                    '>': 前進中のみ
  (?{...contents...}[tag])      名札付き
  (?{...contents...}[tag]D)

                              * エスケープ文字はcontentsの中で何の機能も持たない
                              * contentsは、'{'文字で始まってはならない

  (?{{{...contents...}}})     contentsの中のn個連続の'}'は、(n+1)個連続の{{{...}}}
                              の中で許される

    tagに許される文字: _ A-Z a-z 0-9 (* 最初の文字: _ A-Z a-z)

  * 名前の呼び出し
  (*name)
  (*name{args...})         引数付き
  (*name[tag])             名札付き
  (*name[tag]{args...})

    nameに許される文字: _ A-Z a-z 0-9 (* 最初の文字: _ A-Z a-z)
    tag に許される文字: _ A-Z a-z 0-9 (* 最初の文字: _ A-Z a-z)

  <不在機能群>

  (?~不在)          不在繰り返し  (*原案 田中哲)
                    これは .*(より正確には\O*)のように動作するが、<不在>に
                    適合する文字列を含まない範囲に制限される。
                    これは(?~|(?:不在)|\O*)の省略表記である。

  (?~|不在|式)      不在式  (* 原作)
                    これは<式>のように動作するが、<不在>に適合する文字列を
                    含まない範囲に制限される。

                    例 (?~|345|\d*)  "12345678"  ==> "12", "1", ""

  (?~|不在)         不在停止 (* 原作)
                    この演算子を通過した後は、対象文字列の適合範囲が
                    <不在>に適合する文字列を含まない範囲に制限される。

  (?~|)             範囲消去
                    不在停止の効果を消して、初期の状態にする。

     * 不在機能の入れ子には対応しておらず、その場合の挙動は不定とする。

  <条件文>

  (?(条件式)成功式|失敗式)    条件式が成功すれば成功式、失敗すれば失敗式を実行する
                             この機能の存在理由は、成功式が失敗しても失敗式には
                             行かないこと。これは他の正規表現で書くことができない。
                             もうひとつは、条件式が後方参照の番号/名前のとき、
                             後方参照値の有効性を調べる(文字列と照合はしない)
                             意味になる。

  (?(条件式)成功式)           条件式が成功すれば成功式を実行する
                             (条件式が通常の式のときには、この構文は不必要だが
                              今のところエラーにはしない。)

                    条件式は後方参照の番号/名前または普通の式を使用できる。
                    条件式が後方参照の場合、成功式と失敗式の両方を省略可能であり、
                    この場合、後方参照値有効性を調べる(成功/失敗)機能のみになる。

  [後方参照値有効性確認器]  (* 原作)
    (?(n)), (?(-n)), (?(+n)), (?(n+level)) ...
    (?(<n>)), (?('-n')), (?(<+n>)) ...
    (?(<name>)), (?('name')), (?(<name+level>)) ...

8. 後方参照

  \n          番号指定参照     (n >= 1)
  \k<n>       番号指定参照     (n >= 1)
  \k'n'       番号指定参照     (n >= 1)
  \k<-n>      相対番号指定参照 (n >= 1)
  \k'-n'      相対番号指定参照 (n >= 1)
  \k<+n>      相対番号指定参照 (n >= 1)
  \k'+n'      相対番号指定参照 (n >= 1)
  \k<name>    名前指定参照
  \k'name'    名前指定参照

  名前指定参照で、その名前が複数の式集合で多重定義されている場合には、
  番号の大きい式集合から優先的に参照される。
  (マッチしないときには番号の小さい式集合が参照される)

  ※ 番号指定参照は、名前付き捕獲式集合が定義され、
     かつ ONIG_OPTION_CAPTURE_GROUPが指定されていない場合には、
     禁止される。(10. 捕獲式集合 を参照)

  ネストレベル付き後方参照

    level: 0, 1, 2, ...

    \k<n+level>     (n >= 1)
    \k<n-level>     (n >= 1)
    \k'n+level'     (n >= 1)
    \k'n-level'     (n >= 1)

    \k<name+level>
    \k<name-level>
    \k'name+level'
    \k'name-level'

    後方参照の位置から相対的な部分式呼出しネストレベルを指定して、そのレベルでの
    捕獲値を参照する。

    例-1.

      /\A(?<a>|.|(?:(?<b>.)\g<a>\k<b+0>))\z/.match("reer")

    例-2.

      r = Regexp.compile(<<'__REGEXP__'.strip, Regexp::EXTENDED)
      (?<element> \g<stag> \g<content>* \g<etag> ){0}
      (?<stag> < \g<name> \s* > ){0}
      (?<name> [a-zA-Z_:]+ ){0}
      (?<content> [^<&]+ (\g<element> | [^<&]+)* ){0}
      (?<etag> </ \k<name+1> >){0}
      \g<element>
      __REGEXP__

      p r.match('<foo>f<bar>bbb</bar>f</foo>').captures

9. 部分式呼出し ("田中哲スペシャル")   (* 原作)

  \g<name>    名前指定呼出し
  \g'name'    名前指定呼出し
  \g<n>       番号指定呼出し    (n >= 1)
  \g'n'       番号指定呼出し    (n >= 1)
  \g<0>       番号指定呼出し(全体呼び出し)
  \g'0'       番号指定呼出し(全体呼び出し)
  \g<-n>      相対番号指定呼出し (n >= 1)
  \g'-n'      相対番号指定呼出し (n >= 1)
  \g<+n>      相対番号指定呼出し (n >= 1)
  \g'+n'      相対番号指定呼出し (n >= 1)

  ※ 最左位置での再帰呼出しは禁止される。
     例. (?<name>a|\g<name>b)   => error
         (?<name>a|b\g<name>c)  => OK

  ※ 番号指定呼出しは、名前付き捕獲式集合が定義され、
     かつ ONIG_OPTION_CAPTURE_GROUPが指定されていない場合には、
     禁止される。 (10. 捕獲式集合 を参照)

  ※ 呼び出された式集合のオプション状態が呼出し側のオプション状態と異なっている
     とき、呼び出された側のオプション状態が有効である。

     例. (?-i:\g<name>)(?i:(?<name>a)){0} は "A" に照合成功する。

10. 捕獲式集合

  捕獲式集合(...)は、以下の条件に応じて振舞が変化する。
  (名前付き捕獲式集合は変化しない)

  case 1. /.../     (名前付き捕獲式集合は不使用、オプションなし)

     (...) は、捕獲式集合として扱われる。

  case 2. /.../g    (名前付き捕獲式集合は不使用、オプション 'g'を指定)

     (...) は、非捕獲式集合として扱われる。

  case 3. /..(?<name>..)../   (名前付き捕獲式集合は使用、オプションなし)

     (...) は、非捕獲式集合として扱われる。
     番号指定参照/呼び出しは不許可。

  case 4. /..(?<name>..)../G  (名前付き捕獲式集合は使用、オプション 'G'を指定)

     (...) は、捕獲式集合として扱われる。
     番号指定参照/呼び出しは許可。

  但し
    g: ONIG_OPTION_DONT_CAPTURE_GROUP
    G: ONIG_OPTION_CAPTURE_GROUP
    ('g'と'G'オプションは、ruby-dev MLで議論された。)

  これらの振舞の意味は、
  名前付き捕獲と名前無し捕獲を同時に使用する必然性のある場面は少ないであろう
  という理由から考えられたものである。

-----------------------------
補記 1. 文法依存オプション

   + ONIG_SYNTAX_ONIGURUMA
     (?m): 終止符記号(.)は改行と照合成功

   + ONIG_SYNTAX_PERL と ONIG_SYNTAX_JAVA
     (?s): 終止符記号(.)は改行と照合成功
     (?m): ^ は改行の直後に照合する、$ は改行の直前に照合する

補記 2. 独自拡張機能

   + 16進数数字、非16進数字  \h, \H
   + 真任意文字              \O
   + 文章区分境界            \y, \Y
   + 後方参照値有効性確認器  (?(...))
   + 名前付き捕獲式集合      (?<name>...), (?'name'...)
   + 名前指定後方参照        \k<name>
   + 部分式呼出し            \g<name>, \g<group-num>
   + 不在式                 (?~|...|...)
   + 不在停止               (?|...)

補記 3. Perl 5.8.0と比較して存在しない機能

   + \N{name}
   + \l,\u,\L,\U,\C
   + (??{code})

   * \Q...\E
     但しONIG_SYNTAX_PERLとONIG_SYNTAX_JAVAでは有効

補記 4. Ruby 1.8 の日本語化 GNU regex(version 0.12)との違い

   + 文字Property機能追加 (\p{property}, \P{Property})
   + 16進数字タイプ追加 (\h, \H)
   + 戻り読み機能を追加
   + 強欲な繰り返し指定子を追加 (?+, *+, ++)
   + 文字集合の中の演算子を追加 ([...], &&)
     ('[' は、文字集合の中で通常の文字として使用するときには
      退避修飾しなければならない)
   + 名前付き捕獲式集合と、部分式呼出し機能追加
   + 多バイト文字コードが指定されているとき、
     文字集合の中で八進数または十六進数表現の連続は、多バイト符号で表現された
     一個の文字と解釈される
     (例. [\xa1\xa2], [\xa1\xa7-\xa4\xa1])
   + 文字集合の中で、一バイト文字と多バイト文字の範囲指定は許される。
     ex. /[a-あ]/
   + 孤立オプションの有効範囲は、その孤立オプションを含んでいる式集合の
     終わりまでである
     例. (?:(?i)a|b) は (?:(?i:a|b)) と解釈される、(?:(?i:a)|b)ではない
   + 孤立オプションはその前の式に対して透過的ではない
     例. /a(?i)*/ は文法エラーとなる
   + 不完全な繰り返し範囲指定子は通常の文字列として許可される
     例. /{/, /({)/, /a{2,3/
   + 否定的POSIXブラケット [:^xxxx:] を追加
   + POSIXブラケット [:ascii:] を追加
   + 先読みの繰り返しは不許可
     例. /(?=a)*/, /(?!b){5}/
   + 数値で指定された文字に対しても、大文字小文字照合オプションは有効
     例. /\x61/i =~ "A"
   + 繰り返し回数指定で、最低回数の省略(0回)ができる
     /a{,n}/ == /a{0,n}/
     最低回数と最大回数の同時省略は許されない。(/a{,}/)
   + /a{n}?/は無欲な演算子ではない。
     /a{n}?/ == /(?:a{n})?/
   + 無効な後方参照をチェックしてエラーにする。
     /\1/, /(a)\2/
   + 無限繰り返しの中で、長さ零での照合成功は繰り返しを中断させるが、
     このとき、中断すべきかどうかの判定として、捕獲式集合の捕獲状態の
     変化まで考慮している
     /(?:()|())*\1\2/ =~ ""
     /(?:\1a|())*/ =~ "a"

終り


  LICENSE ISSUES
  ==============

  The OpenSSL toolkit stays under a double license, i.e. both the conditions of
  the OpenSSL License and the original SSLeay license apply to the toolkit.
  See below for the actual license texts.

  OpenSSL License
  ---------------

/* ====================================================================
 * Copyright (c) 1998-2019 The OpenSSL Project.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in
 *    the documentation and/or other materials provided with the
 *    distribution.
 *
 * 3. All advertising materials mentioning features or use of this
 *    software must display the following acknowledgment:
 *    "This product includes software developed by the OpenSSL Project
 *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
 *
 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
 *    endorse or promote products derived from this software without
 *    prior written permission. For written permission, please contact
 *    openssl-core@openssl.org.
 *
 * 5. Products derived from this software may not be called "OpenSSL"
 *    nor may "OpenSSL" appear in their names without prior written
 *    permission of the OpenSSL Project.
 *
 * 6. Redistributions of any form whatsoever must retain the following
 *    acknowledgment:
 *    "This product includes software developed by the OpenSSL Project
 *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
 *
 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
 * OF THE POSSIBILITY OF SUCH DAMAGE.
 * ====================================================================
 *
 * This product includes cryptographic software written by Eric Young
 * (eay@cryptsoft.com).  This product includes software written by Tim
 * Hudson (tjh@cryptsoft.com).
 *
 */

 Original SSLeay License
 -----------------------

/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
 * All rights reserved.
 *
 * This package is an SSL implementation written
 * by Eric Young (eay@cryptsoft.com).
 * The implementation was written so as to conform with Netscapes SSL.
 *
 * This library is free for commercial and non-commercial use as long as
 * the following conditions are aheared to.  The following conditions
 * apply to all code found in this distribution, be it the RC4, RSA,
 * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
 * included with this distribution is covered by the same copyright terms
 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
 *
 * Copyright remains Eric Young's, and as such any Copyright notices in
 * the code are not to be removed.
 * If this package is used in a product, Eric Young should be given attribution
 * as the author of the parts of the library used.
 * This can be in the form of a textual message at program startup or
 * in documentation (online or textual) provided with the package.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. All advertising materials mentioning features or use of this software
 *    must display the following acknowledgement:
 *    "This product includes cryptographic software written by
 *     Eric Young (eay@cryptsoft.com)"
 *    The word 'cryptographic' can be left out if the rouines from the library
 *    being used are not cryptographic related :-).
 * 4. If you include any Windows specific code (or a derivative thereof) from
 *    the apps directory (application code) you must include an acknowledgement:
 *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
 *
 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * The licence and distribution terms for any publically available version or
 * derivative of this code cannot be changed.  i.e. this code cannot simply be
 * copied and put under another distribution licence
 * [including the GNU Public Licence.]
 */


This file is part of the OpenSSH software.

The licences which components of this software fall under are as
follows.  First, we will summarize and say that all components
are under a BSD licence, or a licence more free than that.

OpenSSH contains no GPL code.

1)
     * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
     *                    All rights reserved
     *
     * As far as I am concerned, the code I have written for this software
     * can be used freely for any purpose.  Any derived versions of this
     * software must be clearly marked as such, and if the derived work is
     * incompatible with the protocol description in the RFC file, it must be
     * called by a name other than "ssh" or "Secure Shell".

    [Tatu continues]
     *  However, I am not implying to give any licenses to any patents or
     * copyrights held by third parties, and the software includes parts that
     * are not under my direct control.  As far as I know, all included
     * source code is used in accordance with the relevant license agreements
     * and can be used freely for any purpose (the GNU license being the most
     * restrictive); see below for details.

    [However, none of that term is relevant at this point in time.  All of
    these restrictively licenced software components which he talks about
    have been removed from OpenSSH, i.e.,

     - RSA is no longer included, found in the OpenSSL library
     - IDEA is no longer included, its use is deprecated
     - DES is now external, in the OpenSSL library
     - GMP is no longer used, and instead we call BN code from OpenSSL
     - Zlib is now external, in a library
     - The make-ssh-known-hosts script is no longer included
     - TSS has been removed
     - MD5 is now external, in the OpenSSL library
     - RC4 support has been replaced with ARC4 support from OpenSSL
     - Blowfish is now external, in the OpenSSL library

    [The licence continues]

    Note that any information and cryptographic algorithms used in this
    software are publicly available on the Internet and at any major
    bookstore, scientific library, and patent office worldwide.  More
    information can be found e.g. at "http://www.cs.hut.fi/crypto".

    The legal status of this program is some combination of all these
    permissions and restrictions.  Use only at your own responsibility.
    You will be responsible for any legal consequences yourself; I am not
    making any claims whether possessing or using this is legal or not in
    your country, and I am not taking any responsibility on your behalf.

                NO WARRANTY

    BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
    FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
    OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
    PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
    OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
    MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
    TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
    PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
    REPAIR OR CORRECTION.

    IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
    WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
    REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
    INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
    OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
    TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
    YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
    PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
    POSSIBILITY OF SUCH DAMAGES.

2)
    The 32-bit CRC compensation attack detector in deattack.c was
    contributed by CORE SDI S.A. under a BSD-style license.

     * Cryptographic attack detector for ssh - source code
     *
     * Copyright (c) 1998 CORE SDI S.A., Buenos Aires, Argentina.
     *
     * All rights reserved. Redistribution and use in source and binary
     * forms, with or without modification, are permitted provided that
     * this copyright notice is retained.
     *
     * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
     * WARRANTIES ARE DISCLAIMED. IN NO EVENT SHALL CORE SDI S.A. BE
     * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY OR
     * CONSEQUENTIAL DAMAGES RESULTING FROM THE USE OR MISUSE OF THIS
     * SOFTWARE.
     *
     * Ariel Futoransky <futo@core-sdi.com>
     * <http://www.core-sdi.com>

3)
    ssh-keyscan was contributed by David Mazieres under a BSD-style
    license.

     * Copyright 1995, 1996 by David Mazieres <dm@lcs.mit.edu>.
     *
     * Modification and redistribution in source and binary forms is
     * permitted provided that due credit is given to the author and the
     * OpenBSD project by leaving this copyright notice intact.

4)
    The Rijndael implementation by Vincent Rijmen, Antoon Bosselaers
    and Paulo Barreto is in the public domain and distributed
    with the following license:

     * @version 3.0 (December 2000)
     *
     * Optimised ANSI C code for the Rijndael cipher (now AES)
     *
     * @author Vincent Rijmen <vincent.rijmen@esat.kuleuven.ac.be>
     * @author Antoon Bosselaers <antoon.bosselaers@esat.kuleuven.ac.be>
     * @author Paulo Barreto <paulo.barreto@terra.com.br>
     *
     * This code is hereby placed in the public domain.
     *
     * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS
     * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE
     * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
     * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
     * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
     * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
     * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

5)
    One component of the ssh source code is under a 3-clause BSD license,
    held by the University of California, since we pulled these parts from
    original Berkeley code.

     * Copyright (c) 1983, 1990, 1992, 1993, 1995
     *      The Regents of the University of California.  All rights reserved.
     *
     * Redistribution and use in source and binary forms, with or without
     * modification, are permitted provided that the following conditions
     * are met:
     * 1. Redistributions of source code must retain the above copyright
     *    notice, this list of conditions and the following disclaimer.
     * 2. Redistributions in binary form must reproduce the above copyright
     *    notice, this list of conditions and the following disclaimer in the
     *    documentation and/or other materials provided with the distribution.
     * 3. Neither the name of the University nor the names of its contributors
     *    may be used to endorse or promote products derived from this software
     *    without specific prior written permission.
     *
     * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
     * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
     * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
     * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
     * SUCH DAMAGE.

6)
    Remaining components of the software are provided under a standard
    2-term BSD licence with the following names as copyright holders:

    Markus Friedl
    Theo de Raadt
    Niels Provos
    Dug Song
    Aaron Campbell
    Damien Miller
    Kevin Steves
    Daniel Kouril
    Wesley Griffin
    Per Allansson
    Nils Nordman
    Simon Wilkinson

    Portable OpenSSH additionally includes code from the following copyright
    holders, also under the 2-term BSD license:

    Ben Lindstrom
    Tim Rice
    Andre Lucas
    Chris Adams
    Corinna Vinschen
    Cray Inc.
    Denis Parker
    Gert Doering
    Jakob Schlyter
    Jason Downs
    Juha Yrj�
    Michael Stone
    Networks Associates Technology, Inc.
    Solar Designer
    Todd C. Miller
    Wayne Schroeder
    William Jones
    Darren Tucker
    Sun Microsystems
    The SCO Group

     * Redistribution and use in source and binary forms, with or without
     * modification, are permitted provided that the following conditions
     * are met:
     * 1. Redistributions of source code must retain the above copyright
     *    notice, this list of conditions and the following disclaimer.
     * 2. Redistributions in binary form must reproduce the above copyright
     *    notice, this list of conditions and the following disclaimer in the
     *    documentation and/or other materials provided with the distribution.
     *
     * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
     * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
     * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
     * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
     * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
     * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

8) Portable OpenSSH contains the following additional licenses:

    a) md5crypt.c, md5crypt.h

     * "THE BEER-WARE LICENSE" (Revision 42):
     * <phk@login.dknet.dk> wrote this file.  As long as you retain this
     * notice you can do whatever you want with this stuff. If we meet
     * some day, and you think this stuff is worth it, you can buy me a
     * beer in return.   Poul-Henning Kamp

    b) snprintf replacement

    * Copyright Patrick Powell 1995
    * This code is based on code written by Patrick Powell
    * (papowell@astart.com) It may be used for any purpose as long as this
    * notice remains intact on all source code distributions

    c) Compatibility code (openbsd-compat)

       Apart from the previously mentioned licenses, various pieces of code
       in the openbsd-compat/ subdirectory are licensed as follows:

       Some code is licensed under a 3-term BSD license, to the following
       copyright holders:

    Todd C. Miller
    Theo de Raadt
    Damien Miller
    Eric P. Allman
    The Regents of the University of California
    Constantin S. Svintsoff

    * Redistribution and use in source and binary forms, with or without
    * modification, are permitted provided that the following conditions
    * are met:
    * 1. Redistributions of source code must retain the above copyright
    *    notice, this list of conditions and the following disclaimer.
    * 2. Redistributions in binary form must reproduce the above copyright
    *    notice, this list of conditions and the following disclaimer in the
    *    documentation and/or other materials provided with the distribution.
    * 3. Neither the name of the University nor the names of its contributors
    *    may be used to endorse or promote products derived from this software
    *    without specific prior written permission.
    *
    * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
    * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
    * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
    * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
    * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
    * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
    * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.

       Some code is licensed under an ISC-style license, to the following
       copyright holders:

    Internet Software Consortium.
    Todd C. Miller
    Reyk Floeter
    Chad Mynhier

    * Permission to use, copy, modify, and distribute this software for any
    * purpose with or without fee is hereby granted, provided that the above
    * copyright notice and this permission notice appear in all copies.
    *
    * THE SOFTWARE IS PROVIDED "AS IS" AND TODD C. MILLER DISCLAIMS ALL
    * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
    * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL TODD C. MILLER BE LIABLE
    * FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
    * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
    * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
    * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

       Some code is licensed under a MIT-style license to the following
       copyright holders:

    Free Software Foundation, Inc.

    * 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, distribute with modifications, 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 ABOVE 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.                               *
    *                                                                          *
    * Except as contained in this notice, the name(s) of the above copyright   *
    * holders shall not be used in advertising or otherwise to promote the     *
    * sale, use or other dealings in this Software without prior written       *
    * authorization.                                                           *
    ****************************************************************************/

------
$OpenBSD: LICENCE,v 1.19 2004/08/30 09:18:08 markus Exp $


Copyright notice:

 (C) 1995-2017 Jean-loup Gailly and Mark Adler

  This software is provided 'as-is', without any express or implied
  warranty.  In no event will the authors be held liable for any damages
  arising from the use of this software.

  Permission is granted to anyone to use this software for any purpose,
  including commercial applications, and to alter it and redistribute it
  freely, subject to the following restrictions:

  1. The origin of this software must not be misrepresented; you must not
     claim that you wrote the original software. If you use this software
     in a product, an acknowledgment in the product documentation would be
     appreciated but is not required.
  2. Altered source versions must be plainly marked as such, and must not be
     misrepresented as being the original software.
  3. This notice may not be removed or altered from any source distribution.

  Jean-loup Gailly        Mark Adler
  jloup@gzip.org          madler@alumni.caltech.edu

If you use the zlib library in a product, we would appreciate *not* receiving
lengthy legal documents to sign.  The sources are provided for free but without
warranty of any kind.  The library has been entirely written by Jean-loup
Gailly and Mark Adler; it does not include third-party code.

If you redistribute modified sources, we would appreciate that you include in
the file ChangeLog history information documenting your changes.  Please read
the FAQ for more information on the distribution of modified source versions.


PuTTY is copyright 1997-2017 Simon Tatham.

Portions copyright Robert de Bath, Joris van Rantwijk, Delian
Delchev, Andreas Schultz, Jeroen Massar, Wez Furlong, Nicolas Barry,
Justin Bradford, Ben Harris, Malcolm Smith, Ahmad Khalifa, Markus
Kuhn, Colin Watson, Christopher Staite, 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.


Oniguruma LICENSE
-----------------

Copyright (c) 2002-2021  K.Kosako  <kkosako0@gmail.com>
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
   notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
   notice, this list of conditions and the following disclaimer in the
   documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.


Copyright (c) 2006,2007 Mutsuo Saito, Makoto Matsumoto and Hiroshima
University.
Copyright (c) 2012 Mutsuo Saito, Makoto Matsumoto, Hiroshima University
and The University of Tokyo.
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

    * Redistributions of source code must retain the above copyright
      notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above
      copyright notice, this list of conditions and the following
      disclaimer in the documentation and/or other materials provided
      with the distribution.
    * Neither the names of Hiroshima University, The University of
      Tokyo nor the names of its contributors may be used to endorse
      or promote products derived from this software without specific
      prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


                    GNU GENERAL PUBLIC LICENSE
                       Version 2, June 1991

 Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users.  This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it.  (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.)  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.

  To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have.  You must make sure that they, too, receive or can get the
source code.  And you must show them these terms so they know their
rights.

  We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.

  Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software.  If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.

  Finally, any free program is threatened constantly by software
patents.  We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary.  To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.

  The precise terms and conditions for copying, distribution and
modification follow.

                    GNU GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License.  The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language.  (Hereinafter, translation is included without limitation in
the term "modification".)  Each licensee is addressed as "you".

Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.

  1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.

You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.

  2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) You must cause the modified files to carry prominent notices
    stating that you changed the files and the date of any change.

    b) You must cause any work that you distribute or publish, that in
    whole or in part contains or is derived from the Program or any
    part thereof, to be licensed as a whole at no charge to all third
    parties under the terms of this License.

    c) If the modified program normally reads commands interactively
    when run, you must cause it, when started running for such
    interactive use in the most ordinary way, to print or display an
    announcement including an appropriate copyright notice and a
    notice that there is no warranty (or else, saying that you provide
    a warranty) and that users may redistribute the program under
    these conditions, and telling the user how to view a copy of this
    License.  (Exception: if the Program itself is interactive but
    does not normally print such an announcement, your work based on
    the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.

In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:

    a) Accompany it with the complete corresponding machine-readable
    source code, which must be distributed under the terms of Sections
    1 and 2 above on a medium customarily used for software interchange; or,

    b) Accompany it with a written offer, valid for at least three
    years, to give any third party, for a charge no more than your
    cost of physically performing source distribution, a complete
    machine-readable copy of the corresponding source code, to be
    distributed under the terms of Sections 1 and 2 above on a medium
    customarily used for software interchange; or,

    c) Accompany it with the information you received as to the offer
    to distribute corresponding source code.  (This alternative is
    allowed only for noncommercial distribution and only if you
    received the program in object code or executable form with such
    an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for
making modifications to it.  For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable.  However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.

If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.

  4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License.  Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.

  5. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Program or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.

  6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.

  7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all.  For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

  8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded.  In such case, this License incorporates
the limitation as if written in the body of this License.

  9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

Each version is given a distinguishing version number.  If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation.  If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.

  10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission.  For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this.  Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.

                            NO WARRANTY

  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.

  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

                     END OF TERMS AND CONDITIONS

            How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License along
    with this program; if not, write to the Free Software Foundation, Inc.,
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:

    Gnomovision version 69, Copyright (C) year name of author
    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License.  Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.

You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary.  Here is a sample; alter the names:

  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
  `Gnomovision' (which makes passes at compilers) written by James Hacker.

  <signature of Ty Coon>, 1 April 1989
  Ty Coon, President of Vice

This General Public License does not permit incorporating your program into
proprietary programs.  If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library.  If this is what you want to do, use the GNU Lesser General
Public License instead of this License.


■ 開発環境
- OS
  Windows XP Professional / Windows 8 Pro / Windows 8.1 Pro / Windows 10 Pro
- Tera Term Project でリリースに使用しているコンパイラ
-- Visual Studio 2005 SP1 (Standard Edition 以上)
   Service Pack 1 (VS80sp1-KB926602-X86-JPN.exe)
   Microsoft Visual Studio 2005 Service Pack 1 MFC セキュリティ更新プログラム (VS80sp1-KB2538218-v2-X86-INTL.exe)
   Windows Vista 以上でビルドする場合は、Visual Studio 2005 Service Pack 1 Update for Windows Vista (VS80sp1-KB932236-X86-JPN.exe)
   Windows Server 2003 R2 Platform SDK(Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1)
   注: Visual Studio 2005 Standard Editionでは、OpenSSL のビルドが失敗します。Windows Server 2003 R2 Platform SDK をインストールし、"Crypt32.Lib"をリンクできるようにしておく必要があります。
       Platform SDK の INCLUDE, LIB ディレクトリが優先されるよう、C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat の INCLUDE および LIB の先頭に追記します。
       例: INCLUDE "C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include"
           LIB     "C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib"
- サポートされているコンパイラ
-- Visual Studio 2005 (Express EditionはTera Term 4.103から対応)
   - SDK 7.0
     - Windows Server 2003 R2 Platform SDK
       (= Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1)
       (5.2.3790.2075.51.PlatformSDK_Svr2003R2_rtm.img)
     - Microsoftのサイトからは入手不可能(2019/04/07時点)
   - SDK 7.1
     - Microsoft Windows SDK for Windows 7 and .NET Framework 4
       (GRMSDK_EN_DVD.iso)
     - Windows95でも動作するバイナリをビルド可能
     - Visual Studio 2005で利用するにはKB949009(VS80sp1-KB949009-X86-INTL.exe)かKB980422(VS80sp1-KB980422-x86-INTL.exe)が必要
       - KB949009,KB980422はMicrosoftのサイトから入手不可能
-- Visual Studio 2008 SP1 (Standard Edition 以上)
   注: コンパイルされた実行ファイルは Windows NT 4.0, 95, 98, Me で動きません。
-- Visual Studio 2010 SP1 (Professional Edition 以上)
   注: コンパイルされた実行ファイルは Windows 2000, NT 4.0, 95, 98, Me で動きません。
-- Visual Studio 2012 Update 4 (Professional Edition 以上)
   注: コンパイルされた実行ファイルは Windows Vista, XP, 2000, NT 4.0, 95, 98, Me で動きません。
       Windows Vista, XP をサポートするには v110_xp を指定してください。
-- Visual Studio Community 2013 Update 5
   MFC MBCS DLL アドオン (vc_mbcsmfc.exe)
   注: コンパイルされた実行ファイルは Windows Vista, XP, 2000, NT 4.0, 95, 98, Me で動きません。
       Windows Vista, XP をサポートするには v120_xp を指定してください。
-- Visual Studio Community 2015 Update 3
   注: コンパイルされた実行ファイルは Windows Vista, XP, 2000, NT 4.0, 95, 98, Me で動きません。
       Windows Vista, XP をサポートするには v140_xp を指定してください。
-- Visual Studio Community 2017
   注: コンパイルされた実行ファイルは Windows Vista, XP, 2000, NT 4.0, 95, 98, Me で動きません。
       Windows Vista, XP をサポートするには v141_xp を指定してください。
-- Visual Studio Community 2019
   注: コンパイルされた実行ファイルは Windows Vista, XP, 2000, NT 4.0, 95, 98, Me で動きません。
- インストーラ
  Inno Setup 5.6.1 ANSI (http://www.jrsoftware.org/isinfo.php)
  Inno Setup Preprocessor
  ISTool 5.3.0.1 (https://sourceforge.net/projects/istool/)
- その他
  Cygwin 最新版(v4.105からCygTerm+はVista以降対応となったため)
  ActivePerl 5.10 以上
    OpenSSL のコンパイル、ドキュメントファイルの文字コード・改行コード変換に必要です。
  Subversion for Windows (http://sourceforge.net/projects/win32svn/)
    ソースのチェックアウトに使った svn と互換性のあるバージョン。
    libs\svn へ解凍します。("svnversion.exe" が libs\svn\bin に配置されるようにしてください)
  Patch
    PATH の通ったところに patch がない場合は、libs\openssl_patch に "patch.exe" が配置されるようにしてください。
    https://gitforwindows.org/ (https://github.com/git-for-windows/git/releases/latest) からであれば、Git-x.xx.x-32-bit.tar.bz2 をダウンロードして展開し、usr\bin 内の patch.exe, msys-gcc_s-1.dll, msys-2.0.dll をコピーします。

■ ライブラリ
- Oniguruma 6.9.7.1 (https://github.com/kkos/oniguruma)
- OpenSSL 1.1.1k (http://www.openssl.org/)
- zlib 1.2.11 (http://www.zlib.net/)
- PuTTY 0.70 (http://www.chiark.greenend.org.uk/~sgtatham/putty/)
- SFMT 1.5.1 (http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/index-jp.html)
- The reference C implementation of Argon2 20190702 (https://github.com/P-H-C/phc-winner-argon2)

■ SVN コミッターへの注意
- SVN リポジトリは一般向けとは違い、以下の通りです。
  svn+ssh://svn.osdn.net/svnroot/ttssh2/branches/4-stable

- ファイルを別のディレクトリで編集しないでください。
  コミットしたときに別の人の修正を削除してしまうことがあります。

- アップデート・コミット時の注意
  svnの処理が失敗することがあるので、ファイルをエディタ等で開いたままで行わないでください。

- 言語ファイル編集時の注意
  言語ファイル(installer\release\lang\*.lng)は多言語対応エディタ(vim, EmEditor, Notepad++等)で編集してください。

■ TERATERM.INI への項目追加
- 項目名
すでに EnableFoo... や DisableBar... が混在してしまっているが、混乱しやすい。
今後は Baz... という形式にするのが望ましい。

■ メニューID追加時の命名規則

1桁目は 5

2桁目は
  Tera Term VT ウィンドウなら  0
  Tera Term TEK ウィンドウなら 1
  TTSSH なら                   2
  TTProxy なら                 3
  TTXKanjiMenu なら            4

3桁目は
  [File] メニューなら    1
  [Edit] メニューなら    2
  [Setup] メニューなら   3
  [Control] メニューなら 4
  [Window] メニューなら  8
  [Help] メニューなら    9

例：File配下にTTSSHのメニューを追加する

#define ID_SSHSCPMENU       52110

■ マクロコマンド追加時の作業リスト
  Tera Termマクロを新設するときの作業手順について、以下に示します。

１．ソースコードの修正
-- コマンドの内部 ID を採番する。（「内部 ID」は"helpid.h"にも使用される）
   ... teraterm/ttmacro/ttmparse.h
-- コマンド名を走査して内部 ID に変換する。
   ... CheckReservedWord@teraterm/ttmacro/ttmparse.c
-- コマンドの内部 ID から実際に処理をする関数を呼ぶ。
   ... ExecCmnd@teraterm/ttmacro/ttl.c
-- 処理する関数を作る。

２． ヘルプ(言語ごと)
-- コマンドのヘルプを作る。
   ... doc/LANG/html/macro/command/hogefunc.html
-- コマンド一覧ページに追加する。
   ... doc/LANG/html/macro/command/index.html
-- ヘルプトピックに追加する。
   ... doc/LANG/teraterm.hhc
-- ヘルプページのコンテキスト ID を採番する。
   値は コマンドの内部 ID + 92000。
   ... teraterm/common/helpid.h
-- コンテキスト ID と呼び出すファイルのエイリアスを作成する。
   テキストエディタで直接開き、[ALIAS]にHTMLを追加する。
   ... doc/LANG/teraterm.hhp

■ ライブラリのビルド方法
  1. PuTTY (used by TTSSH)
     (1) PuTTY のソースを libs/putty の中に展開する。
     * ttssh ソリューション配下の putty プロジェクトにより必要な機能のみが静的ライブラリ化され、ttxssh.dll にリンクされるため、展開するだけでよい。

  2. Oniguruma (used by Tera Term Macro)
     (1) oniguruma のソースを libs/oniguruma の中に展開する。
     (2) スタートメニューから「Visual Studio 2005 コマンド プロンプト」を起動する。
     (3) コマンドプロンプト上から libs ディレクトリに移動し、buildoniguruma6.bat を実行する。

  3. OpenSSL (used by TTSSH)
     (1) openssl のソースを libs/openssl の中に展開する。
     (2) OpenSSL 1.0.0e 以降で、libs/openssl/Makefile.bak が最初から存在する場合は、一度だけ手動で削除してください。
     (3) スタートメニューから「Visual Studio 2005 コマンド プロンプト」を起動する。
     (4) コマンドプロンプト上から libs ディレクトリに移動し、buildopenssl11.bat を実行する。

  4. Zlib (used by TTSSH)
     (1) zlib のソースを libs/zlib の中に展開する。
     (2) スタートメニューから「Visual Studio 2005 コマンド プロンプト」を起動する。
     (3) コマンドプロンプト上から libs ディレクトリに移動し、buildzlib.bat を実行する。

  5. SFMT (used by Tera Term Macro)
     (1) SFMT のソースを libs/SFMT の中に展開する。
     (2) スタートメニューから「Visual Studio 2005 コマンド プロンプト」を起動する。
     (3) コマンドプロンプト上から libs ディレクトリに移動し、buildSFMT.bat を実行する。
     (4) 必要に応じて libs/SFMT/SFMT_version_for_teraterm.h のバージョン番号を修正する。

  6. The reference C implementation of Argon2 (used by TTSSH)
     (1) argon2 のソースを libs/argon2 の中に展開する。
     * argon2 リファレンス実装には静的ライブラリを生成するプロジェクトファイルが含まれていない。ttssh ソリューション配下の argon2 プロジェクトにより静的ライブラリが生成され、ttxssh.dll にリンクされるため、展開するだけでよい。

■ Tera Termのビルド方法
  Tera Termのビルド方法について以下に示します。
  ビルドにはVisual Studio 2005 Standard Edition以上が必要です。（Visual Studio 2005 Express Editionは不可）

  1. ソースコードをOSDN(https://ja.osdn.net/projects/ttssh2/)からチェックアウトする。
  2. teraterm\visualc\ttermpro.sln をVisual Studioで開く。
     .slnファイルの改行コードが"LF"になっていると、Visual Studioが起動しないので注意願います。
  3. ソリューションをビルドする。
  4. ビルドに成功するとteraterm ディレクトリに実行プログラムが生成される。

■ TeraTerm Menuのビルド方法
  1. ソースコードをOSDN(https://ja.osdn.net/projects/ttssh2/)からチェックアウトする。
  2. ttpmenu\ttpmenu.sln をVisual Studioで開く。
  3. ソリューションをビルドする。
  4. ビルドに成功すると ttpmenu ディレクトリに ttpmenu.exe が生成される。

■ TTXKanjiMenuのビルド方法
  1. ソースコードをOSDN(https://ja.osdn.net/projects/ttssh2/)からチェックアウトする。
  2. TTXKanjiMenu\ttxkanjimenu.sln をVisual Studioで開く。
  3. ソリューションをビルドする。
  4. ビルドに成功すると TTXKanjiMenu ディレクトリに ttxkanjimenu.dll が生成される。

■ TTProxyのビルド方法
  TTProxyのビルド方法について以下に示します。
  ビルドにはVisual Studio 2005(VC++8.0)が必要です。

  1. ソースコードをOSDN(https://ja.osdn.net/projects/ttssh2/)からチェックアウトする。
  2. TTProxy\TTProxy.sln をVisual Studioで開く。
  3. ソリューションをビルドする。
  4. ビルドに成功すると TTProxy ディレクトリにDLLが生成される。

■ TTSSHのビルド方法
  TTSSHのビルド方法について以下に示します。
  ビルドにはVisual Studio 2005(VC++8.0)、ActivePerlが必要です。

  * TTSSH単体のビルドは VS2005 Express Edition でも可能です。ttpcmn.libをリンクするため、Tera Termのビルドを事前に行っておく必要があります。VS2005 Express EditionではTera Termのビルドはできませんが、ttpcmn.libは作成することができます。

  * VS2008 Express Editionでビルドすると、.rcファイルで下記のエラーが発生します。
      .\ttxssh.rc(10) : fatal error RC1015: cannot open include file 'afxres.h'.

    本現象を回避するには、.rcファイルをテキストエディタで開き、afxres.hのincludeを削除し、新規に2行を追加します。

      - #include "afxres.h"
      + #include <windows.h>
      + #define IDC_STATIC -1

  1. ソースコードをOSDN(https://ja.osdn.net/projects/ttssh2/)からチェックアウトする。
  2. ttssh2\ttssh.sln をVisual Studioで開く。
  3. ソリューションをビルドする。
  4. ビルドに成功するとttssh2\ttxssh ディレクトリにDLLが生成される。

■ CygTermのビルド方法
  CygTermのビルド方法について以下に示します。

   1. Cygwin(https://www.cygwin.com/)をインストールする。
   2. Cygwinのシェルを起動し、cygterm ディレクトリへ移動する。
      # cd cygterm
   3. CygTermをコンパイルする。
      # make

■ TTXSamplesのビルド方法
  リポジトリのTTXSamplesに Tera Term Extension (TTX)のサンプルがあります。
  TTXを作る際の参考にしてください。
  TTXSamplesのビルドにはVisual Studio 2005(VC++8.0)が必要です。
  Tera Term本体とは違い、Express Editionでもビルド可能です。

  1. ソースコードをOSDN(https://ja.osdn.net/projects/ttssh2/)からチェックアウトする。
  2. TTXSamples\TTXSamples.sln をVisual Studioで開く。
  3. ソリューションをビルドする。
  4. ビルドに成功すると TTXSamples ディレクトリにDLLが生成される。
  各TTXの詳細については、プロジェクト内のReadMe-ja.txtを参照してください。

■ ヘルプファイルのビルド方法
  ヘルプファイルのビルド方法について以下に示します。

  1. HTML Help Workshopを以下のサイトから入手しインストールする。
     http://www.microsoft.com/en-us/download/details.aspx?id=21138

  2. コマンドプロンプトからバッチファイルを起動し、必要なファイルをコピーする。
     > cd teraterm\insatller
     > convtext.bat

  3. FileのOpenから doc\en\teraterm.hhp および doc\jp\teratermj.hhp を開く。

  4. FileのCompileでヘルプファイルをコンパイルする。

■ リリースの方法
  リリースの方法について以下に示します。

  0. RC 作成時にバージョンを一つインクリメントする。
     一般にテストを呼びかけ、旧バージョンとの同時実行が考えられるため、このタイミングとする(cf. TT_FILEMAPNAME 定義)。
     - teraterm\common\tt-version.h
     - ttssh2\ttxssh\ttxssh-version.h
     - ttpmenu\ttpmenu.rc // 変更時のみ
     - TTProxy\TTProxy.rc // 変更時のみ
     - TTXKanjiMenu\ttxkanjimenu.rc // 変更時のみ
     - installer\teraterm.iss
       AppVer を上げ、"RC" を追加
       snapshot を コメントアウト
       バッチファイルの呼び出しを修正
     この年における最初のリリースの場合は、著作権表示の「最後の発行の年」をインクリメントする。
     - teraterm\keycode\keycode-version.rc // VERSIONINFO
     - teraterm\teraterm\tt-version.rc // VERSIONINFO
     - teraterm\ttpcmn\ttpcmn-version.rc // VERSIONINFO
     - teraterm\ttpdlg\ttpdlg.rc // dialog
     - teraterm\ttpfile\ttpfile-version.rc // VERSIONINFO
     - teraterm\ttpmacro\ttm-version.rc // VERSIONINFO
     - teraterm\ttpset\ttpset-version.rc // VERSIONINFO
     - teraterm\ttptek\ttptek-version.rc // VERSIONINFO
     - ttssh2\ttxssh\ttxssh.rc // dialog
     - ttssh2\ttxssh\ttxssh-version.rc // VERSIONINFO
     - ttpmenu\ttpmenu.rc // dialog, VERSIONINFO
     - TTProxy\TTProxy.rc // dialog, VERSIONINFO(en), VERSIONINFO(ja)
     - TTXKanjiMenu\ttxkanjimenu.rc // VERSIONINFO
     - installer\teraterm.iss
     - installer\release\license.txt // Tera Term, TTSSH, Cygterm+, TTProxy, TeraTerm Menu, TTX KanjiMenu
     - doc\en\html\index.html
     - doc\en\html\about\copyright.html // Tera Term, TTSSH, Cygterm+, TTProxy, TeraTerm Menu, TTX KanjiMenu
     - doc\en\html\macro\index.html
     - doc\ja\html\index.html
     - doc\ja\html\about\copyright.html // Tera Term, TTSSH, Cygterm+, TTProxy, TeraTerm Menu, TTX KanjiMenu
     - doc\ja\html\macro\index.html

  1. 依存ライブラリ、ツール、インポート元の最新版をチェックする。
     Visual Studio
       http://www.microsoft.com/japan/msdn/vstudio/downloads/default.aspx
     Inno Setup
       http://www.jrsoftware.org/isdl.php
     Oniguruma
       https://github.com/kkos/oniguruma
     OpenSSL
       http://www.openssl.org/
     zlib
       http://www.zlib.net/
     PuTTY
       http://www.chiark.greenend.org.uk/~sgtatham/putty/
     SFMT
       http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/index-jp.html
     CygTerm
       https://googledrive.com/host/0B1s-dM6d6yC4fmhEZ3c0VTNFWEFtV3daUlRGQmFHVnBmVHRybUNnUVliNWktNDRlZ2NnZTQ/index.html

  2. ドキュメントを確認する。
     - ダイアログ上の設定項目・UIのない特別オプション・コマンドラインパラメータ・新規マクロコマンドなど、対応するドキュメントに漏れがないか確認する。
     - 変更履歴の書き忘れを確認する。
       おおむね変更した順に追記される変更履歴の順番を変更する。だいたいの指針としては、ターミナルエミュレーション関係・アプリケーションとしての変更・マクロの順。
     - ドキュメント差分が翻訳されていることを確認する。

  3. バージョンを上げ、日付を変更する。
     - teraterm.iss
       AppVer から RC を削除
     - html/about/hisotry.html

     CygTerm+ は例外で、リリースとは関係なくバージョンが上がる。
     パッチがコミットされると即リリース扱いになり、リリース日はその日付となる。
     これは、バージョンの末尾が patchlevel であり、コンパイラの入手が容易なため。

  4. 前回のリリースからCygTerm+に変更がある場合は、64bit Cygwinでビルドして cygterm\cygterm+-x86_64\cygterm.exe の差し替えを行う。

  5. 動作確認をする
     - インストーラを作成する。
       ISTool で teraterm\installer\teraterm.iss を開き、[Project]-[Compile Setup]で作成される。
     - インストールおよび実行をテストする。

  6. SVN のタグを作成する。
     タグ名は「teraterm-バージョン」。たとえば、v4.106ならば"teraterm-4_106"。
     svn copy -m "Release 4.106" svn+ssh://svn.osdn.net/svnroot/ttssh2/branches/4-stable svn+ssh://svn.osdn.net/svnroot/ttssh2/tags/teraterm-4_106

  7. リリース用のタグでチェックアウトし直す。

  8. インストーラを作成する。
     - teraterm\installer\teraterm.iss を編集する
       #define AppVer "4.???"
       ;#define snapshot GetDateTimeString('yyyymmdd_hhnnss', '', '');

       [InnoIDE_PreCompile]
       Name: makechm.bat
       ;Name: build.bat
       Name: build.bat; Parameters: rebuild

       [InnoIDE_PostCompile]
       Name: makearchive.bat; Parameters: release

       [PreCompile]
       Name: makechm.bat
       ;Name: build.bat
       Name: build.bat; Parameters: rebuild

       [PostCompile]
       Name: makearchive.bat; Parameters: release

       [_ISToolPreCompile]
       Name: makechm.bat
       ;Name: build.bat
       Name: build.bat; Parameters: rebuild

       [_ISToolPostCompile]
       Name: makearchive.bat; Parameters: release

     - ISTool で teraterm\installer\teraterm.iss を開き、[Project]-[Compile Setup]で作成される

  9. OSDN を更新する。
     - [ダウンロード]-[管理]-[新規作成]
         変更履歴を入力してリリースを作成する。
     - [ニュース一覧]-[新規登録]
         ニュース記事を作成する。

  10. メーリングリストにアナウンスする。

  11. プロジェクトページを更新する。

  12. スナップショットを削除する。

  13. Twitter に告知する。
      https://twitter.com/Tera_Term
      リリース告知をツイートして固定する。

  14. Chocolatey の登録を更新


libsフォルダ

  • Tera Term のビルドに利用する外部のライブラリを置いておくためのフォルダ
  • 各コンパイラ向けにソース/ライブラリ/実行ファイルを置いておく
  • ライブラリはあらかじめ1度だけ生成しておく

準備

Visual Studio

  • cmake
    • PATHが通してあればok
    • cygwinのcmakeはつかえない(Visual Studioをサポートしていない)
    • Visual Studio 2005 を使う場合は cmake 3.11.4 を使用する必要がある
  • perl
    • OpenSSL のコンパイル、ドキュメントファイルの文字コード・改行コード変換に必要
    • ActivePerl 5.8 以上、または cygwin perl
    • PATHが通っていなければ自動で探す

MinGW 共通 (experimental)

  • Cygwin,MSYS2,linux(wsl)上のMinGWでビルド可能
  • 各環境で動作するcmake,make,(MinGW)gcc,(clang),perlが必要

ビルド手順

必要なアーカイブを自動的にダウンロードするので、 インターネットが利用できる環境でビルドする必要がある

Visual Studioの場合

batファイルを使用する場合

buildall_cmake.bat を実行して使用する Visual Studioを選ぶ

1. Visual Studio 16 2019
2. Visual Studio 15 2017
3. Visual Studio 14 2015
4. Visual Studio 12 2013
5. Visual Studio 11 2012
6. Visual Studio 10 2010
7. Visual Studio 9 2008
8. Visual Studio 8 2005
select no

VS2005を選択した場合、 このバッチファイルから cmake 3.11.4 をダウンロードして libs\cmake-3.11.4-win32-x86 に インストールできます。

cmakeを使用する場合

Visual Studio 2019 x86 の場合

cmake -DCMAKE_GENERATOR="Visual Studio 16 2019" -DARCHITECTURE=Win32 -P buildall.cmake

Visual Studio 2017 x86 の場合

cmake -DCMAKE_GENERATOR="Visual Studio 15 2017" -P buildall.cmake

Visual Studio 2017 x64 の場合

cmake -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64" -P buildall.cmake`

Visual Studio 2005の場合は、cmakeのバージョン3.11.4以前を使用 (cmake が libs\cmake-3.11.4-win32-x86 にインストールしてある場合)

libs\cmake-3.11.4-win32-x86\bin\cmake.exe" -DCMAKE_GENERATOR="Visual Studio 8 2005" -P buildall.cmake

MinGW 共通

各々の環境のcmakeを使用する

cmake -DCMAKE_GENERATOR="Unix Makefiles" -P buildall.cmake

各フォルダについて

生成されるライブラリフォルダ

  • 次のフォルダにライブラリの *.h , *.lib が生成される
    • oniguruma_{compiler}
    • openssl_{compiler}
    • putty
    • SFMT_{compiler}
    • zlib_{compiler}

download アーカイブダウンロードフォルダ

  • ダウンロードしたアーカイブファイルが置かれる
  • 自動でダウンロードされる
  • ダウンロードされていると再利用する
  • ビルド後、参照する必要がなければ削除できる

build ビルドフォルダ

  • build/oniguruma/{compiler}/ などの下でビルドされる
  • 再ビルドするときは、あらかじめ削除すること
  • ビルド後、参照する必要がなければ削除できる


cmakeを使ったビルド

  • cmakeを使用して ビルドすることができます(実験的な位置づけです)

cmakeのバージョン

  • Visual Studio 2005 をサポートしている cmake の最後のバージョンは 3.11.4 です
  • Visual Studio 2005 (Expressも含む)以外を使用する場合は特に制限はありません
  • Visual Studio 2017,2019 インストーラーで、オプションを選べば cmake をインストールできます
  • cmake 3.14から Visual Studio 2019 をサポートしています

MinGW (very experimental)

  • MinGW を使用してバイナリを生成することができます
  • 実験的位置づけです

ライブラリのビルド

  • teraterm が使用するライブラリをビルドして準備しておきます
  • ビルド方法は build_library_with_cmake を参照してください
  • ライブラリについては develop.txt を参照してください

teratermのビルド

ソースツリーのトップから、次のようにコマンドを実行します。

mkdir build_vs2005
cd build_vs2005
..\libs\cmake-3.11.4-win32-x86\bin\cmake.exe .. -G "Visual Studio 8 2005"
..\libs\cmake-3.11.4-win32-x86\bin\cmake.exe --build . --config release
  • -G オプションの後ろは使用する Visual Studio のバージョンに合わせて調整します
  • sln ファイルが生成されるので Visual Studio で開くことができます
  • パスが通っていれば cmake はフルパスで書く必要はありません
  • 生成された sln ファイルから起動したVisual Studioでビルドすると CMakeLists.txt を変更を検出してプロジェクトファイルの再生成を自動で行うので sln ファイルの生成を手動で行うのは最初の1回だけです

  • Visual Studio 2019 + cmake のとき、-A オプションが必要です

    cmake.exe .. -G "Visual Studio 16 2019" -A Win32

teratermのビルド(MinGW)

MinGWので使用できるcmakeを使って、 ソースツリーのトップから、次のようにコマンドを実行します。

mkdir build_mingw_test
cd build_mingw_test
cmake .. -G "Unix Makefiles"
make -j4


Tera Termソースコード解説

  1. はじめに
  2. 必要スキル
  3. モジュール構成
  4. ライブラリ構成
  5. プラグインサポート
  6. 設定ファイルの読み書き
  7. セキュアプログラミング
  8. 古いバージョンのWindowsとの互換性維持
  9. デバッグ手法
  10. マルチスレッド
  11. DDEによるプロセス間通信
  12. TTSSHによるSSHの設計と実装
  13. マクロ言語の設計と実装
  14. キャレット制御
  15. シリアルポート
  16. バイナリ転送プロトコル

はじめに

  本文書では、Tera Termのソースコードについて解説をします。解説対象とするソースコードはバージョン"4.58"（2008年2月現在）のものをベースとしています。

必要スキル

  Tera Termのパッケージに含まれるほとんどのプログラムは、C言語で記述されています。一部のコードはC++言語で、MFC(Microsoft Foundation Class)が利用されています。Windows特有の処理を行うために、Win32 APIが多用されているため、APIの知識が必要となってきます。
  ソースコードをビルドするためには、Microsoft Visual Studio 2005 Standard Edition以上が必要です。Express EditionではMFCが利用できないため、ビルドができません。また、C++BuilderやTurbo C++ Explorer、gccなどのコンパイラにおいても、ビルドすることはできません。
  Windowsプログラミングに関する情報の源は、Microsoftが提供する「MSDNライブラリ」にあります。開発を行う際は、MSDNライブラリを頻繁に参照することになります。

  • MSDNライブラリ
  • MSDNライブラリ（日本語版）

  ただし、CygTermのみはCygwinのgccでコンパイルをします。ゆえに、CygTermはgccの機能を使った実装になっています。言語はC++です。

  Tera TermのメインエンジンはC++で実装されていますが、C言語的なコーディングがなされているため、Tera Termのソースコードを読み解くには、C言語に関する基礎知識があれば問題ないと言えます。ただし、Microsoft Visual C++(VC++)はANSI C準拠(C89)とはいえ、C99には未対応であるために、本来のC99相当の機能が独自に拡張されている部分もあります。そうした独自拡張された関数には、頭文字にアンダースコア(_)が付いているために、区別が付けやすくなっています。たとえば、VC++の_snprintf()は、ANSI C(C99)のsnprintf()とは似て非なるものです。

モジュール構成

  Tera Termパッケージに含まれる実行モジュール（.exeと.dll）の関連図を以下に示します。実行ファイルの拡張子は".exe"になっており、必要に応じてDLLが動的リンクされます。いずれも32ビットプログラム(x86)であるために、x86-64やIA-64といった64ビット環境ではそのまま動作するかどうかは評価されていません。
  通常、ユーザがデスクトップやスタートメニューからアプリケーションを起動するときに、呼び出される実行ファイルは"ttermpro.exe"になります。実行ファイルはさらに5つのDLLとダイナミックリンクしています。静的リンクを行い、単一のEXEファイルにしていないのは、1つのプロセスのメモリ占有率を抑えるためです。Tera Termでは多数の起動が行われることが想定されるため、初期設計段階からDLLに分割されています。一度読み込まれたDLLは、複数のプロセス間で共有することができます。

     マクロスクリプトを実行する際は、"ttpmacro.exe"というまったく別のプロセスが呼び出されます。"ttermpro.exe"とプロセス単位で分けられているのは、マクロを単体で実行できるようにするためです。両プロセス間で、データのやりとりを行うためには、プロセス間通信が必要です。Tera Termでは、DDE(Dynamic Data Exchange)と呼ばれる現在ではレガシーとなってしまったしくみが採用されています。将来のWindowsではDDEがサポートされなくなる可能性があり、その場合Tera Term上でマクロを実行することは一切できなくなります。

     TTSSHやTTProxy、TTXKanjiMenuといったプラグイン形式のDLLは、Tera Termの起動時に明示的に LoadLibrary() を使ってダイナミックロードされます。ロード対象となるDLLのファイル名は、TTXInit()#ttplug.c において、"TTX*.DLL"というパターンにマッチしたものとなります。

     "keycode.exe"と"ttpmenu.exe"、"LogMeTT.exe"は単体アプリケーションです。

     Cygwin接続のしくみについては、別の節で説明します。

ライブラリ構成

高度な機能を実現するために、フルスクラッチで実装することは効率がいいとは言えません。Tera Termでは開発効率化を図るために、オープンソースのライブラリを積極的に利用しています。ただし、オープンソース製品のライセンスによる競合には注意を払う必要があります（特にGPL）。
下図に、オープンソースのライブラリをリンクしているモジュールと、そのリンク状況を示します。

Tera Termマクロプログラムは、正規表現ライブラリ"Oniguruma"をリンクしています。"waitregex","strmatch","strreplace"コマンドにおいて正規表現を利用するためです。
Tera Term本体では、バージョンダイアログにOnigurumaのバージョンを表示するためだけにリンクをしています。

Tera Termマクロプログラムは、疑似乱数生成器"SFMT"をリンクしています。"random"コマンドにおいて乱数の生成に利用されています。

SSHモジュールであるTTSSHは、暗号処理を行うために"OpenSSL"をリンクしています。OpenSSLというネーミングからWebアクセスに使われるSSL(Secure Socket Layer)プロトコル専用のライブラリかと思われがちですが、そうではありません。OpenSSLは基本的な暗号アルゴリズムをサポートしており、TTSSHではOpenSSLに含まれる暗号化/復号ルーチンのみを利用しています。このことは、すなわちOpenSSLライブラリにSSL関連のセキュリティホールが発見されたとしても、TTSSHへの影響は極めて低いということです。

SSHモジュールであるTTSSHは、SSHパケットの圧縮を行うために圧縮ライブラリ"zlib"をリンクしています。ただし、ダイヤルアップ回線などの低速度なネットワークにおいては、パケット圧縮は有効ですが、昨今の高速回線ではむしろ速度低下を招く足かせとなります。ゆえに、デフォルトではパケット圧縮機能は無効化されています。

SSHモジュールであるTTSSHは、端末エミュレータ"PuTTY"をリンクしています。PuTTYにはPageantと呼ばれるSSH認証エージェントがあるのですが、TTSSHでPageantによる公開鍵認証をサポートするために、PuTTYのソースコードを利用しています。PuTTYの通信部分および端末エミュレーション部分のソースコードは利用していません。

なお、いずれのライブラリも静的リンク(static link)としています。ライブラリのコンパイルオプションには"/MT"を付加しています。動的リンク(dynamic link)を行うと、一部のユーザ環境でTera Termが起動できないという現象が発生したために、現在では動的リンクは行っていません。

プラグインサポート

  Tera Termでは、DLLという形式でプラグインのしくみをサポートしています。プラグイン形式のDLLファイルを、Tera Termがインストールされているディレクトリへ設置するだけで、Tera Termのソースコードを修正することなく、機能追加を行うことができます。代表的なプラグインとして、TTSSHがあります。
  プラグインを作成するためのサンプルコードとして、TTXSamples\ttxtest\ttxtest.c というソースファイルが用意されています。プラグインを開発するときは、このソースファイルをひな形とするとよいでしょう。実践的なプラグインとして、"TTX KanjiMenu"のソースコード（TTXKanjiMenu\配下）がシンプルで分かりやすいです。

  プラグインは、Tera Term("ttermpro.exe")の起動時に読み込まれます。TTXInit()#ttplug.c が読み込みを行う関数で、カレントディレクトリから"TTX*.DLL"というワイルドカードに合致するDLLファイルが読み込み対象となります。
  複数のDLLが存在する場合は、Tera Term本体からチェインするような形で、各DLLのエクスポート関数が連結されます。連結される順番は、それぞれのDLLが定義するオーダー値（TTXExports構造体のloadOrderメンバ）で決定され、現状下記の通りとなっています。

モジュール | オーダー
TTProxy | 0
TTSSH | 2500
TTX Kanji Menu | 5000

オーダー値が小さいほど、Tera Term本体側に近くなります。たとえば、Tera Term本体からTTXModifyMenu()が呼び出された場合、

  • TTXModifyMenu()#ttplug.c → TTProxyのTTXModifyMenu() → TTSSHのTTXModifyMenu() → TTX Kanji MenuのTTXModifyMenu()
    •

   という順番で、各DLLの関数が呼び出されていくことになります。
  各DLLが、Tera Term本体側から呼び出してもらうためにエクスポートする関数群は、TTXExports構造体で定義し、TTXBind()で渡します。たとえば、TTX Kanji Menuのエクスポート関数は以下のとおりです。不要な関数は NULL で定義してあります。
static TTXExports Exports = {
/* This must contain the size of the structure. See below for its usage. */
    sizeof(TTXExports),

/* This is the load order number of this DLL. */
    ORDER,

/* Now we just list the functions that we've implemented. */
    TTXInit,
    NULL, /* TTXGetUIHooks */
    NULL, /* TTXGetSetupHooks */
    NULL, /* TTXOpenTCP */
    NULL, /* TTXCloseTCP */
    NULL, /* TTXSetWinSize */
    TTXModifyMenu,
    TTXModifyPopupMenu,
    TTXProcessCommand,
    NULL, /* TTXEnd */
    NULL  /* TTXSetCommandLine */
};
  原則、プラグインのエクスポート関数は、他のプラグインと干渉しないように設計をするべきです。また、Tera Term本体側からの呼び出しが、自分宛てであるかどうかを判断する必要がある場合もあります。
  プラグインがエクスポートする関数について、以下に示します。

関数 | 意味
TTXBind | 一番始めに呼び出される関数であり、エクスポート関数のテーブルを渡す。
TTXInit | TTXBind()の呼び出し後にすぐに実行される関数で、Tera Term本体のグローバル変数(ts, cv)を受け取り、プラグインの初期化を行う。
TTXGetUIHooks | ダイアログのハンドルをフックするための関数。Tera Term本体のダイアログインターフェイスを変更したい場合に使う。フック対象の関数は以下のとおり。 &SetupTerminal, &SetupWin, &SetupKeyboard, &SetupSerialPort, &SetupTCPIP, &GetHostName, &ChangeDirectory, &AboutDialog, &ChooseFontDlg, &SetupGeneral, &WindowWindow
TTXGetSetupHooks | セットアップルーチンをフックするための関数。フックした側は、元の関数も責任を持って呼び出す必要がある。複数のプラグインが存在する場合、関数がチェインされていく。フック対象の関数は以下のとおり。 &ReadIniFile, &WriteIniFile, &ReadKeyboardCnf, &CopyHostList, &AddHostToList, &ParseParam
TTXOpenTCP | TCP接続を行うときに呼び出される関数。シリアル接続のときは呼び出されない。また、以下のソケットインターフェイスをフックすることもできる。 &Pclosesocket, &Pconnect, &Phtonl, &Phtons, &Pinet_addr, &Pioctlsocket, &Precv, &Pselect, &Psend, &Psetsockopt, &Psocket, &PWSAAsyncSelect, &PWSAAsyncGetHostByName, &PWSACancelAsyncRequest, &PWSAGetLastError
TTXCloseTCP | TCPコネクションが切断されるときに呼び出される関数。シリアル接続のときは呼び出されない。下記のうちフックしたインターフェイスがあるならば、元に戻す必要がある。 &Pclosesocket, &Pconnect, &Phtonl, &Phtons, &Pinet_addr, &Pioctlsocket, &Precv, &Pselect, &Psend, &Psetsockopt, &Psocket, &PWSAAsyncSelect, &PWSAAsyncGetHostByName, &PWSACancelAsyncRequest, &PWSAGetLastError
TTXSetWinSize | Tera Termウィンドウの画面サイズが変更されたときに呼び出される関数。
TTXModifyMenu | Tera Termのメニューが初期化されるときに呼び出される関数。プラグイン用のメニューを挿入したい場合に使われる。
TTXModifyPopupMenu | Tera Termのポップアップメニューが初期化されるときに呼び出される関数。プラグイン用のポップアップメニューを挿入したい場合に使われる。
TTXProcessCommand | メニューが呼び出されたときに実行される関数。プラグイン用のメニューを処理したいときに使われる。
TTXEnd | Tera Term本体が終了するときに呼び出される関数。
TTXSetCommandLine | 新規接続やセッションの複製を行うときに、コマンドラインパラメータの処理を行うときに呼び出される関数。プラグイン独自のオプションを追加したときは、ここで処理される。

設定ファイルの読み書き

  Windowsではアプリケーションのデータ保存のために、レジストリが伝統的に利用されていますが、Tera Termではその誕生がWindows 3.1までに遡るために、.iniファイルによるローカルディレクトリへの保存方法が標準となっています。
  パッケージに同梱されるCollectorやCygTermに関してもローカルディレクトリへデータが保存されます。
  LogMeTTとTTLEditはレジストリへ保存されます。
  例外として、TeraTerm Menuはデフォルトでレジストリへ保存をします。カレントディレクトリに"ttpmenu.ini"（0バイトで可）を設置することで、レジストリの代わりに.iniファイルを使うようにすることもできます。ただし、レジストリから.iniファイルへの移行は自動で行いませんので、手動で再登録してください。

     teraterm.iniファイルにエントリを追加した場合は、ReadIniFile()#ttset.cに設定を読み込みするようにします。
    ts->ConfirmChangePaste =
        GetOnOff(Section, "ConfirmChangePaste", FName, TRUE);
  WriteIniFile()#ttset.c に設定を書き込みするようにします。
    WriteOnOff(Section, "ConfirmChangePaste", FName,
        ts->ConfirmChangePaste);
  エントリに文字列を設定する場合は、Win32APIのGetPrivateProfileString()とWritePrivateProfileString()を使います。数値を扱いたい場合は、GetPrivateProfileInt()とWriteInt()を使います。

セキュアプログラミング

文字列操作

  WindowsのデフォルトアカウントはAdministrator権限を保持するために（ただし、Windows Vistaには当てはまらない）、アプリケーションにバッファオーバーフローの不具合があると、管理者権限を第三者に奪取されてしまう危険性があります。
  従来、C言語の文字列処理は開発者のミスにより、バッファオーバーフローが発生しやすいという状況にありました。そこで、MicrosoftはVisual Studio 2005から文字列処理関数のセキュリティ強化バージョンを提供するようになりました。

  • CRT のセキュリティ強化（MSDNライブラリ）

  Tera Termではセキュリティ強化を図るため、文字列操作のほとんどをセキュリティ強化バージョンに置き換えています。以下に代替関数を示します。

旧 | 新
sprintf(), _snprintf() | _snprintf_s()
strcat(), strncat() | strncat_s()
strcpy(), strncpy() | strncpy_s()

     デフォルトのロケールが適用されると、期待する動作とならないケースにおいては、_snprintf_s_l()を使用しています。
  いずれの関数においても、_s("secure")という接尾辞が付くため、見た目に区別が付きやすくなっています。当然のことながら、これらの関数はANSI C非互換です。

  なお、これらの関数を利用する際、Count引数（格納する最大文字数）には"_TRUNCATE"マクロを指定しており、バッファオーバーフローが発生する場合は、強制的にバッファの切り詰めを行っています。

  以下に、strncpy_s()の使用例を示します。strncpy_s()の第2引数(numberOfElements)には、ナル文字(\0)も含めたバッファサイズを指定します。書き込み先のバッファは3バイトしかないので、第3引数(strSource)で指定した5バイトのデータは、2バイトに切り詰められ、buf[]には"he\0"が格納されます。

char buf[3];
strncpy_s(buf, sizeof(buf), "hello", _TRUNCATE);
  次に、strncat_s()の使用例を示します。当該関数は、すでに存在する文字列に、さらに文字列を連結するものであるため、第1引数(strDest)はかならずnull-terminateしている必要性があります。strncpy_s()の第2引数(numberOfElements)には、ナル文字(\0)も含めたバッファサイズを指定します。以下の例では、最初の関数を実行すると、5バイト（4文字＋ナル文字）が格納されます。2つめの関数を実行する際、残り2バイトしかないので、2文字だけがコピーされ、最終的に"TeraTe"（4文字＋2文字＋ナル文字）となります。
char str[7];
str[0] = '\0';
strncat_s(str, sizeof(str), "Tera", _TRUNCATE);
strncat_s(str, sizeof(str), "Term", _TRUNCATE);
  最後に、_snprintf_s()です。紛らわしいのが _snprintf() という関数であり、この関数はnull-terminateされないケースがあるため、使用禁止です。以下に、_snprintf_s()の使用例を示します。以下の例では、buf[]には"ab\0"が格納されます。
char buf[3];
_snprintf_s(buf, sizeof(buf), _TRUNCATE, "abcdef");

古いバージョンのWindowsとの互換性維持

ダイナミックローディング

  Windowsのアプリケーションプログラムは、単一のバイナリファイルを変更することなく、新旧のバージョンのWindows上で起動できるようにするためには、アプリケーションプログラム側での工夫が必要です。
  たとえば、Windows2000で導入された SetLayeredWindowAttributes() APIを直接呼び出すと、WindowsNT4.0や98などではアプリケーションの起動に失敗するようになります。そのため、新しいAPIを呼び出すときは、LoadLibrary()を使って動的ロードするようにします。
static BOOL MySetLayeredWindowAttributes(HWND hwnd, COLORREF crKey, BYTE bAlpha, DWORD dwFlags)
{
    typedef BOOL (WINAPI *func)(HWND,COLORREF,BYTE,DWORD);
    static HMODULE g_hmodUser32 = NULL;
    static func g_pSetLayeredWindowAttributes = NULL;

    if (g_hmodUser32 == NULL) {
        g_hmodUser32 = LoadLibrary("user32.dll");
        if (g_hmodUser32 == NULL)
            return FALSE;

        g_pSetLayeredWindowAttributes =
            (func)GetProcAddress(g_hmodUser32, "SetLayeredWindowAttributes");
    }

    if (g_pSetLayeredWindowAttributes == NULL)
        return FALSE;

    return g_pSetLayeredWindowAttributes(hwnd, crKey,
                                         bAlpha, dwFlags);
}
  いちいち、手で関数プロトタイプを書いていくのは面倒である場合は、「DLLの遅延読み込み」というしくみを利用すると、上記のような手順は不要です。いきなり、関数を呼び出すことができます。ダイレクトに呼び出したい関数がある場合、それが古いWindowsではサポートされていないものであるならば、Visual Studioのプロジェクト設定で、「DLLの遅延読み込み」に該当するDLLを指定しておきます。

Windows 95

Visual Studio 2005になってから、Windows 95のサポートが打ち切られました。よって、必然的にVisual Studio 2005でビルドしたバイナリは、Windows 95では動かないことになります。参考までに、Visual Studio 2008では Windows 98 と NT4.0 、2000 のサポートが打ち切られ、Visual Studio 2010でも同様です。今後は、Windows XPもサポートされなくなることが予想されます。

現在、Tera TermではVisual Studio 2005によりビルドされていますが、とある工夫により Windows 95 でも動作するようになっています。もちろん、Microsoft非公認の方法であるため、Microsoftからの正式なサポートは受けられません。
そもそも、Visual Studio 2005 でビルドされたバイナリは、デフォルトで IsDebuggerPresent 関数にリンクしてしまっています。当該関数は Windows 98 からサポートされたAPIであるため、Windows 95ではリンクエラーとなるわけです。
そこで、Windows 95において、ダミーで IsDebuggerPresent 関数のシンボルを定義してあげれば、プログラムの起動時にエラーになることはなくなるのです。詳細は"comapt_w95.h"ヘッダを参照してください。

  • comapt_w95.h

デバッグ手法

debug printf

  Windowsアプリケーションでは printf() が使えません。標準出力がどこにも割り当てられていないからです。AllocConsole()とfreopen()を使えば、Windowsアプリケーションにおいても printf() を利用することができます。
  OutputDebugString()というAPIがあります。これは Visual Studio のデバッグコンソールにメッセージ出力することができる関数です。当該APIは、"Debug build"および"Release build"に関係なく、デバッガが存在すれば、メッセージを送信します。ゆえに、 Visual Studioがなくとも、DBConのようなツールを使えば、アプリケーションの単体起動においても、OutputDebugString()によるメッセージを拾うことができます。
  Tera Termでは、可変長引数を扱えるようにラッパー関数を用意しています。
void OutputDebugPrintf(char *fmt, ...) {
    char tmp[1024];
    va_list arg;
    va_start(arg, fmt);
    _vsnprintf_s(tmp, sizeof(tmp), _TRUNCATE, fmt, arg);
    OutputDebugString(tmp);
}

memory leak

  malloc()等による確保したヒープメモリの解放し忘れによる「メモリリーク」を、自動で検出するしくみが Visual Studio には用意されています。プログラムの起動時に、以下のコードを挿入するだけです。プログラムの終了時に、解放していないヒープメモリがあれば、 Visual Studio の「出力」ウィンドウにリストアップされます。
#ifdef _DEBUG
  _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
#endif
  なお、Windowsのように仮想記憶で動くアプリケーションプログラムに関しては、プログラムの終了時に解放されていないメモリが存在した場合、OSが面倒を見て、メモリが解放されるようになっています。

マルチスレッド

  Windowsのアプリケーションはマルチスレッドで設計されることがほとんどですが、Windows 3.1から95の時代ではあまり一般的ではありませんでした。そのため、元々Tera Termはマルチスレッド化されていません。ソースコードを見ると分かるように、グローバル変数が多用されているため、ほとんどの処理がスレッドセーフではありません。
  ただし、一部の処理においては _beginthreadex() API を使ってスレッドが生成されています。以下にスレッド生成箇所を示します。

Tera Term
生成箇所 | ソースファイル
シリアル接続 | CommStart()#commlib.c
TELNETキープアライブ | TelStartKeepAliveThread()#telnet.c
IPv4/v6ソケットの生成 | WSAAsyncGetAddrInfo()#WSAAsyncGetAddrInfo.c

TTSSH
生成箇所 | ソースファイル
SSHキープアライブ | start_ssh_heartbeat_thread()#ssh.c
SCP送信処理 | SSH2_scp_tolocal()#ssh.c
SCP受信処理 | SSH2_scp_fromremote()#ssh.c

  すでに説明したとおり、Tera Term（TTSSH含む）の内部処理はスレッドセーフではないため、シンプルにスレッドを生成し、スレッド内から送受信処理等を行おうとすると、不具合が発生してしまいます。
  TELNETやSSHのキープアライブ（ハートビート）処理を実現するためには、定期的にパケットの送信処理を行う必要があります。また、SCPによるファイル送受信を行う際においても、ファイルの送信処理中に、ユーザの端末操作のレスポンスを落とさないために、スレッドの使用が不可欠です。
  そこで、マルチスレッドを使う場合は、モードレスダイアログを非表示で作成したあとに、_beginthreadex() APIでスレッドを生成し、実際の処理はモードレスダイアログに行わせるという手段を使用しています。このしくみにより、マルチスレッドを使いながら、スレッドセーフを保つことができます。以下に、コード例を示します。
#define WM_SEND_HEARTBEAT (WM_USER + 1)

static INT_PTR CALLBACK telnet_heartbeat_dlg_proc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{

    switch (msg) {
        case WM_INITDIALOG:
            return FALSE;

        case WM_SEND_HEARTBEAT:
            TelSendNOP();
            return TRUE;
            break;

        case WM_COMMAND:
            break;

        case WM_CLOSE:
            return TRUE;

        case WM_DESTROY:
            return TRUE;

        default:
            return FALSE;
    }
    return TRUE;
}

static unsigned _stdcall TelKeepAliveThread(void *dummy) {
  static int instance = 0;

  if (instance > 0)
    return 0;
  instance++;

  while (cv.Open && nop_interval > 0) {
    if (time(NULL) >= cv.LastSendTime + nop_interval) {
        SendMessage(keepalive_dialog, WM_SEND_HEARTBEAT, 0, 0);
    }

    Sleep(100);
  }
  instance--;
  return 0;
}

void TelStartKeepAliveThread() {
  unsigned tid;

  if (ts.TelKeepAliveInterval > 0) {
    nop_interval = ts.TelKeepAliveInterval;

    keepalive_dialog = CreateDialog(hInst, MAKEINTRESOURCE(IDD_BROADCAST_DIALOG),
               HVTWin, telnet_heartbeat_dlg_proc);

    keepalive_thread = (HANDLE)_beginthreadex(NULL, 0, TelKeepAliveThread, NULL, 0, &tid);
    if (keepalive_thread == 0) {
      keepalive_thread = INVALID_HANDLE_VALUE;
      nop_interval = 0;
    }
  }
}

DDEによるプロセス間通信

概要

  DDE(Dynamic Data Exchange)の誕生は、1987年のWindows 2.0までに遡ります。DDEはプロセス間通信を行うためのしくみですが、現在ではレガシーな方式であり、ほとんどのアプリケーションでは利用されていません。Windowsにおけるプロセス間通信といえば、メールスロットや名前付きパイプ、OLEなどが定番です。
  かつては、DDEによるプロセス間の通信データをキャプチャすることができる「DDEスパイ」(DDESPY.EXE)というツールがVisual Studioに付属していましたが、現在のVisual Studioにはもはや含まれていません。
  DDEに関するリファレンスはMSDNライブラリから参照することができます。

  • Dynamic Data Exchange（MSDNライブラリ）
  • Dynamic Data Exchange Management Library（MSDNライブラリ）

  DDEは、TCPによるネットワーク通信と似ており、サーバとクライアント間を一対一で接続し、通信を行います。アプリケーションがDDEによる通信を行うために、DDEML(Dynamic Data Exchange Management Library)と呼ばれるライブラリをWin32 APIとして提供されています。
  DDE通信を行うために、一方がサーバとなり、他方がクライアントになる必要があります。また、通信のセッションをシステム全体でユニークとするために、識別情報が必要です。TCP通信ではIPアドレスとポート番号が使われますが、DDE通信では「サービス名」と「トピック名」の組み合わせが使われます。Tera Termではサービス名は"TERATERM"という文字列が使われ、トピック名はTera Term本体のウィンドウハンドル(HVTWin)の16進数値を文字列化したものが使われています。
  このようなしくみになっているために、マクロスクリプトからまったく別のTera Termへコマンドを送ることはできません。
  上図に示すように、Tera Term本体("ttermpro.exe")がDDEサーバとなり、マクロプログラム("ttpmacro.exe")がDDEクライアントとなります。DDEでは、やりとりするデータの塊のことを「トランザクション」と呼びます。トランザクションには以下に示すような何種類かがあります。タイプは"ddeml.h"でマクロ定義されています。

タイプ | 意味
XTYP_ADVREQ | DDEサーバがクライアントへデータを送るために、DDEサーバが自分自身に送るメッセージ。
XTYP_POKE | DDEクライアントからサーバへデータを送る。
XTYP_ADVSTART | DDEサーバに対してアドバイズループの開始を指示する。
XTYP_ADVDATA | DDEクライアントにデータを定期的に送る。
XTYP_EXECUTE | DDEサーバに文字列を送り、何らかの処理をサーバに指示する。

  DDE通信の特徴として、アドバイズループ(advise loop)という概念があります。DDEサーバがアドバイズループに入ると、クライアントはサーバから定期的にデータを受け取り続けることができます。Tera Termでは、リモートホストからの受信データを、マクロプログラムへ渡すために、アドバイズループが使われています。

ライブラリ

  Tera Termで使われているDDEMLについて、以下に示します。

関数名 | 機能
DdeInitialize | DDEを初期化し、コールバック関数を登録する。初期化できるとインスタンスを返す。
DdeCreateStringHandle | 文字列リテラルからハンドルを作成する。ハンドルはサーバとクライアントの通信用に使われる。
DdeNameService | インスタンスとサービス名("TERATERM")をサーバに登録する。登録後、XTYP_REGISTERトランザクションがクライアントへ送られる。登録解除する際にも使われる。
DdeCmpStringHandles | 2つの文字列ハンドルを比較する。
DdeClientTransaction | クライアントからサーバへトランザクションを送ることができる。トランザクションタイプとして、XTYP_REQUEST・XTYP_EXECUTE・XTYP_ADVSTART・XTYP_POKEなどが指定できる。サーバからのACKを待つまでのタイムアウト時間を指定することができ、Tera Termではほとんど"1000ミリ秒（1秒）"が指定されている。ただし、ACKを確認するケースにおいては"5000ミリ秒（5秒）"が指定されている。
DdeAccessData | DDEハンドルから実際のデータへのポインタを取得する。データの取り出しが終わったら、DdeUnaccessData()を呼び出すこと。
DdeCreateDataHandle | DDEオブジェクトを作成し、ハンドルを返す。DDEサーバのアドバイズループや、XTYP_REQUESTトランザクション受信時に、DDEクライアントへデータを送るために使われている。
DdeGetData | DDEオブジェクトからバッファへコピーする。
DdeDisconnect | DDE通信を終了する
DdePostAdvise | DDEサーバ側で使われる関数で、自分自身に XTYP_ADVREQ トランザクションを送る。

実装

  DDEサーバ側の実装について見ていきます。Tera Term本体("ttermpro.exe")がDDEサーバとなり、かならずDDEサーバから起動されます。マクロプログラム("ttpmacro.exe")から直接マクロスクリプトが実行されるケースにおいても、"connect"マクロによりDDE接続をしないと、通信が開始できません。
  Tera TermのControlメニューからMacroを呼び出した場合、RunMacro()#ttdde.c がコールされます。
  HVTWinウィンドウハンドルからトピック名（8バイト）を作成し、DDEの初期化とサーバの登録を行います。また、このタイミングでDDEバッファ（1KB）を作成しています。その後、"ttpmacro.exe"を /D= オプションでトピック名を渡しつつ、起動をします。

    SetTopic();
    if (! InitDDE()) return;
    strncpy_s(Cmnd, sizeof(Cmnd),"TTPMACRO /D=", _TRUNCATE);
    strncat_s(Cmnd,sizeof(Cmnd),TopicName,_TRUNCATE);
  DDEサーバに、DDEクライアントからトランザクションが送られてきたときは、DdeCallbackProcコールバック関数が呼び出されます。コールバック関数は、DdeInitialize()でDDEの初期化を行うときに登録されます。

     次に、DDEクライアントについて見てみましょう。マクロプログラムの起動時、InitDDE()#ttmdde.c が呼び出され、DDEクライアントとして初期化が行われます。DDEの初期化は、DdeInitialize()で行われ、同時にDdeCallbackProcコールバック関数が登録されます。DDEサーバから届いたトランザクションは、コールバック関数で処理されます。
  DDE通信を始めるためには、DdeConnect()を呼び出し、サーバと接続する必要があります。次に、"ttpmacro.exe"のウィンドウハンドル(HWin)をサーバへ通知するために、XTYP_EXECUTEトランザクションで送ります。最後に、XTYP_ADVSTARTトランザクションをサーバへ送り、アドバイズループを開始します。
  ConvH = DdeConnect(Inst, Service, Topic, NULL);
  if (ConvH == 0) return FALSE;
  Linked = TRUE;

  Cmd[0] = CmdSetHWnd;
  w = HIWORD(HWin);
  Word2HexStr(w,&(Cmd[1]));
  w = LOWORD(HWin);
  Word2HexStr(w,&(Cmd[5]));

  DdeClientTransaction(Cmd,strlen(Cmd)+1,ConvH,0,
    CF_OEMTEXT,XTYP_EXECUTE,1000,NULL);

  DdeClientTransaction(NULL,0,ConvH,Item,
    CF_OEMTEXT,XTYP_ADVSTART,1000,NULL);

バッファの管理

  マクロプログラムでは"wait"コマンド等で、リモートホストから送られてきたデータを監視するための機能が用意されています。この機能を実現するためには、Tera Term本体とマクロプログラムのそれぞれにおいて、バッファを用意する必要があり、プロセス間通信（DDEトランザクション）により、Tera Term本体からマクロプログラムへリモートホストからの受信データを送らなければなりません。
  まず、Tera Term本体におけるリモートホストからのTCPパケット受信は、アイドルループ OnIdle()#teraterm.cpp にて行われます。OnIdle()から呼び出される CommReceive()#commlib.c において、TCPパケットデータをバッファ(cv->InBuff[])に格納します。このバッファは 1KB の大きさを持ちます。また、リングバッファではないため、バッファフルになった場合は、TCPパケットの受信をしません。ただし、バッファフル状態が長く続くと、Windowsカーネル内にTCPパケットが溜まっていき、いずれはリモートホストからのパケットを受信できなくなる可能性があります。
  エスケープシーケンスの解析処理を行う過程で、「ログ採取」か「マクロ実行」を行っている場合は、LogPut1()が呼び出され、DDEバッファ(cv.LogBuf[])へ受信データが格納されます。すなわち、ログ採取とマクロ実行におけるバッファは共通です。このバッファは1KBの大きさを持つリングバッファであり、バッファフルになった場合は、最古のデータから上書きされてゆきます。
  なお、バイナリモードでログ採取においては、cv.BinBuf[] という別のバッファへデータが格納されますので、DDEバッファとは別物です。言い換えると、バイナリモードにおけるデータをDDE通信させることはできないということです。単純な"wait"コマンドでは、バイナリデータ（制御コードなど）を待つことはできません。
  Tera Term本体のDDEバッファのデータは、エスケープシーケンスの解析処理が完了後、DDEAdv()#ttdde.c がすぐに呼び出され、自分自身（DDEサーバ）へ XTYP_ADVREQ トランザクションを送ります。XTYP_ADVREQを受け取ったら、DDEコールバック関数 DdeCallbackProc() が呼び出され、マクロプログラムへのデータ送信を行います。ここでアドバイズループが使われています。
  アドバイズループによりDDEサーバよりデータが送られてくると、DDEクライアントであるマクロプログラムにおいては、XTYP_ADVDATAトランザクションがDDEコールバック関数 DdeCallbackProc()#ttmdde.c により処理されます。
     なお、Tera Term本体において、DDE通信用のバッファと、ログ採取用のバッファは cv.LogBuf[] で共有されています。バッファの先頭とデータサイズを表すインデックスは、DDE通信の場合は"DStart"と"Dcount"、ログ採取の場合は"LStart"と"Lcount"と区別されています。実際には、1つのバッファを共有しているわけなので、それぞれのインデックスが食い違うと、誤動作する原因となるため、常に同期を取っておくことになります。

TTSSHによるSSHの設計と実装

概要

  オリジナルのTTSSHはRobert O'Callahan氏（現在は元Mozilla hackerとして活躍）により開発されたプラグインです。SSH1へ対応しており、ポートフォワーディングやzlibによるパケット圧縮もサポートしていました。TTSSHは、Tera Termをセキュア通信に対応させるためのプラグインであったために、SCPやSFTP等には未対応でした。オリジナルTera Termが1998年に開発凍結後も、2001年ごろまでメンテナンスが続けられていました。
  TTSSHのSSH2対応を実現するために、TeraTerm Projectにより2004年から設計と実装が始められました。3年の歳月をかけて、ほぼSSH2プロトコルのフルサポートを実現しました。現在ではSCPへも対応しています。将来的にはSFTPへも対応されるかもしれません。
  原則、TTSSHの実装はOpenSSHを参考にしています。一部、コードをそのまま流用しているところもあります。ただし、OpenSSHはUNIXのコマンドライン向けに設計されているため、Tera TermのようなWindowsアプリケーションにはそのまま適合しない箇所も多く、フレームワークとしてはOpenSSHと大きく異なったものとなっています。

SSHプロトコル

  SSH(Secure Shell)は、バージョン1（厳密には1.5）とバージョン2が存在し、略して"SSH1"および"SSH2"と呼ばれます。それらのバージョン間にはプロトコル仕様としての互換性はありません。SSH1にはセキュリティ上の問題があるために、現在はほとんど利用されません。
  SSH2プロトコルの仕様に関しては、RFC化されています。

  • RFC4250: The Secure Shell (SSH) Protocol Assigned Numbers
  • RFC4251: The Secure Shell (SSH) Protocol Architecture
  • RFC4252: The Secure Shell (SSH) Authentication Protocol
  • RFC4253: The Secure Shell (SSH) Transport Layer Protocol
  • RFC4254: The Secure Shell (SSH) Connection Protocol
  • RFC4255: Using DNS to Securely Publish Secure Shell (SSH) Key Fingerprints
  • RFC4256: Generic Message Exchange Authentication for the Secure Shell Protocol (SSH)
  • RFC4344: The Secure Shell (SSH) Transport Layer Encryption Modes

接続処理

  TTSSHは、Tera Termの一部のコードでもあるため、ネットワーク接続処理はTera TermとTTSSHの間を行き来することになり、処理の流れが複雑になっています。また、SSHプロトコルそのもののフローを熟知していないと、TTSSHのシーケンスを追っていくのが難しくなっています。以下に、リモートホストへの接続を行うまでのフローを示します。

送信パケット処理

SSH2プロトコルに載せて、パケットをサーバへ送るときのコードは以下のような書き方となります。begin_send_packet()の呼び出しで、「pvar->ssh_state.outbuf + 12」が返り値となり、それがペイロードを表します。ペイロードは純粋にサーバへ送りたいデータのことで、サイズやパディング等を含みません。
    buffer_t *msg;
    int len;
    char *s;
    unsigned char *outmsg;

    msg = buffer_init();
    if (msg != NULL) {
        buffer_put_int(msg, SSH2_DISCONNECT_PROTOCOL_ERROR);
        s = "disconnected by server request";
        buffer_put_string(msg, s, strlen(s));
        s = "";
        buffer_put_string(msg, s, strlen(s));

        len = buffer_len(msg);
        outmsg = begin_send_packet(pvar, SSH2_MSG_DISCONNECT, len);
        memcpy(outmsg, buffer_ptr(msg), len);
        finish_send_packet(pvar);
        buffer_free(msg);
    }
  SSH通信に載せられて、実際にパケットが送出されるのは、finish_send_packet()から呼び出される finish_send_packet_special() です。パケットを送信するときのフォーマットについて、以下に示します。共通鍵暗号でパケットデータを暗号化する前に、ヘッダとフッタを付ける必要があります。
  パケットサイズはHMACを除く長さです。パケットサイズそのものはビッグエンディアン形式で、4バイト分格納しますが、その"4"バイトは含まれません。ペイロードの直後にパディングを埋めるのは、共通鍵暗号で暗号化するときに「ブロックサイズ単位」になっていなければ、アルゴリズム的に暗号化できないからです。ブロックサイズは暗号アルゴリズムにより異なり、たとえば3DES-CBCならば24バイト、AES128ならば16バイトです。
  HMAC(Keyed-Hashing for Message Authentication)は、暗号化本文に対するハッシュです。ハッシュのアルゴリズムは選択可能であり、"MD5"や"SHA-1"がよく使われています。HMACを付加することにより、「第三者によるデータの改ざん」を検出することができます。HMACは、暗号化対象となる本文を秘密鍵とシーケンス番号を加え、ハッシュ値を計算します。秘密鍵とシーケンス番号を加えることにより、第三者がデータをまるごと差し替えたとしても、送信者が生成したハッシュ値を復元することは理論上できません。

  zlibによるパケット圧縮を行う場合における、パケットを送信するときのフォーマットについて、以下に示します。パケット圧縮を行うのは、「ペイロード」の部分のみで、残りは通常の送信パケットとフォーマットは同じです。なお、パケットを圧縮したとしても、かならずしも元のサイズよりも小さくなるとは限らないので、そのことを考慮したバッファ管理が必要です。
  パケット圧縮送信で難しいのは、圧縮を開始するタイミングです。ローカルホストからリモートホストへのSSH接続を開始すると、実にたくさんのネゴシエーションが行われますが、パケットを圧縮してよいのは決められたタイミングであり、このタイミングを間違えると、サーバとまったく通信ができなくなります。
  通常のパケット圧縮の場合は、"SSH2_MSG_KEXINIT"を受信したタイミングです。遅延パケット圧縮の場合は、ユーザ認証が成功したタイミング（"SSH2_MSG_USERAUTH_SUCCESS"を受信した時）です。遅延パケット圧縮というのは、それまで"SSH2_MSG_KEXINIT"を受信したタイミングで圧縮を開始していたのを、ユーザ認証が完了するまで延長する方式です。遅延パケット圧縮は、zlibライブラリのセキュリティホールにより、不正なSSHサーバへ接続しただけで、クライアント側に影響が出るのを回避するためのしくみです。

受信パケット処理

  パケットの受信は、TeraTerm本体側からは recv ソケット関数を呼び出した場合に、それがTELNETなのかSSHなのかを意識させないような設計になっていることと、 recv ソケット関数の呼び出しでは、かならずしも十分なバッファサイズが指定されてくるとは限らないため、少々実装が複雑になっています。
  TeraTerm本体側は OnIdle()#teraterm.cpp というアイドルループにおいて、常時パケットの受信がないかをポーリングしています。それが CommReceive() で、recv()を呼び出します。recv()はTTSSHによりフックされているので、ソケット関数ではなく、TTXrecv()#ttxssh.c が呼び出されます。
  CommReceive()は recv() を呼び出す際に、バッファ(cv->InBuff[])の空きポインタとサイズを引数に渡します。バッファサイズは 1KB です。つまり、TTXrecv()のサイズには、1～1024 までの数値が渡される可能性があるということです。
  TTXrecv()から呼び出される PKT_recv() は、少々複雑なループ処理となっています。SSH接続を初めて行うときのシーケンスを以下に示します。
  1. recv_data() で本当の recv() を呼び出し、サーバからの受信パケットをカーネルから受け取る。pvar->pkt_state.datalenが更新される。
  2. SSH_handle_server_ID() でSSHサーバのバージョンチェックが行われる。pvar->pkt_state.datastart と pvar->pkt_state.datalen を更新する。
  3. 再度、recv_data() が呼ばれるが、サーバからの受信データがもうないので、connection_closed=TRUE として while ループを抜ける。
  4. TeraTermの recv() は"0"で返ってくる。すなわち、受信データなし。
  次に、SSH通信のための共通鍵生成までのシーケンスを以下に示します。
  1. recv_data() で本当の recv() を呼び出し、サーバからの受信パケットをカーネルから受け取る。pvar->pkt_state.datalenが更新される。
  2. SSH_predecrpyt_packet() で、受信パケットの先頭ブロックのみを復号化する。SSHパケットのサイズを取得する。
  3. 妥当なSSHパケットサイズならば、SSH_handle_packet() を呼び出し、メッセージタイプに応じたハンドラを呼び出す。pvar->ssh_state.payload と pvar->ssh_state.payloadlen を設定する。
  4. pvar->pkt_state.datastart と pvar->pkt_state.datalen を更新する。
  5. pvar->pkt_state.datalen がゼロになるまで、SSH_predecrpyt_packet() の処理を繰り返す。
  6. recv_data() が呼ばれるが、サーバからの受信データがもうないので、connection_closed=TRUE として while ループを抜ける。
  7. TeraTermの recv() は"0"で返ってくる。すなわち、受信データなし。
  次に、端末データ通信のシーケンスを以下に示します。
  1. recv_data() で本当の recv() を呼び出し、サーバからの受信パケットをカーネルから受け取る。pvar->pkt_state.datalenが更新される。
  2. SSH_predecrpyt_packet() で、受信パケットの先頭ブロックのみを復号化する。SSHパケットのサイズを取得する。
  3. 妥当なSSHパケットサイズならば、SSH_handle_packet() を呼び出し、メッセージタイプに応じたハンドラを呼び出す。pvar->ssh_state.payload と pvar->ssh_state.payloadlen を設定する。
  4. メッセージタイプがSSH2_MSG_CHANNEL_DATAなので、handle_SSH2_channel_data() を呼び出す。pvar->ssh_state.payload_datalen と pvar->ssh_state.payload_datastart を設定する。
  5. pvar->pkt_state.datastart と pvar->pkt_state.datalen を更新する。
  6. SSH_is_any_payload() が真を返すようになり、PKT_recv()に渡されてきたバッファへデータをコピーする。
  7. TeraTerm側のバッファサイズがいっぱいになった場合は、SSH端末データが残っていたとしても、PKT_recv()は返る。
  8. TeraTerm側のバッファサイズに余裕がある場合は、recv_data()を呼び出し、サーバからの受信データを取得する。
  9. TeraTermの recv() は「受信データサイズ」で返ってくる。

シーケンス制御

  SSH2接続を行うことで、通信経路を暗号化することができるのが特徴ですが、パケットの暗号化を行うためには、「鍵」が必要です。通信経路の暗号化には、共通鍵による共通鍵暗号が利用されます。公開鍵暗号のほうがセキュリティ強度は高いのですが、暗号処理に多大な時間がかかるため、SSHのような通信性能が要求されるしくみでは採用されません。SSH2では、共通鍵暗号アルゴリズムとして、AES(Advanced Encryption Standard：Rijndaelアルゴリズム)や3DES(Triple DES)などが利用されます。
  共通鍵は通信を行う二者間でのみに共有される情報であり、第三者に知られてはなりません。SSH2では、クライアントがリモートホスト（SSHサーバ）へTCP接続した時に、"Diffie-Hellman"アルゴリズムをベースとした独自の方式により、クライアントとサーバでしか知り得ないDH(Diffie-Hellman)鍵を生成します。DH鍵生成までの過程は、ネットワーク上をパケットが平文で流れるため、第三者によるパケットキャプチャが可能となっていますが、パケットを覗かれても、DH鍵は理論上第三者には分からないようになっています。
  共通鍵が生成できたあとは、その鍵を使ってパケットを暗号化します。SSH2では、送受信されるパケットは種類があるため、それぞれに「メッセージ番号」を割り振っています。RFC4250にメッセージ番号の一覧があります。メッセージ名は"SSH2_MSG_xxxx"というネーミングになっており、TTSSH内部でも同じ名前でマクロ定義しています。
  以下に、クライアントからサーバへTCP接続（ポート22番）してから、パスワード認証でユーザ認証されるまでの流れを示します。
  以下は、リモートホストのシェル上で"exit"や"logout"として、クライアントから明示的にシェルをクローズするときの、パケットの流れを示しています。
  TTSSHは、SSH2でパスワード認証のほかにkeyboard-interactive認証、publickey認証、Pageantを利用したpublickey認証をサポートしています。それぞれの認証方式でどのようなシーケンスで認証が行われるのか、以下に示します。

疑似端末のしくみ

  SSH2では、新しく「フロー制御」という概念が取り込まれています。TCPのウィンドウと同じ考え方で、「ウィンドウサイズ」というしくみを導入しています。この機能により、クライアント（Tera Term）とサーバ（SSHデーモン）間において、フロー制御が働くため、原則データが溢れることはありません。
  ところで、SSH2におけるフロー制御があるにも関わらず、大量のクリップボードをTeraTermの端末へペーストすると、サーバ側での「データの取りこぼし」が発生することがあります。この現象を理解するためには、UNIXにおける疑似端末（PTY: pseudo-terminal）の動作原理を知る必要があります。
  SSHデーモン(sshd)はクライアントに対して、あたかもサーバ側のシェルが直接接続されているかのように見せる必要があります。逆に、シェル上で動くプログラムは、文字を送りたいときは printf(3) を、文字を受け取りたい場合は scanf(3) といったCライブラリ関数を呼び出すだけでよく、その先がシリアルコンソールなのか、VGAコンソールなのか、SSH接続されているのかは、一切気にしなくてよいようになっています。
  sshdは、クライアントからの接続要求があったタイミングで、openpty(3)を使って、疑似端末の初期化を行います。疑似端末では、カーネル空間でクライアントとサーバをつなぐために、「マスターデバイスドライバ」と「スレーブデバイスドライバ」が用意されます。マスターデバイスドライバが担当するデバイスファイルは"/dev/pty[p-za-e][0-9a-f]"、スレーブデバイスドライバでは"/dev/tty[p-za-e][0-9a-f]"です。つまり、sshdはマスターデバイスドライバへアクセスすることで、シェルとお話をすることができます。シェルは、sshdからforkされて子プロセスとなり、親プロセス(sshd)が初期化済みのスレーブデバイスドライバとお話をすることになります。この疑似端末のしくみにより、sshdとシェルが接続されます。
  なお、端末ラインディシプリン(line discipline: 回線規約)というのは、たとえばプログラムが getchar() を呼び出したときに、Enterキーを押下するまで、プログラムに制御が渡りません。端末ラインディシプリンは、プログラム実行中での「行内編集」を可能とするためのモジュールです。Linuxでは、端末ラインディシプリンは /proc/tty/ldiscs で確認できます（N_TTYが標準的に利用される）。

SCP(Secure Copy)

  SCPは OpenSSH パッケージに含まれるプログラムの1つであり、SSHセッションを使ってファイルの送受信を行うことができます。SCPを利用するためには、リモートサーバに"sshd"だけではなく、"scp"コマンドも導入されている必要があります。OpenSSHのSCPは、sshd デーモンから"scp"コマンドが子プロセスとして起動されることで実現されています。なお、SCPとSFTP(Secure File Transfer Program)はまったく別のプロトコルで、互換性はなく、SCPは純粋にファイルの「送信」と「受信」しかできません。
  SSHセッション上でファイル転送を行うには、クライアントからサーバへ接続が成功したあとに、シェルオープン(pty-req)の代わりに、「外部コマンドの実行」(exec)という形式で、SCPが利用できるようになります。

・SSH2の場合

  SSH2_MSG_CHANNEL_REQUEST をサーバへ送るときに、"pty-req"の代わりに"exec"をサービス名として指定すると、外部コマンドを実行することができます。
    ユーザ認証成功後
         ----> SSH2_MSG_CHANNEL_OPEN(90)
         <---- SSH2_MSG_CHANNEL_OPEN_CONFIRMATION(91)
         ----> SSH2_MSG_CHANNEL_REQUEST(98)  サービス名"exec"で外部コマンド送信("scp -f")
         <---- SSH2_MSG_CHANNEL_WINDOW_ADJUST  (remote_window+=131072バイト)
         <---- SSH2_MSG_CHANNEL_EXTENDED_DATA  (local_window-=36バイト)
         <---- SSH2_MSG_CHANNEL_DATA(94)

・SSH1の場合

    セッションを開くときに、SSH_CMSG_EXEC_CMD をサーバへ送ると、外部コマンドを実行することができます。

・外部コマンドの書式

  * "scp [-v] [-r] [-p] [-d] -t ファイル名"　ローカルからリモートへのコピー
  * "scp [-v] [-r] [-p] [-d] -f ファイル名"　リモートからローカルへのコピー
     -v verbose
     -r リカーシブ
     -p タイムスタンプ保持
     -d ディレクトリ
     -t Local-to-Remoteへコピー
     -f Remote-to-Localへコピー

・データ転送

    外部コマンドの送信が完了したあとに、ファイルの内容を送信および受信することができます。
    １．送信の流れ
      ・"Tタイムスタンプ 0 タイムスタンプ 0"を送信（オプション）
      ・"C0666 サイズ ファイル名"を送信
      ・ファイルの内容を送信
      ・セッションクローズ

    ２．受信の流れ
      ・"Tタイムスタンプ 0 タイムスタンプ 0"を受信（オプション）
      ・0を送信
      ・"C0666 サイズ ファイル名"を受信
      ・0を送信
      ・ファイルの内容を受信
      ・ファイルのタイムスタンプを設定（オプション）
      ・0を送信
      ・セッションクローズ

・注意事項

    ファイル名にディレクトリが含まれるときは、パスの区切りは「/」となります。「\」は受け付けないので、変換が必要です。

X11転送

  X11転送(X11 port forwarding)は、SSHサーバ上でXウィンドウアプリケーションを起動し、アプリケーションのGUI画面をTera Termが動作しているコンソールPCに飛ばすしくみです。このしくみを使うと、SSHセッション上で"xeyes"や"firefox"、"xemacs"などのソフトウェアを動かすことができるようになります。なお、コンソールPC上には、Xming(http://sourceforge.net/projects/xming/)などのXサーバをあらかじめ用意しておく必要があります。
  下図にX11転送のフローを示します。図を見ると分かるように、Tera Term(TTSSH)はXアプリケーションとXサーバをつなぐ橋渡しの役目を持ちます。このようなTera Termのことを"Redirector"や"Port forwarder"、"TCP proxy"と呼びます。
  X11転送を利用するためには、Tera TermおよびSSHサーバの双方に事前設定が必要です。まず、Tera Termのほうはteraterm.iniに下記の設定が必要です。
[TTSSH]
DefaultForwarding=X
  SSHサーバのほうは、OpenSSHを例に挙げると、"sshd_config"に下記の設定が必要です。デフォルトは"no"になっているため、通常はデフォルトではX11転送が使えません。
X11Forwarding=yes
  Tera TermはX11転送が有効であると、spec.typeに"FWD_REMOTE_X11_TO_LOCAL"を設定します。これはSSHサーバ側からTera Term側に向かって、X11転送を行うことを意味します。Tera Termは、リモートホストにSSH接続する際、セッションオープン後の"SSH2_MSG_CHANNEL_OPEN_CONFIRMATION"において、X11転送の初期化を行います。
    if (c->type == TYPE_SHELL) {
        // ポートフォワーディングの準備 (2005.2.26, 2005.6.21 yutaka)
        // シェルオープンしたあとに X11 の要求を出さなくてはならない。(2005.7.3 yutaka)
        FWD_prep_forwarding(pvar);
        FWD_enter_interactive_mode(pvar);
    }
  FWD_prep_forwarding()では、"x11-req"サービス名と"MIT-MAGIC-COOKIE-1"をSSHサーバに送信し、SSHサーバ側のX11転送の初期化を促します。SSH接続時にX11の初期化が完了すると、SSHサーバ側に環境変数"DISPLAY"が自動的に設定されます。
# echo $DISPLAY
DISPLAY=localhost:10.0
  ここまで準備が整うと、SSHサーバ上でXアプリケーションを起動させることができます。XアプリケーションからXサーバ、すなわちSSHサーバからTera Termへ送られてくるデータは、SSH2_MSG_CHANNEL_DATA メッセージ形式となります。当該メッセージは FWD_received_data() で処理され、Xサーバ(TCP/6000)へ送られます。Xサーバのソケットは channel->local_socket で、ノンブロッキングモードで扱われます。そのため、一度でパケットを全部送れない場合があるため、送れなかったデータは内部バッファに溜めておく必要があります。また、channel->local_socket にパケットをsendすることにより、FD_WRITE メッセージが発生し、write_local_connection_buffer() が呼び出されます。ここでは、前回送れなかったデータがあれば、内部バッファから取り出し、再度Xサーバへの送信を試みます。
  反対に、Xサーバ、すなわちX11の画面上で何らかの操作が行われた場合、Tera TermからSSHサーバにデータを送信する必要があります。このとき、Tera Termへは FD_READ メッセージが発生し、read_local_connection() が呼び出されます。ここでは、Xサーバから送られてきたデータを SSH2_MSG_CHANNEL_DATA メッセージ形式に載せて、SSHサーバへ送ります。

マクロ言語の設計と実装

概要

  Tera Termのマクロスクリプトは、BASIC風の言語仕様となっています。BisonやFlexといったしくみは利用しておらず、力業的な独自の構文解析（再帰的下降法）により実装されています。そのため、本格的なスクリプト言語としての記述はできない側面があります。

ファイルの読み込み

  ttpmacro.exeの起動時に、マクロファイル(.ttl)が一括してバッファへ読み込まれます。

  • OnInitDialog()#ttmmain.cpp -> InitTTL() -> InitBuff() -> LoadMacroFile()

  初めて読み込まれるマクロファイルの全内容は Buff[0] # ttmbuff.c に格納されます。この時点で、ファイルの内容は一括して読み込まれるため、マクロ実行中はファイルを削除してしまっても問題はありません。ただし、"include"で別のファイルを読み込む場合は、includeを実行する時点で、include対象となるファイルの読み込みが発生します。
#define MAXNESTLEVEL 10     /* 扱えるファイル数（includeは9つまで）*/

static int INest;     /* 現在のネスト位置 */
static HANDLE BuffHandle[MAXNESTLEVEL];   /* GlobalAlloc()によるバッファ */
static PCHAR Buff[MAXNESTLEVEL];          /* バッファ領域 */
static BINT BuffLen[MAXNESTLEVEL];        /* ファイルサイズ（バッファサイズ） */
static BINT BuffPtr[MAXNESTLEVEL];        /* バッファのオフセット（読み込み位置）*/

マクロエンジン

  マクロ処理はアイドルループ OnIdle()#ttmmain.cpp で行われます。アイドルループでは TTLStatus 変数により、マクロエンジンの動作を変えています。通常の実行状態は IdTTLRun がセットされています。以下に、動作一覧を示します。

条件 | 処理
TTLStatus==IdTTLEnd | マクロプログラムを終了する
送信データがある場合（OutLen > 0） | Tera Term本体へデータを送る
TTLStatus==IdTTLRun | 一行ずつマクロを実行する
TTLStatus==IdTTLWait | ウェイトする（'wait'コマンド）
TTLStatus==IdTTLWaitLn | ウェイトする（'waitln'コマンド）
TTLStatus==IdTTLWaitNL | 一行受信する（'recvln'コマンド）
TTLStatus==IdTTLWait2 | 文字列を待つ（'waitrecv'コマンド）

インタープリタ処理

  アイドルループから Exec()#ttl.c が定期的に呼び出される度に、マクロファイルが一行ずつ処理されてゆきます。GetNewLine() では、バッファから一行分を取り出し、LineBuff[]#ttmparse.c へ格納します。行の終わりかどうかは、「ASCIIコードが0x20未満で、かつタブ(0x09)以外」のコードが出現したタイミングで判定しています。先頭の空白やタブは無視されます。セミコロン(;)が出現すると、以降の処理をスキップするため、コメントは行の途中でも付けられることになります。
char LineBuff[MaxLineLen];      /* 1つの行は500バイトまで格納可能 */
WORD LinePtr;       /* バッファオフセット */
WORD LineLen;       /* バッファサイズ */
  Exec()から呼ばれる ExecCmnd() で、字句解析を行います。字句解析は単純な文字列検索であり、LineBuff[]を1バイトずつ参照していきます。大まかな処理の流れは以下のとおりです。

  1. endwhileの判定
  2. break処理
  3. endifの判定
  4. elseの判定
  5. マクロコマンドの実行
  6. 識別子の判定
  7. 文法エラー（上記のいずれでもない場合）

  マクロコマンドかどうかは、GetReservedWord()で判別しています。_stricmp()で比較しているので、アルファベットの大文字・小文字は区別されません(case-insensitive)。マクロコマンドの場合は、TTLxxx() の関数を呼び出します。
  識別子の判定は、GetIdentifier() で行います。アルファベット(a-z, A-Z)および数値(0-9)、アンダースコア(_)から構成されるトークンを切り出します。トークンは32文字までです。トークンは「変数」として扱われます。左辺値に変数が来る場合は、「変数への代入」しかありえないので、その直後に「イコール(=)」があるかどうかを調べます。
  イコール以降の判定処理は、以下の順番となります。

  1. 文字列の判定
  2. 計算式の判定

  文字列かどうかは GetString() で判定します。文字列は’か”でクォートされているため、取り出すのは容易です。
  計算式の判定は、GetExpression() で行います。ここでは再帰的下降法により、構文解析されます。
  左辺値が定義済みの変数かどうかは CheckVar() でチェックし、数値もしくは文字列をセットします。そうではない場合は NewStrVar() で、新しい変数として登録します。

キャレット制御

概要

  ユーザが端末上でキーボード入力を行うと、カーソルが移動しますが、サーバからのエスケープシーケンスにより、キーボード入力なしにカーソルを移動させる必要があります。また、ウィンドウが非アクティブ状態の場合においても、カーソルを表示させることにより、ブロードキャストモードにおいて、複数端末の同時操作性を向上させています。

システムキャレット

  Tera Termにおけるカーソル描画には、システムキャレットを利用しています。Tera Termで使用されているシステムキャレットを制御するAPIを以下に示します。

  • CreateCaret
  • DestroyCaret
  • GetCaretBlinkTime
  • HideCaret
  • SetCaretBlinkTime
  • SetCaretPos
  • ShowCaret

  CreateCaretのドキュメントによると、
システムは 1 つのキューにつき 1 つのキャレットを提供します。ウィンドウが
キーボードフォーカスを備えているとき、またはアクティブな状態のときにだけ、
キャレットを作成するべきです。また、キーボードフォーカスを失ったり非アク
ティブになる前に、キャレットを破棄するべきです。
とあるため、ウィンドウがアクティブになったタイミングで CreateCaret() を呼び出し、フォーカスが外れ、非アクティブになるタイミングで DestroyCaret() を呼び出す必要があることを意味しています。
  キャレットの表示は CaretOn()#vtdisp.c で、消去は CaretOff()#vtdisp.c で実装されています。CaretOn()やCaretOff()が呼び出されるタイミングは、エスケープシーケンス処理 VTParse() の箇所以外にも、マウスボタンを押したときやウィンドウのリサイズを行っているときなどがあります。

非アクティブ時のカーソル表示

  ウィンドウが非アクティブの場合は、カーソルが消滅します。Windowsの上ではユーザが操作できうるウィンドウは1つであるため、システムキャレットも1つのみ用意されています。通常のオペレーションにおいては、この動作で問題がありません。
  しかし、ブロードキャストモードを利用する場合、非アクティブのTera Termウィンドウに対して、コマンドを投入することになります。特に、viなどで複数の端末を同時操作するときは、カーソルが消えていると不都合があります。
  そこで、ウィンドウが非アクティブの場合においても、カーソルを描画するようにしています。ただし、システムキャレットは使えないので、自前でカーソルを描画する必要があります。Tera Termのウィンドウが非アクティブの場合においても、リモートホストから送られてくるエスケープシーケンスを処理するためにメインエンジンは動いており、常にカーソル位置は更新されています。現在のカーソル位置は、CursorXとCursorYに設定されています。
  非アクティブ時のカーソル表示は CaretKillFocus() で行っています。このときに表示されるカーソルを「ポリゴンカーソル」と呼んでいます。ts.VTColor[0] は Text color です。非アクティブ状態でカーソル位置が更新されるときは、以前に描いたカーソルを消す必要があるので、そのときは ts.VTColor[1] で表される Background color で再描画することで、以前のカーソルを消去しています。
  Background colorでポリゴンカーソルを描画すると、ちょうどそのとき背景にあった文字の一部が欠けることがあります。そのため、その文字の再描画を行う必要があり、UpdateCaretKillFocus() で実現しています。当該関数では InvalidateRect() で WM_PAINT を送ることにより、文字の再描画を促しています。
void CaretKillFocus(BOOL show)
{
  int CaretX, CaretY;
  POINT p[5];
  HPEN oldpen;
  HDC hdc;

  DispInitDC();
  hdc = VTDC;

  CaretX = (CursorX-WinOrgX)*FontWidth;
  CaretY = (CursorY-WinOrgY)*FontHeight;

  p[0].x = CaretX;
  p[0].y = CaretY;
  p[1].x = CaretX;
  p[1].y = CaretY + FontHeight - 1;
  if (CursorOnDBCS)
    p[2].x = CaretX + FontWidth*2 - 1;
  else
    p[2].x = CaretX + FontWidth - 1;
  p[2].y = CaretY + FontHeight - 1;
  if (CursorOnDBCS)
    p[3].x = CaretX + FontWidth*2 - 1;
  else
    p[3].x = CaretX + FontWidth - 1;
  p[3].y = CaretY;
  p[4].x = CaretX;
  p[4].y = CaretY;

  if (show) {  // ポリゴンカーソルを表示（非フォーカス時）
      oldpen = SelectObject(hdc, CreatePen(PS_SOLID, 0, ts.VTColor[0]));
  } else {
      oldpen = SelectObject(hdc, CreatePen(PS_SOLID, 0, ts.VTColor[1]));
  }
  Polyline(VTDC, p, 5);
  oldpen = SelectObject(hdc, oldpen);
  DeleteObject(oldpen);

  DispReleaseDC();
}

非アクティブ時のカーソル表示タイミング

  非アクティブ時のカーソル表示のタイミングは、いくつかのパターンがあるため、漏れなく対処しておく必要があります。表示タイミングとしては以下のとおりです。

  • ウィンドウがアクティブ(Active == TRUE)の場合は、ポリゴンキャレット描画関数(CaretKillFocus)を一切呼ばないようにする。
  • CaretOn()では、非アクティブ(Active == FALSE)の場合、ShowCaret()を呼ぶタイミングで、ポリゴンキャレット描画関数(true)を呼ぶ。
  • CaretOff()では、非アクティブ(Active == FALSE)の場合、HideCaret()を呼ぶタイミングで、ポリゴンキャレット描画関数(false)を呼ぶ。
  • IsCaretOn()の判定論理に、(!Active && (CaretStatus==0)) のORを追加する。
  • ChangeCaret()は何もしない
  • WM_KILLFOCUSされるタイミングでは、IsCaretOn()が真であれば、ポリゴンキャレット描画関数(true)を呼ぶ。
  • WM_ACTIVEされるタイミングでは、IsCaretOn()が真であれば、ポリゴンキャレット描画関数(false)を呼ぶ。

シリアルポート

概要

  Tera TermはUART(16550A)互換のシリアルポートに対応しているため、シリアルコンソールが使用できます。シリアルポートのことを、COM(Communication Port)ポートと呼ぶこともあります。OSが検出したCOMポートは、順に"COM1"、"COM2"といった名前が付けられ、アプリケーションから利用することができます。Microsoft Windows XPでは、最大256個のCOMポート（COM1～COM256）までが利用可能です。
  パソコンに搭載されるCOMポートは、せいぜい1つ、多くても2つであり、最近ではまったくCOMポートがないパソコンも存在します。そのため、USB接続によるシリアルポートを実現する「USBシリアル変換ケーブル」が発売されています。こういった製品の特徴として、OSに認識させるCOMポートの番号を、ユーザが自由に設定できるようになっています。すなわち、Tera Term見えには、2つのCOMポートがあった場合、それぞれ"COM1"、"COM2"として認識できるとは限らず、"COM1"、"COM7"といったふうに認識できるようになる必要があります。

COMポートのリストアップ

  かつてのTera Termでは、"COM1"から"COM256"までのすべてのCOMポートを、接続ダイアログにリストアップしていましたが、使い勝手がよくありませんでした。そこで、接続ダイアログを呼び出したタイミングにおいて（Tera Term起動時のみでは不十分）、OSが認識しているCOMポートを検出するようにして、必要なCOMポートのみを表示させるようにしました。その検出ロジックが、DetectComPorts()#ttcmn.c です。QueryDosDevice() APIを使用し、MS-DOSデバイス名から"COM"を探します。
    if (((h = GetModuleHandle("kernel32.dll")) != NULL) &&
        (GetProcAddress(h, "QueryDosDeviceA") != NULL) &&
        (QueryDosDevice(NULL, devicesBuff, 65535) != 0)) {
        p = devicesBuff;
        while (*p != '\0') {
            if (strncmp(p, "COM", 3) == 0 && p[3] != '\0') {
                ComPortTable[comports++] = atoi(p+3);
                if (comports >= ComPortMax)
                    break;
            }
            p += (strlen(p)+1);
        }

COMポートのフルネーム取得

  上記の処理だけでもユーザビリティは向上するのですが、さらなる欲求として、各COMポートに付けられる「フルネーム」を同時に表示したくなります。COMポートの番号とともに、フルネームも付加表示できると、さらに使い勝手がよくなることが期待されます。この課題を解決するのが、ListupSerialPort()#ttcmn.c です。

static void ListupSerialPort(LPWORD ComPortTable, int comports, char **ComPortDesc, int ComPortMax)
{
    GUID ClassGuid[1];
    DWORD dwRequiredSize;
    BOOL bRet;
    HDEVINFO DeviceInfoSet = NULL;
    SP_DEVINFO_DATA DeviceInfoData;
    DWORD dwMemberIndex = 0;
    int i;

    DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);

    bRet =
        SetupDiClassGuidsFromName(_T("PORTS"), (LPGUID) & ClassGuid, 1,
                                  &dwRequiredSize);
    if (!bRet) {
        goto cleanup;
    }

    DeviceInfoSet =
        SetupDiGetClassDevs(&ClassGuid[0], NULL, NULL, DIGCF_PRESENT | DIGCF_PROFILE);

    if (DeviceInfoSet) {
        dwMemberIndex = 0;
        while (SetupDiEnumDeviceInfo
               (DeviceInfoSet, dwMemberIndex++, &DeviceInfoData)) {
            TCHAR szFriendlyName[MAX_PATH];
            TCHAR szPortName[MAX_PATH];
            DWORD dwReqSize = 0;
            DWORD dwPropType;
            DWORD dwType = REG_SZ;
            HKEY hKey = NULL;

            bRet = SetupDiGetDeviceRegistryProperty(DeviceInfoSet,
                                                    &DeviceInfoData,
                                                    SPDRP_FRIENDLYNAME,
                                                    &dwPropType,
                                                    (LPBYTE)
                                                    szFriendlyName,
                                                    sizeof(szFriendlyName),
                                                    &dwReqSize);

            hKey = SetupDiOpenDevRegKey(DeviceInfoSet,
                                        &DeviceInfoData,
                                        DICS_FLAG_GLOBAL,
                                        0, DIREG_DEV, KEY_READ);
            if (hKey) {
                long lRet;
                dwReqSize = sizeof(szPortName);
                lRet = RegQueryValueEx(hKey,
                                       _T("PortName"),
                                       0,
                                       &dwType,
                                       (LPBYTE) & szPortName,
                                       &dwReqSize);
                RegCloseKey(hKey);
            }

            if (_strnicmp(szPortName, "COM", 3) == 0) {  // COMポートドライバを発見
                int port = atoi(&szPortName[3]);
                int i;

                for (i = 0 ; i < comports ; i++) {
                    if (ComPortTable[i] == port) {  // 接続を確認
                        ComPortDesc[i] = _strdup(szFriendlyName);
                        break;
                    }
                }
            }
        }
    }

cleanup:
    SetupDiDestroyDeviceInfoList(DeviceInfoSet);
}

バイナリ転送プロトコル

概要

パソコン通信時代に、バイナリファイルを転送するためのプロトコルが多数開発され、Tera Termではいくつかの転送方式をサポートしています。これらのプロトコルは、今となってはレガシー仕様であり、ほとんど利用されることはありません。現在では、ルータなどの組み込み機器において、ファームウェアのアップロードに使われるぐらいです。 本節では、XMODEM/YMODEM/ZMODEMに関して説明します。

仕様

XMODEMの登場は1977年とかなり古く、また仕様がシンプルであるがゆえ、オリジナルの仕様(Ward Christensen氏が開発)を改版した亜種が多数存在しました。その後、XMODEMを改良したYMODEM(Chuck Forsberg氏が開発)が登場し、さらにYMODEMの欠点を改善したZMODEM(Chuck Forsberg氏が開発)が1986年に開発されました。
このように仕様自体が、どこかの団体により規定されたわけではないため、XMODEM/YMODEM/ZMODEMの実装にはクセがあります。Tera TermがサポートするXMODEM/YMODEM/ZMODEMはベーシックなものですが、接続相手によってはうまく動かないことも多く、ユーザによるコンフィグレーションが必要となる場合があります。

階層構造

バイナリ転送プロトコルを容易に追加できるようにするため、各モジュールは階層構造になっています。
      +-------------------------------------------------------+
      |ttermpro.exe (filesys.cpp)                             |
      +-------------------------------------------------------+
      |ttpfile.dll (ttfile.c)                                 |
      +-------+--------+--------+--------+--------+-----------+
      |Kermit | XMODEM | YMODEM | ZMODEM | B-Plus | Quick-VAN |
      +-------+--------+--------+--------+--------+-----------+
たとえば、XMODEMの送信メニューを選択した場合、処理のフローは以下のようになります。
filesys.cpp: OnFileXSend() -> XMODEMStart() -> OpenProtoDlg() ->
ttfile.c: ProtoInit() ->
xmodem.c: XInit()
ZMODEMの受信メニューの処理に関しては、以下のとおりです。
filesys.cpp: OnFileZRcv() -> ZMODEMStart() -> OpenProtoDlg() ->
ttfile.c: ProtoInit() ->
zmodem.c: ZInit()

エントリポイント

いかなるプロトコルを実装しようとも、ttpfile.dllにおける関数インターフェイス（エントリポイント）が用意されていれば、容易に新規プロトコルとして組み込むことができるようになっています。エントリポイントは、ProtoInit()・ProtoParse()・ProtoTimeOutProc()・ProtoCancel()から呼び出されます。
XMODEMのエントリポイントについて、以下に示します。
関数 | 意味
XInit | 初期化
XSendPacket | ファイル送信
XReadPacket | ファイル受信
XTimeOutProc | タイムアウト処理
XCancel | キャンセル処理

ZMODEMのエントリポイントについて、以下に示します。
関数 | 意味
ZInit | 初期化
ZParse | ファイル送信
ZParse | ファイル受信
ZTimeOutProc | タイムアウト処理
ZCancel | キャンセル処理

テスト手法

  バイナリ転送プロトコルはシリアル回線で利用されることが多いのですが、最近のPCは、シリアルポートが搭載されていないため、シリアル接続でのテストを行うことが難しくなっています。そこで、com0comというNull-modem emulatorを利用すると、1つのPC内で仮想的に2つのCOMポートを生成し、Tera Term同士、Tera Termと別ターミナルソフト同士で、シリアル通信を行うことができます。

記号

  バイナリ転送プロトコルでは、ACKやCANといったキャラクタ表記が使われますが、これらはASCIIコード表から来ています。man 7 ascii でASCIIコード一覧が参照できます。以下に代表的な記号と値を引用します。
Oct   Dec   Hex   Char                        Oct   Dec   Hex   Char
------------------------------------------------------------------------
001   1     01    SOH (start of heading)      101   65    41    A
002   2     02    STX (start of text)         102   66    42    B
004   4     04    EOT (end of transmission)   104   68    44    D
006   6     06    ACK (acknowledge)           106   70    46    F
025   21    15    NAK (negative ack.)         125   85    55    U
030   24    18    CAN (cancel)                130   88    58    X

XMODEM

XMODEMは、ファイルのデータを一定のサイズ（128バイトおよび1024バイト）に分割し、ブロックごとにACKを確認しながら、送信を行うプロトコルです。ブロック単位で、毎回ACKを確認するため、転送速度は速くはありませんが、実装がシンプルとなります。
最後のブロックが一定のサイズに満たない場合は、満たすようにCPMEOF(0x1A)がパディングされます。すなわち、データを送ると、かならずデータのサイズが一定のサイズの倍数となり、末尾にCPMEOFが付加される場合があるということです。そのため、ファイルの送信に完全性を求める場合は、XMOMDEは使えません。なお、CPMEOFというのは、MS-DOSの前身であるCP/MというOSにおいて、テキストファイルの終端(EOF)を表す値のことです。
  XMODEMのプロトコルについては、下記サイトが参考になります。

  • XMODEM - Wikipedia

  teraterm.ini で XmodemLog エントリを有効にすると、通信ログを採取することができます。通信ログファイルは、ttermpro.exe と同じディレクトリに"XMODEM.LOG"という名前で生成されます。
; XMODEM log
XmodemLog=on
  簡単な例として、Tera Term(COM10)からRLogin(COM11)に対して、67バイトのファイルを送信した場合の通信ログを示します。「<<<」行はTera Termがホストから受信したデータで、「>>>」行はTera Termが送信したデータです。
<<<
15                                                  .

>>>
01 01 FE 23 0D 0A 23 20 6B 6E 6F 77 6E 5F 68 6F     ...#..# known_ho
73 74 73 20 66 69 6C 65 20 66 6F 72 20 54 54 53     sts file for TTS
53 48 28 41 6E 20 53 53 48 20 45 78 74 65 6E 73     SH(An SSH Extens
69 6F 6E 20 74 6F 20 54 65 72 61 20 54 65 72 6D     ion to Tera Term
29 0D 0A 23 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     )..#............
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A EC                                         ....

<<<
06                                                  .

>>>
04                                                  .

<<<
06
  上記ログの意味は以下のとおりです。
  1. NAK受信(15)
  2. ブロックデータの送信
  3. ACK受信(06)
  4. EOTの送信(04)
  5. ACK受信(06)
  ブロックデータは、「ヘッダ(3byte)＋データ(128byte)＋CRC(1byte)」から構成されます。この例では、送信データが128byte未満なので、パディングとしてCPMEOF(0x1A)で埋められています。

  次はもう少し大きめのサイズ(1772byte)のデータを送信してみます。(1772+127)/128=14 で、14回ブロック転送されるはずです。下記に通信ログを示します。ヘッダの第2バイトがブロック番号（1オリジン）であり、1(0x01)～14(0x0E)まで増加していることが分かります。最後のブロックは128バイトに収まるように、CPMEOFがパディングとして付加されています。
  このようにXMODEMによる通信では、送信後ファイルの末尾にゴミが付いたように見えるので、厳密にはファイルが壊れます。
<<<
15                                                  .

>>>
01 01 FE 3B 20 73 61 6D 70 6C 65 20 6D 61 63 72     ...; sample macr
6F 20 6F 66 20 54 65 72 61 20 54 65 72 6D 0D 0A     o of Tera Term..
3B 0D 0A 3B 20 46 69 6C 65 3A 20 73 63 72 65 65     ;..; File: scree
6E 63 61 70 74 75 72 65 2E 74 74 6C 0D 0A 3B 20     ncapture.ttl..;
44 65 73 63 72 69 70 74 69 6F 6E 3A 20 63 61 70     Description: cap
74 75 72 65 20 73 63 72 65 65 6E 20 63 6F 6E 74     ture screen cont
65 6E 74 73 20 61 6E 64 20 77 72 69 74 65 20 74     ents and write t
6F 20 66 69 6C 65 0D 0A 3B 20 45 6E 76 69 72 6F     o file..; Enviro
6E 6D 65 F4                                         nme.

<<<
06                                                  .

>>>
01 02 FD 6E 74 3A 20 67 65 6E 65 72 69 63 0D 0A     ...nt: generic..
3B 20 55 70 64 61 74 65 3A 20 32 30 30 37 2F 31     ; Update: 2007/1
31 2F 32 35 2C 20 31 32 2F 35 2C 20 32 30 30 38     1/25, 12/5, 2008
2F 30 31 2F 33 30 0D 0A 3B 20 41 75 74 68 6F 72     /01/30..; Author
3A 20 49 57 41 4D 4F 54 4F 20 4B 6F 75 69 63 68     : IWAMOTO Kouich
69 20 28 64 6F 64 61 29 2C 20 59 75 74 61 6B 61     i (doda), Yutaka
20 48 69 72 61 74 61 0D 0A 3B 20 54 69 70 73 3A      Hirata..; Tips:
0D 0A 3B 20 20 20 49 74 20 69 73 20 72 65 63 6F     ..;   It is reco
6D 6D 65 CA                                         mme.

<<<
06                                                  .

>>>
01 03 FC 6E 64 65 64 20 74 68 61 74 20 79 6F 75     ...nded that you
20 77 69 6C 6C 20 61 64 64 20 69 6E 20 74 68 65      will add in the
20 66 6F 6C 6C 6F 77 69 6E 67 20 65 6E 74 72 79      following entry
0D 0A 3B 20 20 20 69 6E 20 60 4B 45 59 42 4F 41     ..;   in `KEYBOA
52 44 2E 43 4E 46 27 20 66 69 6C 65 20 62 65 63     RD.CNF' file bec
61 75 73 65 20 79 6F 75 20 63 61 6E 20 63 61 70     ause you can cap
74 75 72 65 20 79 6F 75 72 20 73 63 72 65 65 6E     ture your screen
0D 0A 3B 20 20 20 61 74 20 6F 6E 65 27 73 20 66     ..;   at one's f
69 6E 67 9C                                         ing.

                    :
                    :
                    :

<<<
06                                                  .

>>>
01 0E F1 73 70 72 69 6E 74 66 20 22 73 63 72 65     ...sprintf "scre
65 6E 63 61 70 74 75 72 65 5F 25 73 25 73 25 73     encapture_%s%s%s
2D 25 73 25 73 25 73 2E 74 78 74 22 20 44 61 74     -%s%s%s.txt" Dat
65 59 20 44 61 74 65 4D 20 44 61 74 65 44 20 54     eY DateM DateD T
69 6D 65 48 20 54 69 6D 65 4D 20 54 69 6D 65 53     imeH TimeM TimeS
0D 0A 66 69 6C 65 6E 61 6D 65 20 3D 20 69 6E 70     ..filename = inp
75 74 73 74 72 0D 0A 72 65 74 75 72 6E 0D 0A 1A     utstr..return...
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 75                                         ...u

<<<
06                                                  .

>>>
04                                                  .

<<<
06

YMODEM

  YMODEMは、XMODEMを改良したプロトコルです。XMODEMとの違いはいくつかありますが、大きな違いの1つとして、ファイル情報が送れるということです。YMODEMでは、ファイル名やファイルサイズをホストに知らせることができるので、送信したファイルの末尾からCPMEOFを除去することができます。
  YMODEMのプロトコルについては、下記サイトが参考になります。

  • YMODEM - Wikipedia

  teraterm.ini で YmodemLog エントリを有効にすると、通信ログを採取することができます。通信ログファイルは、ttermpro.exe と同じディレクトリに"YMODEM.LOG"という名前で生成されます。
; YMODEM log
YmodemLog=on
  簡単な例として、Tera Term(COM10)からRLogin(COM11)に対して、67バイトのファイルを送信した場合の通信ログを示します。「<<<」行はTera Termがホストから受信したデータで、「>>>」行はTera Termが送信したデータです。
<<<
43                                                  C

>>>
02 00 FF 73 73 68 5F 6B 6E 6F 77 6E 5F 68 6F 73     ...ssh_known_hos
74 73 00 36 37 20 31 31 31 36 32 32 30 30 31 30     ts.67 1116220010
30 20 31 30 30 36 34 34 00 00 00 00 00 00 00 00     0 100644........
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 1B 08                                      .....

<<<
06 43                                               .C

>>>
02 01 FE 23 0D 0A 23 20 6B 6E 6F 77 6E 5F 68 6F     ...#..# known_ho
73 74 73 20 66 69 6C 65 20 66 6F 72 20 54 54 53     sts file for TTS
53 48 28 41 6E 20 53 53 48 20 45 78 74 65 6E 73     SH(An SSH Extens
69 6F 6E 20 74 6F 20 54 65 72 61 20 54 65 72 6D     ion to Tera Term
29 0D 0A 23 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     )..#............
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A     ................
1A 1A 1A 6D 7A                                      ...mz

<<<
06                                                  .

>>>
04                                                  .

<<<
06 43                                               .C

>>>
02 00 FF 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00                                      .....

<<<
06
  上記ログの意味は以下のとおりです。
  1. 'C'（送信要求）受信(43)
  2. ブロック0（ファイル情報）の送信
  3. ACK受信(06)
  4. 'C'（送信要求）受信 (43)
  5. ブロック1の送信
  6. ACK受信 (06)
  7. EOTの送信 (04)
  8. ACK受信(06)
  9. 'C'（送信要求）受信 (43)
  10. ブロック0（オールゼロ）の送信
  11. ACK受信(06)

ZMODEM

TBD

KERMIT

  KERMIT（カーミット：セサミストリートに登場するカエルのマペット）は、1981年にコロンビア大学で開発されたファイル転送プロトコルであり、現在はカーミットプロジェクトによりメンテナンスされています。下記のサイトから仕様書が入手できます。

  • The Kermit Project

  上記サイトでは、ソースコードも配布されており、様々なプラットフォームに実装されています。実装の名称としては、C-KermitやE-Kermit、Kermit95などがあります。
  teraterm.ini で KmtLog エントリを有効にすると、通信ログを採取することができます。通信ログファイルは、ttermpro.exe と同じディレクトリに"KERMIT.LOG"という名前で生成されます。
; Kermit log
KmtLog=on
  KERMITは元々低速なシリアル通信を想定しているため、一度に送れるデータサイズはせいぜい94バイトです。ただし、拡張オプションで数千バイトのデータを扱うことはできますが、クライアントとサーバの両方が当該機能をサポートしている必要があります。
  パケットのフォーマットは基本形式と拡張形式があり、仕様書の「Appendix I Packet Format and Types」に分かりやすい図解があります。下記に引用します。
  以下は基本形式です。94バイトまでしか扱えません。
Basic Kermit Packet Layout
       |<------Included in CHECK------>|
       |                               |
+------+-----+-----+------+------ - - -+-------+
| MARK | LEN | SEQ | TYPE | DATA       | CHECK |<terminator>
+------+-----+-----+------+------ - - -+-------+
             |                                 |
             |<--------LEN-32 characters------>|

  MARK   パケットの先頭。CTRL-A(0x01)が入る。
  LEN    パケットサイズ+32。"LEN+2"バイトが全体サイズとなる。
  SEQ    「シーケンス番号+32」の剰余64。シーケンス番号は0～63まで。
  TYPE   大文字アルファベットでパケットの種別を表す。
  DATA   データ
  CHECK  加算チェックサム。1,2,3バイトのいずれかの形式を選べる。
  <terminator>   制御コード
  以下は拡張形式です。
Kermit Extended Packet Layout
       |<-------------------------Included in CHECK------------->|
       |                                                         |
       |<-------Included in HCHECK------->|                      |
       |                                  |                      |
+------+-----+-----+------+-------+-------+--------+----- - - - -+-------+
| MARK |     | SEQ | TYPE | LENX1 | LENX2 | HCHECK | DATA        | CHECK |
+------+-----+-----+------+-------+-------+--------+----- - - - -+-------+
        blank                                      |                     |
                                                   |<------------------->|
                    LX1=LENX1-32, LX2=LX2-32 95 x LX1 + LX2 chars
HCHECK is a single-character type 1 checksum
  拡張形式では94バイト以上のデータを一度に送れるようにするため、データサイズを表現する領域が2バイトに増えています。基本形式の"LEN"は常にゼロです（32を加算するので、ASCIIコードの空白になる）。また、ヘッダサイズが3バイト増えており、ヘッダ用のチェックサムが追加されています。

     下記は初期文字列です。
Initialization String
1         2      3       4       5       6       7       8       9       10
+-------+-------+-------+-------+-------+-------+-------+-------+-------+- -
| MAXL  | TIME  | NPAD  | PADC  | EOL   | QCTL  | QBIN  | CHKT  | REPT  |
+-------+-------+-------+-------+-------+-------+-------+-------+-------+- -
     10           CAPAS+1  CAPAS+2  CAPAS+3
- --+-------+ - -+--------+--------+--------+- -
    | CAPAS ... 0| WINDO  | MAXLX1 | MAXLX1 |
- --+-------+-  -+--------+--------+--------+- -

MAXL  Maximum length (0-94) +32
TIME  Timeout, seconds (0-94) +32
NPAD  Number of pad characters (0-94) +32
EOL   Packet terminator (0-63) +32
QCTL  Control prefix, literal
QBIN  8th bit prefix, literal
CHKT  Block check type {1,2,3}, literal
REPT  Repeat count prefix, literal
CAPAS Extendable capabilities mask, ends when value-32 is even
WINDO Window size (0-31) +32
MAXLX1
      High part of extended packet maximum length (int(max/95)+32)
MAXLX2
      Low part of extended packet maximum length (mod(max,95)+32)
  下記はパケット種別です。
Packet Types
Y   Acknowledgment (ACK). Data according to what kind of packet is being acknowledged.
N   Negative Acknowledgment (NAK). Data field always empty.
S   Send Initiation. Data field contains unencoded initialization string. Tells receiver to expect files. ACK to this packet also contains unencoded initialization string.
I   Initialize. Data field contains unencoded initialization string. Sent to server to set parameters prior to a command. ACK to this packet also contains unencoded initialization string.
F   File Header. Indicates file data about to arrive for named file. Data field contains encoded file name. ACK to this packet may contain encoded name receiver will store file under.
X   Text Header. Indicates screen data about to arrive. Data field contains encoded heading for display.
A   File Attributes. Data field contains unencoded attributes. ACK may contain unencoded corresponding
agreement or refusal, per attribute.
D   Data Packet. Data field contains encoded file or screen data. ACK may contain X to interrupt sending this file, Z to interrupt entire transaction.
Z   End of file. Data field may contain D for Discard.
B   Break transmission.
E   Error. Data field contains encoded error message.
R   Receive Initiate. Data field contains encoded file name.
C   Host Command. Data field contains encoded command for host's command processor.
K   Kermit Command. Data field contains encoded command for Kermit command processor.
T   Timeout psuedopacket, for internal use.
Q   Block check error psuedopacket, for internal use.
G   Generic Kermit Command. Data field contains a single character subcommand, followed by zero or more
    length-encoded operands, encoded after formation:
    I Login [<%user[%password[%account]]>]
    C CWD, Change Working Directory [<%directory[%password]>]
    L Logout, Bye
    F Finish (Shut down the server, but don't logout).
    D Directory [<%filespec>]
    U Disk Usage Query [<%area>]
    E Erase (delete) <%filespec>
    T Type <%filespec>
    R Rename <%oldname%newname>
    K Copy <%source%destination>
    W Who's logged in? [<%user ID or network host[%options]>]
    M Send a short Message <%destination%text>
    H Help [<%topic>]
    Q Server Status Query
    P Program <%[program-filespec][%program-commands]>
    J Journal <%command[%argument]>
    V Variable <%command[%argument[%argument]]>


MACRO Help Index

MACRO for Tera Term

Copyright (C) 1994-1998 T. Teranishi
(C) 2004-2021 TeraTerm Project
All Rights Reserved.

MACRO (TTPMACRO.EXE) は Tera Term 用マクロ実行プログラムです。マクロ言語 "Tera Term Language (TTL)" によって、Tera Term を制御し、オートダイアル、オートログインなどの機能を実現することができます。

使い方
  • マクロ実行法
  • コマンドライン
  • "TTL" ファイルを MACRO に関連付ける方法
マクロ言語 "Tera Term Language (TTL)"
TTL コマンドリファレンス
補足説明


マクロ実行法

TTPMACRO.EXE は TTERMPRO.EXE があるディレクトリに置かれていなければなりません。
マクロファイルを実行するには、2通りの方法があります。

1) Tera Term からマクロを実行する。

Tera Term の [Control] Macro コマンドを実行してください。すると、MACRO が起動し、マクロファイル (*.TTL) を選択するダイアログボックスが現れるので、実行したいマクロファイルを選択してください。

2) MACRO を直接起動し、マクロを実行する。 (Tera Term はマクロから起動。)

TTPMACRO.EXE を起動するときのコマンドライン(ショートカットのリンク先)でマクロファイル名を指定することができます。例えばマクロファイル "DIALUP.TTL" を実行したい場合、コマンドライン(ショートカットのリンク先)は、

TTPMACRO DIALUP.TTL

と指定してください。マクロファイル名の拡張子 ".TTL" は省略可能です。マクロファイル名を省略すると、MACRO起動後にマクロファイルを選択するダイアログボックスが現れます。よく使用するマクロは、アイコン(ショートカット)を作成しておくと便利です。

方法 2) で、MACRO を起動した場合、マクロコマンドconnectによって、Tera Term を起動することができます。

マクロ実行中は、「MACRO - <マクロファイル名>」というアイコンまたはダイアログボックスがあらわれます。ダイアログボックスの「Pause」/「Start」/「End] ボタンを押すとマクロを停止/再開/終了することができます。

注: ウインドウを表示しないで実行する

ウインドウを表示しないで実行するには、TTERMPRO.EXE および TTPMACRO.EXE ともに "/V" コマンドラインオプションを指定して起動します。
マクロの connect コマンドを用いて TTERMPRO.EXE が起動される場合は、connect コマンドの引数に "/V" を追加する必要があります。
タスクなどを用い、ログインしていない状態で実行するにはこのオプションが必要です。

注: マクロファイルの読み込み

マクロファイルは、一括してメモリ上に読み込まれてから、翻訳実行されます。ただし、マクロコマンドinclude は、当該コマンドが実行される度に、指定されたマクロファイルを読み込みます。ネットワーク上にあるマクロファイルを直接実行する際、ネットワークが切断されると、マクロコマンドincludeがエラーになります。


"TTL" ファイルを MACRO に関連付ける方法

注: Tera Term 4.59より、インストーラで関連付けできるようになりました。

拡張子 ".TTL" を持つマクロファイルを MACRO に関連付けるには、以下のようにしてください。

  1. エクスプローラの [表示]-[オプション] を実行する。
  2. 「ファイル タイプ」タブを選ぶ。
  3. 「追加」ボタンを押し、以下のように各項目を設定する。
    タイプの説明:		Tera Term macro files
関連付けられた拡張子:	TTL
  4. 「アクション」の「追加」ボタンを押し、各項目を以下のように設定する。
    アクション:	実行
アクションを実行するアプリケーション:
    "C:\Program Files\teraterm\TTPMACRO.EXE" "%1"
    (Tera Term Pro が C:\Program Files\teraterm にインストールされている場合)
  5. 開かれているダイアログボックスの「OK」ボタンをすべて押す。


マクロ言語 "Tera Term Language (TTL)"

TTL は BASIC に似た単純なインタープリタ型の言語です。はやく覚えるには、配布パッケージに含まれるマクロファイルのサンプルを参考にし、「TTL コマンドリファレンス」を読んで下さい。

  • TTLファイル
  • データ型
  • 定数の形式
  • 名前の形式
  • 変数
  • 式と演算子
  • 行の形式


TTLファイル

エンコーディング

Tera Term 4.102より、Unicode (UTF-8, UTF-16BE, UTF-16LE) に対応しました。

従来はANSI CodePageとして処理していました。

サポートするエンコーディング

encoding | support
従来どおり (ANSI CodePage) | Support
UTF-8 (with BOM) | Support
UTF-8 (without BOM) | Support
UTF-16BE (without BOM) | Not support
UTF-16LE (without BOM) | Not support
UTF-16 (with BE BOM) | Support
UTF-16 (with LE BOM) | Support
UTF-16 (without BOM = UTF-16BE) | Not support

エンコーディングの判定

Tera Termは次のように判定します。

BOMがある場合
BOMの種別からUTF-8, UTF-16BE, UTF-16LEを判定して読み込む
BOMがない場合
  • UTF-8として読み込む
  • UTF-8としてデコードできなかった場合はCP_ACP(4.102以前と同じ)として読み込む


データ型

TTL が扱えるデータの型は4種類。

整数

符号付き 32 bit、-2147483648から2147483647まで。
256個まで使用可能。
浮動小数点は未サポート。

文字列

NUL 文字を除くすべての文字を含むことができる。最大長は511文字。
256個まで使用可能。

整数配列

intdim マクロコマンドであらかじめ要素数を宣言することで整数の配列を扱うことができる。要素数は最大65536。
各要素で扱えるデータは整数と同じ。
256個まで使用可能。

文字列配列

strdim マクロコマンドであらかじめ要素数を宣言することで文字列の配列を扱うことができる。要素数は最大65536。
各要素で扱えるデータは文字列と同じ。
256個まで使用可能。


定数の形式

1) 整数型定数

10進数または "$" で始まる16進数で表現する。 浮動小数点は未サポート。

例:
    123
    -11
    $3a
    $10F

負の整数定数についての注意

2) 文字列型定数

文字列型定数を表現する方法は2つ。

a) 値となる文字列の両端を ' か " で囲む(両端とも同じ文字で)。文字列値を構成する文字は表示可能で囲み文字と異なる文字ならば何でもよい。

例:
    'Hello, world'
    "I can't do that"
    "漢字も可能"

b) 1文字を ASCII (または JIS ローマ字、Shift-JIS) コード(10進数または$で始まる16進数)で表現し、先頭に "#" をつける。 ASCII コード 0 の文字 (NUL) は文字列定数に含めることができない。

例:
    #65     文字 "A"
    #$41    文字 "A"
    #13     CR 文字

ASCII コード表

a) と b) は組み合わせることが可能。

例:
    'cat readme.txt'#13#10
    'abc'#$0d#$0a'def'#$0d#$0a'ghi'


名前の形式

変数の名前

1文字目は、アルファベット (A-Z, a-z) か "_"、2文字目以降はアルファベットか "_" か数字 (0-9)。アルファベットの大文字と小文字は区別されない。最大長は32文字。

例:
    VARIABLE
    _flag

ラベルの名前

アルファベット (A-Z, a-z) か "_" か数字 (0-9) で構成される。最大長は32文字。

例:
    label1
    100

予約語

以下に示す名前は、コマンドや演算子、システム変数として使われる。ユーザーが定義する変数やラベルの名前として使うことはできない。

コマンド
bplusrecv, bplussend, changedir... (「TTL コマンドリファレンス」を参照)
演算子
and, not, or, xor
システム変数
groupmatchstr1, groupmatchstr2, groupmatchstr3, groupmatchstr4, groupmatchstr5, groupmatchstr6, groupmatchstr7, groupmatchstr8, groupmatchstr9,
param1, param2, param3, param4, param5, param6, param7, param8, param9, params, paramcnt,
inputstr, matchstr, result, timeout, mtimeout


変数

1) ユーザー変数

ユーザーにより定義される。型および値は初めて値が代入されたときに決まる。いったん型が決まると違う型の値を代入することはできない。

2) システム変数

あらかじめ型と値が定義され、特定のコマンドと共に使用される。

名前 | 型 | 初期値 | システム変数を使用するコマンド
groupmatchstr1 ... groupmatchstr9 | 文字列 | "" | waitregex, strjoin, strsplit, strmatch strreplace
inputstr | 文字列 | "" | recvln, waitln, waitn, waitrecv, waitregex, sprintf, passwordbox, filenamebox, inputbox
matchstr | 文字列 | "" | waitregex, strmatch
param1, param2 ... param9 | 文字列 | *1 | *1
params | 文字列型配列 | *1 | *1
paramcnt | 整数 | *1 | *1
result | 整数 | 0 | bplusrecv, bplussend, checksum8file, checksum16file, checksum32file, clipb2var, connect, crc16file, crc32file, cygconnect, dirnamebox, exec, fileconcat, filecopy, filecreate, filedelete, filelock, filenamebox, fileread, filereadln, filerename, filesearch, filestat, filestrseek, filestrseek2, filetruncate, fileunlock, findfirst, findnext, getdate, getfileattr, getipv4addr, getipv6addr, getmodemstatus, getpassword, getspecialfolder, gettime, getttdir, getver, ifdefined, ispassword, kmtfinish, kmtget, kmtrecv, kmtsend, listbox, loginfo, logopen, quickvanrecv, quickvansend, recvln, foldercreate, folderdelete, foldersearch, setfileattr, setpassword, sprintf, sprintf2, str2int, strcompare, strlen, strmatch, strreplace, strscan, strsplit, testlink, var2clipb, wait, wait4all, waitevent, waitln, waitn, waitrecv, waitregex, xmodemrecv, xmodemsend, yesnobox, ymodemrecv, ymodemsend, zmodemrecv, zmodemsend
timeout | 整数 | 0 | recvln, wait, wait4all, waitevent, waitn, waitln, waitrecv, waitregex
mtimeout *2 | 整数 | 0 | recvln, wait, wait4all, waitevent, waitn, waitln, waitrecv, waitregex
  • *1 MACRO 起動時のコマンドラインパラメータの内、最初のパラメータ(マクロファイル名)が param1 および params[1] に入る。 マクロファイル名に続く 2 ～ 9 番目のパラメータは param2 ～ param9 および params[2] ～ params[9] に入る。 10 番目以降のパラメータは params[10] 以降に入る。 コマンドラインも参照。
  • *2 精度は 50 msec 程度。


式と演算子

式は、定数、変数、演算子、カッコで表現する。定数と変数は整数型のみ。
結果も整数型。関係演算子を用いた式の結果の値は、真のとき 1、偽のとき 0となる。

演算子の優先順位による分類は以下のとおり

優先順位 | 演算子 | 種類 | 注
1(最高) | not ~ | ビット否定演算子 | "~" はバージョン 4.53 以降で利用可
 | ! | 論理否定演算子 | バージョン 4.53 以降で利用可
 | + | 正の単項演算子 |
 | - | 負の単項演算子 |
2 | * | 乗算演算子 |
 | / | 除算演算子 |
 | % | 余剰演算子 | A % B の値は A / B の余り
3 | + | 加算演算子 |
 | - | 減算演算子 |
4 | >> << | 算術ビットシフト演算子 | バージョン 4.54 以降で利用可
 | >>> | 論理ビットシフト演算子 | バージョン 4.54 以降で利用可
5 | and & | ビット毎論理積演算子 | "&" はバージョン 4.53 以降で利用可
6 | xor ^ | ビット毎排他的論理和演算子 | "^" はバージョン 4.53 以降で利用可
7 | or | | ビット毎論理和演算子 | "|" はバージョン 4.53 以降で利用可
8 | < > <= >= | 関係演算子 |
9 | = == <> != | 関係演算子 | "==" と "!=" はバージョン 4.54 以降で利用可
10 | && | 論理積演算子 | バージョン 4.53 以降で利用可
11(最低) | || | 論理和演算子 | バージョン 4.53 以降で利用可

and, or, xor, not はビット演算子です。(論理演算子ではありません)

例:
    1 + 1
    4 - 2 * 3      この式の値は-2
    15 % 10        この式の値は5
    3 * (A + 2)    A は整数型の変数
    A and not B
    A <= B         A, B は整数型の変数。
                   結果の値は真のとき1、偽のとき0


行の形式

行の形式は以下の4つに分類できる。どの行も ";" 文字で始まるコメントを含むことができる。また、C言語風コメント（/* ～ */）も使用可能。
コメントは MACRO の実行に影響を与えない。
1つの行は最大1023文字まで。1023 文字を越える部分は無視される。

1) 空白行

文字がない行や空白文字 (space または tab)やコメントだけの行。 MACROの実行に影響をあたえない。

例:
    ; Tera Term Language

例:
    showtt 0
    MessageBox 'message 1' 'title 1'
    /* This is 'comment' "string"
    */ MessageBox 'message 2' 'title 2'
    closett

2) コマンド行

1つのコマンド名と0個以上のパラメータ。

書式:
    <コマンド> <パラメータ> ...

例:
    connect 'myhost'
    wait 'OK' 'ERROR'
    if result=2 goto error
    sendln 'cat'
    pause A*10
    end

3) 代入行

変数に値を代入する。

書式:
    <変数> = <定数、変数、式>

例:
    A = 33               数値の代入
    B = C                C はすでに値が代入されてなければならない。
    VAL = I*(I+1)
    A=B=C                B=C の結果 (真:1、偽:0) が A に代入される。
    Error=0<J
    Username='MYNAME'    文字列の代入

4) ラベル行

":" とその直後に続くラベル名からなる。

書式:
    :<Label>

例:
    :dial
    :100


TTL コマンドリファレンス

コマンドの分類

通信コマンド

  • bplusrecv
  • bplussend
  • callmenu (バージョン4.56以降)
  • changedir
  • clearscreen
  • closett
  • connect
  • cygconnect (バージョン 4.57以降)
  • disconnect
  • dispstr (バージョン 4.67以降)
  • enablekeyb
  • flushrecv
  • gethostname (バージョン 4.61以降)
  • getmodemstatus (バージョン 4.86以降)
  • gettitle
  • kmtfinish
  • kmtget
  • kmtrecv
  • kmtsend
  • loadkeymap
  • logautoclosemode (バージョン 4.79以降)
  • logclose
  • loginfo (バージョン 4.73以降)
  • logopen
  • logpause
  • logrotate (バージョン 4.78以降)
  • logstart
  • logwrite
  • quickvanrecv
  • quickvansend
  • recvln
  • restoresetup
  • scprecv (バージョン 4.57以降)
  • scpsend (バージョン 4.57以降)
  • send
  • sendbreak
  • sendbroadcast (バージョン 4.62以降)
  • sendfile
  • sendkcode
  • sendln
  • sendlnbroadcast (バージョン 4.62以降)
  • sendlnmulticast (バージョン 4.96以降)
  • sendmulticast (バージョン 4.62以降)
  • setbaud (バージョン 4.58以降)
  • setdebug (バージョン 4.64以降)
  • setdtr (バージョン 4.59以降)
  • setecho
  • setflowctrl (バージョン 4.94以降)
  • setmulticastname (バージョン 4.62以降)
  • setrts (バージョン 4.59以降)
  • setspeed (バージョン 4.99以降)
  • setsync
  • settitle
  • showtt
  • testlink
  • unlink
  • wait
  • wait4all (バージョン 4.63以降)
  • waitevent
  • waitln
  • waitn (バージョン 4.62以降)
  • waitrecv
  • waitregex (バージョン 4.21以降)
  • xmodemrecv
  • xmodemsend
  • ymodemrecv (バージョン 4.66以降)
  • ymodemsend (バージョン 4.66以降)
  • zmodemrecv
  • zmodemsend

制御コマンド

  • break (バージョン4.53以降)
  • call
  • continue (バージョン4.77以降)
  • do, loop (バージョン4.56以降)
  • end
  • execcmnd
  • exit
  • for, next
  • goto
  • if, then, elseif, else, endif
  • include
  • mpause (バージョン4.27以降)
  • pause
  • return
  • until, enduntil (バージョン4.56以降)
  • while, endwhile

文字列操作コマンド

  • code2str
  • expandenv (バージョン4.71以降)
  • int2str
  • regexoption (バージョン4.78以降)
  • sprintf (バージョン4.52以降)
  • sprintf2 (バージョン4.62以降)
  • str2code
  • str2int
  • strcompare
  • strconcat
  • strcopy
  • strinsert (バージョン4.67以降)
  • strjoin (バージョン4.67以降)
  • strlen
  • strmatch (バージョン4.59以降)
  • strremove (バージョン4.67以降)
  • strreplace (バージョン4.67以降)
  • strscan
  • strspecial (バージョン4.67以降)
  • strsplit (バージョン4.67以降)
  • strtrim (バージョン4.67以降)
  • tolower (バージョン4.53以降)
  • toupper (バージョン4.53以降)

ファイル操作コマンド

  • basename (バージョン4.69以降)
  • dirname (バージョン4.69以降)
  • fileclose
  • fileconcat
  • filecopy
  • filecreate
  • filedelete
  • filelock (バージョン4.74以降)
  • filemarkptr
  • fileopen
  • filereadln
  • fileread (バージョン4.48以降)
  • filerename
  • filesearch
  • fileseek
  • fileseekback
  • filestat (バージョン4.66以降)
  • filestrseek
  • filestrseek2
  • filetruncate (バージョン4.67以降)
  • fileunlock (バージョン4.74以降)
  • filewrite
  • filewriteln
  • findfirst, findnext, findclose
  • foldercreate (バージョン4.69以降)
  • folderdelete (バージョン4.69以降)
  • foldersearch (バージョン4.69以降)
  • getdir
  • getfileattr (バージョン4.69以降)
  • makepath
  • setdir
  • setfileattr (バージョン4.69以降)

パスワードコマンド

  • delpassword
  • getpassword
  • ispassword (バージョン4.75以降)
  • passwordbox
  • setpassword (バージョン4.75以降)

その他のコマンド

  • beep
  • bringupbox (バージョン4.78以降)
  • checksum8 (バージョン4.78以降)
  • checksum8file (バージョン4.78以降)
  • checksum16 (バージョン4.78以降)
  • checksum16file (バージョン4.78以降)
  • checksum32 (バージョン4.78以降)
  • checksum32file (バージョン4.78以降)
  • closesbox
  • clipb2var (バージョン4.46以降)
  • crc16 (バージョン4.78以降)
  • crc16file (バージョン4.78以降)
  • crc32 (バージョン4.60以降)
  • crc32file (バージョン4.60以降)
  • exec
  • dirnamebox (バージョン4.86以降)
  • filenamebox (バージョン4.54以降)
  • getdate
  • getenv
  • getipv4addr (バージョン4.78以降)
  • getipv6addr (バージョン4.78以降)
  • getspecialfolder (バージョン4.72以降)
  • gettime
  • getttdir (バージョン4.60以降)
  • getver (バージョン4.58以降)
  • ifdefined (バージョン4.46以降)
  • inputbox
  • intdim (バージョン4.72以降)
  • listbox (バージョン4.78以降)
  • messagebox
  • random (バージョン4.27以降)
  • rotateleft (バージョン4.54以降)
  • rotateright (バージョン4.54以降)
  • setdate
  • setdlgpos
  • setenv (バージョン4.54以降)
  • setexitcode
  • settime
  • show
  • statusbox
  • strdim (バージョン4.72以降)
  • uptime (バージョン4.81以降)
  • var2clipb (バージョン4.46以降)
  • yesnobox


bplusrecv

B-Plus プロトコルでファイルを受信する。

bplusrecv

解説

B-Plus プロトコルでファイルを受信する。 受信が終わるまで次のコマンドは実行されない。 ファイルが正しく転送された場合、システム変数 result に 1 が格納される。それ以外の場合, result に 0 が格納される。


bplussend

B-Plus プロトコルでファイルを送信する。

bplussend <filename>

解説

ファイル <filename> を B-Plus プロトコルで送信する。 送信が終わるまで次のコマンドは実行されない。 ファイルが正しく転送された場合、システム変数 result に 1 が格納される。それ以外の場合、 result に 0 が格納される。

例

bplussend 'readme.txt'


callmenu

ウインドウのメニューを実行する。(バージョン4.56以降)

callmenu <menu ID>

解説

<menu ID> で指定されたメニューを実行する。ID については Keycode を参照。

例

; 表示中のスクリーンを選択
callmenu 50280

; クリップボードへコピー
callmenu 50210

; 現在のスクリーンをテキストファイルへ保存する。同梱の screencapture.ttl も参照。
; Configuration

appendmode = 1        ; 0 or 1

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

getdate header #13#10"======== %Y-%m-%d %H:%M:%S ==========================================="#13#10#13#10

if appendmode=0 then
    getdate filename "screencapture_%Y%m%d-%H%M%S.txt"
    fileopen fp filename 0
else
    fileopen fp 'screencapture.txt' 1
endif

if result <> 0 end

;select screen
callmenu 50280

mpause 500

filewrite fp header

offset = 0
do
    clipb2var buff offset
    if result > 0 filewrite fp buff
    offset = offset + 1
loop while result = 2

fileclose fp

;reset selection
callmenu 50270

end

; 漢字コードを選択する。TTX Kanji Menuのインストールが必要。
;callmenu 54010  ; [KanjiCode] Recv: Shift_JIS
;callmenu 54110  ; [KanjiCode] Send: Shift_JIS
;callmenu 54011  ; [KanjiCode] Recv: EUC-JP
;callmenu 54111  ; [KanjiCode] Send: EUC-JP
;callmenu 54012  ; [KanjiCode] Recv: JIS
;callmenu 54112  ; [KanjiCode] Send: JIS
callmenu 54013  ; [KanjiCode] Recv: UTF-8
callmenu 54113  ; [KanjiCode] Send: UTF-8
;callmenu 54014  ; [KanjiCode] Recv: UTF-8m


changedir

Tera Term の現在のディレクトリを変更する。

changedir <path>

解説

Tera Term の現在のディレクトリを <path> に変更する。

注意: setdir コマンドは MACRO の現在のディレクトリを変更する。通信コマンド(kmtsend 等)で指定されるファイル名は Tera Term の現在のディレクトリを基準にする。その他のコマンド(fileopen 等)で指定されるファイル名は MACRO の現在のディレクトリを基準にする。

補足: 通信コマンド（sendfile, kmtsend等）に指定されるファイル名は、changedirコマンドの影響を受けないため、絶対パスである必要がある。

例

changedir 'c:\'
sendfile 'd:\source\code.dat' 1


clearscreen

ウインドウの画面を消去する。

clearscreen <int>

解説

<int> が0の場合、 Tera Term の VT ウインドウの画面を消去する。
<int> が1の場合、 Tera Term の VT ウインドウのスクロールバッファーの内容と画面を消去する。
<int> が2の場合、 Tera Term の TEK ウインドウの画面を消去する。

例

clearscreen 0


closett

Tera Term を終了させる。

closett

解説

Tera Term を終了させ、 MACRO は非リンク状態に入る。
非リンク状態では、connect コマンドによって新しい Tera Term ウィンドウを開き、MACRO をそれにリンクさせることができる。

ConfirmDisconnectの設定有無に関係なく、常に TCP/IP 回線切断の確認をしない。

例

messagebox 'foo' 'val'
closett
end

参照

  • connect
  • cygconnect
  • disconnect
  • testlink
  • unlink


connect

接続する。

connect <command line parameters>

解説

MACRO が Tera Term とリンクされていない場合、Tera Term を起動してMACRO とリンクする。<command line parameters> は、Tera Term を起動する時のコマンドラインパラメータ。

MACRO が Tera Term とすでにリンクされていて、Tera Term がホストに接続されていない場合、Tera Term をコマンドライン <command line parameters> で指定されるホストに接続させる。Tera Term のコマンドラインパラメータについては、"Tera Term Pro コマンドライン"、"TTSSH コマンドライン"を参照。

MACRO が Tera Term とすでにリンクされていて、Tera Term がホストにすでに接続されている場合、このコマンドは無視される。

このコマンドの結果、リンクと接続の状態に応じて以下のうちの一つの値がシステム変数 result に格納される。

値 | 状態
0 | Tera Term とリンクされていない。
1 | ホストへの接続はされていないが、Tera Term へのリンクはされている。
2 | リンクおよび接続両方ともされている。

"connect" コマンドを実行する前にリンクと接続の状態を調べるには、"testlink" コマンドを使うことができる。

Tera Term と MACRO のリンクしていない状態では、"connect" と "cygconnect", "testlink" 以外の通信コマンドは実行できない。

接続方法

Tera Termマクロから接続する方法には、3 つの種類があります。

  • telnet接続 (port 23)
  • SSH1 および SSH2 接続 (port 22)
  • COM port 接続

telnet接続

connect 'myserver:23 /nossh /T=1'
connect 'myserver:23'

/nossh を指定することを強く推奨します。このオプションがない場合、Tera Termは teraterm.ini が最後に保存されたときと同じメソッド（telnet もしくは SSH）を使って、接続しようとします。もし、SSHを使って接続しようとするならば、connectマクロは失敗するでしょう。

/T=1 を使うことを推奨します。このオプションがない場合、Tera Term は teraterm.ini の Telnet の値にしたがって接続しようとします。もし、Telnet の値も off の場合、Tera Term は telnet ネゴシエーションをしないので、意図したとおりの通信ができないでしょう。

SSH接続

connect 'myserver /ssh'

この方法は、SSHバージョンを指定せずにSSH接続をします。

connect 'myserver /ssh /1'
connect 'myserver /ssh /2'

/1 と /2 のオプションは、SSH1およびSSH2であることを指定します。

connect 'myserver /ssh /auth=password /user=username /passwd=password'
connect 'myserver /ssh /1 /auth=password /user=username /passwd=password'
connect 'myserver /ssh /2 /auth=password /user=username /passwd=password'
connect 'myserver /ssh /auth=publickey /user=username /passwd=password /keyfile=private-key-file'
connect 'myserver /ssh /1 /auth=publickey /user=username /passwd=password /keyfile=private-key-file'
connect 'myserver /ssh /2 /auth=publickey /user=username /passwd=password /keyfile=private-key-file'
connect 'myserver /ssh /auth=challenge /user=username /passwd=password'
connect 'myserver /ssh /1 /auth=challenge /user=username /passwd=password'
connect 'myserver /ssh /2 /auth=challenge /user=username /passwd=password'

この9つの方法は、マクロからユーザ名とパスワードを渡すことにより、SSH認証ダイアログをスキップさせることができます。/auth=passwordはパスワード認証、/auth=publickeyは公開鍵認証、/auth=challengeはチャレンジレスポンス認証であることを表します。

connect 'myserver /ssh /auth=pageant /user=username'
connect 'myserver /ssh /1 /auth=pageant /user=username'
connect 'myserver /ssh /2 /auth=pageant /user=username'

この3つの方法は、マクロからユーザ名を渡すことにより、SSH認証ダイアログをスキップさせることができます。/auth=pageantはPageantを使用した認証であることを表します。

connect 'myserve /ssh /auth=password /user=username /ask4passwd'
connect 'myserver /ssh /1 /auth=password /user=username /ask4passwd'
connect 'myserver /ssh /2 /auth=password /user=username /ask4passwd'
connect 'myserver /ssh /auth=publickey /user=username /ask4passwd /keyfile=private-key-file'
connect 'myserver /ssh /1 /auth=publickey /user=username /ask4passwd /keyfile=private-key-file'
connect 'myserver /ssh /2 /auth=publickey /user=username /ask4passwd /keyfile=private-key-file'
connect 'myserve /ssh /auth=challenge /user=username /ask4passwd'
connect 'myserver /ssh /1 /auth=challenge /user=username /ask4passwd'
connect 'myserver /ssh /2 /auth=challenge /user=username /ask4passwd'

この9つの方法は、マクロからユーザ名と認証方法を渡して、ポップアップでパスワードの入力を促します。

COMポート接続

connect '/C=x'

xはCOMポート番号を表します。たとえば、COM1に接続したいのなら、 connect '/C=1' とします。

出典: http://logmett.com/forum/viewtopic.php?t=28

例

; パラメータなしで Tera Term を起動
connect ''

; 接続が成功しなかった場合、5秒でタイムアウトが発生
connect 'myserver /timeout=5'

; Tera Term を起動し、telnet セッションを開く
connect 'myserver:23 /nossh'

; Tera Term を起動し、SSH セッションを開く
connect 'myserver /ssh'

; Tera Term を起動し、SSH1 セッションを開く
connect 'myserver /ssh /1'

; Tera Term を起動し、SSH2 セッションを開く
connect 'myserver /ssh /2'

; Tera Term を起動する。SSH セッションを開き、ユーザ名とパスワードのプロンプトは表示されない。
connect 'myserver /ssh /auth=password /user=username /passwd=password'

; Tera Term を起動する。SSH1 セッションを開き、ユーザ名とパスワードのプロンプトは表示されない。
connect 'myserver /ssh /1 /auth=password /user=username /passwd=password'

; Tera Term を起動する。SSH2 セッションを開き、ユーザ名とパスワードのプロンプトは表示されない。
connect 'myserver /ssh /2 /auth=password /user=username /passwd=password'

; Tera Term を起動する。SSH セッションを開き、ユーザ名とパスワードと秘密鍵ファイルのプロンプトは表示されない。
connect 'myserver /ssh /auth=publickey/user=username /passwd=password /keyfile=private-key-file'

; Tera Term を起動する。SSH1 セッションを開き、ユーザ名とパスワードと秘密鍵ファイルのプロンプトは表示されない。
connect 'myserver /ssh /1 /auth=publickey/user=username /passwd=password /keyfile=private-key-file'

; Tera Term を起動する。SSH2 セッションを開き、ユーザ名とパスワードと秘密鍵ファイルのプロンプトは表示されない。
connect 'myserver /ssh /2 /auth=publickey /user=username /passwd=password /keyfile=private-key-file'

; Pageantを利用して、公開鍵認証で接続する。ユーザ名とパスワードと秘密鍵ファイルのプロンプトは表示されない。
connect 'myserver /ssh /auth=pageant /user=username'

; Tera Term を起動し、シリアルポート接続を開く。ポート番号は 1 から 最大値(MaxComPort) の範囲内。
connect '/C=x'

CommandLine = '111.111.11.11'
connect CommandLine

; Sample macro for Tera Term
;  Telnet login

; open Tera Term
;   command line = 'TERATERM myhost.mydomain' (telnet)
connect 'myhost.mydomain'

; set username
UsernamePrompt = 'Username:'
Username = 'MYNAME'
PasswordPrompt = 'Password:'
; get password from file
getpassword 'password.dat' 'mypassword' Password

; login
wait   UsernamePrompt
sendln Username

wait   PasswordPrompt
sendln Password

; OK, auto login complete.

; sample macro of Tera Term
;
; File: ssh2login.ttl
; Description: auto login with SSH2 protocol
; Environment: generic

username = 'nike'
hostname = '192.168.1.3'

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

msg = 'Enter password for user '
strconcat msg username
passwordbox msg 'Get password'

msg = hostname
strconcat msg ':22 /ssh /auth=password /user='
strconcat msg username
strconcat msg ' /passwd='
strconcat msg inputstr

connect msg

[test.bat]
ttpmacro.exe paramtest.ttl "192.168.3.2"
ttpmacro.exe paramtest.ttl "192.168.3.2" cal
ttpmacro.exe paramtest.ttl "192.168.3.2" uptime
ttpmacro.exe paramtest.ttl "192.168.3.2" "man ls" echo foo
ttpmacro.exe paramtest.ttl "192.168.3.2" "uname -a"
ttpmacro.exe paramtest.ttl "192.168.3.2" "cat /proc/cpuinfo"
pause

[paramtest.ttl]
if paramcnt != 3 then
    messagebox "Argument error" "ERROR"
    end
endif

prompt = 'yutaka@sai(~) '
sprintf2 var "%s:22 /2 /ssh /auth=password /user=yutaka /passwd=yutaka" param2
messagebox var "test"
connect var
wait prompt

sendln param3
wait prompt

pause 3

sendln 'exit'
pause 3

注意

  1. このページの例において斜体で表示されている値を、実際の値に置き換える必要があります。
  2. パスワードにはスペースを含むことが可能です。パスワードの中でスペースを表すには、パスワード全体を `"' で囲んでください。パスワードに " を含めるためには、連続した `"`("") を使用してください。
    ※パスワードにスペースを含むために "@" を使用する仕様は、4.63 から廃止されました。
  3. Tera Termマクロにユーザ名とパスワードを指定した場合、そのマクロファイルをプレーンテキストとして保存したのなら、セキュリティ的に安全な場所に置く必要があることを肝に銘じておいてください。
  4. ホストとの接続を終了してすぐにconnectコマンドで新しい接続を開始しようとした場合、タイミングによっては接続できない場合があります。詳しくは"切断後すぐに接続する場合の注意点"を参照してください。

参照

  • closett
  • cygconnect
  • disconnect
  • testlink
  • unlink
  • 切断後すぐに接続する場合の注意点
  • 変数


cygconnect

Cygwinへ接続する。(バージョン 4.57以降)

cygconnect [<command line parameters>]

解説

MACRO が Tera Term とリンクされていない場合、Cygwin に接続した Tera Term を起動して MACRO とリンクする。<command line parameters> は、Cygwin に接続する時に使う CygTerm のコマンドラインパラメータ。CygTerm のコマンドラインパラメータについては、"CygTerm+ コマンドライン"を参照。

MACRO が Tera Term とすでにリンクされていて、Tera Term がホストに接続されていない場合、リンクしている Tera Term を終了させた後、cygwin に接続した状態の Tera Termを 起動して MACRO とリンクする。

MACRO が Tera Term とすでにリンクされていて、Tera Term がホスト又は Cygwin にすでに接続されている場合、このコマンドは無視される。

このコマンドの結果、リンクと接続の状態に応じて以下のうちの一つの値がシステム変数 result に格納される。

値 | 状態
0 | Tera Term とリンクされていない。
1 | ホスト又は cygwin への接続はされていないが、Tera Term へのリンクはされている。
2 | リンクおよび接続両方ともされている。

"cygconnect" コマンドを実行する前にリンクと接続の状態を調べるには、"testlink" コマンドを使うことができる。

Tera Term と MACRO のリンクしていない状態では、"connect" と "cygconnect", "testlink" 以外の通信コマンドは実行できない。

例

; cygwin に接続した Tera Term を起動
cygconnect

; カレントディレクトリを C:\ に移動した状態で cygwin に接続した Tera Term を起動
cygconnect '-d C:\ -nocd -nols'

参照

  • connect
  • closett
  • disconnect
  • testlink
  • unlink
  • Cygwin Information and Installation
  • 切断後すぐに接続する場合の注意点


disconnect

Tera Term とホストの間の通信を終了させる。

disconnect [<confirm>]

パラメータ

整数 <confirm> (オプション デフォルト=非ゼロ) (バージョン 4.65 以降)
0を指定すると、TCP/IP 接続切断時の確認ダイアログを表示せずに通信を終了する。
0以外の値を指定すると、TCP/IP 接続切断時の確認ダイアログを表示する。

解説

もしこのコマンドによって Tera Term が終了しなければ、Tera Term と MACRO の間のリンクは保持される。

参照

  • closett
  • connect
  • cygconnect
  • testlink
  • unlink
  • 切断後すぐに接続する場合の注意点


dispstr

文字を端末画面に出力する。(バージョン 4.67以降)

dispstr <data1> [<data2>....]

解説

<data> が文字列型の場合、文字列をそのまま端末画面に表示する。
<data> が整数型の場合は、その値の下位バイト(0-255)を ASCII コードとして扱い、対応する文字を端末画面に表示する。

例

dispstr 'ABC'

; "ABC" を表示する。("A" の ASCII コードは65)
dispstr  65 66 67
myname='Tera Term'
dispstr 'My name is ' myname '.'

; 端末画面の表示内容をクリアする
dispstr #$1B"[2J"

; 端末画面の10行20桁目に Message と表示する
dispstr #$1B"[10;20HMessage"

; 端末画面を 100,200 に移動する
dispstr #$1B"[3;100;200t"

; Change terminal size to 80x24
dispstr #$1b"[8;24;80t"

; demo
for y 24 30
  x = 80
  while x < 100
    sprintf #$1b"[8;%d;%dt" y x
    dispstr inputstr
    x = x + 5
    pause 1
  endwhile
next

connect '/C=1'
if result == 1 then
  dispstr 'Error opening COM1'   ; 接続状態でないため、このコマンドは失敗する。
elseif result == 2 then
  dispstr 'Successfully opened COM1'
endif
end

注意

当該コマンドの出力内容はホスト側からは認識できない。そのため、当該コマンドを使用すると、端末画面の表示状態がホスト側とずれてしまい、端末画面の表示が崩れる可能性がある。

Tera Termは接続状態でないと、マクロコマンドは実行されない。


enablekeyb

Tera Term のキーボード入力を許可/禁止する。

enablekeyb <flag>

解説

<flag> の値が1の場合は許可、0の場合は禁止。
禁止にすると、マクロからのデータ送信中に、ユーザの誤入力を防ぐことができる。

例

; ユーザのキー入力を無視する
enablekeyb 0

for i 1 5
    sendln 'date'
    wait '$'
    pause 5
next

; ユーザのキー入力を許可する
enablekeyb 1

sendln 'cat > /tmp/foo.txt'
pause 10
send $4   ; CTRL+D


flushrecv

MACRO の受信バッファーの内容を消す。

flushrecv

解説

ホストから受信した文字は MACRO に転送され、MACRO の受信バッファーに保存される。
受信文字を処理するコマンド("wait" コマンド等)はそれらの文字をバッファーから読み出す。
バッファーの中の文字は受信文字を処理するコマンドがそれらを読みだすか、バッファーがあふれるか、flushrecv コマンドがバッファーの内容を消すまで保持される。

バッファーの中に古い文字がたまっているために受信文字を処理するコマンドの結果が予期しないものになることがあり、flushrecv コマンドによってそれを防ぐことができる。

参照

  • setsync


gethostname

接続先のホスト名（IPアドレス）を得る。(バージョン 4.61以降)

gethostname <strvar>

解説

Tera Term が接続しているホスト名（IPアドレス）を、文字列変数 <strvar> に格納する。

例

testlink
if result > 1 then
    gethostname hostname
    messagebox hostname result
endif


getmodemstatus

モデムの制御レジスタ値を取得する。(バージョン 4.86以降)

getmodemstatus <intvar>

解説

シリアルポートからモデム制御レジスタの値を読み出す。

<intvar> 変数は、下記の定数の組み合わせとなる。
1  CTS（ 送信可）信号がオンです。
2  DSR（ データセットレディ）信号がオンです。
4  呼び出し信号がオンです。
8  RLSD（ 受信線信号検出）信号がオンです。

読み出しに成功した場合はシステム変数 result が 0 となるが、失敗した場合は 1 となる。

例

testlink
if result=0 then
  connect '/C=1'
  pause 3
endif

getmodemstatus val

if result=0 then
  sprintf2 str "val = %d(%x)" val val
  messagebox str "Result value"
  if val & 2 > 0 then
    ; DSR信号がオン時の処理
    messagebox "DSR on" "Message"
  endif
else
  messagebox "failed" "ERROR"
endif

参照

  • setdtr
  • setrts
  • setspeed


gettitle

ウインドウタイトル文字列を得る。

gettitle <strvar>

解説

Tera Term のウィンドウタイトルを文字列変数 <strvar> に格納する。

例

gettitle titletext


kmtfinish

Kermit Finish コマンドを実行する。

kmtfinish

解説

Finish コマンドが終了するまで次のコマンドは実行されない。
Finish コマンドが正しく実行された場合、システム変数 result に1が格納される。それ以外の場合、 result に0が格納される。


kmtget

ファイルを Kermit Get コマンドで受信する。

kmtget <filename>

解説

ファイル <filename> を Kermit Get コマンドを使用してホストから受信する。
ホストは server 状態でなければならない。 受信が終わるまで次のコマンドは実行されない。
ファイルが正しく転送された場合、システム変数 result に1が格納される。それ以外の場合、 result に0が格納される。

例

kmtget'*.*'


kmtrecv

Kermit プロトコルでファイルを受信する。

kmtrecv

解説

受信が終わるまで次のコマンドは実行されない。
ファイルが正しく転送された場合、システム変数 result に1が格納される。それ以外の場合、 result に0が格納される。


kmtsend

ファイルをKermit プロトコルで送信する。

kmtsend <filename>

解説

ファイル <filename> を Kermit プロトコルで送信する。
送信が終わるまで次のコマンドは実行されない。
ファイルが正しく転送された場合、システム変数 result に1が格納される。それ以外の場合、 result に0が格納される。

例

kmtsend 'readme.txt'


loadkeymap

キーボード設定ファイルを読み込む。

loadkeymap <filename>

解説

キーボード設定ファイル <filename> を Tera Term に読み込ませる。

例

loadkeymap 'keyboard.cnf'


logautoclosemode

マクロ終了時、自動的にログ採取を停止する。(バージョン 4.79以降)

logautoclosemode <flag>

解説

<flag> の値が1の場合、マクロ終了時、自動的にログ採取を停止する。
<flag> の値が0の場合、マクロ終了時、自動的にログ採取を停止しない。

※マクロ終了後、設定情報はデフォルトに戻す。すなわち、マクロ終了時、自動的にログ採取を停止しない。

例

logautoclosemode 1
logopen 'D:\teraterm_sample.log' 0 0

; do something...

end

参照

  • logopen
  • logclose


logclose

Tera Term のログを終了する。

logclose

参照

  • logopen


loginfo

Tera Term のログ取得状態を得る(バージョン 4.73以降)

loginfo <strvar>

解説

ログを取得している場合、strvar にログファイル名が格納され、ログ取得時のフラグの状態が result に格納される。
ログを取得していない場合は result に -1 が格納される。

ログ取得時に result に格納される値は、以下の内 on になっているフラグに対応する値の合計となる。

値 | 意味
1 | バイナリフラグ
2 | アペンドフラグ
4 | プレインテキストフラグ
8 | タイムスタンプフラグ
16 | ダイアログ非表示フラグ

例

loginfo logfile

if result == -1 then
    ; ログを取得していないので、新たにログ取得を開始する
    logopen "test.log" 0 0 0 1

elseif result & 8 == 0 then
    flags = result
    ; タイムスタンプが無効なので、タイムスタンプを有効にして開きなおす。
    logclose
    logopen logfile 0 1 flags&4 1 flags&16
endif

参照

  • logopen


logopen

Tera Term のログを開始する。

logopen <filename> <binary flag> <append flag> [<plain text flag> [<timestamp flag> [<hide dialog flag> [<include screen buffer flag> [<timestamp type>]]]]]

解説

ファイル <filename> に受信した文字が書き込まれる。ログを開始したあとも次のコマンドは実行される。
ファイル名に \ を含まない場合、Tera Termのカレントディレクトリに作成される。当該ディレクトリを変更するには changedir マクロを使用する。

<binary flag> の値が0のとき、受信した漢字、改行文字は変換されてファイルに書き込まれ、エスケープシーケンスは書き込まれない。
<binary flag> の値が0以外のとき、受信した文字をすべてそのままファイルに書き込む。

<append flag> の値が0以外で、ファイル <filename> がすでに存在する場合、そのファイルに追加して書き込む。
<append flag> の値が0で、ファイル <filename> がすでに存在する場合、そのファイルは上書きされる。

<plain text flag> が 0 以外の場合、ASCII 非表示文字をログに書き込まない。
<timestamp flag> が 0 以外の場合、ログの行頭に時刻を追加する。
ただし、<binary flag> が 0 以外の場合、<plain text flag>, <timestamp flag> は両方とも無視される。バイナリログはログ再生に利用可能。 (バージョン 4.61以降)

<hide dialog flag> が 0 以外の場合、ログ転送のダイアログを表示しない。

<include screen buffer flag> が 0 以外の場合、現在の端末バッファすべてを先にファイルに書き込む。 (バージョン 4.80以降)

<timestamp type> は timestamp の形式を指定する。以下の値が指定出来る。(バージョン 4.97以降)

値 | 意味
0 | ローカルタイム
1 | UTC
2 | 経過時間 (Logging)
3 | 経過時間 (Connection)

ログファイルを開けた場合、result に 0 が格納される。開けなかった場合は 1 が格納される。(バージョン 4.62 以降)

例

connect '/C=1'

; ユーザ名を取得
getenv 'USERNAME' username
; 日時を取得
gettime timestr "%Y%m%d-%H%M%S"

; ログファイル名に日時とユーザ名を入れる。
sprintf2 filename 'console_%s_%s.log' username timestr

; カレントディレクトリを変更する
changedir 'C:\Documents and Settings\yutaka\デスクトップ'

logopen filename 0 0
logwrite 'Log start'#13#10
logwrite '*****************************************************'#13#10
logclose

end

;
; ログ採取をしながら、定型処理を連続実行させる。
;

getenv 'USERNAME' username
gettime timestr "%Y%m%d-%H%M%S"
getdir mdir
sprintf2 filename '%s\console_%s_%s.log' mdir username timestr

logopen filename 0 0

step = 0
while 1
  call show_step
  sendln 'echo do something'
  wait '$'
  pause 2
endwhile

logclose
end

:show_step
step = step + 1
gettime timestr
sprintf2 str '[%d] %s' step timestr
statusbox str 'counter'
return

参照

  • logwrite
  • logclose
  • statusbox
  • gettime


logpause

Tera Term のログを一時中断する。

logpause

解説

中断している間に受信された文字はログファイルに書き込まれない。

例

prompt = '$'

cygconnect
wait prompt

; ユーザ名を取得
getenv 'USERNAME' username
; 日時を取得
gettime timestr "%Y%m%d-%H%M%S"

; ログファイル名に日時とユーザ名を入れる。
sprintf2 filename 'd:\console_%s_%s.log' username timestr
;messagebox filename 'filename'

logopen filename 0 0
logwrite 'Log start'#13#10
sendln 'cal'
wait prompt
; ログ停止
logpause
; 以下のコマンドはログ採取されない
sendln 'date'
wait prompt
; ログ再開
logstart
sendln 'uptime'
wait prompt
logwrite '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'#13#10
logclose

end


logrotate

ログをローテートする。(バージョン 4.78以降)

logrotate 'size' '<size>'
logrotate 'rotate' <count>
logrotate 'halt'

パラメータ

'size' '<size>'
ログのサイズが<size>バイトを超えていれば、ローテーションを行う。
<size>は128以上であること。
末尾に"K"があるとキロバイト単位、"M"があるとメガバイト単位になる。
'rotate' <count>
ログファイルの世代を<count>にする。
<count>は1以上であること。
'halt'
ローテーションを停止する。

注意

  1. 事前にログファイルがオープンされている必要があります。
  2. 本コマンドは、ログのローテートの設定を行うのみで、ローテート処理が即時実行されるわけではありません。

例

; Open log
getspecialfolder str "MyDocuments"
changedir str
logopen 'teraterm_sample.log' 0 0

; Start log rotation
logrotate 'size' '32K'
logrotate 'rotate' 3

pause 600
; Stop log rotation
logrotate 'halt'

pause 600

; Close log
logclose

参照

  • logopen


logstart

中断していた Tera Term のログを再開する。

logstart

例

logpauseを参照。


logwrite

文字列をログに書き込む。

logwrite <string>

解説

文字列 <string> を Tera Term のログファイルに追加して書き込む。
このコマンドは Tera Term がログを取っている時だけ有効。ログを一時中断している時でも書き込むことができる。

空文字列の場合は syntax error となる。

例

logopenを参照。


quickvanrecv

Quick-VAN プロトコルでファイルを受信する。

quickvanrecv

解説

Quick-VAN プロトコルでファイルを受信する。
受信が終わるまで次のコマンドは実行されない。
ファイルが正しく転送された場合、システム変数 result に1が格納される。それ以外の場合、 result に0が格納される。

例

quickvansend 'readme.txt'


quickvansend

Quick-VAN プロトコルでファイルを送信する。

quickvansend <filename>

解説

ファイル <filename> を Quick-VAN プロトコルで送信する。
送信が終わるまで次のコマンドは実行されない。
ファイルが正しく転送された場合、システム変数 result に1が格納される。それ以外の場合、 result に0が格納される。

例

quickvansend 'readme.txt'


recvln

一行分の文字を受信する。

recvln

解説

ホストから一行分の文字を受信し、システム変数 inputstr に格納する。
このコマンドは一行受信するか、Tera Term とホストの通信が終了するか、タイムアウトが起きるまで待つ。

システム変数 timeout か mtimeout が 0 より大きい場合、<timeout>.<mtimeout> 秒の時間がすぎるとタイムアウトが発生する。タイムアウトの値が 0 以下の場合は、タイムアウトは発生しない。

もし、一行分の文字が受信された場合、システム変数 result に1が格納される。そうでない場合 result に0が格納される。

例

; ログファイルを開く
fileopen file 'log.txt' 0
; 同期モードに入る
setsync 1
result=1

while result=1
  ; 一行受信
  recvln
  ; それをログファイルに書く
  filewriteln file inputstr
endwhile

; 非同期モードに入る
setsync 0

参照

  • setsync


restoresetup

設定ファイルを読み込む。

restoresetup <filename>

解説

Tera Term 設定ファイル <filename> を Tera Term に読み込ませる。

例

restoresetup 'teraterm.ini'


scprecv

SCPプロトコルでファイルを受信する。(バージョン 4.57以降)

scprecv <remote filename> [<local filename>]

解説

ファイル <remote filename> を SCP(Secure Copy Protocol) プロトコルで受信する。 ローカルファイル <local filename> を省略した場合は、ファイルはローカルホストのカレントディレクトリへコピーされる。 受信が終わるのを待たずに、次のコマンドを実行することができる。

例

connect '192.168.3.2:22 /ssh /2 /auth=password /user=hoge /passwd=fuga'
wait '$'
scprecv 'usr/bin/ls.exe'
scprecv 'sample.bin' 'd:\hoge.bin'


scpsend

SCPプロトコルでファイルを送信する。(バージョン 4.57以降)

scpsend <filename> [<destination filename>]

解説

ファイル <filename> を SCP(Secure Copy Protocol) プロトコルで送信する。 転送先を省略した場合は、ファイルはリモートホストのホームディレクトリへコピーされる。 送信が終わるのを待たずに、次のコマンドを実行することができる。

例

connect '192.168.3.2:22 /ssh /2 /auth=password /user=hoge /passwd=fuga'
wait '$'
scpsend 'C:\usr\cvs\doc\en\teraterm.chm'
scpsend 'C:\usr\cvs\doc\en\teraterm.chm' 'tmp/foo.chm'

; ファイル送信完了を確認する
SOURFILE = 'C:\usr\ttssh2\doc\en\teraterm.chm'
DESTFILE = '~'

;; ファイル送信
scpsend SOURFILE DESTFILE
;; ファイル送信プロセス確認
do
  mpause 5000
  sprintf2 str 'ps -ef |grep -v grep |grep -c scp'
  sendln str
  waitln '0' '1'
loop while result != 1
;; ファイル送信が完了すると次のマクロを実行
sendln 'echo SCP finish'
;; マクロ終了
end


send

データを送信する。

send <data1> <data2>....

解説

<data> が文字列型の場合、文字列をホストへ送信させる。
<data> が整数型の場合は、その値の下位バイト(0-255)を ASCII コードとみなし、その文字を送信させる。

例

send 'ABC'

; "ABC" を送信させる。("A" の ASCII コードは65)
send  65 66 67

myname='Tera Term'
send 'My name is ' myname '.'

; "ABC"
send $41 $42 $43

; "1"
value = $31
send value

; "31"
value = $31
sprintf2 command "%02X" value
send command

/* "CTRL+C"を送るには、以下のように直接"3"を指定する。
 *
 * CTRL+A = 1, CTRL+B = 2.................. CTRL+Z = 26.
 */
send #3

/* TABコードを送る */
send #9

同期モードについては "setsync" を参照。

参照

  • sendln
  • 定数の形式


sendbreak

ブレーク信号をホストへ送出する。

sendbreak

解説

シリアルコンソールでは、ホスト側にブレーク割り込み(Break interrupt indicator)を発生させる。TELNETでは、IAC BREAK(255 243)を送信する。SSH2では、SSH2_MSG_CHANNEL_REQUEST("break")を送信する。

例

; Magic SysRq(Linux) のヘルプを呼び出す
sendbreak
send 'h'


sendbroadcast

データをブロードキャスト送信する。(バージョン 4.62以降)

sendbroadcast <data1> <data2>....

解説

<data> をすべての端末にブロードキャスト送信し、端末からホストへ送信させる。
<data> が文字列型の場合、文字列を送信させる。
<data> が整数型の場合は、その値の下位バイト(0-255)を ASCII コードとみなし、その文字を送信させる。

※AcceptBroadcastが無効の端末では、送信データが破棄されます。

例

msg='cal'
sendbroadcast 'hoge' 13 10 'hohoho' msg 13 10


sendfile

ファイルを送信する。

sendfile <filename> <binary flag>

解説

<filename> で指定されたファイルを送信する。送信が終わるまで次のコマンドは実行されない。
<binary flag> の値が 0 以外のとき、ファイルの内容をそのまま送信する。
<binary flag> の値が 0 のとき、ファイルの中に含まれる漢字、改行文字を変換して送信する。TAB ($09), LF ($0A), CR ($0D) 以外の制御文字は送信されない。

例

sendfile 'data.dat' 1


sendkcode

キーコードを送信する。

sendkcode <key code> <repeat count>

解説

あるキーまたはキーの組み合わせを押すことに対して割り当てられた機能を Tera Term に実行させる。
そのキーまたはキーの組み合わせはKEYCODE.EXE によって定義されるキーコード <key code>で指定される。その機能は <repeat count> 回繰り返して実行される。

通常、その機能とは文字または文字列をホストへ送出するということ。その機能は Tera Term のキーボード設定ファイルによって定義することができる。
KEYCODE.TXT 参照。

例

; Tera Term に↓キーが3回押された場合と同じ動作をさせる。
; ↓キーのキーコードは IBM PC キーボードの場合336。
sendkcode 336 3


sendln

データと改行を送信する。

sendln <data1> <data2>....

解説

文字列とそれに続く改行文字をホストへ送信させる。
<data> の形式は、"send"コマンドと同じ。

例

; 改行文字だけ送信
sendln

sendln 'abc'

Password='mypassword'
sendln Password

同期モードについては "setsync" を参照。

参照

  • send


sendlnbroadcast

データをブロードキャスト送信する。(バージョン 4.62以降)

sendlnbroadcast <data1> <data2>....

解説

文字列とそれに続く改行文字を、すべての端末にブロードキャスト送信し、端末からホストへ送信させる。
<data> の形式は、"sendbroadcast"コマンドと同じ。

AcceptBroadcastが無効の端末では、送信データが破棄される。

例

; "ABCdefGHI" と改行文字が送られる
sendlnbroadcast "ABC" "def" "GHI"

; 改行文字のみが送られる
sendlnbroadcast


sendlnmulticast

データと改行をマルチキャスト送信する。(バージョン 4.96以降)

sendlnmulticast <multicastname> <data1> <data2>....

解説

文字列とそれに続く改行文字を、指定した端末にマルチキャスト送信する。
<data> の形式は、"sendmulticast"コマンドと同じ。

例

mcastname = "multicast-test"

connect "server-a"
setmulticastname mcastname

unlink

connect "server-b"
setmulticastname mcastname

; "ABCdefGHI" と改行文字が送られる
sendlnmulticast mcastname "ABC" "def" "GHI"

; 改行文字のみが送られる
sendlnmulticast mcastname

参照

  • sendmulticast
  • setmulticastname


sendmulticast

データをマルチキャスト送信する。(バージョン 4.62以降)

sendmulticast <multicastname> <data1> <data2>....

解説

<data> を <multicastname> 引数で指定した端末へマルチキャスト送信し、端末からホストへ送信させる。
端末の識別は、setmulticastnameコマンドかコマンドラインオプションで事前に設定しておく。
<data> が文字列型の場合、文字列を送信させる。
<data> が整数型の場合は、その値の下位バイト(0-255)を ASCII コードとみなし、その文字を送信させる。

※AcceptBroadcastが無効の端末では、送信データが破棄されます。

例

; TerminalA
setmulticastname 'screen1'
; Do not receive any strings.

; TerminalB
setmulticastname 'screen2'
; The 'violin' string will be sent by the TerminalD.

; TerminalC
setmulticastname 'screen2'
; The 'violin' string will be sent by the TerminalD.

; TerminalD
setmulticastname 'screen3'
sendmulticast 'screen2' 'violin' 13 10     ; Multicast transmission
; Do not receive any strings.


setbaud

シリアルポートのスピードを変更する。(バージョン 4.58以降)

setbaud <value>

パラメータ

整数 <value> (バージョン 4.66 未満)
スピードに対応するIDを指定する。
ID       speed (bps)
1        110
2        300
3        600
4        1200
5        2400
6        4800
7        9600
8        14400
9        19200
10       38400
11       57600
12       115200
13       230400
14       460800
15       921600
整数 <value> (バージョン 4.66 以降)
スピードを指定する。

例

; change speed to 115200 bps

; less than version 4.66
setbaud 12

; version 4.66 or later
setbaud 115200

参照

  • setspeed


setdebug

デバッグモードを設定する。(バージョン 4.64以降)

setdebug <flag>

解説

以下のフラグにより、Tera Termのデバッグモードを設定する。デバッグモードを有効にすることで、"wait"コマンドで「制御コード」を待つことができる。

0: デバッグモード無効。通常出力を行う。
1: 従来のデバッグモード（詳細はこちら）
2: 16進出力モード。受信データを大文字の16進数で、空白をあけて表示する。
3: 出力を一切しない。

例

setdebug 2
wait '09 0D 0A'
setdebug 0

setdebug 1
wait '^I^M^J'
setdebug 0

参照

  • wait


setdtr

Tera Term で DTR(Data Terminal Ready) の状態を変更する。(バージョン 4.59以降)

setdtr <flag>

解説

接続がシリアル接続ではない場合やフロー制御が none でない場合には、このコマンドは何も行わない。

もし <flag> が0なら DTR は off になる。
もし <flag> が0以外なら DTR は on になる。

例

; DTR on
setdtr 1

; DTR off
setdtr 0

参照

  • setrts


setecho

Tera Term のローカルエコー (local echo) の状態を変更する。

setecho <echo flag>

解説

もし <echo flag> が0以外ならローカルエコーは on になる。
もし <echo flag> が0ならローカルエコーは off になる。

例

; ローカルエコー on
setecho 1


setflowctrl

シリアルポートのフロー制御を変更する。(バージョン 4.94以降)

setflowctrl <value>

パラメータ

整数 <value>
以下のフラグにより、シリアルポートのフロー制御を指定する。
値 | 意味
1 | Xon/Xoff
2 | hardware(RTS/CTS)
3 | none
4 | hardware(DSR/DTR) (バージョン 4.105 以降)

例

; change flow control to "none"
setflowctrl 3


setmulticastname

マルチキャスト送信のための端末識別名を設定する。(バージョン 4.62以降)

setmulticastname <multicastname>

解説

自身の端末に対して、<multicastname>引数で指定した名前を識別子として設定する。

参照

  • sendmulticast


setrts

Tera Term で RTS(Request To Send) の状態を変更する。(バージョン 4.59以降)

setrts <flag>

解説

接続がシリアル接続ではない場合やフロー制御が none でない場合には、このコマンドは何も行わない。

もし <flag> が0なら RTS は off になる。
もし <flag> が0以外なら RTS は on になる。

例

; RTS on
setrts 1

; RTS off
setrts 0

参照

  • setdtr


setspeed

シリアルポートのスピードを変更する。(バージョン 4.99以降)

setspeed <value>

このコマンドは setbaud のエイリアスです。

解説

シリアルポートのスピードを <value> bps に変更します。

例

; change speed to 115200 bps
setspeed 115200

参照

  • setbaud


setsync

同期モードを設定する。

setsync <sync flag>

解説

<sync flag> が0以外ならば同期通信モードに入る。
<sync flag> が0ならば非同期通信モードに入る。

Tera Term はホストから受信した文字を MACRO へ転送する。
MACRO はそれらの文字をバッファに保存し、受信文字を処理するコマンド("wait" コマンド等)がバッファから文字を取り出す。

MACRO は初期状態が「非同期モード」である。このモードでは、受信文字を処理するコマンドが長い間実行されない場合、または受信速度が速すぎる場合はバッファがあふれる可能性がある。
同期モードでは、バッファは決してあふれない。バッファがいっぱいになった場合、Tera Term はホストからの文字受信と MACRO への文字転送を停止する。バッファに再び空きができると Tera Term は文字受信と転送を再開する。
必要な時に限り同期モードに入り、必要でなくなったら非同期モードに戻るようにした方が良い。

複数行にわたる受信した文字を、一文字も失うことなく処理する、というような信頼性が要求されるマクロ処理の場合、同期モードに入る必要がある。
しかし、同期モードでは Tera Term の文字受信速度が遅くなり、また受信文字を処理するコマンドが長い間実行されない場合は、Tera Term の文字受信が停止したままになってしまう。
一方、単純なマクロ処理(例えば自動ログイン)ならば非同期モードでもほとんど問題なく動作する。この場合、バッファサイズは十分大きく(16Kバイト)、受信したすべての文字はバッファがあふれる前にコマンドによって処理される。

例

connect server
; 同期モードに入る
setsync 1
timeout = 60
waitln '+OK' '-ERR'

; 非同期モードに入る
setsync 0

end

connect '/C=1'

setsync 1

while 1
  ; Request data
  sendln  'REQ'

  ; Delay for 1 second
  pause 1

  flushrecv
endwhile

参照

  • flushrecv


settitle

ウインドウタイトル文字列を変更する。

settitle <title>

解説

Tera Term のウィンドウタイトルを <title> に変更する。

例

settitle 'Tera Term'


showtt

Tera Term ウインドウの表示状態を変更する。

showtt <show flag>

解説

<show flag> が-1の場合、 Tera Term の VT ウインドウを隠す。
<show flag> が0の場合、 Tera Term の VT ウインドウを最小化する。
<show flag> が1の場合、 Tera Term の VT ウインドウを元の大きさに戻す。
<show flag> が2の場合、 Tera Term の TEK ウインドウを隠す。
<show flag> が3の場合、 Tera Term の TEK ウインドウを最小化する。
<show flag> が4の場合、 Tera Term の TEK ウインドウを開く、または元の大きさに戻す。
<show flag> が5の場合、 Tera Term の TEK ウインドウを閉じる。
<show flag> が6の場合、 ログウィンドウを隠す。
<show flag> が7の場合、 ログウィンドウを最小化する。
<show flag> が8の場合、 ログウィンドウを元の大きさに戻す。

例

; Tera Term を最小化
showtt 0

; Tera Term を元の大きさに戻す
showtt 1

; Tera Term を隠す
showtt -1

showtt 7    ;Minimize log window
showtt 8    ;Restore log window
showtt 6    ;Hide log window


testlink

現在のリンクおよび接続の状態を報告する。

testlink

解説

リンクと接続の状態に応じて以下のうちの一つの値がシステム変数 result に格納される。

値 | 状態
0 | Tera Term とリンクされていない。
1 | ホストへの接続はされていないが、Tera Term へのリンクはされている。
2 | リンクおよび接続両方ともされている。

例

; もし MACRO が Tera Term にリンクされていなければ
testlink
; connect コマンドを実行
if result=0 connect 'host'

参照

  • closett
  • connect
  • cygconnect
  • disconnect
  • unlink
  • 切断後すぐに接続する場合の注意点


unlink

現在の Tera Term ウインドウと MACRO の間のリンクを断つ。

unlink

解説

このコマンド以降、MACRO は非リンク状態になり、その Tera Term ウインドウを制御できなくなる。
非リンク状態では、connect コマンドによって新しい Tera Term ウィンドウを開き、MACRO をそれにリンクさせることができる。

例

; Tera Term ウインドウを開き、それにリンクする
connect 'host'

; リンクを断つ
unlink

; 別の Tera Term ウィンドウを開き、それにリンクする
connect 'host2'

参照

  • closett
  • connect
  • cygconnect
  • disconnect
  • testlink
  • 切断後すぐに接続する場合の注意点


wait

文字列を待つ。

wait <string1> [<string2> ...]

解説

文字列 <string1> [<string2> ...] のうち一つがホストから送られてくるか、タイムアウトが発生するまで MACRO を停止させる。文字列は最大 10 個まで指定できる。

空文字列が指定された場合、任意の一文字を受信するのを待つ。

システム変数 timeout か mtimeout が 0 より大きい場合、<timeout>.<mtimeout> 秒の時間がすぎるとタイムアウトが発生する。タイムアウトの値が 0 以下の場合は、タイムアウトは発生しない。

これらのコマンドの実行結果はシステム変数 result に格納される。変数 result の値の意味は以下のとおり。

値 | 意味
0 | タイムアウト。どの文字列も来なかった。
1 | <string1> を受信した。
2 | <string2> を受信した。
n | <stringn> を受信した。n=1..10

例

; タイムアウトを30秒に設定。
timeout = 30

; 文字列 "OK" か "ERROR" を待つ。
wait 'OK' 'ERROR'
; タイムアウトなら、:timeout へジャンプ。
if result=0 goto timeout
; "OK" が来たなら、:ok へジャンプ
If result=1 goto ok
; "ERROR" が来たなら、:error へジャンプ
If result=2 goto error

; 行先頭の ">" か、行末の "complete." を待つ。(ASCIIコード10, 13は LF, CR)
wait #10'>' 'complete.'#13

; タイムアウトを100ミリ秒に設定。
timeout = 0
mtimeout = 100
wait 'server response'

; 制御コードを待つ
setdebug 2
wait '11 0D 11 0D'
setdebug 0

参照

  • setdebug
  • waitln
  • waitregex


wait4all

マクロに接続されている全端末の文字列を待つ。(バージョン 4.63以降)

wait4all <string1> [<string2> ...]

解説

当該コマンドを実行した時点における、マクロに接続されている全端末において、 文字列 <string1> [<string2> ...] のうち一つがホストから送られてくるか、タイムアウトが発生するまで MACRO を停止させる。文字列は最大 10 個まで指定できる。
当該コマンドを実行した後に起動された端末、マクロ接続されていない端末に関しては、監視対象外となる。

システム変数 timeout か mtimeout が 0 より大きい場合、<timeout>.<mtimeout> 秒の時間がすぎるとタイムアウトが発生する。タイムアウトの値が 0 以下の場合は、タイムアウトは発生しない。

これらのコマンドの実行結果はシステム変数 result に格納される。変数 result の値の意味は以下のとおり。

値 | 意味
0 | タイムアウト。どの文字列も来なかった。
1 | <string1> を受信した。
2 | <string2> を受信した。
n | <stringn> を受信した。n=1..10

なお、当該コマンドを利用するためには、teraterm.ini の Wait4allMacroCommand エントリを"on"にする必要がある。また、まれにコマンドが期待通りに動かないことがある。

例

; Terminal1
pause 3000
end

; Terminal2
pause 3000
end

; Terminal3
wait4all 'message'


waitevent

イベントを待つ。

waitevent <events>

解説

<events> で指定されるイベントが発生するまで MACRO を停止させる。<events> は以下のイベント識別子の組み合わせ。

イベント | イベント識別子
timeout | 1
unlink | 2
disconnection | 4
connection | 8

システム変数 timeout か mtimeout が 0 より大きい場合、<timeout>.<mtimeout> 秒の時間がすぎると(タイムアウト)イベントが発生する。タイムアウトの値が 0 以下の場合は、タイムアウトは発生しない。

unlink イベントは Tera Term が閉じられたときに発生する。

disconnection (または connection) イベントは、Tera Term とホストの間の通信が閉じられた(開かれた)時に発生する。

これらのコマンドは実際に発生したイベントの識別子をシステム変数 result に格納する。

例

; disconnection イベントを待つ
waitevent 4
; unlink または connection イベントを待つ
waitevent 2 or 8
; unlink イベント発生
if result=2 goto label1
; connection イベント発生
if result=8 goto label2


waitln

文字列を含む行を待つ。

waitln <string1> [<string2> ...]

解説

文字列 <string1>, [<string2>, ...] のうち一つを含む行をホストから受信するか、タイムアウトが発生するまで MACRO を停止させる。文字列は最大 10 個まで指定できる。

空文字列が指定された場合、任意の一文字（＋改行）を受信するのを待つ。

システム変数 timeout か mtimeout が 0 より大きい場合、<timeout>.<mtimeout> 秒の時間がすぎるとタイムアウトが発生する。タイムアウトの値が 0 以下の場合は、タイムアウトは発生しない。

これらのコマンドは受信した行をシステム変数 inputstr に格納し、以下の値をシステム変数 result に格納する。

値 | 意味
0 | タイムアウト。
1 | <string1> を含む行を受信した。
2 | <string2> を含む行を受信した。
n | <stringn> を含む行を受信した。n=1..10

例

waitln 'cal'
messagebox inputstr "str"  ; echo aaa cal hoge fuga

参照

  • wait
  • waitregex


waitn

指定されたバイト数の受信を待つ。(バージョン 4.62以降)

waitn <received byte count>

解説

引数に指定したバイト数以上のデータが受信されるまで、待つ。

システム変数 timeout か mtimeout が 0 より大きい場合、<timeout>.<mtimeout> 秒の時間がすぎるとタイムアウトが発生する。タイムアウトの値が 0 以下の場合は、タイムアウトは発生しない。

これらのコマンドの実行結果はシステム変数 result に格納される。変数 result の値の意味は以下のとおり。

値 | 意味
0 | 1文字も来ずにタイムアウトが発生した。
1 | 指定されたバイト数の文字が来て、システム変数 inputstr に保存された。 指定されたバイト数が 511 を越える場合は、最初の 511 バイトのみが inputstr に保存される。

例

; タイムアウトを30秒に設定。
timeout = 30

; 受信バッファをクリアする。
flushrecv

; 255バイト以上の受信があるまで待つ。
waitn 255


waitrecv

文字列を待つ。

waitrecv <sub-string> <len> <pos>

解説

ある条件を満たす 1 つの文字列がホストから送られてくるか、タイムアウトが発生するまで、 MACRO を停止させる。

その条件とは、文字列の長さが <len> 文字で、文字列がその <pos> 文字目（1オリジン）から始まる副文字列 <sub-string> を含んでいるということ。
コマンドは <len> バイトの文字列を受信するたびに、条件を満たすかどうかを確認する。
例えば、<sub-string> が "def"、<len> が 9 、<pos> が 4 のとき、文字列 "abcdefghi" は条件を満たす。

もし条件を満たす文字列が送られてきたら、システム変数 inputstr に保存される。

システム変数 timeout か mtimeout が 0 より大きい場合、<timeout>.<mtimeout> 秒の時間がすぎるとタイムアウトが発生する。タイムアウトの値が 0 以下の場合は、タイムアウトは発生しない。

これらのコマンドの実行結果はシステム変数 result に格納される。変数 result の値の意味は以下の通り。

値 | 意味
-1 | <pos> 文字目から始まる <sub-string> を含む文字列が来て、inputstr に保存された。しかし文字列の長さは、タイムアウトのために <len> 文字より短い。
0 | タイムアウト。条件を満たす文字列は送られてこなかった。
1 | 条件をみたす文字列が来て、 inputstr に保存された。

例

; Every byte is shown in hexadecimal
setdebug 2
waitrecv '43 0D'  2 1
setdebug 0

; In this mode non printable characters are shown as control keys e.g. ^A = 1, ^B = 2 etc.
setdebug 1
waitrecv 'C^M' 2 1
setdebug 0

; Normal mode
setdebug 0
waitrecv 'C'#13 2 1

参照

  • setdebug
  • wait


waitregex

正規表現文字列を含む行を待つ。(バージョン 4.21以降)

waitregex <string1 with regular expression> [<string2 with regular expression> ...]

解説

Oniguruma の正規表現 が使用できます。
正規表現文字列のうち 1 つ以上を含む行（最大 511 文字）をホストから受信するか、タイムアウトが発生するまで MACRO を停止させる。正規表現文字列は最大 10 個まで指定できる。

システム変数 timeout か mtimeout が 0 より大きい場合、<timeout>.<mtimeout> 秒の時間がすぎるとタイムアウトが発生する。タイムアウトの値が 0 以下の場合は、タイムアウトは発生しない。

これらのコマンドの実行結果はシステム変数 result , inputstr, matchstr に格納される。変数 result の値の意味は以下のとおり。

値 | 意味
0 | タイムアウト。どの文字列も来なかった。
1 | <string1 with regular expression> を受信した。
2 | <string2 with regular expression> を受信した。
n | <stringn with regular expression> を受信した。n=1..10

変数 inputstr には受信した行が格納される。
変数 matchstr には最初にマッチしたパターンが格納される。
変数 groupmatchstr1～groupmatchstr9 にはグループマッチしたパターンが格納される。

日本語等のマルチバイト文字列を待つ場合、事前にregexoptionで適切なエンコーディングを設定しておく必要がある。

例

timeout = 30
waitregex 'Longhorn' '.*@sai' 'Pentium\d+' 'TeraTermX{3}'
int2str s result
messagebox s 'result'
messagebox inputstr 'inputstr'
messagebox matchstr 'matchstr'

参照

  • regexoption
  • wait
  • waitln


xmodemrecv

XMODEM プロトコルでファイルを受信する。

xmodemrecv <filename> <binary flag> <option>

解説

XMODEM プロトコルでファイル <filename> を受信する。受信が終わるまで次のコマンドは実行されない。
ファイルが正しく転送された場合、システム変数 result に 1 が格納される。それ以外の場合、 result に 0 が格納される。

ファイルがバイナリファイルの場合は、<binary flag> は 0 以外でなければならない。
テキストファイルの場合は、<binary flag> は 0 でなければならない。

<option> によって、XMODEM のオプション(エラー検出の種類)を指定する。
パケットサイズ(1K)は送信側でのみ指定できる。(バージョン 4.90 以降)

<option> | (バージョン 4.89 以前) | (バージョン 4.90 以降)
1 | Checksum | Checksum
2 | CRC | CRC
3 | 1K | CRC
それ以外 | Checksum | Checksum

例

; XMODEM receive, text file, CRC
xmodemrecv 'readme.txt' 0 2


xmodemsend

XMODEM プロトコルでファイルを送信する。

xmodemsend <filename> <option>

解説

XMODEM プロトコルでファイル <filename> を送信する。送信が終わるまで次のコマンドは実行されない。
ファイルが正しく転送された場合、システム変数 result に 1 が格納される。それ以外の場合、 result に 0 が格納される。

<option> によって、XMODEM のオプション(パケットサイズ)を指定する。
エラー検出の種類(Checksum/CRC)は受信側でのみ指定できる。(バージョン 4.90 以降)

<option> | (バージョン 4.89 以前) | (バージョン 4.90 以降)
1 | Checksum | 標準(128バイト)
2 | CRC | 標準(128バイト)
3 | 1K | 1K
それ以外 | Checksum | 標準(128バイト)

例

; XMODEM send, default packet size
xmodemsend 'readme.txt' 1

; XMODEM send, 1K
xmodemsend 'readme.txt' 3


ymodemrecv

YMODEM プロトコルでファイルを受信する。(バージョン 4.66以降)

ymodemrecv

解説

受信が終わるまで次のコマンドは実行されない。
ファイルが正しく転送された場合、システム変数 result に 1 が格納される。それ以外の場合、 result に 0 が格納される。

参照

  • ymodemsend


ymodemsend

YMODEM プロトコルでファイルを送信する。(バージョン 4.66以降)

ymodemsend <filename>

解説

ファイル <filename> を YMODEM プロトコルで送信する。送信が終わるまで次のコマンドは実行されない。
ファイルが正しく転送された場合、システム変数 result に1が格納される。それ以外の場合、 result に0が格納される。

例

filename = 'test.ttl'
srcfile = 'C:\Documents and Settings\yutaka\My Documents\TeraTermMacro\test.ttl'
dstfile = 'C:\usr\ttssh2\teraterm\debug\test.ttl'

ymodemsend srcfile
if result=1 then
    messagebox 'File transfer success' 'Send'
else
    messagebox 'File transfer failure' 'Send'
endif

sprintf2 var 'sb %s' filename
sendln var
ymodemrecv
if result=1 then
    messagebox 'File transfer success' 'Recv'
else
    messagebox 'File transfer failure' 'Recv'
endif

sprintf2 var 'fc /b %s %s' srcfile dstfile
exec var
if result=0 then
    messagebox 'Two files are same.' 'Compare'
else
    messagebox 'Two files are not same.' 'Compare'
endif

参照

  • ymodemrecv


zmodemrecv

ZMODEM プロトコルでファイルを受信する。

zmodemrecv

解説

受信が終わるまで次のコマンドは実行されない。
ファイルが正しく転送された場合、システム変数 result に 1 が格納される。それ以外の場合、 result に 0 が格納される。

参照

  • zmodemsend


zmodemsend

ZMODEM プロトコルでファイルを送信する。

zmodemsend <filename> <binary flag>

解説

ファイル <filename> を ZMODEM プロトコルで送信する。送信が終わるまで次のコマンドは実行されない。
ファイルが正しく転送された場合、システム変数 result に1が格納される。それ以外の場合、 result に0が格納される。

ファイルがバイナリファイルの場合は、<binary flag> は 0 以外でなければならない。
テキストファイルの場合は、<binary flag> は0でなければならない。

例

zmodemsend 'readme.txt' 0

参照

  • zmodemrecv


break

ループから抜ける。(バージョン4.53以降)

break

解説

"for" や "while" のループから抜ける。

例

for i 1 10
  yesnobox 'ループから抜けますか?' 'Tera Term'
  if result break
next

while 1
  recvln
  strcompare inputstr "OK"
  if result=0 then
    break
  else
    sendln "abc..."
  endif
endwhile

参照

  • do, loop
  • for, next
  • until, enduntil
  • while, endwhile
  • continue


call

サブルーチンをコールする。

call <label>

解説

<label> 行から始まるサブルーチンをコールする。

例

messagebox "I'm in main." "test"
; ":sub" へ飛ぶ。
call sub
messagebox "Now I'm in main" "test"
end

; サブルーチンの始まり。
:sub
messagebox "Now I'm in sub" "test"
; メインルーチンへもどる。
return

参照

  • return


continue

ループの次の反復処理に移る。(バージョン4.77以降)

continue

解説

"for" や "while" のループの内側から、そのループの次の反復処理に制御を移行する。

例

a=0
b=0
while a<5
    a=a+1
    if a>2 then
        continue
    endif
    b=b+1
endwhile

sprintf2 var "a=%d b=%d" a b
dispstr var
;a=5 b=2

参照

  • do, loop
  • for, next
  • until, enduntil
  • while, endwhile
  • break


do, loop

繰り返す。(バージョン4.56以降)

do [ { while | until } <expression> (option)]

  ...

  ...

loop [ { while | until } <expression> (option)]

解説

'do' と 'loop' の間のコマンドを、条件式に従って繰り返す。
条件式は、while の場合は<expression> が0以外である限り、until の場合は<expression>が0である限り繰り返す。
'do' に条件式を指定した場合は、条件によっては一度もループが実行されない場合がある。'loop' に条件式を指定した場合は、最低1度はループが実行される。どちらにも条件を指定しなかった場合は、無限ループとなる。

例

; 10回繰り返す。
i = 10
do while i > 0
    i = i - 1
loop

; クリップボードの内容を送信する。
offset = 0
do
    clipb2var buff offset
    if buff > 0 send buff
    offset = offset + 1
loop while result = 2

参照

  • 式と演算子
  • for, next
  • until, enduntil
  • while, endwhile
  • break
  • continue


end

マクロの実行そのものを終了する。

end

解説

MACRO も終了する。
exitコマンドとは厳密に異なる。

参照

  • exit


execcmnd

TTL コマンド を実行する。

execcmnd <statement>

解説

文字列 <statement> が表現する TTL コマンド を実行する。

例

; コマンド "send 'abc'" を実行。
execcmnd "send 'abc'"
; 変数aに1を代入する
execcmnd "a=1"

for x 1 10      ;creates variables arr1 thru arr10 and assigns them 1 thru 10
  tmp='arr'
  int2str ix x
  strconcat tmp ix
  strconcat tmp '='
  strconcat tmp ix
  execcmnd tmp
next

messagebox arr1 'variable1'
messagebox arr2 'variable2'
messagebox arr3 'variable3'
messagebox arr4 'variable4'
messagebox arr5 'variable5'
messagebox arr6 'variable6'
messagebox arr7 'variable7'
messagebox arr8 'variable8'
messagebox arr9 'variable9'
messagebox arr10 'variable10'
messagebox arr11 'variable11'  ; syntax error


exit

メインファイルへ戻る。

exit

解説

インクルードファイルから抜け、メインファイルへ戻る。
メインファイルで使用すると、マクロの実行そのものを終了する（endコマンドと等価）。

参照

  • include
  • end


for, next

繰り返す。

for <intvar> <first> <last>

  ...

  ...

next

解説

"for" と "next" の間のコマンドを、整数変数 <intvar> の値が <last> と等しくなるまで、繰りかえす。
<intvar> の初期値は <first> 。もし <last> が <fast> より大きい場合、<intvar> は "next" 行に来るたびに 1 足される。もし <last> が <fast> より小さい場合、<intvar> は "next" 行に来るたびに 1 引かれる。

例

; 10回繰り返す。
for i 1 10
  sendln 'abc'
next

; 5回繰り返す。
for i 5 1
  sendln 'abc'
next

参照

  • do, loop
  • until, enduntil
  • while, endwhile
  • break
  • continue


goto

ラベルへジャンプする。

goto <label>

解説

<label>行の次の行へジャンプする。
なお、forやwhileなどのループを抜けるために、gotoは使えないため、代わりにbreakを使うこと。

例

; ':label' の次の行へジャンプ。
goto label
...
...
...

; ラベル行
:label
send 'abc'


if, then, elseif, else, endif

条件分岐

1) 書式1

if <expression> <statement>

解説

もし <expression> が真(0以外)ならば、コマンド <statement> を実行する。

例

; もし A>1 ならば、':label' へ飛ぶ。
if A>1 goto label

; もし result<>0 ならば、A に0を代入。
if result A=0

2) 書式2

if <expression 1> then
  ...
  (<expression 1> が真(0以外)の場合に実行されるコマンド)
  ...
[elseif <expression 2> then]
  ...
  (<expression 1> が偽(0)で、<expression 2>が真の場合に実行されるコマンド)
  ...
[elseif <expression N> then]
  ...
  (<expression 1>, <expression 2>,.., <expression N-1> がすべて偽で、<expression N> が真の場合に実行されるコマンド)
  ...
[else]
  ...
  (上の条件すべてが偽の場合に実行されるコマンド)
  ...
endif

解説

'then' は 'if' と 'elseif' 行の最後になければならない。
'elseif' と 'else' はなくてもよい。
'endif' は必要。

例

if a=1 then
  b = 1
  c = 2
  d = 3
endif

if i<0 then
  i=0
else
  i=i+1
endif

if i=1 then
  c = '1'
elseif i=2 then
  c = '2'
elseif i=3 then
  c = '3'
else
  c = '?'
endif

*) 注意事項

(バージョン 4.90 以降)
書式2(if - endif)において、thenの記述なしは文法エラーとなる。
code = 100
if code != 100
    messagebox 'The code value is not 100.' 'error'
    goto error
else
    messagebox 'The code value is 100.' 'OK'
endif

:error
end

参照

  • 式と演算子


include

インクルードファイルに移る。

include '<include file name>'

解説

引数に指定したマクロファイルを読み込み、マクロ実行を行う。実行終了後、includeコマンドの次の行から処理が再開される。
なお、includeのネストは 9 までである。

例

-----メインファイル"main.ttl"------
i=10
:loop
; インクルードファイルへ移る。
include 'sub.ttl'
if i>=0 goto loop
end
-----メインファイル終わり----------

-----インクルードファイル"sub.ttl"----
if i<0 then
  messagebox 'error!' 'sub'
  ; メインファイルへ戻る。
  exit
endif
i = i - 1
; メインファイルへ戻る。
-----インクルードファイル終わり-------

参照

  • 注: マクロファイルの読み込み
  • exit


mpause

休止する。(バージョン4.27以降)

mpause <time>

解説

TTL の実行を <time> ミリ秒だけ休止する。

例

; 200ミリ秒休止
mpause 200

mpause Time


pause

休止する。

pause <time>

解説

TTL の実行を <time> 秒だけ休止する。

例

; 10秒休止
pause 10

pause Time


return

サブルーチンを抜け、メインルーチンへ戻る。

return

参照

  • call


until, enduntil

繰り返す。(バージョン4.56以降)

until <expression>

  ...

  ...

enduntil

解説

'until' と 'enduntil' の間のコマンドを、 <expression> が0である限り、繰り返す。

例

; 10回繰り返す。
i = 1
until i > 10
  i = i + 1
enduntil

参照

  • 式と演算子
  • do, loop
  • for, next
  • while, endwhile
  • break
  • continue


while, endwhile

繰り返す。

while <expression>

  ...

  ...

endwhile

解説

'while' と 'endwhile' の間のコマンドを、 <expression> が0以外である限り、繰り返す。

例

; 10回繰り返す。
i = 10
while i>0
  i = i - 1
endwhile

参照

  • 式と演算子
  • do, loop
  • for, next
  • until, enduntil
  • break
  • continue


code2str

ASCII コード値を文字列に変換する。

code2str <strvar> <ASCII code>

解説

整数値 <ASCII code> が 1～255 の場合、ASCII コード <ASCII code> に対応する文字を文字列変数 <strvar> に格納する。
このコマンドは <ASCII code> で表される ASCII コード列を文字列に変換し、それを <strvar> に格納する。
<ASCII code> の0でない最上位バイトがASCII コード列の1バイト目とみなされる。
<ASCII code> が0の場合、 <strvar> には ""(空文字列) が格納される。文字列の最大長は 4。

例

; 文字 "A" が変数"str" に格納される。
; "A" の　ASCII コードは$41。
code2str str $41

; 文字列 "AB" が変数 "str" に格納される。
; $41 は "A" の、$42は "B" のASCII コード。
code2str str $4142


expandenv

環境変数文字列を展開する。(バージョン4.71以降)

形式

expandenv <strvar> [<strval>]

パラメータ

文字列変数 <strvar>
この引数で指定した文字列が展開される。
第2引数(<strval>)を渡した場合は、展開結果が当該文字列変数に代入される。
文字列 <strval> (オプション)
この引数を指定した場合、指定した文字列が展開され、文字列変数 <strvar>に代入される。

解説

1つ以上の環境変数文字列(%variableName%)を展開し、当該文字列をカレントユーザの定義された値に置き換える。

例

str = "%WINDIR%\notepad.exe"
expandenv str
messagebox str "env"    ; C:\WINDOWS\notepad.exe

expandenv str "%WINDIR%\notepad.exe"
messagebox str "env"    ; C:\WINDOWS\notepad.exe

expandenv str "%test%\notepad.exe"
messagebox str "env"    ; %test%\notepad.exe

参照

  • getpassword


int2str

整数値を文字列に変換する。

int2str <strvar> <integer value>

解説

整数値 <integer value> を10進表現の文字列に変換して文字列型変数 <strvar> に代入する。
sprintfシリーズの書式指定"%d"と等価である。

例

; valstrに '123' を代入
int2str valstr 123
messagebox valstr "str"     ; 123

num = 123
sprintf2 valstr "%d" num
messagebox valstr "str"     ; 123

参照

  • sprintf
  • sprintf2


regexoption

正規表現の文法、文字エンコーディング、オプションを設定する。(バージョン4.78以降)

regexoption <option1> [<option2> ...]

解説

strmatch, strreplace, waitregex で使用する正規表現の文法、文字エンコーディング、オプションを設定する。

オプション option1 [option2 ...] には、以下の中から文法を1つ、エンコーディングを1つ、オプションを複数指定できる。
各設定のデフォルト値は、文法: SYNTAX_RUBY, エンコーディング: ENCODING_ASCII, オプション: OPTION_NONE となる。

種別 | オプション | オプション(省略形) | 意味
文法 | SYNTAX_DEFAULT | - | デフォルト(Ruby形式)
 | SYNTAX_ASIS | ASIS | 固定文字列検索
 | SYNTAX_POSIX_BASIC | POSIX_BASIC | POSIX基本正規表現
 | SYNTAX_POSIX_EXTENDED | POSIX_EXTENDED | POSIX拡張正規表現
 | SYNTAX_EMACS | EMACS | Emacs形式正規表現
 | SYNTAX_GREP | GREP | grep形式正規表現
 | SYNTAX_GNU_REGEX | GNU_REGEX | GNU Regex形式正規表現
 | SYNTAX_JAVA | JAVA | Java形式正規表現
 | SYNTAX_PERL | PERL | Perl形式
 | SYNTAX_PERL_NG | PERL_NG | Perl形式正規表現 + 名前付き捕獲式集合
 | SYNTAX_RUBY | RUBY | Ruby形式正規表現
エンコーディング | ENCODING_ASCII | ASCII | エンコーディング設定を ASCII にする。
 | ENCODING_ISO_8859_1 | ISO_8859_1 | エンコーディング設定を ISO 8859-1 にする。
 | ENCODING_ISO_8859_2 | ISO_8859_2 | エンコーディング設定を ISO 8859-2 にする。
 | ENCODING_ISO_8859_3 | ISO_8859_3 | エンコーディング設定を ISO 8859-3 にする。
 | ENCODING_ISO_8859_4 | ISO_8859_4 | エンコーディング設定を ISO 8859-4 にする。
 | ENCODING_ISO_8859_5 | ISO_8859_5 | エンコーディング設定を ISO 8859-5 にする。
 | ENCODING_ISO_8859_6 | ISO_8859_6 | エンコーディング設定を ISO 8859-6 にする。
 | ENCODING_ISO_8859_7 | ISO_8859_7 | エンコーディング設定を ISO 8859-7 にする。
 | ENCODING_ISO_8859_8 | ISO_8859_8 | エンコーディング設定を ISO 8859-8 にする。
 | ENCODING_ISO_8859_9 | ISO_8859_9 | エンコーディング設定を ISO 8859-9 にする。
 | ENCODING_ISO_8859_10 | ISO_8859_10 | エンコーディング設定を ISO 8859-10 にする。
 | ENCODING_ISO_8859_11 | ISO_8859_11 | エンコーディング設定を ISO 8859-11 にする。
 | ENCODING_ISO_8859_13 | ISO_8859_13 | エンコーディング設定を ISO 8859-13 にする。
 | ENCODING_ISO_8859_14 | ISO_8859_14 | エンコーディング設定を ISO 8859-14 にする。
 | ENCODING_ISO_8859_15 | ISO_8859_15 | エンコーディング設定を ISO 8859-15 にする。
 | ENCODING_ISO_8859_16 | ISO_8859_16 | エンコーディング設定を ISO 8859-16 にする。
 | ENCODING_UTF8 | UTF8 | エンコーディング設定を UTF-8 にする。
 | ENCODING_UTF16_BE | UTF16_BE | エンコーディング設定を UTF-16 (Big Endian) にする。
 | ENCODING_UTF16_LE | UTF16_LE | エンコーディング設定を UTF-16 (Little Endian) にする。
 | ENCODING_UTF32_BE | UTF32_BE | エンコーディング設定を UTF-32 (Big Endian) にする。
 | ENCODING_UTF32_LE | UTF32_LE | エンコーディング設定を UTF-32 (Little Endian) にする。
 | ENCODING_EUC_JP | EUC_JP | エンコーディング設定を EUC-JP にする。
 | ENCODING_EUC_TW | EUC_TW | エンコーディング設定を EUC-TW にする。
 | ENCODING_EUC_KR | EUC_KR | エンコーディング設定を EUC-KR にする。
 | ENCODING_EUC_CN | EUC_CN | エンコーディング設定を EUC-CN にする。
 | ENCODING_SJIS | SJIS | エンコーディング設定を Shift_JIS にする。
 | ENCODING_KOI8_R | KOI8_R | エンコーディング設定を KOI8-R にする。
 | ENCODING_CP1251 | CP1251 | エンコーディング設定を CP1251 にする。
 | ENCODING_BIG5 | BIG5 | エンコーディング設定を Big5 にする。
 | ENCODING_GB18030 | GB18030 | エンコーディング設定を GB18030 にする。
オプション | OPTION_NONE | - | 正規表現オプションが指定されていない状態にする。
 | OPTION_SINGLELINE | SINGLELINE | '^' → '\A', '$' → '\Z'
 | OPTION_MULTILINE | MULTILINE | '.'が改行にマッチする
 | OPTION_IGNORECASE | IGNORECASE | 大文字/小文字同一視
 | OPTION_EXTEND | EXTEND | パターン拡張形式
 | OPTION_FIND_LONGEST | FIND_LONGEST | 最長一致
 | OPTION_FIND_NOT_EMPTY | FIND_NOT_EMPTY | 空文字列にマッチしない
 | OPTION_NEGATE_SINGLELINE | NEGATE_SINGLELINE | OPTION_SINGLELINEを無効にする
 | OPTION_DONT_CAPTURE_GROUP | DONT_CAPTURE_GROUP | 名前付き捕獲式集合のみ捕獲
 | OPTION_CAPTURE_GROUP | CAPTURE_GROUP | 名前無し捕獲式集合も捕獲

例

string="文字データ"
pattern="データ"

strmatch string pattern
messagebox result "デフォルト"   ; result -> 0 (Not Match)

regexoption "SJIS"
strmatch string pattern
messagebox result "SJIS"   ; result -> 5 (Match)

string="Test (PaTTerN) String"
pattern="(pattern)"

regexoption "IGNORECASE"
strmatch string pattern
sprintf2 msg 'result=%d, matchstr="%s"' result matchstr
messagebox msg "IGNORECASE"          ; result=7, matchstr="PaTTerN"

regexoption "ASIS" "IGNORECASE"
strmatch string pattern
sprintf2 msg 'result=%d, matchstr="%s"' result matchstr
messagebox msg "IGNORECASE + ASIS"   ; result=6, matchstr="(PaTTerN)"

参照

  • strmatch
  • strreplace
  • waitregex


sprintf

フォーマットされた出力を返す。(バージョン4.52以降)

sprintf FORMAT [ARGUMENT ...]

解説

C言語の書式指定にしたがって、引数の数値や文字列をフォーマットして、システム変数 <inputstr> に代入する。
sprintf2 とは違い、常に inputstr に結果を格納する。

サポートされている書式指定
型 | c, d, i, o, u, x, X, e, E, f, g, G, a, A および s
フラグ(オプション) | -, +, 0, # および 空白(' ')
幅(オプション) | 10進整数 または *
精度(オプション) | ピリオド (.) に続けて、負でない10進整数 または *(オプション)

TTL は浮動小数点型を持たないので、浮動小数点数の書式には、対応する小数を文字列変数あるいは文字列で引数に指定する。

このコマンドの結果、以下のうちの一つの値がシステム変数 result に格納される。

値 | 状態
0 | 成功した
1 | 書式指定がない
2 | 書式指定が不正
3 | 引数が不正

例

sprintf 'Tera Term 4.%d' 51
messagebox inputstr 'sprintf test(1)'

sprintf 'Windows %d (+%s)' 2000 'SP4'
messagebox inputstr 'sprintf test(2)'

sprintf '%s=%d %s=0x%x' 'dec' 10 'hex' 33
messagebox inputstr 'sprintf test macro(3)'

sprintf 'pi=%f' "3.14159"
messagebox inputstr 'sprintf test macro(4)'

sprintf 'pi=%.4e' "3.14159"
messagebox inputstr 'sprintf test macro(5)'

sprintf 'pi=%.4g' "3.14159"
messagebox inputstr 'sprintf test macro(6)'

参照

  • sprintf2


sprintf2

フォーマットされた出力を返す。(バージョン4.62以降)

sprintf2 strvar FORMAT [ARGUMENT ...]

解説

C言語の書式指定にしたがって、引数の数値や文字列をフォーマットして、文字列型変数 <strvar> に代入する。
sprintf とは違い、任意の変数に結果を格納できる。

サポートされている書式指定
型 | c, d, i, o, u, x, X, e, E, f, g, G, a, A および s
フラグ(オプション) | -, +, 0, # および 空白(' ')
幅(オプション) | 10進整数 または *
精度(オプション) | ピリオド (.) に続けて、負でない10進整数 または *(オプション)

TTL は浮動小数点型を持たないので、浮動小数点数の書式には、対応する小数を文字列変数あるいは文字列で引数に指定する。

このコマンドの結果、以下のうちの一つの値がシステム変数 result に格納される。

値 | 状態
0 | 成功した
1 | 書式指定がない
2 | 書式指定が不正
3 | 引数が不正
4 | 格納先変数が不正

例

sprintf2 ver 'Tera Term 4.%d' 51
messagebox ver 'sprintf test(1)'

sprintf2 win 'Windows %d (+%s)' 2000 'SP4'
messagebox win 'sprintf test(2)'

sprintf2 test '%s=%d %s=0x%x' 'dec' 10 'hex' 33
messagebox test 'sprintf test macro(3)'

sprintf 'pi=%f' "3.14159"
messagebox inputstr 'sprintf test macro(4)'

sprintf 'pi=%.4e' "3.14159"
messagebox inputstr 'sprintf test macro(5)'

sprintf 'pi=%.4g' "3.14159"
messagebox inputstr 'sprintf test macro(6)'

参照

  • sprintf


str2code

文字列を ASCII コード値に変換する。

str2code <intvar> <string>

解説

文字列 <string> が1文字の場合、その文字の ASCII コードを整数変数 <intvar> に格納する。
<string> の長さが2以上の場合、<string> をその ASCII コード列に変換し、それを <intvar> に格納する。 <intvar> は最大 4 個の ASCII コードを格納できる。
もし <string> の長さが 4 文字より長い場合、ASCII コード列の最後の 4 バイトが <intvar> に格納される。

例

str2code val 'A'
; val=65 ("A" のASCII コード)

str2code val 'AB'
; val=65*256+66


str2int

文字列を整数値に変換する。

str2int <intvar> <string>

解説

文字列 <string> を整数値に変換し、整数変数 <intvar> に代入する。
文字列 <string> には10進、16進を指定することができる。以下に例を示す。

10進 … 123, 0009
16進 … 0x7b, $7b

正常に変換できた場合は 1 、できなかった場合は 0 がシステム変数 result に代入される。

例

str2int val '123'
; val=123, result=1

str2int val '123abc'
; val=123, result=1

str2int val '0009'
; val=9,   result=1

str2int val 'abc'
; val=0,   result=0

hexnum='0x456FE3'
str2int val hexnum
sprintf '%d %x' val val
messagebox inputstr 'test'
; val=4550627, result=1


strcompare

文字列を比較する。

形式

strcompare <string1> <string2>

解説

2つの文字列 <string1>, <string2> を比較し、結果をシステム変数 result に代入する。
文字列の文字コード表現を符号なし整数(最初の文字が最上位バイト)とみなし、2つの文字列に対応する整数値の大小関係を求め、それに応じて以下のようにresult の値が決定される。

大小関係 | resultの値
<string1> < <string2> | -1
<string1> = <string2> | 0
<string1> > <string2> | 1

例

; result = -1
strcompare 'abc' 'def'

strcompare command 'next'
if result=0 goto label
strcompare command 'end'
if result=0 end


strconcat

文字列を継ぎ足す。

形式

strconcat <strvar> <string>

解説

文字列変数 <strvar> の文字列値の最後に 文字列 <string> を継ぎ足す。

例

filename = 'c:\teraterm\'
strconcat filename 'test.txt'  ; c:\teraterm\test.txt

msg='HOST:'
sprintf2 var "%s/ USER NAME:%s" '192.168.1.1' 'test user'
strconcat msg var
messagebox msg "inputstr" ; HOST:192.168.1.1/ USER NAME:test user


strcopy

文字列をコピーする。

形式

strcopy <string> <pos> <len> <strvar>

解説

文字列 <string> の <pos> 文字目（1オリジン）から <len> 文字分を文字列変数 <strvar> にコピーする。

例

strcopy 'tera term' 6 4 substr
; substr='term'


strinsert

文字列を挿入する。(バージョン4.67以降)

形式

strinsert <strvar> <index> <string>

解説

文字列変数 <strvar> の <index> 位置（1オリジン）に、文字列 <string> を挿入する。

例

s='abc'
strinsert s 3 'XYZ'  ; 'abXYZc'
messagebox s s

s='abc'
strinsert s 1 'XYZ'  ; 'XYZabc'
messagebox s s

s='abc'
strinsert s -1 'XYZ'  ; シンタックスエラー
messagebox s s

s='abc'
strinsert s 0 'XYZ'  ; シンタックスエラー
messagebox s s

s='abc'
strinsert s 4 'XYZ'  ; 'abcXYZ'
messagebox s s

s='abc'
strinsert s 5 'XYZ'  ; シンタックスエラー
messagebox s s

参照

  • strmatch
  • strreplace
  • strremove


strjoin

文字を連結する。(バージョン4.67以降)

形式

strjoin <strvar> <separator> [<count>]

解説

groupmatchstr1～groupmatchstr9 を区切り記号 <separator> で連結し、文字列変数 <strvar> に格納する。

<separator> には区切り記号として扱う文字列を指定する。

<count> には、連結する部分文字列の最大数（9以下）を指定する。
<count> が省略された場合は 9 とみなされる。

例

groupmatchstr1="Jan"
groupmatchstr2="Feb"
groupmatchstr3="Mar"
groupmatchstr4="Apr"
groupmatchstr5="May"
groupmatchstr6="Jun"
groupmatchstr7="Jul"
groupmatchstr8="Aug"
groupmatchstr9="Sep"
strjoin strvar ","
messagebox strvar "strvar"   ; 'Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep'

groupmatchstr1="Jan"
groupmatchstr2="Feb"
groupmatchstr3="Mar"
groupmatchstr4="Apr"
groupmatchstr5="May"
groupmatchstr6="Jun"
groupmatchstr7="Jul"
groupmatchstr8="Aug"
groupmatchstr9="Sep"
strjoin strvar " and " 6
messagebox strvar "strvar"   ; 'Jan and Feb and Mar and Apr and May and Jun'

groupmatchstr1="Jan"
groupmatchstr2="Feb"
groupmatchstr3="Mar"
groupmatchstr4="Apr"
groupmatchstr5="May"
groupmatchstr6="Jun"
groupmatchstr7=""
groupmatchstr8=""
groupmatchstr9=""
strjoin strvar "," 9
messagebox strvar "strvar"   ; 'Jan,Feb,Mar,Apr,May,Jun,,,'

参照

  • strsplit


strlen

文字列の長さを返す。

形式

strlen <string>

解説

文字列 <string> の長さをシステム変数 result に格納する。
長さはバイト単位でカウントされる。

例

strlen Txcnt
if result>0 then
    logwrite Txcnt
else
    messagebox 'Txcnt is NULL' 'error'
endif


strmatch

正規表現によるパターンマッチングを行う。(バージョン4.59以降)

strmatch <target string> <string with regular expression>

解説

Oniguruma の正規表現 が使用できる。
<target string>引数に指定された文字列を、正規表現 <string with regular expression> によるパターンに合致するかどうかを調べる。
このコマンドの実行結果はシステム変数 result , matchstr , groupmatchstr に格納される。変数 result の値の意味は以下のとおり。

値 | 意味
0 | マッチしなかった
1 | マッチした位置（1オリジン）

変数 matchstr には最初にマッチしたパターンが格納される。
変数 groupmatchstr1～groupmatchstr9 にはグループマッチしたパターンが格納される。
なお、マッチしなかった場合には、これらの変数は strmatch 実行前の内容が保持される。

日本語等のマルチバイト文字列を検索する場合、事前にregexoptionで適切なエンコーディングを設定しておく必要がある。

例

strmatch 'Microsoft Windows XP [Version 5.1.2600]' '\[(Version (\d+).(\d+).(\d+))\]'

int2str s result
messagebox s 'result'                        ; 22
messagebox matchstr 'matchstr'               ; [Version 5.1.2600]
messagebox groupmatchstr1 'groupmatchstr1'   ; Version 5.1.2600
messagebox groupmatchstr2 'groupmatchstr2'   ; 5
messagebox groupmatchstr3 'groupmatchstr3'   ; 1
messagebox groupmatchstr4 'groupmatchstr4'   ; 2600

参照

  • regexoption
  • strreplace
  • strinsert
  • strremove


strremove

文字列を削除する。(バージョン4.67以降)

形式

strremove <strvar> <index> <len>

解説

文字列変数 <strvar> の <index> 位置（1オリジン）から <len> 文字分を削除し詰める。

例

s = '123abc456'
strremove s 4 3  ; '123456'
messagebox s s

s = '123abc456'
strremove s 1 3  ; 'abc456'
messagebox s s

s = '123abc456'
strremove s -1 3 ; シンタックスエラー
messagebox s s

s = '123abc456'
strremove s 0 3  ; シンタックスエラー
messagebox s s

s = '123abc456'
strremove s 9 1  ; '123abc45'
messagebox s s

s = '123abc456'
strremove s 9 2  ; シンタックスエラー
messagebox s s

s = '123abc456'
strremove s 10 1 ; シンタックスエラー
messagebox s s

s = '123abc456'
strremove s 4 0  ; シンタックスエラー
messagebox s s

参照

  • strmatch
  • strreplace
  • strinsert


strreplace

文字列を置換する。(バージョン4.67以降)

形式

strreplace <strvar> <index> <regex> <newstr>

解説

文字列変数 <strvar> の <index> 位置（1オリジン）から、正規表現 <regex> を検索し、文字列 <newstr> に置き換える。
<newstr> が ""(空文字列) の場合、<strvar> 中の <regex> は削除される。

置換が成功すると、システム変数 result に "1" が格納され、正規表現 <regex> でマッチした文字列はシステム変数 matchstr に格納される。
<regex> が <strvar> の内容にマッチせず置換が行われなかった場合は、result に "0" が格納される。
<regex> の書式が正しくない等でエラーとなった場合は、result に "-1" が格納される。

日本語等のマルチバイト文字列を検索する場合、事前にregexoptionで適切なエンコーディングを設定しておく必要がある。

このマクロコマンドを実行すると システム変数 groupmatchstr1 ～ groupmatchstr9 の内容がクリアされる。

例

src='linux.txt'
strreplace src 1 '\.txt' '.doc'
messagebox src 'result'          ; linux.doc

src='I can do it.'
strreplace src 1 'can\s' ''
messagebox src 'result'     ; 'I do it.'

src='Microsoft Windows XP [Version 5.1.2600]'
strmatch src '(Version \d+.\d+.)\d+'

int2str s result
messagebox s groupmatchstr1
pos=result                ; 23
mstr=groupmatchstr1       ; Version 5.1.

strreplace src pos mstr 'Build '
if result=1 then
    messagebox src 'result'   ; Microsoft Windows XP [Build 2600]
endif

参照

  • Oniguruma の正規表現
  • regexoption
  • strmatch
  • strinsert
  • strremove


strscan

部分文字列の位置を返す

形式

strscan <string> <substring>

解説

文字列 <string> の中に、 部分文字列 <substring> が含まれているかどうか調べる。
もし、 <substring> が見つかった場合、その位置（1オリジン）がシステム変数 result に格納される。
<substring> が複数含まれている場合、最初のものの位置が格納される。もし、 <substring> が見つからなかった場合、 result に0が格納される。

例

strscan 'tera term' 'term'
; result の値は6
int2str valstr result
messagebox valstr 'result'

; 16進文字列を16進および2進へ変換する
basenum='0060E3da'
base=16
call base2dec
int2str sdec decnum
messagebox sdec 'decnum'
base=2
call dec2base
messagebox basenum 'basenum'
end

:dec2base
basenum=''
tmp=decnum      ;modified so not destructive of decnum
while tmp > 0
   strcopy '0123456789ABCDEF' (tmp%base)+1 1 basedig
   strconcat basedig basenum
   basenum=basedig
   tmp=tmp/base
endwhile
return

:base2dec
decnum=0
strlen basenum
len=result
for i 1 len
   strcopy basenum i 1 basedig
   decnum=decnum*base
   strscan '0123456789ABCDEFabcdef' basedig
   if result>16 result=result-6      ;take care of lower case
   decnum=decnum+result-1
next
return

; IPアドレスのネットワークアドレスとサブネットマスクを求める
ip='192.168.1.189'
sn='255.255.255.248'
bits=0          ;calculate bits & first address in sn
bitstr='000 128 192 224 240 248 252 254 255'    ;lookup table for # bits
do
    str2int isn sn
    int2str stmp isn
    strscan bitstr stmp     ;use lookup table to find bits
    bits=bits+(result-1)/4
    str2int tmp ip      ;find net by bitwise AND of ip and mask
    sprintf2 net '%s%d' net tmp&isn
    strscan sn '.'
    strcopy sn result+1 999 sn
    strscan ip '.'
    strcopy ip result+1 999 ip
    if result>0 strconcat net '.'
loop while result>0
messagebox bits 'bits'
messagebox net 'net'


strspecial

特殊文字を変換する。(バージョン4.67以降)

形式

strspecial <strvar> [<strval>]

パラメータ

文字列変数 <strvar>
この引数で指定した文字列が変換される。
第2引数(<strval>)を渡した場合は、変換結果が当該文字列変数に代入される。
文字列 <strval> (オプション)
この引数を指定した場合、指定した文字列が変換され、文字列変数 <strvar>に代入される。

解説

渡された文字列に含まれる以下の文字を特殊文字に変換する。

入力 | 出力
\\ | "\"
\n | 改行
\t | タブ

例

str = "AB\tCD\nEF\\nGH"
strspecial str
messagebox str "special"

strspecial str "AB\tCD\nEF\\nGH"
messagebox str "special"


strsplit

文字列を分割する。(バージョン4.67以降)

形式

strsplit <strval> <separator> [<count>]

解説

文字列 <strval> から、区切り記号 <separator> で区切られた部分文字列を取り出して、システム変数 groupmatchstr1 ～ groupmatchstr9 に返す。

<separator> には区切り記号として扱う文字を1文字だけ指定する。

<count> には、取得する部分文字列の最大数（9以下）を指定する。
文字列中の部分文字列の数が <count> 未満であるとき、部分文字列が代入されなかった groupmatchstr には、""(空文字列) が代入される。
文字列中の部分文字列の数が <count> を超えるとき、最後の groupmatchstr には残りの文字列がすべて代入される。

<count> が省略された場合には、部分文字列の最大数は 9 とみなされる。
文字列中の部分文字列の数が 9 を超えるとき、<count> を指定した場合とは違い 9 番目の部分文字列のみが代入される。

実際に分割された個数をシステム変数 result に格納する。
<count> が省略され、文字列中の部分文字列の数が 9 を超えるときは、システム変数 result に 10 を格納する。

例

src=',,Sun,Mon,Tue,,Thu,Fri,Sat'
strsplit src ',' 7

messagebox groupmatchstr1 "groupmatchstr1" ; ''
messagebox groupmatchstr2 "groupmatchstr2" ; ''
messagebox groupmatchstr3 "groupmatchstr3" ; 'Sun'
messagebox groupmatchstr4 "groupmatchstr4" ; 'Mon'
messagebox groupmatchstr5 "groupmatchstr5" ; 'Tue'
messagebox groupmatchstr6 "groupmatchstr6" ; ''
messagebox groupmatchstr7 "groupmatchstr7" ; 'Thu,Fri,Sat'
messagebox groupmatchstr8 "groupmatchstr8" ; ''
messagebox groupmatchstr9 "groupmatchstr9" ; ''
messagebox result         "result"         ; 7

src='Sun,Mon,Tue,Wed,Thu,Fri,Sat'
strsplit src ',' 7

messagebox groupmatchstr1 "groupmatchstr1" ; 'Sun'
messagebox groupmatchstr2 "groupmatchstr2" ; 'Mon'
messagebox groupmatchstr3 "groupmatchstr3" ; 'Tue'
messagebox groupmatchstr4 "groupmatchstr4" ; 'Wed'
messagebox groupmatchstr5 "groupmatchstr5" ; 'Thu'
messagebox groupmatchstr6 "groupmatchstr6" ; 'Fri'
messagebox groupmatchstr7 "groupmatchstr7" ; 'Sat'
messagebox groupmatchstr8 "groupmatchstr8" ; ''
messagebox groupmatchstr9 "groupmatchstr9" ; ''
messagebox result         "result"         ; 7

src='A string'#10'of ,,tokens'#10'and some  more tokens'
strsplit src '\n' 9

messagebox groupmatchstr1 "groupmatchstr1" ; 'A string'
messagebox groupmatchstr2 "groupmatchstr2" ; 'of ,,tokens'
messagebox groupmatchstr3 "groupmatchstr3" ; 'and some  more tokens'
messagebox groupmatchstr4 "groupmatchstr4" ; ''
messagebox groupmatchstr5 "groupmatchstr5" ; ''
messagebox groupmatchstr6 "groupmatchstr6" ; ''
messagebox groupmatchstr7 "groupmatchstr7" ; ''
messagebox groupmatchstr8 "groupmatchstr8" ; ''
messagebox groupmatchstr9 "groupmatchstr9" ; ''
messagebox result         "result"         ; 3

src='1,2,3,4,5,6,7,8,9,0'
strsplit src ','

messagebox groupmatchstr1 "groupmatchstr1" ; '1'
messagebox groupmatchstr2 "groupmatchstr2" ; '2'
messagebox groupmatchstr3 "groupmatchstr3" ; '3'
messagebox groupmatchstr4 "groupmatchstr4" ; '4'
messagebox groupmatchstr5 "groupmatchstr5" ; '5'
messagebox groupmatchstr6 "groupmatchstr6" ; '6'
messagebox groupmatchstr7 "groupmatchstr7" ; '7'
messagebox groupmatchstr8 "groupmatchstr8" ; '8'
messagebox groupmatchstr9 "groupmatchstr9" ; '9'
messagebox result         "result"         ; 10

参照

  • strjoin


strtrim

前後の文字を削除する。(バージョン4.67以降)

形式

strtrim <strvar> <trimchars>

解説

文字列変数 <strvar>の先頭と末尾から、<trimchars> で指定された文字をすべて削除する。

例

src='   '#9' #include <stdio.h>      '#9' '
strtrim src ' \t'
messagebox src 'result'          ; '#include <stdio.h>'

src='         #include <stdio.h>         '
strtrim src ' '
messagebox src 'result'          ; '#include <stdio.h>'

src='*;|@123***456@|;'
strtrim src '*;|@'
messagebox src 'result'          ; '123***456'

src='*;|@123***456@|;'
strtrim src '*;|@123456'
messagebox src 'result'          ; ''

src='#*;|@123***456@|;'
strtrim src '*;|@'
messagebox src 'result'          ; '#*;|@123***456'

src='*;|@123***456@|;#'
strtrim src '*;|@'
messagebox src 'result'          ; '123***456@|;#'

参照

  • strinsert
  • strremove


tolower

文字列をすべて小文字に変換する。(バージョン4.53以降)

tolower <strvar> <string>

解説

<string> に含まれるアルファベットを全て小文字にし、 <strvar> に代入する。

例

; valstrに 'abcdefgh' が代入される
tolower valstr 'abCDefGH'


toupper

文字列をすべて大文字に変換する。(バージョン4.53以降)

toupper <strvar> <string>

解説

<string> に含まれるアルファベットを全て大文字にし、 <strvar> に代入する。

例

; valstrに 'ABCDEFGH' が代入される
toupper valstr 'abCDefGH'


basename

パス名からファイル名を得る。(バージョン4.69以降)

basename <strvar> <path>

解説

パス名 <path> からファイル名部分を <strvar> に格納する。
パス名は文字列として処理しており、実在している必要はない。

例

basename fname 'c:\teraterm\test.txt'
; fname = "test.txt"

参照

  • dirname
  • makepath


dirname

パス名からディレクトリ名を得る。(バージョン4.69以降)

dirname <strvar> <path>

解説

パス名 <path> のディレクトリ名部分を <strvar> に格納する。
パス名は文字列として処理しており、実在している必要はない。

例

dirname dir 'c:\teraterm\test.txt'
; dir = "c:\teraterm"
dirname dir 'c:\teraterm\'
; dir = "c:"
dirname dir 'c:\teraterm'
; dir = "c:"

参照

  • dirname
  • makepath


fileclose

ファイルハンドルを閉じる。

fileclose <file handle>

解説

ファイルハンドル <file handle> で指定されるファイルをクローズする。
このコマンド実行後、<file handle> は無効となる。

例

fileclose fhandle
fileopenも参照のこと。


fileconcat

ファイルの内容を別のファイルに追加する。

fileconcat <file1> <file2>

解説

ファイル <file2> の内容をファイル <file1> の最後に追加する。
<file1> と <file2> は違うファイルでなければならない。
<file2> の追加が成功した場合、システム変数 result に 0 が格納される。それ以外の場合, result に 0 以外が格納される。

例

fileconcat 'test.dat' test2.dat'


filecopy

ファイルをコピーする。

filecopy <file1> <file2>

解説

ファイル <file1> をコピーし、ファイル <file2> を作成する。
<file2> がすでに存在する場合は上書きされる。<file1> と <file2> は違う名前でなければならない。
ファイルのコピーが成功した場合、システム変数 result に 0 が格納される。それ以外の場合 result に 0 以外が格納される。(バージョン 4.104 以降)

システム変数 result の値

このコマンドの結果、コピーの状態に応じて以下のうちの一つの値がシステム変数 result に格納される。

値 | 状態
-4 | コピーに失敗した。
-3 | ファイル <file1> とファイル <file2> が同じ名前である。
-2 | ファイル <file2> は、ファイル名に利用できない文字を含んでいる。
-1 | ファイル <file1> は、ファイル名に利用できない文字を含んでいる。
0 | コピーに成功した。

例

filecopy 'test.dat' 'test2.dat'


filecreate

ファイルを作成する。

filecreate <file handle> <filename>

解説

ファイル <filename> を新しく作成しオープンする。
ファイルポインタはファイルの先頭にセットされる。すでに同じ名前のファイルが存在する場合、ファイルサイズは0にされる。
もしファイルが正しく作成され、オープンされた場合、ファイルハンドルが整数変数 <file handle> に格納される。それ以外の場合、<file handle> に-1が格納される。
ファイルの作成が成功した場合、システム変数 result に 0 が格納される。それ以外の場合, result に 0 以外が格納される。

なお、ファイル作成後、ファイルハンドルはオープンされたままとなる。

例

filecreate fhandle 'data.dat'
fileclose fhandle


filedelete

ファイルを削除する。

filedelete <filename>

解説

ファイル <filename> を削除する。
ファイルの削除が成功した場合、システム変数 result に 0 が格納される。それ以外の場合, result に 0 以外が格納される。

例

filedelete 'temp.log'


filelock

開いているファイルをロックする。(バージョン4.74以降)

filelock <file handle> [<timeout>]

解説

すでに開いているファイルハンドル <file handle> を指定すると、ファイル全体をロックする。 ロック中、他のプロセスからの当該ファイルへのアクセスはエラーとなる。
引数 <timeout> の意味については下記のとおり。

<timeout> | 説明
0 | ファイルがすでにロックされていたら、即座にエラーを返す。
省略 | ファイルがすでにロックされていたら、解除されるまで無限に待つ。
Value | ファイルがすでにロックされていたら、解除されるまで最大 Value 秒待つ。タイムアウトしたらエラーを返す。

ロックに成功するとシステム変数 result が 0 に、失敗すると 1 となる。

例

fileopen fhandle 'test.txt' 0
filelock fhandle
if result!=0 then
    messagebox 'error' 'hoge'
endif
filewrite fhandle 'sample'
pause 60
fileunlock fhandle
if result!=0 then
    messagebox 'error' 'hoge'
endif
fileclose fhandle

参照

  • fileunlock


filemarkptr

ファイルポインタを保存する。

filemarkptr <file handle>

解説

<file handle> で指定されるオープンされているファイルの現在のファイルポインタを保存する。
保存されたファイルポインタは "fileseekback" によって呼び戻すことができる。

例

filemarkptr fhandle

"filestrseek2" の例も参照


fileopen

ファイルを開く。

fileopen <file handle> <filename> <append flag> [<readonly flag>]

パラメータ

整数変数 <file handle>
もしファイルが正しくオープンされた場合、ファイルハンドルが格納される。
バージョン 4.101 以前と 4.104 以降: それ以外の場合、<file handle> に-1が格納される。マクロエラーとはならない。
バージョン 4.102, 4.103: それ以外の場合、<file handle> に-1が格納される。マクロエラーとなり、マクロの実行が一次停止する。
文字列 <filename>
開くファイル名を指定する。
ファイルが存在しない場合は、新たに作成されてからオープンされる。
整数 <append flag>
0を指定すると、ファイルポインタの位置はファイルの始めにセットされる。
0以外を指定すると、ファイルポインタはファイルの最後にセットされる。
整数 <readonly flag> (オプション デフォルト=0) (バージョン 4.85 以降)
0を指定すると、読み書きモードでファイルを開く。
0以外を指定すると、読み取り専用モードでファイルを開く。

解説

ファイルはバイナリモードでオープンされる。

例

fileopen fhandle 'data.dat' 0
fileopen fhandle 'data.dat' 1

fileopen fhandle 'test.bat' 0
filewrite fhandle 'md .\v20080619_Test'
fileclose fhandle
pause 5
exec 'cmd /c test.bat'
pause 10
end

参照

  • filewrite
  • fileclose


filereadln

ファイルから一行読む。

filereadln <file handle> <strvar>

解説

ファイルハンドル <file handle> で指定されるファイルから一行読む。
読み込まれた行は、文字列変数 <strvar> に格納される。
ファイルポインタは次の行の始めへ移動する。もし、行を読んでいる間にファイルポインタがファイルの
最後に達した場合、システム変数 result に 1 が格納される。それ以外の場合、result に 0 が格納される。
改行のみの場合は、文字列変数は空となり、result には 0 が格納される。

例

; ファイルオープン
fileopen fhandle 'test.txt' 0

:loop
; 一行読み込み
filereadln fhandle line
if result goto fclose
; 読み込んだ行を表示
messagebox line 'test.txt'
; ファイル最後まで繰り返す
goto loop

:fclose
; ファイルクローズ
fileclose fhandle

; ファイルオープン
fileopen fhandle 'test.txt' 0
while 1
    ; 一行読み込み
    filereadln fhandle line
    if result=1 then
          break
    endif
    ; 読み込んだ行を表示
    messagebox line 'test.txt'
    ; ファイル最後まで繰り返す
endwhile
; ファイルクローズ
fileclose fhandle

; ファイルに含まれるキーワードを置換する
infile = 'testdata.txt'
outfile = 'testdata_output.txt'

oldkeyword = 'BBB'
newkeyword = 'zzz'

fileopen ifd infile 0
fileopen ofd outfile 0

while 1
    filereadln ifd line
    if result=1 then
        break
    endif
    strreplace line 1 oldkeyword newkeyword
    filewriteln ofd line
endwhile

fileclose ifd
fileclose ofd

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

[testdata.txt]
AABBBCCCCDDDDD
###DDCCCBBBBAAAAA####
1234567890

[testdata_output.txt]
AAzzzCCCCDDDDD
###DDCCCzzzBAAAAA####
1234567890

参照

  • strreplace
  • fileopen
  • filewriteln
  • fileclose


fileread

ファイルを読む。(バージョン4.48以降)

fileread <file handle> <read byte> <strvar>

解説

<file handle> により指定されたファイルから特定したバイト数のデータを読み出す。
データは文字列変数 <strvar> へ記憶され、ファイルポインタは読み込んだバイト数分進められる。
データを読み込み終わる前にファイルポインタがファイルの終わりまで行った場合は、システム変数 "result" に 1 が格納される。 それ以外は、"result" に 0 が格納される。
変数 <read byte> のとる値の範囲は 1 から 511 でなければならない。

例

filename = 'foo.txt'

fileopen fp filename 0

:loop
fileread fp 10 data
messagebox data filename
if result goto fclose
goto loop

:fclose
fileclose fp

; バイナリファイルの先頭から32バイトを読み込み、ホストへ送信する。
filename = 'sample.bin'

fileopen fhandle filename 0
if fhandle == -1 goto the_end

call send_16_bytes      ; send first 16 bytes
fileseek fhandle 16 1   ; seek past next 16 without sending
call send_16_bytes      ; send next (last) 16 bytes
fileclose fhandle
goto the_end

;#########################################
:send_16_bytes
    for i 1 16
        fileread fhandle 1 str      ; read one byte at a time so we can detect zero.
        if result == 1 break
        str2code integer str        ; if zero then str will be empty and integer will be set to zero
        ;sprintf 'integer = 0x%02X' integer
        ;messagebox inputstr 'test'
        send integer
    next
return
;#########################################
:the_end

参照

  • fileopen
  • fileclose


filerename

ファイル名を変更する。

filerename <file1> <file2>

解説

ファイル <file1> を <file2> という名前に変更する。
<file1> と <file2> は違う名前でなければならない。
ファイル名の変更が成功した場合、システム変数 result に 0 が格納される。それ以外の場合, result に 0 以外が格納される。

例

filerename 'test.dat' test2.dat'


filesearch

ファイルまたはフォルダがあるか確かめる。

filesearch <filename>

解説

ファイルまたはフォルダ <filename> が存在するかどうか調べる。
存在する場合は、システム変数 result に1が返る。存在しない場合は、result に0が返る。

例

filesearch 'readme.txt'
if result=0 messagebox 'File not found.' 'error'

参照

  • foldersearch


fileseek

ファイルポインタを移動する。

fileseek <file handle> <offset> <origin>

解説

ファイルハンドル <file handle> で指定されるファイルのファイルポインタを移動する。
移動後のファイルポインタは下記のようになる。

<origin> | 0 | ファイルの最初から <offset> バイト
<origin> | 1 | 現在の位置から <offset> バイト
<origin> | 2 | ファイルの最後から <offset> バイト

例

; ファイルの最初へ移動
fileseek fhandle 0 0

; 現在の位置から 10 バイト先へ移動
fileseek fhandle 10 1

; ファイルの最後へ移動
fileseek fhandle 0 2

; ファイルの最後から 10 バイト前の位置へ移動
fileseek fhandle 0-10 2


fileseekback

"filemarkptr" コマンドで保存した位置にファイルポインタを移動する。

fileseekback <file handle>

解説

ファイルハンドル <file handle> で指定されるファイルのファイルポインタを移動する。
移動後のファイルポインタは下記のようになる。

例

fileseekback fhandle

"filestrseek2" の例を参照。


filestat

ファイルもしくはフォルダの統計情報を取得する。(バージョン4.66以降)

filestat <filename> <size> [<mtime>] [<drive>]

解説

ファイルもしくはフォルダ <filename> の統計情報を取得する。
ファイルサイズを <size> に格納する。
ファイルもしくはフォルダの最終変更時間を <mtime> に格納する。
ファイルもしくはフォルダのドライブ番号を <drive> に格納する。

取得に失敗した場合は、システム変数 result に -1 が格納される。

例

filestat 'test.exe' size time drive

if result = -1 then
    messagebox 'file open error' 'filestat'
else
    sprintf2 str 'File size=%d Time modified=%s Drive=%s' size time drive
    messagebox str 'filestat'
endif

filestat 'Macro' size time drive

if result = -1 then
    messagebox 'Directory open error' 'filestat'
else
    sprintf2 str 'Directory size=%d Time modified=%s Drive=%s' size time drive
    messagebox str 'filestat'
    ; ex. Directory size=0 Time modified=2014-03-04 22:44:47 Drive=C
endif

参照

  • foldersearch
  • getfileattr


filestrseek

文字列をファイルの先頭から末尾に向かって検索する。

filestrseek <file handle> <string>

解説

ファイルハンドル <file handle> で指定されるファイルから、文字列 <string> を検索する。
検索は現在のファイルポインタの位置から開始する。検索はファイルの終わりの方に向かって行われる。逆方向の検索には "filestrseek2" コマンドを使用する。
<string> が見つかった場合、ファイルポインタは <string> の次の文字の位置になり、システム変数 result に 1 が格納される。
<string> が見つからなかった場合、ファイルポインタは移動せず、システム変数 result に 0 が格納される。

例

fileopen fhandle 'teraterm.log' 0

; ファイル "teraterm.log" から文字列 "abc" を検索し、
filestrseek fhandle 'abc'
if result=0 goto not_found
; "abc" の次の文字からその行の終わりまでを読み込む
filereadln fhandle str

:not_found
fileclose fhandle


filestrseek2

文字列をファイルの末尾から先頭へ向かって検索する。

filestrseek2 <file handle> <string>

解説

ファイルハンドル <file handle> で指定されるファイルから、文字列 <string> を検索する。
検索は現在のファイルポインタの位置から開始する。検索はファイルの先頭の方に向かって行われる。逆方向の検索には "filestrseek" コマンドを使用する。
<string> が見つかった場合、ファイルポインタは <string> の直前の文字の位置になり、システム変数 result に 1 が格納される。ただし、ファイルの1バイト目だった場合は、ファイルポインタはゼロオフセットとなる。
<string> が見つからなかった場合、ファイルポインタは移動せず、システム変数 result に 0 が格納される。
このコマンドを実行する前にすでにファイルポインタが 0 の場合、result に 0 が格納される。

例

; ファイル "teraterm.log" をオープン、ファイルポインタはファイルの最後
fileopen fhandle 'teraterm.log' 1

:next
; 文字列 "abc" を後方検索
filestrseek2 fhandle 'abc'
if result=0 goto not_found
; ポインタを保存
filemarkptr fhandle
; "abc" の直前の文字からその行の終わりまでを読み込む
filereadln fhandle str
; ポインタを戻す
fileseekback fhanlde
; 次を検索
goto next

:not_found
fileclose fhandle


filetruncate

ファイルのサイズを変更する。(バージョン4.67以降)

filetruncate <filename> <size>

解説

ファイル <filename> をサイズ <size> バイトの大きさに変更する。
指定したサイズが、既存の大きさを超えた場合、ヌル文字('\0')が追加される。

サイズ変更に成功した場合は、システム変数 result に 0 が格納される。 失敗した場合は -1 が格納される。

例

; ファイルを32バイトに切り詰める
filetruncate 'test.exe' 32
if result = -1 then
    messagebox 'file truncate error' 'filetruncate'
else
    messagebox 'file truncate success' 'filetruncate'
endif

; 8MBの空ファイルを作る
size = 8*1024*1024
filetruncate 'bigfile.bin' size

; マクロがある場所にログファイルを作る
getdir dir
sprintf2 filename '%s\test.log' dir
logopen filename 0 0
; ファイルの上限サイズ
maxsize = 512
counter = 0

:loop
counter = counter + 1
sprintf2 line 'counter = %d' counter
logwrite line
logwrite #13#10
filetruncate filename maxsize
if result = -1 then
    messagebox 'file truncate error' 'filetruncate'
    goto skip
endif
if counter > 32 goto skip
goto loop

:skip
logclose


fileunlock

開いているファイルのロックを解除する。(バージョン4.74以降)

fileunlock <file handle>

解説

すでに開いているファイルハンドル <file handle> を指定すると、ファイル全体のロックを解除する。

ロックの解除に成功するとシステム変数 result が 0 に、失敗すると 1 となる。

例

fileopen fhandle 'test.txt' 0
filelock fhandle
if result!=0 then
    messagebox 'error' 'hoge'
endif
filewrite fhandle 'sample'
pause 60
fileunlock fhandle
if result!=0 then
    messagebox 'error' 'hoge'
endif
fileclose fhandle

参照

  • filelock


filewrite

ファイルにデータを書き込む。

filewrite <file handle> <data>

解説

ファイルハンドル <file handle> で指定されるファイルへ、<data> を書き込む。

<data> が文字列型の場合、文字列を書き込む。
<data> が整数型の場合は、その値の下位バイト(0-255)を ASCII コードとみなし、その文字を書き込む。

例

filewrite fhandle '---------cut here---------'#13#10

; NUL文字(0x00)を書き込む
filewrite fhandle 0


filewriteln

ファイルにデータを改行付きで書き込む。

filewriteln <file handle> <data>

解説

ファイルハンドル <file handle> で指定されるファイルへ、<data> と改行文字 (CR+LF) を書き込む。

<data> が文字列型の場合、文字列を書き込む。
<data> が整数型の場合は、その値の下位バイト(0-255)を ASCII コードとみなし、その文字を書き込む。

例

filewriteln fhandle '---------cut here---------'

; NUL文字(0x00)と改行文字(CR+LF)を書き込む
filewrite fhandle 0


findfirst, findnext, findclose

findfirst

文字列に合致する最初のファイルを探す。

findfirst <dir handle> <file name> <strvar>

解説

findfirst コマンドはファイル名 <file name> に合致する最初のファイルを探す。
ファイルが見つかった場合、ディレクトリハンドルが <dir handle> に、最初のファイル名が <strvar> に格納され、システム変数 <result> に 1 が格納される。
findfirst コマンドが最初のファイルを見つけた場合、ディレクトリハンドルを指定して findnext コマンドを使用し、 <file name> に合致する次のファイルを探すことができる。
ディレクトリハンドルは findclose コマンドによって解放されなければならない。

findnext

文字列に合致する次のファイルを探す。

findnext <dir handle> <strvar>

解説

findnext コマンドは findfirst コマンドで指定されたファイル名に合致する次のファイルを探す。
整数値 <dir handle> は findfirst コマンドで得られたディレクトリハンドルでなければならない。
もし次のファイルが見つかった場合、<strvar> にファイル名が、"result" に 1 が格納される。
それ以外の場合は、<strvar>と "result" にそれぞれ "" と 0 が格納される。

findclose

ディレクトリハンドルを解放する。

findclose <dir handle>

解説

findclose コマンドは findfirst コマンドによって得られたディレクトリハンドル <dir handle> を解放する。
このコマンドはファイル検索処理が不要になった時点で、即座に実行されなければならない。

例

extpat='*.txt'
findfirst dh extpat filename

while result
    messagebox filename extpat
    findnext dh filename
endwhile

findclose dh


foldercreate

フォルダを作成する。(バージョン4.69以降)

foldercreate <foldername>

解説

フォルダ <foldername> を新しく作成する。
フォルダの作成が成功した場合、システム変数 result に 0 が格納される。それ以外の場合, result に 0 以外が格納される。

例

foldercreate 'data'


folderdelete

フォルダを削除する。(バージョン4.69以降)

folderdelete <foldername>

解説

フォルダ <foldername> を削除する。
フォルダの削除が成功した場合、システム変数 result に 0 が格納される。それ以外の場合, result に 0 以外が格納される。
ただし、フォルダが空でない場合には削除できない。

例

folderdelete 'temp'


foldersearch

フォルダがあるか確かめる。(バージョン4.69以降)

foldersearch <foldername>

解説

フォルダ <foldername> が存在するかどうか調べる。
存在する場合は、システム変数 result に1が返る。存在しない場合は、result に0が返る。

注意

foldersearch コマンドは、<foldername> がファイルとして存在する場合には0を返す。このため、フォルダ作成前の存在チェックには使用できない。

例

foldersearch 'data'
if result=0 messagebox 'Folder not found.' 'error'

name = 'data'
filesearch name
if result=1 then
    foldersearch name
    if result=1 then
        sprintf2 msg '%s is a folder.' name
        messagebox msg ''
    else
        sprintf2 msg '%s is a file.' name
        messagebox msg ''
    endif
else
    sprintf2 msg '%s is not found.' name
    messagebox msg ''
endif

参照

  • filesearch


getdir

MACRO の現在のディレクトリを得る。

getdir <strvar>

解説

(Tera Term ではなく) MACRO の現在のディレクトリを文字列変数 <strvar> に格納する。
ルートディレクトリの場合、文字列の末尾には円記号 (\) が付く。ルート以外のディレクトリの場合、文字列はディレクトリ名で終わり、末尾に円記号は付かない。

例

getdir dir
; dir = C:\Documents and Settings\yutaka\My Documents\TeraTermMacro

参照

  • setdir


getfileattr

ファイルまたはディレクトリの属性を得る。(バージョン4.69以降)

getfileattr <filename>

パラメータ

文字列 <filename>
ファイル名またはディレクトリ名

返り値

システム変数 <result>
属性の取得に失敗すると -1 が格納される。
取得に成功すると、属性値が格納される。属性値は以下の数値の組み合わせとなる。
値 | 意味
$1 | 読み取り専用
$2 | 隠しファイルまたは隠しディレクトリ
$4 | オペレーティングシステムの一部、またはオペレーティングシステム専用
$10 | ディレクトリ
$20 | アーカイブ
$80 | 特に属性はない
$100 | 一時ファイル
$200 | スパースファイル
$400 | 再解析ポイントが関連付けられているか、シンボリックリンク
$800 | 圧縮されている
$1000 | オフラインの記憶装置へ物理的に移動された(Windows 2000 以降)
$2000 | 「インデックスサービス」の対象になっていない(Windows 2000 以降)
$4000 | 暗号化されている

例

file = 'c:\test.txt'
getfileattr file
if result <> -1 then
    if result & $1 > 0 then
        messagebox 'This file has readonly attribute.' file
    endif
endif

name = "C:\test"

getfileattr name

if result < 0 then
    messagebox "Not found" name
elseif result & $10 then
    messagebox "Directory" name
else
    messagebox "File" name
endif

参照

  • setfileattr
  • MSDN ライブラリ GetFileAttributes
  • MSDN ライブラリ File Attribute Constants


makepath

フルパス名を作成する。

makepath <strvar> <dir> <name>

解説

ディレクトリ名 <dir> とファイル名 <name> からフルパス名を作成し、文字列変数 <strvar> に格納する。 もし必要なら <dir> と <name> の間に "\" を挿入する。

例

makepath path 'c:\teraterm' 'test.txt'
; path = "c:\teraterm\test.txt"

参照

  • basename
  • dirname


setdir

MACRO の現在のディレクトリを変更する。

setdir <dir>

解説

MACRO の現在のディレクトリを <dir> に変更する。

注意: changedir コマンドは Tera Term の現在のディレクトリを変更する。
通信コマンド(kmtsend 等)で指定されるファイル名は Tera Term の現在のディレクトリを基準にする。
その他のコマンド(fileopen 等)で指定されるファイル名はMACRO の現在のディレクトリを基準にする。

例

setdir 'c:\'


setfileattr

ファイルまたはディレクトリの属性を変更する。(バージョン4.69以降)

setfileattr <filename> <attributes>

パラメータ

文字列 <filename>
ファイル名またはディレクトリ名
整数 <attributes>
設定する属性値を指定する。属性値は以下の数値の組み合わせとなる。
値 | 意味
$1 | 読み取り専用
$2 | 隠しファイルまたは隠しディレクトリ
$4 | オペレーティングシステムの一部、またはオペレーティングシステム専用
$20 | アーカイブ
$80 特に属性はない
単独で指定したときのみ有効
$100 | 一時ファイル
$1000 | オフラインの記憶装置へ物理的に移動された(Windows 2000 以降)
$2000 | 「インデックスサービス」の対象になっていない(Windows 2000 以降)

返り値

システム変数 <result>
属性の変更に失敗すると0が格納される。
成功すると1が格納される。

例

; add readonly attribute
file = 'c:\test.txt'
getfileattr file
attr = result | $1 ; keep current attributes
setfileattr file attr

参照

  • getfileattr
  • MSDN ライブラリ SetFileAttributes
  • MSDN ライブラリ File Attribute Constants


delpassword

パスワードを削除する。

delpassword <filename> <password name>

解説

パスワードファイル <filename> の中にある <password name> で指定されたパスワードを削除する。
もし <password name> が空の文字列ならば、ワードファイルの中にあるすべてのパスワードが削除される。

例

delpassword 'password.dat' 'mypassword'

参照

  • getpassword


getpassword

パスワードを読み出す。

形式

getpassword <filename> <password name> <strvar>

解説

パスワードファイル <filename> から <password name> で指定されるパスワードを読みだす。
そのパスワードは暗号化されているので、それを解読してから文字列変数 <strvar> に保存する。

もし指定されたファイルが存在しなければ、新しくファイルを作成する。 もし指定されたパスワードがファイルの中になければ、パスワードダイアログボックスが現れ、入力されたパスワードは文字列変数 <strvar> に保存される。
同時に、その新しいパスワードは暗号化されパスワード識別子 <password name> と共にファイルに書き込まれる。

一つのパスワードファイルに複数のパスワードを保存することができる。
各パスワードはパスワード識別子によって識別される。

(バージョン 4.71 以降)
パスワードファイルへの書き込みに失敗した場合、システム変数 result に 0 が格納される。それ以外の場合、result に 1 が格納される。

例

getpassword 'password.dat' 'mypassword' password
connect 'myhost'
wait 'login:'
sendln 'myname'
wait 'password:'
sendln password

expandenv str "%USERPROFILE%\myfile.dat"
getpassword str 'mypassword' password
if !result then
    messagebox 'Password was not saved' 'ERROR'
endif

参照

  • expandenv


ispassword

パスワードが設定されているかを判別する。(バージョン4.75以降)

形式

ispassword <filename> <password name>

解説

パスワードファイル <filename> から <password name> で指定されるパスワードが存在するかを調べる。

パスワードファイルに <password name> に対応するパスワードが設定されているならば、システム変数 result に 1 が格納される。それ以外の場合、result に 0 が格納される。

例

strdim pw 2
username = 'yutaka'

ispassword 'pw.dat' username ; result: 0=false; 1=true
if result = 1 then
  getpassword 'pw.dat' username pw[0]
  pw[1] = pw[0]
else
  msg = 'What is your password for '
  strconcat msg username
  strconcat msg '?'
  passwordbox msg 'Enter your password'
  pw[0] = inputstr
  pw[1] = pw[0]
  setpassword 'pw.dat' username pw[0]
endif

参照

  • getpassword
  • setpassword


passwordbox

パスワードを入力するためのダイアログボックスを開く。

passwordbox <message> <title> [<special>]

パラメータ

文字列 <message>
ダイアログボックスに表示されるメッセージ。
文字列 <title>
ダイアログボックスのタイトル。
整数値 <special> (オプション デフォルト=0)
0 でない場合は、<message> に含まれる以下の文字列は特殊文字として扱われます。
入力 | 出力
\\ "\"
\n | 改行
\t | タブ
このオプションの使用は推奨されません。strspecial マクロコマンドを使用して文字列を変換することで同等の結果を得られます。

返り値

システム変数 <inputstr>
入力された文字列が代入される。

解説

入力されるパスワードはそのまま表示されず、かわりに、"****" のように表示される。

例

passwordbox 'Enter password' 'Login'

参照

  • inputbox
  • listbox
  • setdlgpos
  • strspecial
  • yesnobox


setpassword

パスワードを追加もしくは更新する。(バージョン4.75以降)

形式

setpassword <filename> <password name> <strvar>

解説

パスワードファイル <filename> から <password name> で指定されるパスワードを <strvar> に更新する。
文字列変数 <strvar> のパスワードは暗号化され、ファイルに保存される。

もし指定されたファイルが存在しなければ、新しくファイルを作成する。

一つのパスワードファイルに複数のパスワードを保存することができる。
各パスワードはパスワード識別子によって識別される。

パスワードファイルへの書き込みに失敗した場合、システム変数 result に 0 が格納される。それ以外の場合、result に 1 が格納される。

例

newpasswd = 'hoge'
setpassword 'password.dat' 'yutaka' newpasswd
if result then
  messagebox 'Password updated successfully.' 'Result'
endif

参照

  • getpassword
  • ispassword


beep

ビープ音を鳴らす。

beep [<sound type>]

解説

WAVE 形式のサウンドを再生する。
引数の意味は以下のとおり。省略時は「SystemDefault；一般の警告音」となる。

値 | サウンド
0 | コンピュータのスピーカから発生する標準的なビープ音
1 | SystemAsterisk；メッセージ（情報）
2 | SystemExclamation；メッセージ（警告）
3 | SystemHand；システムエラー
4 | SystemQuestion；メッセージ（問い合わせ）
5 | SystemDefault；一般の警告音

例

for i 1 10
    beep 0
    pause 1
next


bringupbox

statusbox コマンドによって開かれたステータスダイアログボックスを最前面に表示する。(バージョン4.78以降)

bringupbox

パラメータ

なし。

返り値

なし。

例

step = 0
while 1
  call show_step
  sendln 'echo do something'
  wait '$'
  pause 2

  bringupbox

endwhile
end

:show_step
step = step + 1
gettime timestr "%Y/%m/%d-%H:%M:%S"
sprintf2 s "counter %d" step
statusbox timestr s
return

参照

  • statusbox
  • closesbox
  • setdlgpos


checksum8, checksum8file

8bit checksumを計算する。(バージョン4.78以降)

checksum8 <intvar> <string>
checksum8file <intvar> <filename>

解説

引数の文字列およびファイルから加算サム(8bit)を計算する。

計算結果は intvar 変数に数値として格納される。
checksum8file でファイルが開けなかった場合は、システム変数 result に -1 が格納される。

例

str = 'this is a test string to be checksum8ed'
checksum8 crc str

; Display checksum8 result asHEX
sprintf '0x%08X' crc
messagebox inputstr 'checksum8 = '

checksum8file crc 'foo.bin'
if result = -1 then
    messagebox 'file open error' 'checksum8file = '
else
    sprintf '0x%08X' crc
    messagebox inputstr 'checksum8file = '
endif


checksum16, checksum16file

16bit checksumを計算する。(バージョン4.78以降)

checksum16 <intvar> <string>
checksum16file <intvar> <filename>

解説

引数の文字列およびファイルから加算サム(16bit)を計算する。

計算結果は intvar 変数に数値として格納される。
checksum16file でファイルが開けなかった場合は、システム変数 result に -1 が格納される。

例

str = 'this is a test string to be checksum16ed'
checksum16 crc str

; Display checksum16 result asHEX
sprintf '0x%08X' crc
messagebox inputstr 'checksum16 = '

checksum16file crc 'foo.bin'
if result = -1 then
    messagebox 'file open error' 'checksum16file = '
else
    sprintf '0x%08X' crc
    messagebox inputstr 'checksum16file = '
endif


checksum32, checksum32file

32bit checksumを計算する。(バージョン4.78以降)

checksum32 <intvar> <string>
checksum32file <intvar> <filename>

解説

引数の文字列およびファイルから加算サム(32bit)を計算する。

計算結果は intvar 変数に数値として格納される。
checksum32file でファイルが開けなかった場合は、システム変数 result に -1 が格納される。

例

str = 'this is a test string to be checksum32ed'
checksum32 crc str

; Display checksum32 result asHEX
sprintf '0x%08X' crc
messagebox inputstr 'checksum32 = '

checksum32file crc 'foo.bin'
if result = -1 then
    messagebox 'file open error' 'checksum32file = '
else
    sprintf '0x%08X' crc
    messagebox inputstr 'checksum32file = '
endif


closesbox

statusbox コマンドによって開かれたステータスダイアログボックスを閉じる。

closesbox

例

"statusbox" を参照。


clipb2var

クリップボードのテキストデータをコピーする。(バージョン4.46以降)

clipb2var <strvar> [<offset>]

解説

クリップボードのテキストデータを <strvar> へ代入する。
文字列変数の最大長の制限を受けるため、クリップボードのテキストデータが長すぎた場合は512バイト目以降が切り捨てられる。

<offset>を指定すると、offset*511+1文字目以降の内容が代入される。
<offset>に0以外を指定するためには、事前に<offset>無し、または<offset>に0を指定してclipb2varを実行する必要がある。
<offset>に0以外を指定した時に得られるクリップボードの内容は現在のものではなく、最後に<offset>無し、または<offset>に0を指定してclipb2varを実行した時点でのクリップボードの内容となる。

このコマンドの実行結果はシステム変数 result に格納される。変数 result の値の意味は以下のとおり。

値 | 意味
0 | クリップボードを開けなかった。またはテキストデータではなかった。またはoffsetの値が適切ではなかった。
1 | <strvar> への代入に成功した。
2 | <strvar> への代入は行われたが、入りきらなかった部分は切り捨てられた。offsetの値を増やして再度clipb2varコマンドを実行する事で、切り捨てられた部分にアクセスできる。
3 | クリップボードの内容を記憶しておくためのメモリの確保に失敗した。この場合でも先頭から最大511バイトは変数に代入されるが、offsetを増やして再度clipb2varコマンドを実行しても切り捨てられた部分にはアクセスできない。

例

clipb2var data
messagebox data 'clipboard data'

; 511バイトを超えるクリップボード文字列を読み込む
; +------------------------------------------------------------------+
; |  1024 bytes clipboard text                                       |
; +------------------------------------------------------------------+
; +-------------------------+--------------------------+-------------+
; | (1) 511 bytes           | (2) 511 bytes            | (3) 2 bytes |
; +-------------------------+--------------------------+-------------+

clipb2var data ; data に (1) が代入され、result に 2 が代入される
messagebox data 'clipboard data 1'

clipb2var data 1 ; data に (2) が代入され、result に 2 が代入される
messagebox data 'clipboard data 2'

clipb2var data 2 ; data に (3) が代入され、result に 1 が代入される
messagebox data 'clipboard data 3'

clipb2var data 3 ; data にはなにも代入されず、result に 0 が代入される
messagebox data 'clipboard data 4'

; クリップボードの内容をファイル(clipboard.txt)に書き出す
fileopen fp 'clipboard.txt' 0
if result <> 0 end

offset = 0
do
    clipb2var buff offset
    if result > 0 filewrite fp buff
    offset = offset + 1
loop while result = 2

fileclose fp


crc16, crc16file

CRC-16-CCITTを計算する。(バージョン4.78以降)

crc16 <intvar> <string>
crc16file <intvar> <filename>

解説

引数の文字列およびファイルからCRC(Cyclic Redundancy Checking)を計算する。多項式（右回り）は以下のとおり。

10001000000100001 (x16+x12+x5+x0)

計算結果は intvar 変数に数値として格納される。
crc16file でファイルが開けなかった場合は、システム変数 result に -1 が格納される。

CRCアルゴリズムの実装（C言語）を以下に示す。

static unsigned int crc16(int n, unsigned char c[])
{
#define CRC16POLY1  0x1021U
#define CRC16POLY2  0x8408U  /* 左右逆転 */
    int i, j;
    unsigned long r;

    r = 0xFFFFU;
    for (i = 0; i < n; i++) {
        r ^= c[i];
        for (j = 0; j < CHAR_BIT; j++)
            if (r & 1) r = (r >> 1) ^ CRC16POLY2;
            else       r >>= 1;
    }
    return r ^ 0xFFFFU;
}

例

str = 'this is a test string to be CRC16ed'
crc16 crc str

; Display CRC16 result asHEX
sprintf '0x%08X' crc
messagebox inputstr 'CRC16 = '

crc16file crc 'foo.bin'
if result = -1 then
    messagebox 'file open error' 'CRC16 = '
else
    sprintf '0x%08X' crc
    messagebox inputstr 'CRC16 = '
endif


crc32, crc32file

CRC-32を計算する。(バージョン4.60以降)

crc32 <intvar> <string>
crc32file <intvar> <filename>

解説

引数の文字列およびファイルからCRC(Cyclic Redundancy Checking)を計算する。多項式（右回り）は以下のとおり。

100000100110000010001110110110111 (x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x1+x0)

計算結果は intvar 変数に数値として格納される。
crc32file でファイルが開けなかった場合は、システム変数 result に -1 が格納される。

CRCアルゴリズムの実装（C言語）を以下に示す。このアルゴリズムは、EthernetのFCS(Frame Check Sequence)に適用されている。

static unsigned long crc32(int n, unsigned char c[])
{
#define CRC32POLY1 0x04C11DB7UL
#define CRC32POLY2 0xEDB88320UL  /* 左右逆転 */
    int i, j;
    unsigned long r;

    r = 0xFFFFFFFFUL;
    for (i = 0; i < n; i++) {
        r ^= c[i];
        for (j = 0; j < CHAR_BIT; j++)
            if (r & 1) r = (r >> 1) ^ CRC32POLY2;
            else       r >>= 1;
    }
    return r ^ 0xFFFFFFFFUL;
}

例

str = 'this is a test string to be CRC32ed'
crc32 crc str

; Display CRC32 result asHEX
sprintf '0x%08X' crc
messagebox inputstr 'CRC32 = '

crc32file crc 'foo.bin'
if result = -1 then
    messagebox 'file open error' 'CRC32 = '
else
    sprintf '0x%08X' crc
    messagebox inputstr 'CRC32 = '
endif


exec

アプリケーションを起動する。

exec <command line> [<show> [<wait> [<current directory>]]]

解説

コマンドライン文字列 <command line> に従い、アプリケーションを起動する。

パラメータ

文字列 <show> (オプション デフォルト="show")
以下の文字列を指定することができる。
  • hide
  • minimize
  • maximize
  • show
整数値 <wait> (オプション デフォルト=0) (バージョン 4.63以降)
1 の場合は、起動したアプリケーションが終了するまで待つ。アプリケーションの終了コードが result システム変数に格納される。
1 以外の場合は、アプリケーションを起動してマクロに制御が返る。
文字列 <current directory> (オプション デフォルト="") (バージョン 4.78以降)
カレントディレクトリを指定することができる。

返り値

システム変数 <result>
バージョン 4.63 から 4.102
<wait> が 1 の場合のみ、アプリケーションの終了コードが格納される。
バージョン 4.103 以降
<wait> が 1 の場合
値 | 意味
-1 | アプリケーションの実行に失敗した。
-1 以外 | アプリケーションの終了コード

<wait> が 1 以外の場合
値 | 意味
-1 | アプリケーションの実行に失敗した。
0 | アプリケーションの実行に成功した。

例

; 「メモ帳」を起動
exec 'notepad readme.txt'

; 「メモ帳」を最大化表示で起動
exec 'notepad readme.txt' 'maximize'

; 「メモ帳」をカレントディレクトリ指定で起動
exec 'notepad readme.txt' 'show' 0 'c:\usr'

; バッチファイルを起動する
tmp='cmd /c c:\upload.bat '
strconcat tmp username1
strconcat tmp ' '
strconcat tmp userpass1
strconcat tmp ' '
strconcat tmp address
messagebox tmp 'exec'
exec tmp

; ディレクトリを作る
getenv "USERPROFILE" userprof
getdate logdir "log-%Y%m%d"
sprintf2 cmd 'cmd /c mkdir "%s\My Documents\%s"' userprof logdir
exec cmd "HIDE"

注

64bit Windows 上でマクロを実行している場合、WOW64 に対応したアプリケーションを起動すると思わぬ動作をすることがある。

ttpmacro.exe は 32bit なので、32bit のアプリケーションが起動する。アプリケーションによっては 64bit OS 上で 32bit のプロセスが起動されると、64bit のプロセスを起動し直すことがある。
このため <wait> を指定しても、マクロが起動した 32bit のアプリケーションはすぐに終了してしまうため、意図せず次のマクロコマンドに進んでしまうことがある。

この現象を回避するには、以下のように sysnative エイリアスを用いてネイティブのシステムディレクトリのアプリケーションを起動する。

; 失敗する
exec 'mstsc /v 192.0.2.0 /w 1024 /h 768 /admin' 'show' 1

; 成功する
exec 'C:\windows\sysnative\mstsc /v 192.0.2.0 /w 1024 /h 768 /admin' 'show' 1


dirnamebox

ディレクトリ名を選択するダイアログボックスを開く。(バージョン4.86以降)

dirnamebox <title> [<initialdir>]

パラメータ

文字列 <title>
ダイアログボックスのタイトル
文字列 <initialdir> (オプション デフォルト="")
ダイアログボックスの初期ディレクトリを指定する。
空文字列や無効なパスを指定すると、デスクトップが初期ディレクトリになる。

返り値

システム変数 <result>
ユーザがディレクトリ名を選択してOKボタンを押すと1が格納され、inputstrにフォルダ名が格納される。
ユーザがダイアログをキャンセルしたり閉じたりすると0が格納される。
システム変数 <inputstr>
選択されたディレクトリ名

例

dirnamebox 'select a directory'
if result<>0 then
    messagebox inputstr 'selected directory'
endif


filenamebox

ファイル名を選択するダイアログボックスを開く。(バージョン4.54以降)

filenamebox <title> [<dialogtype> [<initialdir>]]

パラメータ

文字列 <title>
ダイアログボックスのタイトル
整数 <dialogtype> (オプション デフォルト=0) (バージョン 4.65 以降)
ダイアログボックスの種類を指定する。
0を指定すると［ファイルを開く］ダイアログボックスを開く。
0以外の値を指定すると［ファイル名を付けて保存］ダイアログボックスを開く。
文字列 <initialdir> (オプション デフォルト="") (バージョン 4.85 以降)
ダイアログボックスの初期ディレクトリを指定する。
空文字列や無効なパスを指定すると、Windows の仕様(OPENFILENAME構造体のlpstrInitialDirの仕様)により初期ディレクトリが決定される。

返り値

システム変数 <result> (バージョン 4.65 以降)
ユーザがファイル名を入力してOKボタンを押すと0以外の値が格納され、inputstrにファイル名が格納される。
ユーザがダイアログをキャンセルしたり閉じたりすると0が格納される。
システム変数 <inputstr>
入力されたファイル名

例

connect '/C=11'
filenamebox 'File selection' 0
if result<>0 then
    messagebox inputstr 'title' 0
    sendfile inputstr 1
endif


getdate

現在の日付を得る。

getdate <strvar> [<format> [<timezone>]]

解説

現在の日付を文字列変数 <strvar> に <format> に従った形式で格納する。書式は strftime と同じ物が使える。
formatが省略された場合、格納される形式は"YYYY-MM-DD"となる。(<format> に %Y-%m-%d を指定したのと同じ)

formatが指定されたgetdateは、同じformatが指定されたgettimeと動作が等しくなる。
<timezone> にタイムゾーンを表す文字列を指定すると、タイムゾーンを加味した日付計算が行われる。 <timezone> を指定しない場合はローカルタイムとなる。

formatが指定された場合、このコマンドの実行結果はシステム変数 result に格納される。 formatが指定されなかった場合は、変数 result の値は変更されない。 変数 result の値の意味は以下のとおり。

値 | 意味
0 | 正常に値が <strvar> に格納された。
1 | 生成された文字列の長さが上限(511文字)を超えた等の理由で、<strvar> への値の格納が正常に行われなかった。
2 | <format> の指定が不正である。

例

;現在の日付をdatestrに格納。形式はYYYY-MM-DD。
getdate datestr

;現在の日時を元にしてログファイル名を生成し、変数logfileに格納。
;形式はlog-YYYYMMDD-HHMMSS.txt
getdate logfile "log-%Y%m%d-%H%M%S.txt"

;GMTで時刻を取得する。
tz="GMT"
gettime s "%Y/%m/%d %H:%M:%S" tz
messagebox s tz

;本日の日にちを取得する。
gettime s "|%d|%#d|"    ; |07|7| (Today is 7th).
gettime s "|%d|%#d|"    ; |25|25| (Today is 25th).

参照

  • gettime
  • strftime (MSDNライブラリ)


getenv

環境変数を得る。

形式

getenv <envname> <strvar>

解説

環境変数 <envname> の値を文字列変数 <strvar> に格納する。

例

getenv 'TEMP' env


getipv4addr

自端末のIPv4アドレスを取得する。(バージョン4.78以降)

getipv4addr <string array> <intvar>

パラメータ

文字列配列 <string array>
IPアドレスを格納する文字型配列。
整数型変数 <intvar>
IPアドレスの個数を格納する整数型変数。IPアドレスが存在しない場合、0が格納される。

返り値

システム変数 <result>
IPアドレスの取得に成功した場合、1が格納される。
IPアドレスの個数が<string array>の要素数より大きい場合、0が格納される。
IPアドレスの取得に失敗した場合、-1が格納される。

例

ipaddr_size = 10
strdim ipaddr ipaddr_size

getipv4addr ipaddr num
if result = -1 then
    messagebox 'Error' 'IPv4 address'
elseif result = 0 then
    N = ipaddr_size - 1
    for i 0 N
        messagebox ipaddr[i] "IPv4 address"
    next
    N = num - ipaddr_size
    sprintf2 str "And %d address(es)." N
    messagebox str "IPv4 address"
else
    N = num - 1
    for i 0 N
        messagebox ipaddr[i] "IPv4 address"
    next
endif

参照

  • getipv6addr


getipv6addr

自端末のIPv6アドレスを取得する。(バージョン4.78以降)

getipv6addr <string array> <intvar>

パラメータ

配列 <string array>
IPアドレスを格納する文字型配列。
整数型変数 <intvar>
IPアドレスの個数を格納する整数型変数。IPアドレスが存在しない場合、0が格納される。

返り値

システム変数 <result>
IPアドレスの取得に成功した場合、1が格納される。
IPアドレスの個数が<string array>の要素数より大きい場合、0が格納される。
IPアドレスの取得に失敗した場合、-1が格納される。Windows 2000 以前では常に失敗する。

例

ipaddr_size = 10
strdim ipaddr ipaddr_size

getipv6addr ipaddr num
if result = -1 then
    messagebox 'Error' 'IPv6 address'
elseif result = 0 then
    N = ipaddr_size - 1
    for i 0 N
        messagebox ipaddr[i] "IPv6 address"
    next
    N = num - ipaddr_size
    sprintf2 str "And %d address(es)." N
    messagebox str "IPv6 address"
else
    N = num - 1
    for i 0 N
        messagebox ipaddr[i] "IPv6 address"
    next
endif

参照

  • getipv4addr


getspecialfolder

特殊フォルダのパスを取得する。(バージョン4.72以降)

形式

getspecialfolder <strvar> <foldertype>

解説

Windows の特殊フォルダを取得して <strvar> に格納します。

パラメータ

文字列変数 <strvar>
取得された文字列が格納される。
文字列 <foldertype>
この引数で指定した種類の特殊フォルダが文字列変数 <strvar>に代入される。
AllUsersDesktop | All Usersの「デスクトップ」フォルダ
AllUsersStartMenu | All Usersの「スタートメニュー」フォルダ
AllUsersPrograms | All Usersのスタートメニューの「プログラム」フォルダ
AllUsersStartup | All Usersのスタートメニューの「スタートアップ」フォルダ
Desktop | 「デスクトップ」仮想フォルダ
Favorites | 「お気に入り」フォルダ
Fonts | 「フォント」仮想フォルダ
MyDocuments | 「マイ ドキュメント」仮想フォルダ
NetHood | 「マイネットワーク」仮想フォルダ
PrintHood | 「プリンタ」仮想フォルダ
Programs | スタートメニューの「プログラム」フォルダ
Recent | 「最近使ったファイル」フォルダ
SendTo | コンテキストメニューの「送る」フォルダ
StartMenu | 「スタートメニュー」フォルダ
Startup | スタートメニューの「スタートアップ」フォルダ
Templates | 「テンプレート」フォルダ
cf. CSIDL(MSDN library)

返り値

システム変数 <result>
取得に失敗すると0が格納される。
成功すると1が格納される。

例

getspecialfolder str "Desktop"
if result then
    messagebox str "Desktop"   ; C:\Documents and Settings\user\desktop
endif


gettime

現在の時刻を得る。

gettime <strvar> [<format> [<timezone>]]

解説

現在の時刻を文字列変数 <strvar> に <format> に従った形式で格納する。書式は strftime と同じ物が使える。
formatが省略された場合、格納される形式は"HH:MM:SS"となる。(<format> に %H:%M:%S を指定したのと同じ)

formatが指定されたgettimeは、同じformatが指定されたgetdateと動作が等しくなる。
<timezone> にタイムゾーンを表す文字列を指定すると、タイムゾーンを加味した日付計算が行われる。 <timezone> を指定しない場合はローカルタイムとなる。

formatが指定された場合、このコマンドの実行結果はシステム変数 result に格納される。 formatが指定されなかった場合は、変数 result の値は変更されない。 変数 result の値の意味は以下のとおり。

値 | 意味
0 | 正常に値が <strvar> に格納された。
1 | 生成された文字列の長さが上限(511文字)を超えた等の理由で、<strvar> への値の格納が正常に行われなかった。
2 | <format> の指定が不正である。

例

;現在の時刻をtimestrに格納。形式はHH:MM:SS。
gettime timestr

;現在の日時を元にしてログファイル名を生成し、変数logfileに格納。
;形式はlog-YYYYMMDD-HHMMSS.txt
gettime logfile "log-%Y%m%d-%H%M%S.txt"
changedir 'C:\Test'
logopen logfile 0 0
logwrite 'test data'
logclose

;GMTで時刻を取得する。
tz="GMT"
gettime s "%Y/%m/%d %H:%M:%S" tz
messagebox s tz

参照

  • getdate
  • strftime (MSDNライブラリ)


getttdir

ttpmacro.exe があるディレクトリを得る。(バージョン4.60以降)

getttdir <strvar>

解説

ttpmacro.exe があるディレクトリを文字列変数 <strvar> に格納する。
ディレクトリの取得に成功した場合は、システム変数 result に1が返る。失敗した場合は、result に0が返る。

例

getttdir dir
messagebox dir 'getttdir' 0
; dir is "C:\Program Files\teraterm"


getver

Tera Termのバージョンを取得する。(バージョン4.58以降)

getver <strvar> [<version>]

解説

Tera Termのバージョンを <strvar> に格納する。

<version> が指定された場合、<version> と実行中の Tera Term のバージョンを比較し、結果をシステム変数 result に格納する。<version> が指定されなかった場合は、変数 result の値は変更されない。変数 result の値の意味は以下のとおり。

値 | 意味
-2 | <version> の指定が不正である。
-1 | Tera Termのバージョンが <version> より古い。
0 | Tera Termのバージョンが <version> と同じ。
1 | Tera Termのバージョンが <version> より新しい。

例

getver version

getver version '4.56'
if result >= 0 then
  callmenu 50280
  callmenu 50210
  callmenu 50270
endif


ifdefined

型を調べる。(バージョン4.46以降)

ifdefined <var>

解説

<var> の型を表す値をシステム変数 result に格納する。変数 result の値の意味は以下のとおり。

値 | 意味
0 | 定義されていない
1 | 整数型
3 | 文字列型
4 | ラベル
5 | 整数配列型
6 | 文字列配列型

例

ifdefined data
int2str valstr result
messagebox valstr 'variable type'


inputbox

文字列を入力するためのダイアログボックスを開く。

inputbox <message> <title> [<default> [<special>]]

パラメータ

文字列 <message>
ダイアログボックスに表示されるメッセージ。
文字列 <title>
ダイアログボックスのタイトル。
文字列 <default> (オプション デフォルト=""(空文字列))
エディットコントロールのデフォルト文字列です。
整数値 <special> (オプション デフォルト=0)
0 でない場合は、<message> に含まれる以下の文字列は特殊文字として扱われます。
<special> の値は <default> には影響を与えません。
入力 | 出力
\\ "\"
\n | 改行
\t | タブ
このオプションの使用は推奨されません。strspecial マクロコマンドを使用して文字列を変換することで同等の結果を得られます。

返り値

システム変数 <inputstr>
入力された文字列が代入される。

例

inputbox 'Password:' 'Login'
sendln inputstr

参照

  • passwordbox
  • listbox
  • setdlgpos
  • strspecial
  • yesnobox


intdim

整数配列型の変数を宣言する。(バージョン4.72以降)

intdim <array> <size>

解説

<size>個の要素を持つ整数配列型の変数<array>を宣言する。<size>は 1 ～ 65536 の範囲の値を持つことができ、配列の添字は0オリジンである。
配列内の各要素の初期値は0。

例

; フィボナッチ数列(Fibonacci sequence)
intdim fibonacci 20
fibonacci[0] = 0
fibonacci[1] = 1
for i 2 19
        fibonacci[i] = fibonacci[i-2] + fibonacci[i-1]
next

msg = ""
for i 0 19
        sprintf2 msg "%s%d, " msg fibonacci[i]
next

messagebox msg "result"

; 2分探索木(binary search tree)
N = 10
intdim a N
a[0] = 1
a[1] = 2
a[2] = 3
a[3] = 7
a[4] = 11
a[5] = 32
a[6] = 40
a[7] = 68
a[8] = 81
a[9] = 99

inputbox 'Search data?' 'User Input'
str2int key inputstr

flag = 0
low = 0
high = N - 1
while low <= high
    mid = (low + high) / 2
    if a[mid] == key then
        sprintf "Your data %d found in index %d." key mid
        messagebox inputstr 'Success'
        flag = 1
        break
    endif
    if a[mid] < key then
        low = mid + 1
    else
        high = mid - 1
    endif
endwhile

if flag == 0 then
    messagebox 'Your data not found.' 'Failure'
endif
end

; エラトステネスのふるい(sieve of Eratosthenes)
;
; Example of execution result
; 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 [17 primes]
;

N = 30
intdim flag N+1
count = 0
for i 0 N
    flag[i] = 1
next

for i 0 N
    if flag[i] =1 then
        count = count + 1
        p = 2 * i + 3
        sprintf "%d " p
        dispstr inputstr

        k = i + p
        while k <= N
            flag[k] = 0
            k = k + p
        endwhile
    endif
next

sprintf "[%d primes]" count
dispstr inputstr

end

参照

  • データ型


listbox

リストボックスを開き、ユーザーに項目を選択させる。(バージョン4.78以降)

listbox <message> <title> <string array> [<selected>]

パラメータ

文字列 <message>
リストボックスに表示されるメッセージ。
文字列 <title>
リストボックスのタイトル。
文字列型配列 <string array>
リストボックスの選択項目。
整数値 <selected> (バージョン 4.89 以降)
初期選択項目(0オリジンインデックス)。省略可能。

返り値

システム変数 <result>
項目が選択された場合、0 - (N-1)のいずれかの値が格納される。
キャンセルされた場合、-1が格納される。

解説

listbox マクロコマンドは <string array> の配列要素をすべて選択項目として表示します。
以下のように、表示しようとする選択項目数より大きい要素数で <string array> を定義すると、最後に空文字列が表示されます。

strdim msg 4
msg[0] = 'バナナ'
msg[1] = 'りんご'
msg[2] = 'みかん'
listbox '好きな食べ物を選んでください' 'あなたへの問い' msg

; 選択肢が4つ表示される
バナナ
りんご
みかん
[空文字列]

(バージョン 4.89 以降)
<selected> を指定する事で、初期状態で選択されている項目を指定する事ができます。
省略した場合は 0 (先頭)が指定されたものとして扱われます。

例

strdim msg 3
msg[0] = 'バナナ'
msg[1] = 'りんご'
msg[2] = 'みかん'
listbox '好きな食べ物を選んでください' 'あなたへの問い' msg
sprintf2 var "%d" result
messagebox var "result"
; result
;   -1: Cancel
;    0: バナナ
;    1: りんご
;    2: みかん

strdim msg 7
msg[0] = '晴れ'
msg[1] = '曇り'
msg[2] = '雨'
msg[3] = '風'
msg[4] = '雪'
msg[5] = '霧'
msg[6] = '分かりません'
; デフォルトで7番目の項目が選択される
listbox '今日の天気はどうですか?' 'あなたへの問い' msg 6
sprintf2 var "%d" result
messagebox var "result"

参照

  • inputbox
  • passwordbox
  • setdlgpos
  • yesnobox


messagebox

ダイアログボックスを開き、ユーザーにメッセージを知らせる。

messagebox <message> <title> [<special>]

パラメータ

文字列 <message>
ダイアログボックスに表示されるメッセージ。
文字列 <title>
ダイアログボックスのタイトル。
整数値 <special> (オプション デフォルト=0)
0 でない場合は、<message> に含まれる以下の文字列は特殊文字として扱われます。
入力 | 出力
\\ "\"
\n | 改行
\t | タブ
このオプションの使用は推奨されません。strspecial マクロコマンドを使用して文字列を変換することで同等の結果を得られます。

例

messagebox ErrorMessage 'Error'

title="5行表示"
message="1行目\n2行目\n3行目\n4行目\n5行目\n"
strspecial message
messagebox message title

variable = 99
sprintf2 msg "%d" variable
messagebox msg "variable ="

参照

  • setdlgpos
  • statusbox
  • strspecial


random

乱数を生成する。(バージョン4.27以降)

random <integer variable> <max number>

解説

0から<max number>までの整数の一様乱数を生成し、整数変数<integer variable>へ代入する。<max number>は0を超える数値でなければならない。

例

; 0から100までの乱数を変数valへ格納する
random val 100

; 乱数で処理を分ける
while 1
    random val 10
    int2str valstr val
    statusbox valstr 'val'
    if val=0 then
        messagebox 'The val is zero.' 'test'
    elseif val<5 then
        messagebox 'The val is less than five.' 'test'
    else
        messagebox 'The val is greater than five.' 'test'
    endif
endwhile


rotateleft

左にローテート(循環シフト)する。(バージョン4.54以降)

rotateleft <intvar> <intval> <count>

解説

整数値 <intval> を左に <count> 桁ローテート(循環シフト)した値を整数型変数 <intvar> にコピーする。

例

rotateleft b $80000000 4
sprintf '0x%08x' b
messagebox inputstr '0x00000008'


rotateright

右にローテート(循環シフト)する。(バージョン4.54以降)

rotateright <intvar> <intval> <count>

解説

整数値 <intval> を右に <count> 桁ローテート(循環シフト)した値を整数型変数 <intvar> にコピーする。

例

rotateright b $00000008 4
sprintf '0x%08x' b
messagebox inputstr '0x80000000'


setdate

システムの日付を変更する。

setdate <date>

解説

システムの日付を変更 <date> に変更する。<date> の形式は "YYYY-MM-DD"。

例

setdate '1997-08-01'


setdlgpos

ダイアログボックスの位置を設定する。

setdlgpos [<x> <y>]

解説

"inputbox", "listbox", "messagebox", "passwordbox", "statusbox", "yesnobox" コマンドで表示されるダイアログボックス、エラーダイアログ表示位置を位置を変更する。
また、ステータスダイアログボックスが表示されている場合、setdlgpos コマンドはそのダイアログボックスを移動させる。
パラメータ省略時、メインディスプレイ(プライマリディスプレイ)のデフォルトの表示位置となる (バージョン 4.105以降)。
<x> と <y> は画面の座標 (x,y) を表わす。原点 (0,0) はメインディスプレイの左上の隅の位置。
ダイアログがディスプレイからはみ出す場合は、ディスプレイ内に移動される (バージョン 4.105以降)。

例

; 左上の隅にダイアログボックス
setdlgpos 0 0
messagebox 'Message' 'Title'

; ステータスダイアログボックスを開く
setdlgpos 0 200
statusbox 'Message' 'Title'

; ステータスダイアログボックスを移動
for i 0 200
  setdlgpos i 200
next


setenv

環境変数を変更する。(バージョン4.54以降)

形式

setenv <envname> <strval>

解説

環境変数 <envname> に <strval> をセットする。
セットされた値はマクロ内でのみ有効で、システムには影響しない。
すでに値がセットされている環境変数を <envname> に指定した場合、値は上書きされる。

例

setenv 'TEMP' 'C:\'


setexitcode

MACRO の終了コードを設定する。

setexitcode <exit code>

解説

Windows 98/Me の場合

MACRO がバッチファイルからコマンドライン "start /w ttpmacro <ttl filename>" (オプション /w が必要)によって実行された場合、終了コードを DOS コマンド "if errorlevel n" で調べることができる。

Windows NT/2000/XP の場合

MACRO がバッチファイルからコマンドライン "ttpmacro <ttl filename>" によって実行された場合、終了コードを DOS コマンド"if errorlevel n" で調べることができる。

例

----- バッチファイル "test.bat" (Win 98/Me の場合) ------
rem "start /w" コマンドで MACRO を実行
start /w ttpmacro test.ttl
rem もし終了コードが1以上ならメッセージを表示
if errorlevel 1 echo Error!
----- "test.bat" の終わり ---------

----- バッチファイル "test.bat" (Win NT/2000/XP の場合) ------
rem MACRO を実行、"start" コマンドは不必要
ttpmacro test.ttl
rem もし終了コードが1以上ならメッセージを表示
if errorlevel 1 echo Error!
----- "test.bat" の終わり ---------

----- マクロファイル "test.ttl" ----
; 終了コードを 1 にする。
setexitcode 1
----- "test.ttl" の終わり ----------


settime

システムの時刻を変更する。

settime <time>

解説

システムの時刻を <time> に変更する。<time> の形式は "HH:MM:SS"。

例

settime '01:05:00'


show

MACRO ダイアログの表示状態を変更する。

show <show flag>

解説

<show flag> が0の場合、MACRO を最小化する。
<show flag> が0より大きい場合、MACRO を元の大きさに戻して最前面に表示する。
<show flag> が0より小さい場合、MACRO を隠す。

例

; MACRO を最小化
show 0

; MACRO を元の大きさに戻す
show 1

; MACRO を隠す
show -1


statusbox

ステータスダイアログボックスを表示する。

statusbox <message> <title> [<special>]

パラメータ

文字列 <message>
ダイアログボックスに表示されるメッセージ。
文字列 <title>
ダイアログボックスのタイトル。
整数値 <special> (オプション デフォルト=0)
0 でない場合は、<message> に含まれる以下の文字列は特殊文字として扱われます。
入力 | 出力
\\ "\"
\n | 改行
\t | タブ
このオプションの使用は推奨されません。strspecial マクロコマンドを使用して文字列を変換することで同等の結果を得られます。

解説

ステータスダイアログボックスが表示されていない場合、それを表示します。
ダイアログボックスのメッセージを <message> に、タイトルを <title> に変えます。

"setdlgpos" コマンドはステータスダイアログボックスの位置を変えます。
"closesbox" コマンドはステータスダイアログボックスを閉じます。EnterキーやESCキーでは閉じることはできません。

例

; 表示位置を指定
setdlgpos 200 200
; ダイアログボックスを表示
statusbox 'Message' 'Title'
pause 3
; ダイアログボックスを移動
setdlgpos 0 0
pause 3
; ダイアログボックスを閉じる
closesbox

; カウンタを表示しながらループする
step = 0
while 1
  call show_step
  sendln 'echo do something'
  wait '$'
  pause 2
endwhile
end

:show_step
step = step + 1
gettime timestr "%Y/%m/%d-%H:%M:%S"
sprintf2 s "counter %d" step
statusbox timestr s
return

参照

  • strspecial
  • closesbox
  • bringupbox
  • setdlgpos


strdim

文字列配列型の変数を宣言する。(バージョン4.72以降)

strdim <array> <size>

解説

<size>個の要素を持つ整数配列型の変数<array>を宣言する。<size>は 1 ～ 65536 の範囲の値を持つことができ、配列の添字は0オリジンである。
配列内の各要素の初期値は空文字列。

例

strdim timeary 10
for i 9 0
        gettime timeary[9-i]
        statusbox i "wait"
        pause 1
next

msg = ""
for i 0 9
        strconcat msg timeary[i]
        strconcat msg #13#10
next

messagebox msg "result"

参照

  • データ型


uptime

OSの稼働時間を取得する。(バージョン4.81以降)

uptime <intvar>

解説

Windows OSの稼働時間（ミリ秒）を <intvar> に格納する。

※稼働時間が49日を経過すると、0に戻る。

例

; How to get the uptime in Windows
uptime var
day = var / 86400000
var = var % 86400000
hour = var / 3600000
var = var % 3600000
min = var / 60000
var = var % 60000
sec = var / 1000

sprintf2 str "System Up Time: %d Days, %d Hours, %d Minutes, %d Seconds" day hour min sec
messagebox str "uptime"

uptime varstart

; do something...

uptime varend
diff = varend - varstart
sprintf2 str "MACRO running time: %d msec" diff
messagebox str "running time"


var2clipb

テキストデータをクリップボードにコピーする。(バージョン4.46以降)

var2clipb <string>

解説

<string>をクリップボードにコピーする。
このコマンドの実行結果はシステム変数 result に格納される。変数 result の値の意味は以下のとおり。

値 | 意味
0 | クリップボードを開けなかった。
1 | クリップボードへのコピーに成功した。

例

var2clipb 'Tera Term 4.46'
clipb2var data
messagebox data 'clipboard data'


yesnobox

ダイアログボックスを開き、ユーザーに「はい」/「いいえ」を選択させる。

yesnobox <message> <title> [<special>]

パラメータ

文字列 <message>
ダイアログボックスに表示されるメッセージ。
文字列 <title>
ダイアログボックスのタイトル。
整数値 <special> (オプション デフォルト=0)
0 でない場合は、<message> に含まれる以下の文字列は特殊文字として扱われます。
入力 | 出力
\\ "\"
\n | 改行
\t | タブ
このオプションの使用は推奨されません。strspecial マクロコマンドを使用して文字列を変換することで同等の結果を得られます。

返り値

システム変数 <result>
「はい」ボタンが押された場合、1が格納される。
「いいえ」ボタンが押された場合、0が格納される。

例

:retry
;;; do something ;;;
yesnobox 'もう一回やりますか?' 'Tera Term'
if result goto retry
end

参照

  • inputbox
  • listbox
  • passwordbox
  • setdlgpos
  • strspecial


補足説明

  • エラーメッセージ
  • 改行文字について
  • 負の整数定数についての注意
  • 切断後すぐに接続する場合の注意点
  • ASCII コード表
  • 鬼車正規表現


エラーメッセージ

エラーメッセージ | 意味
Can't call sub. | サブルーチンを呼べない。サブルーチンは別のファイルにある。
Can't link macro. | MACRO と Tera Term の間のリンクに失敗。
Can't open file. | インクルードファイルが存在しないか、インクルードの階層が深すぎる。
")" expected. | カッコが閉じていない。
"*/" expected. | コメントが閉じていない。
Link macro first. Use 'connect' macro. | MACRO と Tera Term の間のリンクが確立してないため、コマンドが実行できない。
Divide by zero. | 0で割ろうとした。
Invalid control. | "else", "elseif", "endif" の誤った使用。
Label already defined. | ラベル名の多重使用。
Label required. | ラベルが見つからない。
Stack overflow. | サブルーチン、"for-next" ループ、"while-endwhile" の階層が深すぎる。
Syntax error. | コマンドの形式が間違っている。
Too many labels. | ラベルの数が多すぎる。(最大512個)
Too many variables. | 変数の数が多すぎる。(整数型、文字列型、整数配列型、文字列配列型それぞれ最大256個ずつ)
Type mismatch. | 定数または変数の型が間違っている。
Variable not initialized. | 初期化されてない変数を参照した。
Index out of range. | 定義された配列変数の要素数を超えるインデックスを参照した。
"]" expected. | 配列のカッコ "]" が閉じていない。
Can't allocate memory. | メモリの確保に失敗。
Unknown command. | マクロコマンドは現在のTera Termバージョンではサポートされていない。


改行文字について

ホストから送られてくる改行文字 (CR または CR+LF) は Tera Term によって CR+LF に変換され MACRO に渡される。
Tera Term へ送る改行文字は CR+LF を用いる。
CR、LF の ASCII コードはそれぞれ13、10(10進数)。

例:

send 'abc'#13#10 | "sendln 'abc'" と同じ。実際にホストへ送られる改行文字は Tera Term の設定により決まる。
wait #10'abc' 'def'#13 | 行頭の "abc"、行末の "def" を待つ。
logwrite 'abc'#13#10 | ログファイルに改行文字を書き込む場合は必ずCR+LFにする。


負の整数定数についての注意

コマンドのパラメータに負の整数定数を使用する場合、以下のような問題が発生する場合がある。例えば、

for i 5 -1

このコマンドは文法エラーを発生する。なぜなら、2番めのパラメータは "5" ではなくて、"5-1" とみなされ、3番めのパラメータがなくなるからである。この問題を防ぐには以下のいずれかの方法をとる。

  1. "-" の前に "0" をつける。
    for i 5 0-1
  2. 丸括弧をつける。
    for i 5 (-1)
  3. 負の整数定数を変数に代入してから使用する。

A = -1
for i 5 A


切断後すぐに接続する場合の注意点

ホストとの接続を終了後、すぐにconnectコマンドで新しい接続を開始する場合、以下のような問題が発生する場合がある。例えば、

; exitコマンドを送って、ホストとの接続を終了する。
sendln "exit"

; 新しい接続を開始する。
connect "server"

このマクロは大抵の場合はうまく動かない。
sendln "exit"でexitコマンドを送ってからホストが接続を切断してくるのに少しタイムラグが発生する。
マクロはこのタイムラグの間に次のconnectコマンドを実行する。
しかしホストとの接続がまだ終了していないため、connectコマンドは既に接続しているとみなして何も行わない。

この問題を回避するには、以下のようにホストとの接続が終了したのを確認してからconnectコマンドを実行するようにする。

; exitコマンドを送って、ホストとの接続を終了する。
sendln "exit"

do
    ; 10ミリ秒待つ
    mpause 10
    ; 接続状態を確認する
    testlink
; まだホストと接続されている(resultが2)ならばループを繰り返す
loop while result = 2

; 新しい接続を開始する。
connect "server"

また、切断後自動的にウィンドウを閉じる設定の場合、以下のようにunlinkコマンドでTera Termを切り離してもよい。

; exitコマンドを送って、ホストとの接続を終了する。
sendln "exit"

; Tera Termを切り離す
unlink

; 新しい接続を開始する。
connect "server"


ASCII コード表

例えば、"A"のASCIIコードは10進数で65、16進数で$41。

Char | Code | Char | Code | Char | Code | Char | Code
NUL (^@) | 0 $00 | DLE (^P) | 16 $10 | SPACE | 32 $20 | 0 | 48 $30
SOH (^A) | 1 $01 | DC1 (^Q) | 17 $11 | ! | 33 $21 | 1 | 49 $31
STX (^B) | 2 $02 | DC2 (^R) | 18 $12 | " | 34 $22 | 2 | 50 $32
ETX (^C) | 3 $03 | DC3 (^S) | 19 $13 | # | 35 $23 | 3 | 51 $33
EOT (^D) | 4 $04 | DC4 (^T) | 20 $14 | $ | 36 $24 | 4 | 52 $34
ENQ (^E) | 5 $05 | NAK (^U) | 21 $15 | % | 37 $25 | 5 | 53 $35
ACK (^F) | 6 $06 | SYN (^V) | 22 $16 | & | 38 $26 | 6 | 54 $36
BEL (^G) | 7 $07 | ETB (^W) | 23 $17 | ' | 39 $27 | 7 | 55 $37
BS (^H) | 8 $08 | CAN (^X) | 24 $18 | ( | 40 $28 | 8 | 56 $38
HT (^I) | 9 $09 | EM (^Y) | 25 $19 | ) | 41 $29 | 9 | 57 $39
LF (^J) | 10 $0A | SUB (^Z) | 26 $1A | * | 42 $2A | : | 58 $3A
VT (^K) | 11 $0B | ESC (^[) | 27 $1B | + | 43 $2B | ; | 59 $3B
FF (^L) | 12 $0C | FS (^\) | 28 $1C | , | 44 $2C | < | 60 $3C
CR (^M) | 13 $0D | GS (^]) | 29 $1D | - | 45 $2D | = | 61 $3D
SO (^N) | 14 $0E | RS (^^) | 30 $1E | . | 46 $2E | > | 62 $3E
SI (^O) | 15 $0F | US (^_) | 31 $1F | / | 47 $2F | ? | 63 $3F
Char | Code | Char | Code | Char | Code | Char | Code
@ | 64 $40 | P | 80 $50 | ` | 96 $60 | p | 112 $70
A | 65 $41 | Q | 81 $51 | a | 97 $61 | q | 113 $71
B | 66 $42 | R | 82 $52 | b | 98 $62 | r | 114 $72
C | 67 $43 | S | 83 $53 | c | 99 $63 | s | 115 $73
D | 68 $44 | T | 84 $54 | d | 100 $64 | t | 116 $74
E | 69 $45 | U | 85 $55 | e | 101 $65 | u | 117 $75
F | 70 $46 | V | 86 $56 | f | 102 $66 | v | 118 $76
G | 71 $47 | W | 87 $57 | g | 103 $67 | w | 119 $77
H | 72 $48 | X | 88 $58 | h | 104 $68 | x | 120 $78
I | 73 $49 | Y | 89 $59 | i | 105 $69 | y | 121 $79
J | 74 $4A | Z | 90 $5A | j | 106 $6A | z | 122 $7A
K | 75 $4B | [ | 91 $5B | k | 107 $6B | { | 123 $7B
L | 76 $4C | \ | 92 $5C | l | 108 $6C | | | 124 $7C
M | 77 $4D | ] | 93 $5D | m | 109 $6D | } | 125 $7D
N | 78 $4E | ^ | 94 $5E | n | 110 $6E | ~ | 126 $7E
O | 79 $4F | _ | 95 $5F | o | 111 $6F | DEL | 127 $7F


アンインストール

インストーラから導入した場合

Tera Term を削除するには、コントロールパネルの「プログラムと機能」を実行するか、Tera Term ディレクトリにある unins000.exe を実行してください。
次に、コントロールパネルの「フォント」から "Tera Special" フォントを削除してください。
もしこのアンインストーラーが動かない場合は、手動でもTera Termをアンインストールすることができます。

ZIPアーカイブを使用した場合

手動でアンインストールしてください。

手動アンインストール

Tera Term ディレクトリにある Tera Term 関係のファイルをすべて削除し、コントロールパネルの「フォント」から "Tera Special" フォントを削除してください。
Tera Term Menuを使用していた場合は、レジストリ HKEY_CURRENT_USER\Software\ShinpeiTools\TTermMenu を削除してください。


Transfer ([File] メニュー)

Kermit
Kermit プロトコルでファイルを転送します。
XMODEM
XMODEM プロトコルでファイルを転送します。
YMODEM
YMODEM プロトコルでファイルを転送します。
ZMODEM
ZMODEM プロトコルでファイルを転送します。
B-Plus
B-Plus プロトコルでファイルを転送します。
Quick-VAN
Quick-VAN プロトコルでファイルを転送します。


B-Plus ([File] Transfer メニュー)

B-Plus プロトコルでファイルを転送します。

Receive
ファイルを受信します。 その前に BBS のダウンロードコマンドを起動してください。
Send...
ファイルを送信します。 その前に BBS のアップロードコマンドを起動してください。

B-Plusのヒント


Kermit ([File] Transfer メニュー)

Kermit プロトコルでファイルを転送します。

Receive
ファイルを受信します。 その前にホスト側の Kermit の Send コマンドを実行してください。
Get...
ホスト側の Kermit が server の状態の時に、Tera Term からホスト側のファイル名を指定してファイルを受信します。
Send...
ファイルを送信します。その前にホスト側の Kermit の Receive コマンドまたはServer コマンドを実行してください。
Finish
ホスト側が server の状態のとき、それを解除します。


Quick-VAN ([File] Transfer メニュー)

Quick-VAN プロトコルでファイルを転送します。

Receive
ファイルを受信します。 その前に BBS のダウンロードコマンドを起動してください。
Send...
ファイルを送信します。 その前に BBS のアップロードコマンドを起動してください。

Quick-VANのヒント


XMODEM ([File] Transfer メニュー)

XMODEM プロトコルでファイルを転送します。

Receive...
ファイルを受信します。 その前にホスト側の XMODEM の送信コマンドを実行してください。
Send...
ファイルを送信します。
その前にホスト側の XMODEM の送信コマンドを実行してください。

XMODEMのヒント


YMODEM ([File] Transfer メニュー)

YMODEM プロトコルでファイルを転送します。

Receive...
ファイルを受信します。 その前にホスト側の YMODEM の送信コマンドを実行してください。
Send...
ファイルを送信します。
その前にホスト側の YMODEM の送信コマンドを実行してください。


ZMODEM ([File] Transfer メニュー)

ZMODEM プロトコルでファイルを転送します。

Receive
ファイルを受信します。 その前にホスト側の ZMODEM の送信コマンドを起動してください。
Send...
ファイルを送信します。
Tera Termは、ZRQINIT送信する前に、ZMODEM の受信コマンド"rz"を呼び出します。 rzコマンドへのパスが通っている必要があります。

ZMODEMのヒント


Keyboard ([Setup] メニュー; ロシア語モード)

"Keyboard setup" ダイアログボックス

Transmit DEL by:
Backspace key
このオプションが選択されると backspace キーを押した時に DEL 文字 (ASCII $7F) が送出されます。 選択されないと BS 文字 (ASCII $08) が送出されます。
また、このオプションが選択された(選択されない)時でも Ctrl+Backspace で BS (DEL) 文字を送出できます。
Delete key
このオプションが選択されると Delete (Del) キーを押した時に DEL 文字が送出されます。 このオプションが選択されない場合、Delete キーの機能は キーボード設定ファイル により決定されます。
Keyboard
ロシア語キーボードタイプを指定します。もしロシア語 Windows でスタンダードキーボードドライバを使用しているなら、Windows を選択してください。 もしあなたがロシア語でない Windows を使用していて、KOI8-R コードを生成するドライバを使用しているなら、KOI8-R を選択してください。
Meta key
Alt キーをメタ・キー (meta key) として使います。 例えば、Alt+A を押すと、ESC A を送出します。 メタ・キーモードでは、ショートカット・キーは一部を除いて使用できなくなります。
メタ・キーを有効にしつつ AltGr キーとの組み合わせで文字を入力をしたい場合は、設定値を left にします。※NT 4.0 以降のみ対応
Disabled mode:
Application Keypad
アプリケーションキーパッドモードを無効にします。
アプリケーションキーパッドモードを無効にすると、 なにかの拍子でアプリケーションキーパッドモードに移行してしまい 数値キーパッドが使えなくなるというトラブルを防ぐ事ができます。 しかし、アプリケーションキーパッドモードを使用している アプリケーションでは不具合が起きるかもしれません。
Application Cursor
アプリケーションカーソルモードを無効にします。

キーボード設定ファイル を書きかえることで自由にキー設定を変更することができます。


Terminal ([Setup] メニュー; 英語モード)

このページは Setup - General で Language に English を選択した時の説明です。 他の言語モード使用時は以下のページを参照してください。

  • 日本語モードのヘルプ
  • 韓国語モードのヘルプ
  • ロシア語モードのヘルプ
  • UTF-8モードのヘルプ

"Terminal setup" ダイアログボックス

Terminal size
ターミナルサイズ(端末画面の論理サイズ)。 横 X 縦 の文字数で指定します。 ウインドウサイズ(実際の画面の大きさ)と必ずしも同じではありません。
Term size = win size
このオプションを選択した場合、ターミナルサイズとウィンドウサイズを常に等しくします。
Auto window resize
このオプションを選択した場合、ターミナルサイズが変更されたときに、 ウインドウサイズも同じ大きさに自動的に変更されます。
New-line (receive)
CR
何も変換しません。
CR+LF
受信された 改行文字 CR ($0D) を CR+LF ($0D $0A)に変換します。
例) "CR LF" が受信された場合、"CR LF LF" に変換されます。
LF
受信された 改行文字 LF ($0A) を CR+LF ($0D $0A)に変換します。
例) "CR LF" が受信された場合、"CR CR LF" に変換されます。
AUTO
受信された 改行文字 CR ($0D), 改行文字 LF ($0A) を CR+LF ($0D $0A)に変換します。
例) "CR LF" が受信された場合、変換しません。
"CR" が受信された場合、"CR LF" に変換されます。
"LF" が受信された場合、"CR LF" に変換されます。
New-line (transmit)
CR
何も変換しません。
CR+LF
送信時に改行文字 CR ($0D) を CR+LF ($0D $0A) に変換します。
LF
送信時に改行文字 CR ($0D) を LF ($0A) に変換します。
Terminal ID
ホストに報告する Terminal ID。Terminal ID は telnet の terminal type とは違います。Telnet の terminal type を変更するには [Setup] TCP/IP コマンドを使用してください。
Local echo
キー入力等により送出する文字をそのまま画面に表示します。
Answerback
ホストから ENQ ($05) 文字が送られてきた時に、送り返す文字列。 文字列中に含まれる表示不可能な文字(制御文字)は、"$" と それにつづく ASCII コード(2桁の16進数) で表現してください。 例えば、文字列 "ABC <CR> <LF>" をアンサーバックする場合、次のように入力してください。

ABC$0D$0A

Auto switch (VT<->TEK)
エスケープシーケンスを判別して、自動的に VT window から TEK window へ制御を移します(逆も同様)。


Terminal ([Setup] メニュー; 韓国語モード)

このページは Setup - General で Language に Korean を選択した時の説明です。 他の言語モード使用時は以下のページを参照してください。

  • 日本語モードのヘルプ
  • 英語モードのヘルプ
  • ロシア語モードのヘルプ
  • UTF-8モードのヘルプ

"Terminal setup" ダイアログボックス

Terminal size
ターミナルサイズ(端末画面の論理サイズ)。 横 X 縦 の文字数で指定します。 ウインドウサイズ(実際の画面の大きさ)と必ずしも同じではありません。
Term size = win size
このオプションを選択した場合、ターミナルサイズとウィンドウサイズを常に等しくします。
Auto window resize
このオプションを選択した場合、ターミナルサイズが変更されたときに、 ウインドウサイズも同じ大きさに自動的に変更されます。
New-line (receive)
CR
何も変換しません。
CR+LF
受信された 改行文字 CR ($0D) を CR+LF ($0D $0A)に変換します。
例) "CR LF" が受信された場合、"CR LF LF" に変換されます。
LF
受信された 改行文字 LF ($0A) を CR+LF ($0D $0A)に変換します。
例) "CR LF" が受信された場合、"CR CR LF" に変換されます。
AUTO
受信された 改行文字 CR ($0D), 改行文字 LF ($0A) を CR+LF ($0D $0A)に変換します。
例) "CR LF" が受信された場合、変換しません。
"CR" が受信された場合、"CR LF" に変換されます。
"LF" が受信された場合、"CR LF" に変換されます。
New-line (transmit)
CR
何も変換しません。
CR+LF
送信時に改行文字 CR ($0D) を CR+LF ($0D $0A) に変換します。
LF
送信時に改行文字 CR ($0D) を LF ($0A) に変換します。
Terminal ID
ホストに報告する Terminal ID。Terminal ID は telnet の terminal type とは違います。Telnet の terminal type を変更するには [Setup] TCP/IP コマンドを使用してください。
Local echo
キー入力等により送出する文字をそのまま画面に表示します。
Answerback
ホストから ENQ ($05) 文字が送られてきた時に、送り返す文字列。 文字列中に含まれる表示不可能な文字(制御文字)は、"$" と それにつづく ASCII コード(2桁の16進数) で表現してください。 例えば、文字列 "ABC <CR> <LF>" をアンサーバックする場合、次のように入力してください。

ABC$0D$0A

Auto switch (VT<->TEK)
エスケープシーケンスを判別して、自動的に VT window から TEK window へ制御を移します(逆も同様)。
Coding (receive)
ホストから送られてくる文字コード (KS5601, UTF-8, UTF-8m の3種類)。
Coding (transmit)
送出する文字コード (KS5601, UTF-8 の2種類)。
locale
ロケール。 詳細はUnicode設定を参照。


Terminal ([Setup] メニュー; ロシア語モード)

このページは Setup - General で Language に Russian を選択した時の説明です。 他の言語モード使用時は以下のページを参照してください。

  • 日本語モードのヘルプ
  • 英語モードのヘルプ
  • 韓国語モードのヘルプ
  • UTF-8モードのヘルプ

"Terminal setup" ダイアログボックス

Terminal size
ターミナルサイズ(端末画面の論理サイズ)。 横 X 縦 の文字数で指定します。 ウインドウサイズ(実際の画面の大きさ)と必ずしも同じではありません。
Term size = win size
このオプションを選択した場合、ターミナルサイズとウィンドウサイズを常に等しくします。
Auto window resize
このオプションを選択した場合、ターミナルサイズが変更されたときに、 ウインドウサイズも同じ大きさに自動的に変更されます。
New-line (receive)
CR
何も変換しません。
CR+LF
受信された 改行文字 CR ($0D) を CR+LF ($0D $0A)に変換します。
例) "CR LF" が受信された場合、"CR LF LF" に変換されます。
LF
受信された 改行文字 LF ($0A) を CR+LF ($0D $0A)に変換します。
例) "CR LF" が受信された場合、"CR CR LF" に変換されます。
AUTO
受信された 改行文字 CR ($0D), 改行文字 LF ($0A) を CR+LF ($0D $0A)に変換します。
例) "CR LF" が受信された場合、変換しません。
"CR" が受信された場合、"CR LF" に変換されます。
"LF" が受信された場合、"CR LF" に変換されます。
New-line (transmit)
CR
何も変換しません。
CR+LF
送信時に改行文字 CR ($0D) を CR+LF ($0D $0A) に変換します。
LF
送信時に改行文字 CR ($0D) を LF ($0A) に変換します。
Terminal ID
ホストに報告する Terminal ID。Terminal ID は telnet の terminal type とは違います。Telnet の terminal type を変更するには [Setup] TCP/IP コマンドを使用してください。
Local echo
キー入力等により送出する文字をそのまま画面に表示します。
Answerback
ホストから ENQ ($05) 文字が送られてきた時に、送り返す文字列。 文字列中に含まれる表示不可能な文字(制御文字)は、"$" と それにつづく ASCII コード(2桁の16進数) で表現してください。 例えば、文字列 "ABC <CR> <LF>" をアンサーバックする場合、次のように入力してください。

ABC$0D$0A

Auto switch (VT<->TEK)
エスケープシーケンスを判別して、自動的に VT window から TEK window へ制御を移します(逆も同様)。
Character set
Host
ホストコンピュータで使用されているロシア語文字セット。 Windows (CP 1251), KOI8-R, CP 866 or ISO 8859-5 から選択します。
Client
あなたの PC で使用されているロシア語文字セット。 Windows (CP 1251), KOI8-R, CP 866, ISO 8859-5 から選択します。 もしあなたがロシア語 Windows を使用しているなら、Windows を選択すべきです。
Font
指定されたフォントの文字コードを、Windows (CP 1251), KOI8-R, CP 866, ISO 8859-5 の中から選択します。


Terminal ([Setup] メニュー; UTF-8モード)

このページは Setup - General で Language に UTF-8 を選択した時の説明です。 他の言語モード使用時は以下のページを参照してください。

  • 日本語モードのヘルプ
  • 英語モードのヘルプ
  • 韓国語モードのヘルプ
  • ロシア語モードのヘルプ

"Terminal setup" ダイアログボックス

Terminal size
ターミナルサイズ(端末画面の論理サイズ)。 横 X 縦 の文字数で指定します。 ウインドウサイズ(実際の画面の大きさ)と必ずしも同じではありません。
Term size = win size
このオプションを選択した場合、ターミナルサイズとウィンドウサイズを常に等しくします。
Auto window resize
このオプションを選択した場合、ターミナルサイズが変更されたときに、 ウインドウサイズも同じ大きさに自動的に変更されます。
New-line (receive)
CR
何も変換しません。
CR+LF
受信された 改行文字 CR ($0D) を CR+LF ($0D $0A)に変換します。
例) "CR LF" が受信された場合、"CR LF LF" に変換されます。
LF
受信された 改行文字 LF ($0A) を CR+LF ($0D $0A)に変換します。
例) "CR LF" が受信された場合、"CR CR LF" に変換されます。
AUTO
受信された 改行文字 CR ($0D), 改行文字 LF ($0A) を CR+LF ($0D $0A)に変換します。
例) "CR LF" が受信された場合、変換しません。
"CR" が受信された場合、"CR LF" に変換されます。
"LF" が受信された場合、"CR LF" に変換されます。
New-line (transmit)
CR
何も変換しません。
CR+LF
送信時に改行文字 CR ($0D) を CR+LF ($0D $0A) に変換します。
LF
送信時に改行文字 CR ($0D) を LF ($0A) に変換します。
Terminal ID
ホストに報告する Terminal ID。Terminal ID は telnet の terminal type とは違います。Telnet の terminal type を変更するには [Setup] TCP/IP コマンドを使用してください。
Local echo
キー入力等により送出する文字をそのまま画面に表示します。
Answerback
ホストから ENQ ($05) 文字が送られてきた時に、送り返す文字列。 文字列中に含まれる表示不可能な文字(制御文字)は、"$" と それにつづく ASCII コード(2桁の16進数) で表現してください。 例えば、文字列 "ABC <CR> <LF>" をアンサーバックする場合、次のように入力してください。

ABC$0D$0A

Auto switch (VT<->TEK)
エスケープシーケンスを判別して、自動的に VT window から TEK window へ制御を移します(逆も同様)。
Coding (receive)
ホストから送られてくる文字コード (UTF-8, UTF-8m の2種類)。
Coding (transmit)
送出する文字コード (UTF-8 の1種類)。
locale
ロケール。 詳細はUnicode設定を参照。


Window (TEK window [Window] メニュー)

実行中の Tera Term ウインドウを画面の一番前に表示させたり閉じたりします。

"Window list" ダイアログボックス

Window
実行中の Tera Term ウインドウのリスト。一つ選択してください。
Open
選択されたウインドウを画面の一番前に表示させ、そしてこのダイアログボックスを閉じます。
Close window
選択されたウインドウを閉じます。


Argon2 reference source code package - reference C implementations

Copyright 2015
Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves

You may use this work under the terms of a Creative Commons CC0 1.0
License/Waiver or the Apache Public License 2.0, at your option. The terms of
these licenses can be found at:

- CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0
- Apache 2.0        : http://www.apache.org/licenses/LICENSE-2.0

The terms of the licenses are reproduced below.

--------------------------------------------------------------------------------

Creative Commons Legal Code

CC0 1.0 Universal

    CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
    LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
    ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
    INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
    REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
    PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
    THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
    HEREUNDER.

Statement of Purpose

The laws of most jurisdictions throughout the world automatically confer
exclusive Copyright and Related Rights (defined below) upon the creator
and subsequent owner(s) (each and all, an "owner") of an original work of
authorship and/or a database (each, a "Work").

Certain owners wish to permanently relinquish those rights to a Work for
the purpose of contributing to a commons of creative, cultural and
scientific works ("Commons") that the public can reliably and without fear
of later claims of infringement build upon, modify, incorporate in other
works, reuse and redistribute as freely as possible in any form whatsoever
and for any purposes, including without limitation commercial purposes.
These owners may contribute to the Commons to promote the ideal of a free
culture and the further production of creative, cultural and scientific
works, or to gain reputation or greater distribution for their Work in
part through the use and efforts of others.

For these and/or other purposes and motivations, and without any
expectation of additional consideration or compensation, the person
associating CC0 with a Work (the "Affirmer"), to the extent that he or she
is an owner of Copyright and Related Rights in the Work, voluntarily
elects to apply CC0 to the Work and publicly distribute the Work under its
terms, with knowledge of his or her Copyright and Related Rights in the
Work and the meaning and intended legal effect of CC0 on those rights.

1. Copyright and Related Rights. A Work made available under CC0 may be
protected by copyright and related or neighboring rights ("Copyright and
Related Rights"). Copyright and Related Rights include, but are not
limited to, the following:

  i. the right to reproduce, adapt, distribute, perform, display,
     communicate, and translate a Work;
 ii. moral rights retained by the original author(s) and/or performer(s);
iii. publicity and privacy rights pertaining to a person's image or
     likeness depicted in a Work;
 iv. rights protecting against unfair competition in regards to a Work,
     subject to the limitations in paragraph 4(a), below;
  v. rights protecting the extraction, dissemination, use and reuse of data
     in a Work;
 vi. database rights (such as those arising under Directive 96/9/EC of the
     European Parliament and of the Council of 11 March 1996 on the legal
     protection of databases, and under any national implementation
     thereof, including any amended or successor version of such
     directive); and
vii. other similar, equivalent or corresponding rights throughout the
     world based on applicable law or treaty, and any national
     implementations thereof.

2. Waiver. To the greatest extent permitted by, but not in contravention
of, applicable law, Affirmer hereby overtly, fully, permanently,
irrevocably and unconditionally waives, abandons, and surrenders all of
Affirmer's Copyright and Related Rights and associated claims and causes
of action, whether now known or unknown (including existing as well as
future claims and causes of action), in the Work (i) in all territories
worldwide, (ii) for the maximum duration provided by applicable law or
treaty (including future time extensions), (iii) in any current or future
medium and for any number of copies, and (iv) for any purpose whatsoever,
including without limitation commercial, advertising or promotional
purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
member of the public at large and to the detriment of Affirmer's heirs and
successors, fully intending that such Waiver shall not be subject to
revocation, rescission, cancellation, termination, or any other legal or
equitable action to disrupt the quiet enjoyment of the Work by the public
as contemplated by Affirmer's express Statement of Purpose.

3. Public License Fallback. Should any part of the Waiver for any reason
be judged legally invalid or ineffective under applicable law, then the
Waiver shall be preserved to the maximum extent permitted taking into
account Affirmer's express Statement of Purpose. In addition, to the
extent the Waiver is so judged Affirmer hereby grants to each affected
person a royalty-free, non transferable, non sublicensable, non exclusive,
irrevocable and unconditional license to exercise Affirmer's Copyright and
Related Rights in the Work (i) in all territories worldwide, (ii) for the
maximum duration provided by applicable law or treaty (including future
time extensions), (iii) in any current or future medium and for any number
of copies, and (iv) for any purpose whatsoever, including without
limitation commercial, advertising or promotional purposes (the
"License"). The License shall be deemed effective as of the date CC0 was
applied by Affirmer to the Work. Should any part of the License for any
reason be judged legally invalid or ineffective under applicable law, such
partial invalidity or ineffectiveness shall not invalidate the remainder
of the License, and in such case Affirmer hereby affirms that he or she
will not (i) exercise any of his or her remaining Copyright and Related
Rights in the Work or (ii) assert any associated claims and causes of
action with respect to the Work, in either case contrary to Affirmer's
express Statement of Purpose.

4. Limitations and Disclaimers.

 a. No trademark or patent rights held by Affirmer are waived, abandoned,
    surrendered, licensed or otherwise affected by this document.
 b. Affirmer offers the Work as-is and makes no representations or
    warranties of any kind concerning the Work, express, implied,
    statutory or otherwise, including without limitation warranties of
    title, merchantability, fitness for a particular purpose, non
    infringement, or the absence of latent or other defects, accuracy, or
    the present or absence of errors, whether or not discoverable, all to
    the greatest extent permissible under applicable law.
 c. Affirmer disclaims responsibility for clearing rights of other persons
    that may apply to the Work or any use thereof, including without
    limitation any person's Copyright and Related Rights in the Work.
    Further, Affirmer disclaims responsibility for obtaining any necessary
    consents, permissions or other rights required for any use of the
    Work.
 d. Affirmer understands and acknowledges that Creative Commons is not a
    party to this document and has no duty or obligation with respect to
    this CC0 or use of the Work.

--------------------------------------------------------------------------------

                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.


通信 (Tera Term 設定ファイル)

シリアルポート番号の最大値

[File] New connection および [Setup] Serial port ダイアログボックスで表示されるシリアルポート番号の最大値 (COMn の最大値 n) を指定するには、設定ファイルの [Tera Term] セクションの MaxComPort 行を、

MaxComPort=<シリアルポート番号の最大値>

のように変更してください。たとえ実際に使用可能なポート番号の最大値が4より小さくても、3以下の値は指定できません。
指定できる最大値は以下のとおりです。
4096 (バージョン4.65以降)
256 (バージョン4.55以降)
99 (バージョン4.24以降)
16 (バージョン4.24以前)

省略時:
MaxComPort=256

シリアルポートのバッファをクリアしない

Tera Termの初期設定ではシリアルポートを開く時にシリアルポートのバッファの内容を消去します。

設定ファイルの [Tera Term] セクションの ClearComBuffOnOpen 行を、

ClearComBuffOnOpen=off

のように変更すると、シリアルポートを開くときにバッファをクリアしません。

省略時:
ClearComBuffOnOpen=on

TCP/IP 回線切断の確認をしない

Unix 等のホストに telnet でログインしている状態で、回線を強制的に切断すると、プロセスが残ったままになることがあります。やむを得ない場合を除き、正しい方法でログアウトするようにしてください。

Tera Term の初期設定では TCP/IP 接続時に システムメニューの「閉じる」コマンドまたは [File] メニューの Exit コマンドで回線を強制的に切断するときに、"Disconnect ?" というメッセージを表示してユーザーに確認をします。

設定ファイルの [Tera Term] セクションの ConfirmDisconnect 行を、

ConfirmDisconnect=off

のように変更すると、回線を強制切断するときにユーザーに確認をしません。

省略時:
ConfirmDisconnect=on

Telnet のバイナリオプション

ホストに telnet 接続し、ファイル転送 (XMODEM 等)で CR 文字を送出する場合、Tera Term の初期設定では CR+NUL ($0D $00) に変換してから送出します。バイナリオプションで telnet 接続すると、このような変換はおこないません。

設定ファイルの [Tera Term] セクションの TelBin 行を、

TelBin=on

のように変更すると、Telnet 接続するときバイナリオプションを用います(ホストが対応していれば)。

また、設定ファイルは書き換えずに、コマンドラインに /B オプションをつけても、バイナリオプションを指定できます。

省略時:
TelBin=off

Telnet のエコーオプション

設定ファイルの [Tera Term] セクションの TelEcho 行を、

TelEcho=on

のように変更すると、Tera Term はホストのエコー(リモートエコー)の状態を [Setup] Terminal ダイアログボックスで設定される "Local echo" の状態に応じて変更することを試みます。もし、 "Local echo" が on (off) ならば、Tera Term はリモートエコーを off (on) にすることを試み、ホストと Tera Term で二重エコーしたり、エコーをまったくしない状態になることを防ごうとします。この機能はホストが telnet のエコーオプションに対応していないと働きません。

省略時:
TelEcho=off

Telnet のログ

設定ファイルの [Tera Term] セクションの TelLog 行を、

TelLog=on

のように変更すると、ホストと Tera Term の間の telnet の option negotiation の内容をファイル TELNET.LOG に記録します。

省略時:
TelLog=off

Telnet 用ポート番号 / 非 telnet TCP/IP 接続用の端末設定

Telnet 用ポート番号

コマンドライン、または [File] New connection ダイアログボックスでは、TCP/IP 接続に使用される TCP ポート番号 (<TCP port#>) と telnet フラグ (<telnet flag>) を指定することができます。コマンドラインでこれらのパラメーターが省略された場合は、Tera Term 設定ファイルに書かれている設定値が使用されます。

<telnet flag> が 1 (on) で、かつ <TCP port#> が 23 の場合だけ、Tera Term はホストに接続した直後に、自発的に telnet コマンドをホストに送信し option negotiation を開始します。

この telnet のための特別なポート番号 23 は、設定ファイルの [Tera Term] セクションの TelPort 行で以下のように変更することができます。

TelPort=<telnet port#>

省略時:
TelPort=23

<telnet flag> と <TCP port#> が何であれ Tera Term はホストから送られてきた telnet コマンドに応答することができます。(但し、TelAutoDetectがoffの時は除きます。)

非 telnet TCP/IP 接続用の端末設定

Telnet プロトコルに対応していないホスト(通常 23 以外のポート番号を使用)に TCP/IP 接続する場合、ローカルエコーを on に、送信する改行コードを CR+LF にする必要がある場合があります。設定ファイルの [Tera Term] セクションの TCPLocalEcho と TCPCRSend 行を、

TCPLocalEcho=on
TCPCRSend=CRLF    (CR も指定可能)

のように変更すると、<telnet flag> が 0 (off) の場合、または <TCP port#> が <telnet port#> でない場合に、接続直後に、ローカルエコーを on に、送信改行コードを CR+LF に自動的に変更します。それ以外の場合は [Setup] Terminal での設定値が使用されます。これらのオプションによって、一つの設定ファイルで telnet 接続と非 telnet 接続の両方に対応することが可能となります。

省略時:
TCPLocalEcho=off
; (このオプションは使わず、常に
; [Setup] Terminal の設定値が使用される)
TCPCRSend=
; (このオプションは使わず、常に
; [Setup] Terminal の設定値が使用される)

Telnet コマンド自動検出の無効化

非 Telnet 接続時でも、Tera Term はホストから送られてきた telnet コマンドに応答し、以降の通信を Telnet 接続として扱うようになります。
しかし、Tera Term 側から文字'0xFF'を送ってそれがエコーバックされた時に、そのエコーバックされた文字列を telnet コマンドとみなしてしまい、以降の通信が Telnet 接続として扱われてしまう事があります。

設定ファイルの [Tera Term] セクションの TelAutoDetect 行を、

TelAutoDetect=off

のように変更すると、相手からtelnetコマンドが送られて来てもtelnetコマンドとして扱わないようになります。

省略時:
TelAutoDetect=on

行単位送信モードの無効化

Tera Term 4.63 より行単位送信(Line at a time)モードに対応しました。
標準ではこの機能が有効になっているため、TCP/IP 接続時は入力されたデータがすぐに送信されず、改行を入力した時にまとめて送信されます。
ただし、以下のいずれかに当てはまる時は行単位送信モードは無効となり、文字単位送信(Character at a time)モードになります。

  • ssh接続時
  • telnetネゴシエーションで、サーバ側がエコーバックする事になった時 (WILL ECHO を受けた時)
  • telnetネゴシエーションで、Tera TermのSGA要求(WILL SGA)が許可された時 (DO SGA を受けた時)

telnetやssh接続以外での接続時は上記の条件に当てはまらないため、行単位送信モードが有効になります。
telnetやssh以外の接続でも入力したデータをすぐに送信するようにしたい場合は、設定ファイルの [Tera Term] セクションの EnableLineMode 行を以下のように変更してください。

EnableLineMode=off

省略時:
EnableLineMode=on

シリアルポートでブレーク信号を送出する時間の長さ

シリアルポートでブレーク信号を送信する場合、デフォルトの送出時間は 1000 ミリ秒です。
この送出時間を変更するには、設定ファイルの [Tera Term] セクションの SendBreakTime 行を変更します。

SendBreakTime=2000

省略時:
SendBreakTime=1000

シリアルポートの切断・再接続を検出する

接続中の USB シリアルケーブルが抜かれたことを検出した場合に Tera Term のシリアル接続を切断し、 再度シリアルケーブルが接続されたことを検出したら Tera Term のシリアル接続を再接続します。

この機能は Windows XP 以降で有効です。

この機能を使用しないようにするためには、設定ファイルの [Tera Term] セクションの AutoComPortReconnect 行を下記のように変更してください。

AutoComPortReconnect=off

省略時:
AutoComPortReconnect=on

シリアルポートの接続を待つ

接続しようとしたシリアルポートが未接続の場合、接続されるまで待ちます。

この機能は Windows XP 以降で有効です。
AutoComPortReconnect=on である必要があります。

この機能を使用しないようにするためには、設定ファイルの [Tera Term] セクションの WaitCom 行を下記のように変更してください。

WaitCom=off

省略時:
WaitCom=off

サーバに通知する端末速度を変更する

Telnet や SSH での接続開始時、端末の速度をサーバへ通知します。

このサーバに通知する端末速度を変更したい場合は、設定ファイルの [Tera Term] セクションの TerminalSpeed 行を、

TerminalSpeed=<送信速度>,<受信速度>

のように変更してください。例えば、送信速度を 38400bps に、受信速度を 9600bps にする場合は以下のようにします。

TerminalSpeed=38400,9600

また、以下のように速度を一つだけ指定した場合は、送信速度と受信速度の両方をその値で通知します。

TerminalSpeed=<送受信速度>

省略時:
TerminalSpeed=38400


Tera Term 設定ファイルの全項目一覧

BG

項目 | INIデフォルト | プログラムデフォルト | 備考
BGEnable | off | <- |
BGFastSizeMove | on | <- |
BGFlickerlessMove | on | <- |
BGNoFrame | on | <- |
BGSPIPath | plugin | <- |
BGUseAlphaBlendAPI | on | <- |
BGThemeFile | theme\*.ini | <- |
BGIgnoreThemeFile | off | <- |

Tera Term

項目 | INIデフォルト | プログラムデフォルト | 備考
AcceleratorCygwinConnection | on | <- |
AcceleratorNewConnection | on | <- |
Accept8BitCtrl | on | <- |
AcceptBroadcast | on | <- |
AcceptTitleChangeRequest | overwrite | <- |
Aixterm16Color | on | off |
AllowWrongSequence | off | <- |
AlphaBlendActive | 255 | ※ | ※AlphaBlendの設定値が使われる
AlphaBlend | 255 | <- |
AlternateScreenBuffer | on | <- |
ANSIColor | 0,0,0,0, 1,255,0,0, 2,0,255,0, 3,255,255,0, 4,128,128,255, 5,255,0,255, 6,0,255,255, 7,255,255,255, 8,64,64,64, 9,192,0,0, 10,0,192,0, 11,192,192,0, 12,64,64,192, 13,192,0,192, 14,0,192,192, 15,192,192,192 | 0,0,0,0, 1,255,0,0, 2,0,255,0, 3,255,255,0, 4,0,0,255, 5,255,0,255, 6,0,255,255, 7,255,255,255, 8,128,128,128, 9,128,0,0, 10,0,128,0, 11,128,128,0, 12,0,0,128, 13,128,0,128, 14,0,128,128, 15,192,192,192 |
Answerback |  | <- |
AutoComPortReconnect | on | <- |
AutoFileRename | on | off |
AutoScrollOnlyInBottomLine | on | off |
AutoTextCopy | on | <- |
AutoWinClose | on | <- |
AutoWinResize | off | <- |
AutoWinSwitch | off | <- |
BackWrap | off | <- |
BaudRate | 9600 | <- |
Beep | on | <- |
BeepOnConnect | off | <- |
BeepOverUsedCount | 5 | <- |
BeepOverUsedTime | 2 | <- |
BeepSuppressTime | 5 | <- |
BPAuto | off | <- |
BPEscCtl | off | <- |
BPLog | off | <- |
BroadcastCommandHistory | on | off |
BSKey | BS | <- |
ClearComBuffOnOpen | on | <- |
ClearOnResize | on | <- |
ClearScreenOnCloseConnection | off | <- |
ClickableUrlBrowser |  | <- |
ClickableUrlBrowserArg |  | <- |
ClipboardAccessFromRemote | off | <- |
ComPort | 1 | <- |
ConfirmChangePaste | on | <- |
ConfirmChangePasteCR | on | <- |
ConfirmChangePasteStringFile |  | <- |
ConfirmDisconnect | on | <- |
ConfirmFileDragAndDrop | on | <- |
ConfirmPasteMouseRButton | off | <- |
ConnectingTimeout | 0 | <- |
CRReceive | CR | <- |
CRSend | CR | <- |
CtrlInKanji | on | <- |
CursorCtrlSequence | off | <- |
CursorShape | block | <- |
CygwinDirectory | c:\cygwin | <- |
DataBit | 8 | <- |
Debug | off | <- |
DebugModes | off | <- |
DeferredLogWriteMode | on | <- |
DelayPerChar | 0 | <- |
DelayPerLine | 0 | <- |
DeleteKey | on | off |
DelimDBCS | on | <- |
DelimList | $20!"#$24%&'()*+,:;<=>?@[\]^`{|} | $20!"#$24%&'()*+,-./:;<=>?@[\]^`{|}~ |
DisableAcceleratorDuplicateSession | off | <- |
DisableAcceleratorSendBreak | off | <- |
DisableAppCursor | off | <- |
DisableAppKeypad | off | <- |
DisableMenuDuplicateSession | off | <- |
DisableMenuNewConnection | off | <- |
DisableMenuSendBreak | off | <- |
DisableMouseTrackingByCtrl | on | <- |
DisablePasteMouseMButton | on | <- |
DisablePasteMouseRButton | off | <- |
DisableWheelToCursorByCtrl | on | <- |
DlgFont |  | <- |
EnableANSIColor | on | <- |
EnableBlinkAttrColor | on | <- |
EnableBold | on | <- |
EnableBoldAttrColor | on | <- |
EnableClickableUrl | on | off |
EnableContinuedLineCopy | on | off |
EnableLineMode | on | <- |
EnablePopupMenu | on | <- |
EnableReverseAttrColor | on | off |
EnableScrollBuff | on | <- |
EnableShowMenu | on | <- |
EnableStatusLine | on | <- |
EnableURLColor | on | <- |
FileDir | ※1 | ※2 | ※1インストーラによる ※2インストールディレクトリ
FileSendFilter |  | <- |
FileSendHighSpeedMode | on | <- |
FlowCtrl | none | <- |
FontQuality | default | <- |
FTHideDialog | off | <- |
HideTitle | off | <- |
HistoryList | on | off |
HostDialogOnStartup | on | <- |
IME | on | <- |
IMEInline | on | <- |
IMERelatedCursor | off | <- |
ISO2022ShiftFunction | on | <- |
JoinSplitURL | off | <- |
JoinSplitURLIgnoreEOLChar | \ | <- |
JumpList | on | <- |
KanjiIn | B | <- |
KanjiOut | B | J |
KanjiReceive | UTF-8 | SJIS |
KanjiSend | UTF-8 | SJIS |
KatakanaReceive | 8 | <- |
KatakanaSend | 8 | <- |
KillFocusCursor | on | <- |
KmtFileAttr | off | <- |
KmtLog | off | <- |
KmtLongPacket | off | <- |
Language | ※ | English | ※インストーラによる
LanguageSelection | on | <- |
ListHiddenFonts | off | <- |
Locale | ※ | japanese | ※インストーラによる
LocalEcho | off | <- |
LockTUID | on | <- |
LogAppend | on | off |
LogAutoStart | off | <- |
LogBinary | off | <- |
LogDefaultName | teraterm.log | <- |
LogDefaultPath |  | <- |
LogHideDialog | off | <- |
LogIncludeScreenBuffer | off | off |
LogLockExclusive | on | <- |
LogRotate | 0 | <- |
LogRotateSize | 0 | <- |
LogRotateSizeType | 0 | <- |
LogRotateStep | 0 | <- |
LogTimestamp | off | <- |
LogTimestampFormat | %Y-%m-%d %H:%M:%S.%N | <- |
LogTimestampType | Local | <- |
LogTimestampUTC | off | <- |
LogTypePlainText | on | off |
MaxBroadcatHistory | 99 | <- |
MaxBuffSize | 500000 | 10000 |
MaxComPort | 256 | <- |
MaximizedBugTweak | on | <- |
MaxOSCBufferSize | 4096 | <- |
Meta8Bit | off | <- |
MetaKey | off | <- |
MouseCursor | ibeam | <- |
MouseEventTracking | on | <- |
MouseWheelScrollLine | 3 | <- |
NonblinkingCursor | off | <- |
NormalizeLineBreakOnPaste | off | <- |
NotifyClipboardAccess | on | <- |
Parity | none | <- |
PassThruDelay | 3 | <- |
PassThruPort |  | <- |
PasteDelayPerLine | 10 | <- |
PasteDialogSize | 330,220 | <- |
PcBoldColor | on | off |
PopupMenu | off | <- |
Port | tcpip | <- |
PrinterCtrlSequence | on | <- |
PrnConvFF | off | <- |
PrnFont |  | <- |
PrnMargin | 50,50,50,50 | <- |
QVLog | off | <- |
QVWinSize | 8 | <- |
RussClient | Windows | <- |
RussFont | Windows | <- |
RussHost | Windows | KOI8-R |
RussKeyb | Windows | <- |
RussPrint | Windows | <- |
SaveVTWinPos | off | <- |
ScpSendDir |  | <- |
ScrollBuffSize | 10000 | 100 |
ScrollThreshold | 12 | <- |
ScrollWindowClearScreen | on | <- |
SelectOnActivate | on | <- |
SelectOnlyByLButton | on | <- |
Send8BitCtrl | off | <- |
SendBreakTime | 1000 | <- |
StartupMacro |  | <- |
StopBit | 1 | <- |
StrictKeyMapping | off | <- |
TabStopModifySequence | on | <- |
TCPCRSend |  | <- |
TCPLocalEcho | off | <- |
TCPPort | ※1 | ※2 | ※1インストーラによる ※2TelPortの値
TEKColor | 0,0,0,255,255,255 | <- |
TEKColorEmulation | off | <- |
TEKFont | ※ | Courier,0,-13,0 | ※インストーラによる
TEKGINMouseCode | 32 | <- |
TEKIcon | Default | <- |
TEKPos | -2147483648,-2147483648 | <- |
TEKPPI | 0,0 | <- |
TelAutoDetect | on | <- |
TelBin | off | <- |
TelEcho | off | <- |
TelKeepAliveInterval | 300 | <- |
TelLog | off | <- |
Telnet | on | <- |
TelPort | 23 | <- |
TerminalID | VT100 | <- |
TerminalSize | 80,24 | <- |
TerminalSpeed | 38400 | <- |
TerminalUID | FFFFFFFF | <- |
TermIsWin | on | off |
TermType | xterm | <- |
Title | Tera Term | <- |
TitleFormat | 13 | <- |
TitleReportSequence | empty | <- |
TransBin | off | <- |
TranslateWheelToCursor | on | <- |
TrimTrailingNLonPaste | off | <- |
UILanguageFile | ※ | lang\\Default.lng | ※インストーラによる
UnicodeToDecSpMapping | 3 | <- |
UnknownUnicodeCharacterAsWide | off | <- |
URLColor | 0,255,255,0,0,0 | 0,255,0,255,255,255 |
URLUnderline | on | <- |
UseNormalBGColor | on | off |
UseTextColor | off | <- |
Version | 2.3 | ※ | ※使用されていない
ViewlogEditor | ※ | <- | ※Windowsフォルダのnotepad.exe
VTBlinkColor | 255,0,0,0,0,0 | 255,0,0,255,255,255 |
VTBoldColor | 255,255,0,0,0,0 | 0,0,255,255,255,255 |
VTColor | 255,255,255,0,0,0 | 0,0,0,255,255,255 |
VTCompatTab | off | <- |
VTFont | ※ | Terminal,0,-13,1 | ※インストーラによる
VTFontSpace | 0,0,0,0 | <- |
VTIcon | Default | <- |
VTPos | -2147483648,-2147483648 | <- |
VTPPI | 0,0 | <- |
VTReverseColor | 0,0,0,255,255,255 | 255,255,255,0,0,0 |
Wait4allMacroCommand | off | <- |
WaitCom | off | <- |
WindowCtrlSequence | on | <- |
WindowMenu | on | <- |
WindowReportSequence | on | <- |
XmodemBin | on | <- |
XmodemLog | off | <- |
XmodemOpt | checksum | <- |
XmodemRcvCommand |  | <- |
XmodemTimeouts | 10,3,10,20,60 | <- |
Xterm256Color | on | <- |
YmodemLog | off | <- |
YmodemRcvCommand |  | rb |
YmodemTimeouts | 10,3,10,20,60 | <- |
ZmodemAuto | off | <- |
ZmodemDataLen | 1024 | <- |
ZmodemEscCtl | off | <- |
ZmodemLog | off | <- |
ZmodemRcvCommand | rz | <- |
ZmodemTimeouts | 10,0,10,3 | <- |
ZmodemWinSize | 32767 | <- |

TTSSH

項目 | INIデフォルト | プログラムデフォルト | 備考
AuthBanner | 1 | <- |
CheckAuthListFirst | 0 | <- |
CipherOrder | MLK>H:J=G9I<F8C7D;EB30A@?62 | <- |
CompOrder | 3210 | <- |
Compression | 0 | <- |
DefaultAuthMethod | 3 | <- |
DefaultForwarding |  | <- |
DefaultRhostsHostPrivateKeyFile |  | <- |
DefaultRhostsLocalUserName |  | <- |
DefaultRSAPrivateKeyFile |  | <- |
DefaultUserName |  | <- |
DefaultUserType | 1 | <- |
DisablePopupMessage | 0 | <- |
Enabled | 1 | 0 |
ForwardAgent | 0 | <- |
ForwardAgentConfirm | 1 | <- |
GexMinimalGroupSize | 0 | <- |
HeartBeat | 60 | <- |
HostKeyOrder | 4567230 | <- |
KexOrder | 567:9843210 | <- |
KnownHostsFiles | ssh_known_hosts | <- |
LogLevel | 0 | <- |
MacOrder | @?:861>5;20<=34 | <- |
ProtocolVersion | 2 | <- |
RememberPassword | 1 | <- |
SSHIcon | Default | <- |
UpdateHostkeys | 0 | <- |
VerifyHostKeyDNS | 0 | 1 |
WriteBufferSize | 2097152 | <- |
X11Display |  | <- |

TTProxy

項目 | INIデフォルト | プログラムデフォルト | 備考
ConnectionTimeout | "10" | <- |
SocksResolve | "auto" | <- |
TelnetConnectedMessage | "-- Connected to " | <- |
TelnetErrorMessage | "!!!!!!!!" | <- |
TelnetHostnamePrompt | ">> Host name: " | <- |
TelnetPasswordPrompt | "Password:" | <- |
TelnetUsernamePrompt | "Username:" | <- |

TTXKanjiMenu

項目 | INIデフォルト | プログラムデフォルト | 備考
UseOneSetting | on | <- |

TTXttyrec

項目 | INIデフォルト | プログラムデフォルト | 備考
RecordStartSize | on | <- |

TTXRecurringCommand

項目 | INIデフォルト | プログラムデフォルト | 備考
Command |  | <- |
Enable | off | <- |
Interval | 300 | <- |


その他 (Tera Term 設定ファイル)

接続時のビープ音

TCP/IP 接続が確立した時とその接続が切れた時にビープ音を鳴らすには、設定ファイルの [Tera Term] セクションの BeepOnConnect 行を以下のように変更してください。

BeepOnConnect=on

省略時:
BeepOnConnect=off

IME (日本語入力システム)に関する設定

IME のインライン入力をしないようにするには、設定ファイルの [Tera Term] セクションの IMEInline 行を以下のように変更してください。

IMEInline=off

省略時:
IMEInline=on

IME に関する何らかの不具合のため Tera Term が IME を制御しないようにするには、設定ファイルの [Tera Term] セクションの IME 行を以下のように変更してください。

IME=off

省略時:
IME=on

起動時にマクロを実行

Tera Term 起動時にマクロを自動的に実行することができます。マクロファイル名はコマンドラインオプション "/M=<マクロファイル名>" を使うか、設定ファイルの [Tera Term] セクションの StartupMacro 行を以下のように変更することによって指定できます。

StartupMacro=<マクロファイル名>

省略時:
StartupMacro=

ユーザインタフェースの言語ファイル

ユーザインタフェースのメッセージが含まれたファイルを指定すると、表示される言語を切り換えることができます。

UILanguageFile=lang\Japanese.lng

省略時:
UILanguageFile=

ブロードキャストコマンドの履歴の保存数

ブロードキャストコマンドの履歴の保存数を設定をしたい場合、MaxBroadcatHistory エントリを設定します。以下に例を示します。

MaxBroadcatHistory=200

省略時:
MaxBroadcatHistory=99

アプリケーションカーソルモード時のマウスホイールの動作

マウスのホイールを回転させた時は通常はスクロールバーが上下しますが、アプリケーションカーソルモード(viやless等を起動すると通常はこのモードになります)時にはスクロールバーは動かさず、かわりに上または下カーソルキーのシーケンスを送信します。

この機能を無効にしてアプリケーションカーソルモードでもマウスホイールの回転でスクロールバーを動かしたい場合は、設定ファイルの [Tera Term] セクションの TranslateWheelToCursor 行を以下のように変更してください。

TranslateWheelToCursor=off

また、コントロールキーを押している間のみこの機能を無効にしたい場合は、設定ファイルの [Tera Term] セクションの DisableWheelToCursorByCtrl 行を以下のように変更してください。

DisableWheelToCursorByCtrl=on

省略時:
TranslateWheelToCursor=on
DisableWheelToCursorByCtrl=on

起動時の "New Connection" ダイアログの表示

Tera Term はポートの種類が TCP/IP の場合、起動時に "New Connection" ダイアログを表示します。(Serialの場合には表示しません)
これを表示したくない場合は、設定ファイルの [Tera Term] セクションの HostDialogOnStartup 行を以下のように変更してください。

HostDialogOnStartup=off

省略時:
HostDialogOnStartup=on

マウスの中ボタンによる貼り付けを有効にする

中ボタンをクリックしたときに貼り付けを有効にするには、設定ファイルの [Tera Term] セクションの DisablePasteMouseMButton 行を以下のように変更してください。

DisablePasteMouseMButton=off

省略時:
DisablePasteMouseMButton=on

メニューの New connection を無効にする

メニューの "New connection" を無効にするには、設定ファイルの [Tera Term] セクションの DisableMenuNewConnection 行を以下のように変更してください。

DisableMenuNewConnection=on

省略時:
DisableMenuNewConnection=off

メニューの Duplicate session を無効にする

メニューの "Duplicate session" を無効にするには、設定ファイルの [Tera Term] セクションの DisableMenuDuplicateSession 行を以下のように変更してください。

DisableMenuDuplicateSession=on

省略時:
DisableMenuDuplicateSession=off

メニューの Send break を無効にする

メニューの "Send break" を無効にするには、設定ファイルの [Tera Term] セクションの DisableMenuSendBreak 行を以下のように変更してください。

DisableMenuSendBreak=on

省略時:
DisableMenuSendBreak=off

切断時に画面をクリアする

切断時に画面をクリアするには、設定ファイルの [Tera Term] セクションの ClearScreenOnCloseConnection 行を以下のように変更してください。

ClearScreenOnCloseConnection=on

省略時:
ClearScreenOnCloseConnection=off

New Connection のアクセラレータキーを無効にする

New Connection のアクセラレータキーを無効にするには、設定ファイルの [Tera Term] セクションの AcceleratorNewConnection 行を以下のように変更してください。

AcceleratorNewConnection=off

省略時:
AcceleratorNewConnection=on

Duplicate session のアクセラレータキーを無効にする

Duplicate session のアクセラレータキーを無効にするには、設定ファイルの [Tera Term] セクションの DisableAcceleratorDuplicateSession 行を以下のように変更してください。

DisableAcceleratorDuplicateSession=on

省略時:
DisableAcceleratorDuplicateSession=off

Cygwin connection のアクセラレータキーを無効にする

Cygwin connection のアクセラレータキーを無効にするには、設定ファイルの [Tera Term] セクションの AcceleratorCygwinConnection 行を以下のように変更してください。

AcceleratorCygwinConnection=off

省略時:
AcceleratorCygwinConnection=on

クリッカブル URL で起動するブラウザ

URL クリックが有効な場合、通常は URL のスキームに OS で関連付けられたプログラムが起動します。
起動するブラウザと引数を指定するには、設定ファイルの [Tera Term] セクションの ClickableUrlBrowser 行と ClickableUrlBrowserArg 行を以下のように変更してください。

ClickableUrlBrowser=firefox
ClickableUrlBrowserArg=-new-tab

ClickableUrlBrowser=opera
ClickableUrlBrowserArg=-newpage

ClickableUrlBrowser=iexplore
ClickableUrlBrowserArg=

ClickableUrlBrowser=chrome
ClickableUrlBrowserArg=

省略時:
ClickableUrlBrowser=
ClickableUrlBrowserArg=

改行している URL を継続したものとして扱う

端末の右端から次の行に URL が続いている場合、通常は継続した URL として扱われる。しかし、特定の環境では端末の右端で改行を送信するので、URL が次の行に継続したものとして扱われない。
改行で分割された URL を継続したものとして扱うには、設定ファイルの [Tera Term] セクションの JoinSplitURL を以下のように変更してください。

JoinSplitURL=on

emacs 等では、ある行が次の行に継続された場合に行末に継続を表す記号を表示する。この記号が URL の一部とみなされると不都合な場合があるので、Tera Term は行末の記号を無視することができる。
行末の記号を無視しないようにするには、設定ファイルの [Tera Term] セクションの JoinSplitURLIgnoreEOLChar を以下のように変更してください。

JoinSplitURLIgnoreEOLChar=

また、emacs では継続した行の行末に表示する記号を変更することができる。
無視する行末の記号を変更するには、設定ファイルの [Tera Term] セクションの JoinSplitURLIgnoreEOLChar を以下のように変更してください。

JoinSplitURLIgnoreEOLChar=|

省略時:
JoinSplitURL=off
JoinSplitURLIgnoreEOLChar=\

ログファイルを排他ロックする

Tera Term はログファイルを書き込むために開くとき排他ロックをかけます。これは複数のプロセスから同じログファイルに書き込みをしないためで、同時に同じファイルを開こうとすると失敗します。
何らかの理由で同じログファイルに同時に書き込みたい場合や、書き込み中のログファイルを別のエディタで開く妨げになる場合のために、排他ロックをせずにログファイルを開くことができます。

LogLockExclusive=off

省略時:
LogLockExclusive=on

ログファイルを遅延書き込みする

ログファイルの書き込みを別スレッドで行うことで、ネットワークドライブ上にログファイルを採取しても、 Tera Termの動作が遅くならないようにします。

DeferredLogWriteMode=off

省略時:
DeferredLogWriteMode=on

ログの行頭に追加するタイムスタンプのフォーマットを指定する

Tera Term はログファイルの書き込み時に行頭にタイムスタンプを書き込むことができますが、タイムスタンプのフォーマットを指定することができます。

書式
%a      曜日の省略形。
%b      月の省略形。
%d      10 進数で表す月の日付 (01 ～ 31)。
%e      10 進数で表す月の日付 ( 1 ～ 31)。
%H      24 時間表記の時間 (00 ～ 23)。
%N      10 進数で表すミリ秒 (000 ～ 999)。
%m      10 進数で表す月 (01 ～ 12)。
%M      10 進数で表す分 (00 ～ 59)。
%S      10 進数で表す秒 (00 ～ 59)。
%w      10 進数で表す曜日 (0 ～ 6、日曜日が 0)。
%Y      10 進数で表す 4 桁の西暦。
%%      パーセント記号。

例:
; Sun Jun  4 21:12:40.123 2017
LogTimestampFormat=%a %b %e %H:%M:%S.%N %Y

省略時:
; 2017-06-04 21:12:40.123
LogTimestampFormat=%Y-%m-%d %H:%M:%S.%N

ログの行頭に追加するタイムスタンプの時刻にUTCを使用する

Tera Term はログファイルの書き込み時に行頭にタイムスタンプを書き込むことができますが、通常はローカル日時を使用します。
夏時間に対応したローカル日時を使用していると、夏時間の切り替えタイミングに時刻が進む（または戻る）ために意図しない時刻が記録されることがあります。
UTC の日時には夏時間がないため、この問題を回避することができます。
ローカル日時のかわりに UTC の日時を使用する場合は、設定ファイルの [Tera Term] セクションの LogTimestampUTC 行を以下のように変更してください。

LogTimestampUTC=on

省略時:
LogTimestampUTC=off

高DPI対応(High DPI Aware)

試験的に高DPIに対応しました。
teraterm.iniの[Tera Term]セクションにDPIAware=onとすると、 Per monitor DPI Aware アプリケーションとして動作します。
この設定を行わないと、従来と同様 DPI Unaware アプリケーションとして動作します。
将来的にはこの設定を参照せず、自動で高DPI対応となる予定です。

DPIAware=on

フォントはTrue Type Fontを選択しておくとスケーリング結果がスムーズになります。

高DPI対応にはいくつかの種類があります。詳しくはHigh DPI Desktop Application Development on WindowsのDPI AwarenessModeを参照ください。

Tera Term は Windows 10 Version 1703から使用可能な Per-monitor DPI awareness V2 の機能を利用します。
Per-monitor DPI awareness V2について詳しくは、 High-DPI Scaling Improvements for Desktop Applications in the Windows 10 Creators Update (1703)を参照ください。


印刷 (Tera Term 設定ファイル)

エスケープシーケンスによる印刷の遅延

エスケープシーケンスによる印刷に対する遅延時間を設定することができます。エスケープシーケンスによる印刷は ESC[5i で始まり、ESC[4i で終了します。ESC[5i と ESC[4i の間に受信されたデータは Tera Term が ESC[4i を受信してから遅延時間が経過した時に印刷されます。この遅延時間内に二番目の ESC[5i が受信された場合、 一番目と二番目の印刷データは結合され、二番目の遅延時間が経過したあとに、一度にまとめて印刷されます。つまり、複数の印刷シーケンスが連続して受信されそれらの間隔が遅延時間以下である場合、それらは一つの印刷シーケンスとして取り扱われます。遅延時間を設定するには設定ファイルの [Tera Term] セクションの PassThruDelay 行を、

PassThruDelay=<遅延時間(秒)>

のように変更してください。

省略時:
PassThruDelay=3

エスケープシーケンスによる印刷でポートに直接出力

設定ファイルの [Tera Term] セクションの PassThruPort 行を以下のように変更することによって、エスケープシーケンスにより送られた印刷データをポートに直接出力することができます。

PassThruPort=<port>

文字列 <port> は出力先のポートを指定します。<port> の形式は MS-DOS の "mode" コマンドと同じです。もしポートが指定されない場合、Tera Term は Windows の印刷機能を使用してデータを印刷します。

例:
PassThruPort=LPT1
PassThruPort=COM2: 9600,n,8,1,x

省略時:
PassThruPort=

注: ロシア語モードの場合は印刷フォントのロシア語コードセットも参照してください。

エスケープシーケンスによる印刷を行わない

設定ファイルの [Tera Term] セクションの PrinterCtrlSequence 行を以下のように変更することによって、エスケープシーケンスによる印刷を行わないように出来ます。

PrinterCtrlSequence=off

省略時:
PrinterCtrlSequence=on

エスケープシーケンスによる印刷時の改ページを禁止する

エスケープシーケンスによる印刷時に FF 文字を受信すると改ページ (form-feed) されます。FF 文字による改ページを禁止するには、設定ファイルの [Tera Term] セクションの PrnConvFF 行を以下のように変更してください。

PrnConvFF=on

FF 文字を受信した時に、改ページの変わりに改行するようになります。

注意: このオプションは印刷データを直接ポートに出力する場合には無視されます。

省略時:
PrnConvFF=off

プリンタフォントの指定

VT window の画面を印刷するときに使用するフォント(プリンタフォント)を指定することができます。初期設定は、画面表示用のフォント([Setup] Fontで指定されるフォント)が印刷用にも使われるようになっています。プリンタフォントを指定するには、次の手順にしたがってください。

  1. [Setup] Font で画面表示用のフォントをいろいろ変えて、印刷してみる。
  2. 好みの印刷用フォントが見つかったら [Setup] Save setup で設定ファイルに現在の設定を保存。
  3. [Tera Term] セクションの VTFont 行のパラメター(例えば"標準明朝,0,-19,128")を PrnFont 行にコピーする。
  4. 画面用のフォントをもとの設定にもどす。
例:
PrnFont=標準明朝,0,-19,128

省略時:
PrnFont=

注: ロシア語モードの場合は印刷フォントのロシア語コードセットも参照してください。

ページ余白の指定

設定ファイルの [Tera Term] セクションに PrnMargin 行を以下のように変更すると、印刷のためのページ余白(左、右、上、下)を指定することができます。

PrnMargin=<左>,<右>,<上>,<下>   ; (1/100 インチ単位)

省略時:
PrnMargin=50,50,50,50

印刷の倍率

印刷された文字や画像が小さすぎたり大きすぎたりする場合、通常はコントロールパネルの"プリンタ"で拡大/縮小倍率を変えることにより文字や画像を拡大/縮小することができます。もしプリンタドライバーが拡大/縮小に対応していない場合、水平方向と垂直方向の倍率を指定することができます。倍率を指定するには、設定ファイルの [Tera Term] セクションの VTPPI と TEKPPI 行を以下のように変更してください。

VTPPI=<x(水平), y(垂直); pixels per inch)>    ; VTウィンドウ用
TEKPPI=<x(水平), y(垂直); pixels per inch)>   ; TEK ウインドウ用

倍率の単位は ピクセル/インチ でなければなりません。もし文字や画像が小さすぎる(大きすぎる)場合は倍率を増やして(減らして)ください。指定された倍率のうちすくなくとも一つが0の場合、Tera Term はプリンタドライバーの既定の値を使用します。

例:
VTPPI=300,300
TEKPPI=300,300

省略時:
VTPPI=0,0
TEKPPI=0,0

印刷フォントのロシア語コードセット (ロシア語モードのみ)

ロシア語モードでは、プリンタフォントの指定もしくはエスケープシーケンスによる印刷でポートに直接出力を選択した場合、キャラクタセットも指定しなければなりません。さもなくば、ロシア語の文字は正しく印刷されません。キャラクタセットを指定するには、設定ファイルの [Tera Term] セクションの RussPrint 行を以下のように変更してください。

RussFont=<char set>

<char set>には以下が指定可能です。

  • Windows
  • KOI8-R
  • CP-866
  • ISO-8859-5
省略時:
RussPrint=Windows


TTSSH (Tera Term 設定ファイル)

認証バナーの表示方法

SSH 認証時、サーバから SSH_MSG_USERAUTH_BANNER メッセージが送られて来る事があります。
標準ではこのメッセージの内容を VT ウィンドウで表示します。表示方法を変更する場合は設定ファイルの [TTSSH] セクションの AuthBanner 行を、以下のように変更して下さい。

AuthBanner=<表示方法>

表示方法には 0 ～ 3 が指定できます。それぞれの値の意味は以下のとおりです。

値 | 動作
0 | 表示しない
1 | VT ウィンドウ内に表示する
2 | ポップアップで表示する
3 | バルーンチップで表示する
省略時:
AuthBanner=1

メッセージボックスの抑止

マクロや非ログオン状態での自動実行時にエラーや警告となる状態が発生した場合、メッセージボックスが表示されユーザの操作待ちになると次の手順に進まなくなります。
このような場合のため、エラーや警告があった場合にメッセージボックスを表示させないようにできます。

DisablePopupMessage=<表示方法>

表示方法には 0 か 1 が指定できます。それぞれの値の意味は以下のとおりです。

値 | 動作
0 | ポップアップを抑止しない
1 | ポップアップを抑止する
省略時:
DisablePopupMessage=0

Diffie-Hellman 群交換方式鍵交換での群の最小サイズ

SSH の鍵交換方式として "Diffie-Hellman 群交換" (diffie-hellman-group-exchange-sha*) を使用する場合、SSH クライアントは鍵交換に使用する群の「最小サイズ」「提案サイズ」「最大サイズ」の要求をサーバに送信します。
後述のように現在の TTSSH は標準で 2048 を最小サイズとして送ります。サーバから送られて来た群のサイズがこの最小値より小さい場合、TTSSH は接続を続行していいか確認するダイアログを表示します。

設定ファイルの [TTSSH] セクションの GexMinimalGroupSize 行を以下のように変更することによって、サーバに要求する群の最小サイズを変更できます。

GexMinimalGroupSize=<群の最小サイズ>

群の最小サイズには 0 および 1024 ～ 8192 が指定できます。
0 を指定した時は TTSSH が最適と判断した値を使います。現在のバージョンの TTSSH では RFC 8270 に従い 2048 が送られます。将来のバージョンではこの値が変更される可能性があります。
1024 ～ 8192 の間の値を指定した場合はその値が使われます。

省略時:
GexMinimalGroupSize=0

ログレベル

TTSSH が TTSSH.LOG に記録するログのレベルを設定します。

LogLevel=<設定値>

値 | 動作
0 | 無効
5 | FATAL
10 | ERROR
30 | WARNING
50 | NOTICE
80 | INFO
100 | VERBOSE
200 | SSHDUMP
省略時:
LogLevel=0

X11転送での転送先ディスプレイ指定

X11 転送での転送先ディスプレイを指定するには、設定ファイルの [TTSSH] セクションの X11Display 行を以下のように変更して下さい。

X11Display=<ディスプレイ指定>

ディスプレイ指定には X11 の通常のディスプレイ指定形式([<ホスト>]:[<ディスプレイ番号>[.<スクリーン番号>]) が使えます。X11Display になにも指定しなかった(空文字列を指定した)場合、環境変数 DISPLAY が設定されていればその値が、設定されていなかった場合は localhost:0.0 が使われます。

この設定は /ssh-X コマンドラインオプション で上書きされます。設定の優先順位は以下の順番となっています。

  1. /ssh-X コマンドラインオプション
  2. 設定ファイルの [TTSSH] セクションの X11Display 設定
  3. 環境変数 DISPLAY の値
  4. localhost:0.0
省略時:
X11Display=


ターミナルエミュレーション (Tera Term 設定ファイル)

バック・ラップ (back wrap)

バック・ラップ (back wrap) 機能を有効にすると、BS 文字を受信した時に行の始めにあるカーソルが前の行の最後に移動します。バック・ラップを有効にするには、設定ファイルの [Tera Term] セクションの BackWrap 行を以下のように変更してください。

BackWrap=on

省略時:
BackWrap=off

BEL 文字受信時の動作

BEL 文字 (ASCII $07) が受信された時に Tera Term はビープ音を鳴らします。

ビープ音を鳴らしたくない場合は、設定ファイルの [Tera Term] セクションの Beep 行を以下のように変更してください。

Beep=off

また、以下のようにするとビープ音を鳴らす代わりに端末画面をフラッシュさせるようになります。

Beep=visual

省略時:
Beep=on

C1 制御文字 ($80-$9F) を使用しない

Tera Term の漢字モード(受信)を EUC か JIS にして、 Teraminal ID を VT2XX または、 VT3XX にしている場合、Shift-JIS の漢字を受信すると、ハングアップすることがあります。

これは、Shift-JIS コードの中に C1 制御文字 ($80-$9F) が含まれているために、それらを制御文字として解釈してしまい、端末の状態がおかしくなるからです。

例えば、ホストによってはログイン時などに SJIS(Shift-JIS), EUC, JIS などの数種類の漢字コードを端末に送り、どのコードが正しく表示されてるかユーザーに入力させる、ということがあり、このような場合に問題が発生します。

もし、このような状態になった場合、[Control] Reset terminal で端末の状態をリセットしてください。

このような問題をさけるには、3つの方法があります。

  1. 漢字モード(受信)を SJIS に設定する。
  2. [Setup] Terminal で Terminal ID を VT1XX (例えば VT100) にする。
  3. 設定ファイルの [Tera Term] セクションの Accept8BitCtrl 行を
    Accept8BitCtrl=off
    のように編集し、 C1 制御文字として送られてきた文字を無視するように設定する。
    省略時:
Accept8BitCtrl=on

C1 制御文字 ($80-$9F) を送信に使用する

Tera TermではC1制御文字を送信する時、同等の意味を持つ7ビット文字の組み合わせを使います。

もし C1 制御文字を単独の8ビット文字で送信したい場合は、設定ファイルの [Tera Term] セクションの Send8BitCtrl 行を、

Send8BitCtrl=on

のように変更してください。

注: この設定は初期値としてのみ使われます。ホストは S7C1T / S8C1T / DECSCL 制御シーケンスによってこの設定を変更する事ができます。

省略時:
Send8BitCtrl=off

正しくない "kanji-out" を使用可能にする

一部のシステムで用いられている "kanji-out" シーケンス ^[(H は、JIS/ISO の規格に従っていません。本当に必要のある場合以外は使用しないでください。初期設定では間違いを防ぐため [Setup] terminal ダイアログボックスで ^[(H が選択できないようになっています。

^[(H を選択できるようにするには、設定ファイルの [Tera Term] セクションの AllowWrongSequence 行を、

AllowWrongSequence=on

のように変更してください。ダイアログボックスで選択できるようになります。

省略時:
AllowWrongSequence=off

2バイト文字(漢字)の1バイト目と2バイト目の間に制御文字等が入った場合、1バイト目を無効にする

ホストから送られてくる2バイト文字(漢字等)の1バイト目と2バイト目の間に制御文字(例えば改行文字)等が入っても、Tera Term の初期設定では2バイト文字も制御文字も正しく取り扱われます。

設定ファイルの [Tera Term] セクションの CtrlInKanji 行を、

CtrlInKanji=off

のように変更すると、2バイト文字の1バイト目の後に制御文字等が来た場合、1バイト目を無効にします。この後に2バイト目が来ても、ゴミとして表示されます。2バイト文字を正しく扱わないアプリケーションでは、このようにしたほうが、画面の文字化けが少なくなる可能性があります。例えば、漢字の1バイト目の後に改行文字を出して、その後に2バイト目は出さない、というアプリケーションがあったとすると、その漢字は捨てられますが、改行文字以降に来る文字が化けずに済みます。

省略時:
CtrlInKanji=on

受信した文字をすべて表示

受信した文字をすべて表示するようにするには、設定ファイルの [Tera Term] セクションの Debug 行を、

Debug=on

のように変更してください。Shift+Esc を押すとデバッグモードになります。 デバッグモードは全部で4種類あり、トグルで以下のように切り替わります。

  • 通常表示 -> デバッグモード -> 16進デバッグモード -> 非表示

デバッグモードを解除するには、「通常表示」に戻してください。

デバッグモードでは、受信したデータを以下の規則で文字に変換して表示します。

$00 - $1F    ^@ - ^_を表示
             ($00=^@ $01=^A $02=^B $03=^C $04=^D $05=^E $06=^F $07=^G
              $08=^H $09=^I $0A=^J $0B=^K $0C=^L $0D=^M $0E=^N $0F=^O
              $10=^P $11=^Q $12=^R $13=^S $14=^T $15=^U $16=^V $17=^W
              $18=^X $19=^Y $1A=^Z $1B=^[ $1C=^\ $1D=^] $1E=^^ $1F=^_)
$20 - $7E    そのまま文字として表示
$7F          <DEL>を表示
$80 - $FF    最上位 bit を0にして、$00-$7Fと同じ規則で
             文字に変換し、反転文字として表示。

16進デバッグモードでは、受信したデータを以下の規則で文字に変換して表示します。

$00 - $FF    2桁の16進数値（アルファベットは大文字）と空白を表示する。

省略時:
Debug=off

ステータスラインを使用不可にする

VT 端末のステータスラインの機能を使用不可にするには、設定ファイルの [Tera Term] セクションの EnableStatusLine 行を以下のように変更してください。

EnableStatusLine=off

この場合、ステータスラインに関するエスケープシーケンスはすべて無視されます。

省略時:
EnableStatusLine=on

TEK GIN report のマウスコード

ホスト側のアプリケーションによって、TEK window が GIN モード(クロスヘアーカーソルが現れ、座標入力が可能な状態)になったとき、あるキーを押すと TEK window はクロスヘアーカーソルの座標とキーの ASCII コードをホストへ報告します。

GIN モードでマウスの左ボタンを押したときに座標とともに送出する キーコード を設定するには、設定ファイルの [Tera Term] セクションの TEKGINMouseCode 行を、

TEKGINMouseCode=<key code>

のように変更してください。

省略時:
TEKGINMouseCode=32
(32はSpace のASCII コード)

行末のタブ表示を VT 端末互換にする

on の場合には、行末のタブの動作は VT/PuTTY/xterm 等と同じになります。タブによる自動改行は発生しません。
off の場合には、行末のタブの動作は FreeBSD のコンソール (syscons) 等と同じになります。タブによる自動改行が発生します(VT非互換)。

VTCompatTab=on

省略時:
VTCompatTab=off

画面クリア時にカレントバッファをスクロールアウトさせるかどうか設定する

カーソルが左上(0, 0)にある場合の <ESC>[J (Erase Below) は、<ESC>[2J (Erase All) と同じことになる。
このとき、画面クリア時にカレントバッファをスクロールアウトするかどうかを設定できる。

on の場合には、<ESC>[2J と同様にカレントバッファをスクロールアウトする。
off の場合にはカレントバッファをスクロールアウトせず、カーソル位置からスクリーンの最後までを消去する。

省略時:
ScrollWindowClearScreen=on

対応していないUnicodeの文字をワイド文字として扱うか設定する

受信漢字コードがUTF-8またはUTF-8mの設定の時に、Tera Termが対応していないUnicodeの文字の取り扱いを設定します。
on の場合には、対応していないUnicodeの文字を "??" と表示します。
off の場合には、対応していないUnicodeの文字を "?" と表示します。

省略時:
UnknownUnicodeCharacterAsWide=off

UnicodeからDEC特殊文字へのマッピングを設定する

日本語環境ではTera Termは罫線や一部の記号を2カラム幅で表示します。しかし、ホスト側のアプリケーションによってはUTF-8エンコーディング時にはこれらの文字が1カラム幅で表示されると期待した出力を行う物があり、その結果画面出力が崩れる場合があります。
また英語環境では罫線を+-|を使って表示したり、対応していない文字を??と表示したりします。
Tera Termでは、これらの文字でDEC特殊文字に近い物がある物は、それを使って表示するようにする事ができ、それによって表示の崩れを軽減する事ができます。
ただし、マウスで選択した時にクリップボードにコピーされるのが本来とは別の文字になってしまうという副作用があります。
この設定は、受信漢字コードがUTF-8またはUTF-8mの時のみ効果を持ちます。

マップされる文字は幾つかの種類に分類されており、種類毎に変換するか設定する事が出来ます。
変換する種類ごとの値を足した数値をUnicodeToDecSpMappingに指定してください。

種類A: 罫線
値: 1
  Box drawings (U+2500-U+257F)

種類B: 4.58までは??と表示された文字(英語環境では何も表示されない物も含む)
値: 2
  Bullet (U+2022)
  Hyphenation point (U+2027)
  Light shade (25%) (U+2591)
  Medium shade (50%) (U+2592)
  Dark shade (75%) (U+2593)
  Black small square (U+25AA)
  Black vertical rectangle (U+25AE)
  Black very small square (U+2B1D)

種類C: 日本語環境では中点、英語環境ではMiddle dotとして表示される文字
       日本語環境以外では指定しない事を勧めます
値: 4
  Middle dot (U+00B7)
  One dot leader (U+2024)
  Bullet operator (U+2219)

省略時:
# 種類AとB
UnicodeToDecSpMapping=3

ファンクションキー等のデフォルトの動作

Tera Term 4.62 より、ファンクションキーやエディタキーパッドのキーのデフォルトの動作が変更になりました。 これにより、キーボード設定ファイルでこれらのキー設定をoffにしたり、キーボード設定ファイルが無い場合も、VT端末の同じようなキーのシーケンスが送出されるようになりました。

キーボード設定ファイルでファンクションキー等をoffにした時に、以前のバージョンの Tera Term と同じように何も送出しないようにするには、設定ファイルの [Tera Term] セクションの StrictKeyMapping 行を以下のように変更してください。

StrictKeyMapping=on

省略時:
StrictKeyMapping=off

AltキーでMSBをセットした文字を送信する

AltキーでMSB(Most Significant Bit 最上位ビット)をセットした文字を送信するには、設定ファイルの [Tera Term] セクションの Meta8Bit 行を以下のようにしてください。

Meta8Bit=raw

また、AltキーでMSB(Most Significant Bit 最上位ビット)をセットした文字を、送信文字コードの設定に従って(UTF-8等に)変換してから送信するには、以下のようにしてください。

Meta8Bit=text

注: どちらの場合も、この機能を有効にするには Meta Key の設定も有効にしておく必要があります。

省略時:
Meta8Bit=off

代替画面バッファを無効にする

Tera Term 4.65より代替画面バッファに対応しました。この為、代替画面バッファに対応したアプリケーション(Vimやlessなど)では終了時に起動前の画面が復元されます。

代替画面バッファを無効にするには、設定ファイルの [Tera Term] セクションの AlternateScreenBuffer 行を以下のようにしてください。

AlternateScreenBuffer=off

省略時:
AlternateScreenBuffer=on

端末固有IDを設定する

Tera Term は DA3 制御シーケンスを受信すると、端末固有の ID 応答します。端末固有 ID は 8 桁の 16 進数値で、最初の 2 桁が製造場所を、残りの 6 桁が製造場所内で端末毎に割り振られた固有の番号です。

DA3 制御シーケンスに対して応答する端末固有 ID を別の値、例えば 01234567 に変更したい場合は、設定ファイルの [Tera Term] セクションの TerminalUID 行を以下のようにしてください。

TerminalUID=01234567

省略時:
TerminalUID=FFFFFFFF

端末固有IDを変更可能にする

端末固有 ID はホスト側から DECSTUI 制御シーケンスを送る事によって変更する事が出来ますが、標準ではこの機能は無効にされています。

DECSTUI制御シーケンスによって端末固有 ID を変更できるようにしたい場合は、設定ファイルの [Tera Term] セクションの LockTUID 行を以下のようにしてください。

LockTUID=off

省略時:
LockTUID=on

タブストップ位置の変更を禁止する

制御シーケンスによるタブストップの位置の変更を禁止したい場合は、設定ファイルの [Tera Term] セクションの TabStopModifySequence 行を以下のようにしてください。

TabStopModifySequence=off

また、タブストップの位置を変更する制御シーケンスの内、特定のもののみを禁止する事も出来ます。以下のタブストップ変更シーケンスの内、許可するシーケンスの略号の組み合わせを指定します。

略号 | シーケンス | 説明
HTS7 | ESC H | カーソル位置にタブストップを設定する (7ビット形式)
HTS8 | 0x88 | カーソル位置にタブストップを設定する (8ビット形式)
HTS | - | HTS7とHTS8の両方
TBC0 | ESC [ 0 g | カーソル位置のタブストップを削除する
TBC3 | ESC [ 3 g | すべてのタブストップを削除する
TBC | - | TBC0とTBC3の両方

例えば、8ビット形式のタブ設定シーケンス(HTS8)のみを禁止したい場合は、設定ファイルの [Tera Term] セクションの TabStopModifySequence 行を以下のようにしてください。

TabStopModifySequence=HTS7,TBC

省略時:
TabStopModifySequence=on

ベル過使用時の一時無効化

ホスト側から BEL 文字 (ASCII $07) が送られて来た時、Tera Term ではビープ音を鳴らしたり、画面を点滅させたりします。

誤ってバイナリファイルを表示してしまった時などで多量に BEL 文字が送られて来た時に、自動的にビープ音を鳴らすのを抑制する事が出来ます。
例えば、設定ファイルの [Tera Term] セクションの BeepOverUsedTime, BeepOverUsedCount, BeepSuppressTime 行を以下のようにすると、 2 秒間に 5 回 BEL 文字が送られてくると、BEL 文字が 10 秒間送られて来なくなるまでビープ音をならさないようになります。

; Beep over-used
BeepOverUsedTime=2
BeepOverUsedCount=5
BeepSuppressTime=10

省略時:
; Beep over-used
BeepOverUsedTime=2
BeepOverUsedCount=5
BeepSuppressTime=5

OSC文字列用バッファサイズ

Tera Term では OSC 文字列の処理時に処理用のバッファが足りなくなると自動的にバッファを拡張するようになっています。 しかし、バグ等でホスト側が壊れた OSC 文字列送ってきた時などに際限なくメモリを消費するのを防ぐため、 OSC 文字列処理用のバッファの最大サイズを制限しています。

通常の使用ではまず問題が発生しませんが、OSC 52 (PASTE64) で多量のデータをやり取りする場合に制限にかかり、 データが途中で切れてしまう場合があります。
設定ファイルの [Tera Term] セクションの MaxOSCBufferSize 行の値を以下のように増やす事によって、OSC 文字列でより多量のデータを扱えるようになります。

MaxOSCBufferSize=16000

省略時:
MaxOSCBufferSize=4096

ISO/IEC 2022のシフト機能による文字セットの切り替えを禁止する

ISO/IEC 2022のシフト機能による文字セットの切り替えを禁止したい場合は、設定ファイルの [Tera Term] セクションの ISO2022ShiftFunction 行を以下のようにしてください。

ISO2022ShiftFunction=off

また、ISO/IEC 2022のシフト機能の内、特定のもののみを禁止する事も出来ます。以下のシフト機能の内、許可する機能の略号の組み合わせを指定します。

略号 | コード | 説明
SI | 0x0F | GL へ G0 を呼び出す
SO | 0x0E | GL へ G1 を呼び出す
LS2 | ESC n | GL へ G2 を呼び出す
LS3 | ESC o | GL へ G3 を呼び出す
LS1R | ESC ~ | GR へ G1 を呼び出す
LS2R | ESC } | GR へ G2 を呼び出す
LS3R | ESC | | GR へ G3 を呼び出す
SS2 | 0x8E / ESC N | GL または GR へ G2 を次の一文字に限り呼び出す
SS3 | 0x8F / ESC O | GL または GR へ G3 を次の一文字に限り呼び出す
ALL | - | 上記すべて
NONE | - | なし

例えば、Shift-In(SI), Shift-Out(SO) のみを禁止したい場合は、設定ファイルの [Tera Term] セクションの ISO2022ShiftFunction 行を以下のようにしてください。

ISO2022ShiftFunction=LS2,LS3,LS1R,LS2R,LS3R,SS2,SS3

また、略号の前に - を付ける事によって指定したシフト機能を無効にする事ができます。前述の Shift-In(SI), Shift-Out(SO) のみを禁止する設定は、以下のようにも指定できます。

ISO2022ShiftFunction=ALL,-SI,-SO

注: この形式で指定した場合、設定の保存を行うと使用する機能のみのリストに置き換えられます。

省略時:
ISO2022ShiftFunction=on


ファイル転送 (Tera Term 設定ファイル)

受信したファイルの名前を自動的に変更して上書きを避ける

Kermit, Zmodem, BPlus, Quick-VAN プロトコルを使用してファイルを受信する場合、ファイル名はホスト(送信側)により与えられます。もし、同じファイル名がすでにローカルディスクに存在する場合、そのファイルは受信されたファイルにより上書きされます。この上書きを避けるには、設定ファイルの [Tera Term] セクションの AutoFileRename 行を以下のように変更してください。

AutoFileRename=on

この場合、受信されたファイルは上書きを避けるために自動的に名前が変更されます。例えば、受信されたファイルが "abc.txt" で同じ名前がすでにローカルディスクに存在する場合、受信されたファイルの名前は "abc1.txt" に変更されます。

省略時:
AutoFileRename=on

B-Plus 受信の自動起動

設定ファイルの [Tera Term] セクションの BPAuto 行を、

BPAuto=on

のように変更すると、Nifty-Serve 等の BBS で、B-Plus のダウンロードコマンドを実行したときに、自動的に Tera Term の B-Plus 受信が開始されるようになります。

省略時:
BPAuto=off

B-Plus ですべての制御文字をエスケープする

B-Plus では、通信回線が一部の制御文字を通さないことを想定して、それらをエスケープする(他の文字の組み合わせに置き換える)ようになっています。しかし、想定外の制御文字も通さない回線の場合は転送がうまくいきません。そのような場合は、設定ファイルの [Tera Term] セクションの BPEscCtl 行を、

BPEscCtl=on

のように変更してください。これですべての制御文字をエスケープするようになります。

省略時:
BPEscCtl=off

B-Plus のログ

設定ファイルの [Tera Term] セクションの BPLog 行を、

BPLog=on

のように変更すると、ホストと Tera Term の間で B-Plus を用いたファイル転送をするときに、交換されるパケット内容をファイル BPLUS.LOG に記録します。

省略時:
BPLog=off

Kermit のログ

設定ファイルの [Tera Term] セクションの KmtLog 行を、

KmtLog=on

のように変更すると、ホストと Tera Term の間で Kermit を用いたファイル転送をするときに、交換されるパケット内容をファイル KERMIT.LOG に記録します。

省略時:
KmtLog=off

Kermit のロングパケット

設定ファイルの [Tera Term] セクションの KmtLongPacket 行を、

KmtLongPacket=on

のように変更すると、ホストと Tera Term の間で Kermit を用いたファイル転送をするときに、94バイト以上のロングパケットを扱うことができます。ただし、Kermitサーバ側が当該機能をサポートしている必要があります。

省略時:
KmtLongPacket=off

Kermit のファイル属性

設定ファイルの [Tera Term] セクションの KmtFileAttr 行を、

KmtFileAttr=on

のように変更すると、ホストと Tera Term の間で Kermit を用いたファイル転送をするときに、ファイル属性情報（サイズ、種別、タイムスタンプなど）を扱うことができます。ただし、Kermitサーバ側が当該機能をサポートしている必要があります。

省略時:
KmtFileAttr=off

Quick-VAN のログ

設定ファイルの [Tera Term] セクションの QVLog 行を、

QVLog=on

のように変更すると、ホストと Tera Term の間で Quick-VAN を用いたファイル転送をするときに、交換されるパケット内容をファイル QUICKVAN.LOG に記録します。

省略時:
QVLog=off

Quick-VAN のウィンドウサイズ

設定ファイルの [Tera Term] セクションの QVWinSize 行を、

QVWinSize=<window size (10進数(正))>

のように変更すると、Quick-VAN プロトコルで用いられるウインドウサイズというパラメーターを設定することができます。

設定可能なウインドウサイズの値は、1～99です。一般に、回線が十分に高速でエラーがない場合、ウインドウサイズを大きくすればするほど、転送速度が向上します。ただし、低速な回線やエラーの多い回線を使用したり、ホストや PC がデータを取りこぼしたりする場合には、ウインドウサイズが大きすぎると逆に転送速度が低下します。

また、実際に用いられるウインドウサイズの値は、 Tera Term 側の設定値と、ホスト (PC-VAN) 側の設定値の小さい方になります。したがって、 Tera Term の設定値をある値より大きくすると、それ以上転送速度は変化しなくなります。

省略時:
QVWinSize=8

XMODEM のログ

設定ファイルの [Tera Term] セクションの XmodemLog 行を、

XmodemLog=on

のように変更すると、ホストと Tera Term の間で XMODEM を用いたファイル転送をするときに、交換されるパケット内容をファイル XMODEM.LOG に記録します。

省略時:
XmodemLog=off

XMODEM の受信コマンド

XMODEM でファイル送信を開始する直前に、ホストに 「XMODEM を受信するコマンド」を送信し、自動的に受信を開始させることができます。このときに Tera Term から送信する「XMODEM を受信するコマンド」を指定します。

XmodemRcvCommand=rx

コマンドを指定しない場合は、「受信コマンド」を送信しません。

省略時:
XmodemRcvCommand=

XMODEM のタイムアウト

XMODEM のタイムアウト値（単位は秒）を設定できます。

1番目 ... 通常の初期化タイムアウト
2番目 ... CRC の初期化タイムアウト
3番目 ... 短いタイムアウト
4番目 ... 長いタイムアウト
5番目 ... とても長いタイムアウト

省略時:
XmodemTimeouts=10,3,10,20,60

YMODEM のタイムアウト

YMODEM のタイムアウト値（単位は秒）を設定できます。

1番目 ... 通常の初期化タイムアウト
2番目 ... CRC の初期化タイムアウト
3番目 ... 短いタイムアウト
4番目 ... 長いタイムアウト
5番目 ... とても長いタイムアウト

省略時:
YmodemTimeouts=10,3,10,20,60

ZMODEM 受信/送信の自動起動

設定ファイルの [Tera Term] セクションの ZmodemAuto 行を、

ZmodemAuto=on

のように変更すると、ホスト側の ZMODEM 送信(ダウンロード)コマンドを実行したときに、自動的に Tera Term の ZMODEM 受信が開始されるようになります。
また、ホスト側の ZMODEM 受信(アップロード)コマンドを実行した時は、ZMODEM 送信のファイル選択ダイアログが開くようになります。

省略時:
ZmodemAuto=off

ZMODEM 送信の設定

設定ファイルの [Tera Term] セクションの ZmodemDataLen と ZmodemWinSize 行を以下のように変更すると、ZMODEM 送信に関する設定をすることができます。これらの設定は ZMODEM 受信には影響を与えません。

ZmodemDataLen=<データサブパケットの最大長(バイト数)>
ZmodemWinSize=<送信のウィンドウサイズ(バイト数)>

省略時:
ZmodemDataLen=1024
ZmodemWinSize=32767

この設定は ZMODEM 受信には影響を与えません。

設定可能な<データサブパケットの最大長>の値は0～1024です。低速な回線やエラーの多い回線を使用したり、ホストのデータ処理能力が低くデータを取りこぼす場合は、小さな値を設定すると、エラー等の障害に対して、より安定なファイル送信を行うことができます。シリアルポート使用時でスピードが低い場合は、設定値よりも小さい値が使用されることがあります。

設定可能な<送信のウィンドウサイズ>の値は-32768～32767です。例えば、値を30000にすると、約30000バイトに一回、データパケットの送信を休み、ホストから確認を取ります。値を負(ウィンドウサイズ無限大に対応)にすると、ホストからエラーの報告がないかぎり、一回も休まずにデータパケットを送信しつづけ、最大限の送信速度が得られます。ホストや回線の能力によっては、ウィンドウサイズをある値より大きくすると、正常なファイル送信ができなくなったり、非常に時間がかかったりすることがあります。

※注 アライドテレシスのルータに対しては、ZmodemDataLen=128 としないと、通信が成功しない場合があります。

ZMODEM ですべての制御文字をエスケープする

ZMODEM では、通信回線が一部の制御文字を通さないことを想定して、それらをエスケープする(他の文字の組み合わせに置き換える)ようになっています。しかし、想定外の制御文字も通さない回線の場合は転送がうまくいきません。そのような場合は、設定ファイルの [Tera Term] セクションの ZmodemEscCtl 行を、

ZmodemEscCtl=on

のように変更してください。これですべての制御文字をエスケープするようになります。

省略時:
ZmodemEscCtl=off

ZMODEM のログ

設定ファイルの [Tera Term] セクションの ZmodemLog 行を、

ZmodemLog=on

のように変更すると、ホストと Tera Term の間で ZMODEM を用いたファイル転送をするときに、交換されるパケット内容をファイル ZMODEM.LOG に記録します。

省略時:
ZmodemLog=off

ZMODEM の受信コマンド

ZMODEM でファイル送信を開始する直前に、ホストに「ZMODEM を受信するコマンド」を送信し、自動的に受信を開始させることができます。このときに Tera Term から送信する「ZMODEM を受信するコマンド」を指定します。

コマンドを指定しない場合は、「受信コマンド」を送信しません。

ZmodemRcvCommand=

省略時:
ZmodemRcvCommand=rz

ZMODEM のタイムアウト

ZMODEM のタイムアウト値（単位は秒）を設定できます。

1番目 ... シリアルポート のタイムアウト
2番目 ... TCP/IPポート のタイムアウト
3番目 ... 初期化タイムアウト
4番目 ... 終了タイムアウト

省略時:
ZmodemTimeouts=10,0,10,3

送信ダイアログのファイル名フィルタ

設定ファイルの [Tera Term] セクションの FileSendFilter 行を、

FileSendFilter=*.txt;a.log

のように変更すると、ダイアログの「ファイルの種類」にユーザ定義のフィルタが反映されます。

省略時:
FileSendFilter=

ドラッグ&ドロップによるファイル送信の確認

Tera Term は、デフォルトではファイルをウインドウにドラッグ&ドロップしたときに、ファイルを転送するかどうか確認のメッセージボックスを表示します。設定ファイルの [Tera Term] セクションの ConfirmFileDragAndDrop 行を下記のように変更すると、確認をせずにファイルの転送を開始します。

ConfirmFileDragAndDrop=off

省略時:
ConfirmFileDragAndDrop=on

ファイル送信時の転送状況ダイアログを表示しない

Tera Term は、ファイル送信時に送信済み容量等の転送状況を表示するダイアログを出します。 このダイアログを表示しないようにするには、設定ファイルの [Tera Term] セクションの FTHideDialog 行を下記のように変更してください。

FTHideDialog=on

省略時:
FTHideDialog=off

シリアル接続における高速なファイル転送

Tera Term は、ファイル送信時に内容を1バイトずつ送ります。
しかし、通信速度が速いのに1バイトずつ送信していると、ファイルの転送が遅くなってしまいます。
高速に送信するために、特定の条件下ではファイルの内容をある程度まとめて(8KBずつ)送信します。

条件:
シリアル接続である
バイナリフラグが on である
Bracketed Paste Mode ではない
Telnetフラグが off である
LocalEcho が off である
スピードが 115200 以上である

この動作のために問題が出る場合には 1 バイトずつ送るように、設定ファイルの [Tera Term] セクションの FileSendHighSpeedMode 行を下記のように変更してください。

FileSendHighSpeedMode=off

この機能は [File]-[Send file...] によるファイル送信において適用されます。
[File]-[Transfer] 以下の各種ファイル転送プロトコルでの送信や、SSH SCP には適用されません。

省略時:
FileSendHighSpeedMode=on


ウィンドウ (Tera Term 設定ファイル)

自動的な文字列コピーをしない

マウスで文字列を選択すると、同時にそれがクリップボードにコピーされます。この自動的な文字列コピーをしないようにするには、設定ファイルの [Tera Term] セクションの AutoTextCopy 行を以下のように変更してください。

AutoTextCopy=off

省略時:
AutoTextCopy=on

ダブルクリックによる単語選択の区切り文字

左マウスボタンで単語をダブルクリックすると、その単語を選択することができます。設定ファイルの [Tera Term] セクションの DelimList 行を以下のように変更することによって単語の区切り文字を指定することができます。

DelimList=<delimiter characters>

例えば、

DelimList=<>()[]

は6つの区切り文字 "<", ">", "(", ")", "[", "]" を指定します。 ただし、スペース文字と "$" はそれぞれ、"$20", "$24" という形式で指定しなければなりません。

DelimList=$20    ; スペース文字

省略時:
DelimList=$20!"#$24%&'()*+,-./:;<=>?@[\]^`{|}~

この "DelimList" 行には、1バイトコード文字(いわゆる半角文字)しか指定できません。2バイトコード文字(いわゆる全角文字)は区切り文字として取り扱われます。2バイトコード文字を区切り文字としないようにするには、DelimDBCS 行を以下のように変更してください。

DelimDBCS=off

省略時:
DelimDBCS=on

以前のバージョンの Tera Term と単語選択の仕方を同じにするには、

DelimList=$20
DelimDBCS=off

としてください。

ポップアップメニューを使用不可にする

メニューバーが表示されていないとき、Ctrl キーを押しながらマウス左ボタンを押すと、ポップアップメニューが現れます。ポップアップメニューが現れないようにするには、設定ファイルの [Tera Term] セクションの EnablePopupMenu 行を以下のように変更してください。

EnablePopupMenu=off

省略時:
EnablePopupMenu=on

"Show menu bar" コマンドを隠す

メニューバーが表示されていないとき、システムメニューに "Show menu bar" コマンドが現れます。この "Show menu bar" コマンドが現れないようにするには、設定ファイルの [Tera Term] セクションの EnableShowMenu 行を以下のように変更してください。

EnableShowMenu=off

省略時:
EnableShowMenu=on

言語モードの選択を不可にする

[Setup] General ダイアログボックスで言語モード (Language) の選択ができないようにするには、設定ファイルの [Tera Term] セクションの LanguageSelection 行を、

LanguageSelection=off

のように変更してください。

省略時:
LanguageSelection=on

スクロールバッファーの最大行数

[Setup] Window ダイアログボックスで指定可能なスクロールバッファーの最大行数を変更するには、設定ファイルの [Tera Term] セクションの MaxBuffSize 行を、

MaxBuffSize=<number of lines>
    (500000 以下)

のように変更してください。

注: Tera Term は <スクロールバッファの行数> * <terminal width> * 5 バイト分のメモリをスクロールバッファーのために使用します。

省略時:
MaxBuffSize=10000

点滅しないカーソル

カーソルを点滅させないようにするには、設定ファイルの [Tera Term] セクションにの NonblinkingCursor 行を、

NonblinkingCursor=on

のように変更してください。

省略時:
NonblinkingCursor=off

一度にスクロールする最大の行数を設定する

VT window では画面のスクロールを速くするために、一度に複数行スクロールすることがあります。一度にスクロールする最大の行数を設定するには、設定ファイルの [Tera Term] セクションの ScrollThreshold 行を、

ScrollThreshold=<number of lines>

のように変更してください。

省略時:
ScrollThreshold=12

マウスでウィンドウを選択したときの文字の選択を禁止する

非選択状態のウィンドウの文字領域をマウスでクリックすることによってウィンドウ選択することができます。初期設定では、このマウスクリックによって同時に文字の選択も開始されます。マウスでウィンドウを選択した時の文字の選択を禁止するには、設定ファイルの [Tera Term] セクションの SelectOnActivate 行を、

SelectOnActivate=off

のように変更してください。

省略時:
SelectOnActivate=on

タイトルの形式

タイトルの形式を変えるには設定ファイルの [Tera Term] セクションの TitleFormat 行を以下のように変更してください。

TitleFormat=<format ID>

<format ID> には整数値を指定する。プログラムにより、ビット列として扱われる。

1ビット目 (1) | TCP ホスト名もしくはシリアルポート番号を表示する
2ビット目 (2) | セッション番号を表示する
3ビット目 (4) | VT/TEK を表示する
4ビット目 (8) | <host/port> を先に表示する
5ビット目 (16) | TCP ポート番号を表示する
6ビット目 (32) | シリアルポートのスピードを表示する

以下に <format ID> の例を示します。

Format ID   タイトルの形式
0           <title>
1           <title> - <host/port>
2           <title> (session no.)
3           <title> - <host/port> (session no.)
4           <title> VT/TEK
5           <title> - <host/port> VT/TEK
6           <title> (session no.) VT/TEK
7           <title> - <host/port> (session no.) VT/TEK
13          <host/port> - <title> VT/TEK
29          <host:tcpport/port> - <title> VT/TEK
45          <host/port:bps> - <title> VT/TEK
61          <host:tcpport/port:bps> - <title> VT/TEK

省略時:
TitleFormat=5

白色および黒色属性の文字の実際の色

エスケープシーケンス "<ESC>[37m" と"<ESC>[30m" は文字色をそれぞれ白と黒にします。同様にエスケープシーケンス "<ESC>[47m" と"<ESC>[40m" は背景色をそれぞれ白と黒にします。

いくつかのアプリケーションでは背景色が(本物の VT100 端末のように)黒であると仮定して、白色の文字が見えるものと期待していることがあります。しかし、Tera Term の背景色が白の場合、白色の文字は見えません。設定ファイルの [Tera Term] セクションの UseTextColor 行を、

UseTextColor=on

のように変更すると、"白色"の文字(背景)の実際の色を [Setup] Window ダイアログボックスで指定される "Text" の色にします。同様に、"黒色"の文字(背景)の実際の色を "Background" の色にします。

省略時:
UseTextColor=off

文字(行)間にすきまをあける

文字(行)間にすきまをあけるには、設定ファイルの [Tera Term] セクションの VTFontSpace 行を以下のように変更してください。

VTFontSpace=<dx1>,<dx2>,<dy1>,<dy2>

ただし、
  <dx1>  は各文字の左側にあけるすきま。
  <dx2>  は各文字の右側にあけるすきま。
  <dy1>  は各行の上側にあけるすきま。
  <dy2>  は各行の下側にあけるすきま。
  単位はいずれも、画素。

例:
VTFontSpace=0,1,0,0    各文字の右側に1画素分のすきまをあける。
VTFontSpace=0,0,1,0    各行の上側に1画素分のすきまをあける。

省略時:
VTFontSpace=0,0,0,0

[Window] メニューを隠す

[Window] メニューを隠すには、設定ファイルの [Tera Term] セクションの WindowMenu 行を以下のように変更してください。

WindowMenu=off

省略時:
WindowMenu=on

Eterm風半透明ウィンドウ

Eterm風半透明ウィンドウの詳細設定をします。

BGSPIPath | フォルダ名 | 画像を読み込むのに用いる、Susie Plugin が格納されているフォルダを指定します。
BGFastSizeMove | On / Off | ウィンドウの移動、サイズ変更を高速に行います。Windows が「ドラッグ中にウィンドウの内容を表示する」場合に有効です。
BGFlickerlessMove | On / Off | ウィンドウが移動した際のちらつきを抑えます。
BGUseAlphaBlendAPI | On / Off | Off にすると、API の AlphaBlend を使いません。デバッグ用です。
BGNoFrame | On / Off | On にすると、HideTitle = On の時、全く枠の無いウィンドウになります。 この時、Alt + Shift + 左ドラッグでウィンドウサイズを変更できます。
BGThemeFile | ファイル名 | テーマファイルを指定します。 ファイル名にワイルドカードが指定された場合、一致するファイルからランダムに一つ選びます。
省略時:
BGUseAlphaBlendAPI = On
BGSPIPath = plugin
BGFastSizeMove = On
BGFlickerlessMove = On
BGNoFrame = Off
BGThemeFile = theme\*.ini

テーマファイル内の設定

BGReverseTextTone | 0 - 255 | 反転テキストの透明度
BGPictureFile | ファイル名 | 壁紙と合成する画像ファイル名を指定します。 ファイル名にワイルドカードが指定された場合、一致するファイルからランダムに一つ選びます。 相対パスを利用する場合は、テーマファイルからの相対パスを指定してください。 読み込めるファイルの種類は、BGSPIPath に格納されたプラグインによります。 ビットマップはプラグインが無くても読み込めます。
BGPicturePattern | Stretch Tile Center FitWidth FitHeight AutoFit | 画像ファイルの描画方法を指定します。 FitWidth、FitHeight は画像のアスペクト比を維持したまま、画像を拡大縮小します。 AutoFit は、ウィンドウと画像の間に隙間ができないように、FitWidth と FitHeight を切り替えます。
BGPictureBaseColor | R, G, B | 画像とウィンドウの間に隙間ができた場合、この色で塗られます。
BGPictureTone | 0 - 255 | 画像ファイルの透明度
BGFadeTone | 0 - 255 | 背景全体をフェードします。
BGFadeColor | R, G, B | フェードしたときの色を指定します。
VTFore や Red など | R, G, B | テキストの色を設定します。

テーマファイルの拡張設定

theme\Advanced.sample ファイルを利用して、拡張設定をすることができます。
下記は、指定した画像ファイル(sample.jpg)を Tera Term の背景に描画する例で、 teraterm.ini の BGThemeFile エントリで指定してください。

[BG]
; Advanced Setting
; Image source setting
; Type      : Color / Picture / Wallpaper
: Pattern   : Stretch / Tile / Center / FitWidth / FitHeight / AutoFit
; AntiAlias : On / Off
; Color     : R,G,B (0-255)
; Alpha     : 0-255
; File      : wildcard => random select
; Dest = (Src1  * Src1Alpha + Dest * (255 - Src1Alpha)) / 255
; Dest = (Src2  * Src2Alpha + Dest * (255 - Src2Alpha)) / 255
BGReverseTextAlpha = 192
;
BGDestType      = Picture
BGDestFile      = sample.jpg
BGDestPattern   = AutoFit
BGDestAntiAlias = On
BGDestColor     = 0,0,0
;
BGSrc1Type      = Color
BGSrc1File      =
BGSrc1Pattern   =
BGSrc1AntiAlias =
BGSrc1Color     = 32,32,32
BGSrc1Alpha     = 64
;
BGSrc2Type      = Color
BGSrc2File      =
BGSrc2Pattern   =
BGSrc2AntiAlias =
BGSrc2Color     = 32,32,32
BGSrc2Alpha     = 64

ウィンドウ最大化時の画面スクロール方法

ウィンドウ最大化時の画面スクロール方法を指定します。

ウィンドウ最大化時に通常のウィンドウ表示時と同じ方法でスクロールを行うと環境によっては表示が乱れる事があるため、スクロール方式を変更する事が可能です。
現在は以下のスクロール方式が用意されています。

  • 方式 0. 通常のスクロールと同じ方法を使用する。スクロール時に文字の一部が欠ける事がある。
  • 方式 1. Tera Term 4.94 までの表示方式。表示が乱れる事は無いが、スクロール時に表示がちらついたり、スクロールが遅くなる場合がある。
  • 方式 2. Tera Term 4.95 から採用された新しい方式。通常のスクロール方式と比べてちらついたりする事はないが、スクロールバックした時に画面下部にゴミが残る場合がある。

初期値では、ウィンドウ最大化時には方式 2 を使用するようになっています。最大化時のスクロールで問題が発生する場合は、表示方式を変更する事が可能です。
例えば、設定ファイルの [Tera Term] セクションの MaximizedBugTweak 行を以下のように変更すると、方式 1 を使用してスクロールするようになります。

MaximizedBugTweak=1

省略時:
MaximizedBugTweak=2

フォーカスが外れた時にもカーソルを表示する

Tera Term は、ウィンドウのフォーカスが外れた時にもカーソルを表示します。
この機能を無効にするには、設定ファイルの [Tera Term] セクションの KillFocusCursor 行を以下のように変更してください。

KillFocusCursor=off

省略時:
KillFocusCursor=on

ウィンドウの初期位置を固定する

ウィンドウの初期位置を変更するには、設定ファイルの [Tera Term] セクションの VTPos 行(VTウィンドウ) および TEKPos 行(TEKウィンドウ) を変更して下さい。
例えば、VTウィンドウの初期位置を画面の左端から 200 ピクセル、上端から 100 ピクセルの位置にする場合は、以下のようにして下さい。

VTPos=200,100

また、以下のようにすると初期位置が固定されず、Windows が配置を決めるようになります。

VTPos=-2147483648,-2147483648
TEKPos=-2147483648,-2147483648

注: 後述のように、SaveVTPosWinPos が on になっていると、"Save setup" を実行した時や VT ウィンドウを閉じた時に VTPos の設定が現在のウィンドウ位置で上書きされます。

省略時:
VTPos=-2147483648,-2147483648
TEKPos=-2147483648,-2147483648

ウィンドウ位置を保存する

Tera Term は、"Save setup" を実行したときにはウィンドウの位置を保存しません。
この設定が on になっていると、設定ファイルの保存時にウィンドウの位置を保存します。

また、この設定が on になっていると、VTウィンドウを閉じたときにもウィンドウの位置と端末のサイズを保存します。

SaveVTWinPos=on

省略時:
SaveVTWinPos=off

ウィンドウアイコンを変更する

Tera Termの実行ファイルには、VTウィンドウやTEKウィンドウのウィンドウアイコン等で使われている他にも、いくつかアイコンが含まれています。 設定ファイルの[Tera Term]セクションのVTIcon, TEKIcon行を変更する事によって、VTウィンドウおよびTEKウィンドウのウィンドウアイコンにこれらのアイコンを使用する事が出来ます。

例えば、VTウィンドウのアイコンに以前のアイコンを使いたい場合は、以下のように指定してください。

VTIcon=VT_CLASSIC

アイコン名には、以下が使用できます。

アイコン名 | アイコン
TTERM | アイコン(Tera Term)
VT | アイコン(VT)
TEK | アイコン(TEK)
TTERM_CLASSIC | アイコン(旧Tera Term)
VT_CLASSIC | アイコン(旧VT)
TTERM_3D | アイコン(Tera Term-3D)
VT_3D | アイコン(VT-3D)
CYGTERM | アイコン(CygTerm)
Default | 標準設定(VTウィンドウはVT, TEKウィンドウはTEK)

また、ssh接続時のアイコンも変更する事が出来ます。例えばTTSSH2.62までの黄色のアイコンにする場合、設定ファイルの[TTSSH]セクションのSSHIcon行を以下のように変更します。

SSHIcon=yellow

SSHIcon には、以下のアイコン名が使用できます。

アイコン名 | アイコン
flat | ttsshアイコン(フラット)
green | ttsshアイコン(緑)
yellow | ttsshアイコン(黄色)
Default | 標準のアイコン(flatと同じ)
省略時:
VTIcon=Default
TEKIcon=Default
SSHIcon=Default

マウスでの文字の選択の開始を遅らせる

マウスでのテキストの選択の開始を遅らせて、マウスでドラッグした時間が短い場合はクリックとして扱わせる事が出来ます。
例えば、マウスでのドラッグ時間が 200 ミリ秒より短い場合にクリックとするには、設定ファイルの [Tera Term] セクションの MouseSelectStartDelay 行を以下のように変更してください。

MouseSelectStartDelay=200

省略時:
MouseSelectStartDelay=0


TTXRecurringCommand (繰り返しコマンド)

定期的にコマンドを送信する。

機能

TTXRecurringCommand は、定期的にコマンドを送信する為のプラグインです。
Tera Term へのキー入力が無い時、一定時間毎に指定した文字列を送信します。

メニュー項目

TTXRecurringCommand プラグインを入れると、Tera Term に以下のメニュー項目が追加されます。

設定 (Setup) - 繰り返しコマンド (Recurring command)
設定ダイアログを開きます。
コントロール (Control) - 繰り返しコマンド (Recurring command)
プラグインの有効/無効を切り替えます。

設定ダイアログ

有効 (Enable)
プラグインの有効/無効を切り替えます。
間隔(秒) (Interval(sec))
コマンドを送信する間隔を指定します。ここで指定した秒数の間 Tera Term への入力が無い場合にコマンドを送信します。
コマンド (Command)
送信するコマンド(文字列)を指定します。コマンドに以下の文字列が含まれている場合、対応する文字に置き換えられます
シーケンス | 送信文字
\\ \
\n | 改行 (LF)
\t | 水平タブ (HT)
\a | ベル (BEL)
\b | バックスペース (BS)
\f | 改頁 (FF)
\r | 復帰 (CR)
\v | 垂直タブ (VT)
\e | エスケープ (ESC)
\NNN | 8進数 NNN が表す文字
\xHH | 16進数 HH が表す文字
改行を追加 (Add new line)
on にすると送信するコマンドの末尾に改行を追加します。


端末画面レコーダー/プレイヤー

端末画面の表示を録画/再生する

機能

TTXttyrec は、端末の画面表示を録画しファイルに保存します。 ファイルメニューの TTY Record を選択すると保存ダイアログが出るので、ファイルを指定すると録画が始まります。 再度 TTY Record を選択すると録画を終了します。

このバージョンでは、TCP 接続以外にシリアル接続の録画にも対応しています。 ただし、シリアル接続を録画するためには Tera Term 4.60 以降が必要です。 4.60 以前でもこのプラグインは使えますが、TCP 接続のみ対応となります。 その場合、シリアル接続時に録画を行ってもなにも記録されません。

TTXttyplay は、TTXttyrec で保存されたデータを再生します。 ファイルメニューの TTY Replay を選択するとファイル選択ダイアログが出るので、録画したデータを選択すると再生が始まります。 TTXttyplay を使用するには、Tera Term 4.60 以降が必要です。

データ形式は ttyrec と同じですので、TTXttyrec で録画したデータを ttyplay で再生したり、ttyrec で録画したデータを TTXttyplay で再生する事も可能です。

解説

TCP 接続の通信内容をフックするサンプルプラグインです。 Precvを フックして、現在の時刻情報と受信データを ttyrec の形式でファイルに書き込んでいるだけです。 シリアル接続の録画は、Tera Term 4.60 で追加されたシリアル接続のフックを利用しています。

TTXttyplay は、Tera Term 4.60 で追加されたログ再生のフックを利用しています。 ログ再生時には通常は順次データを読み込む所を、ERROR_IO_PENDING を返す事によってウェイトを入れています。

Windowsには gettimeofday() がないので、関数を書き起こしています。

バグ

  • 時間精度はあまりよくありません。


テンキー(数値キーパッド)について

キーボードの初期設定は VT100 のキーボードをエミュレートするようになっています。 このためテンキー(数値キーパッド)のキーを押したときキーに書いてある文字と違う文字が 送出されることがあります。VT100 キーボードのテンキーの機能を使用する必要がなく、 テンキーを普通に使いたい場合は、キーボード設定ファイル KEYBOARD.CNF の[VT numeric keypad] の全項目を以下のように OFF にしてください。詳しくは、KEYCODE.TXT を読んでください。

[VT numeric keypad]

Num0=off
Num1=off
Num2=off
Num3=off
Num4=off
Num5=off
Num6=off
Num7=off
Num8=off
Num9=off
NumMinus=off
NumComma=off
NumPeriod=off
NumEnter=off
PF1=off
PF2=off
PF3=off
PF4=off


キーパッドモードについて

VT100のテンキー(数値キーパッド)には、「数値キーパッドモード」と 「アプリケーションキーパッドモード」の二つのモードがあります。 サーバ側は、制御シーケンスを送出する事によってキーパッドモードを 変更する事ができます。 これらの二つのモードには、以下のような違いがあります。

数値キーパッドモード
キーに対応する文字をそのまま送信します。例えば1キーを押したならば1を 送信します。 通常はこのモードです。
アプリケーションキーパッドモード
キーに対応する特殊なシーケンスを送信します。例えば1キーを押したならば <ESC>Oqというシーケンスを出力します。Num Lockキーも含まれ、本来の機能は無効となり、他のファンクションキーと同様の動作をするようになります。 このモードは、メインキーの数字キーとテンキーを区別したい場合に使われます。 例えば、テンキーのキーに特殊な機能を持たせたい時などに使われます。 通常このモードは、必要な時にアプリケーション側から切り替えられる事に よって使われます。

カーソルキーモード

VT100のカーソルキーにも「ノーマルカーソルモード」と 「アプリケーションカーソルモード」の二つのモードがあります。 カーソルキーモードも、サーバ側は制御シーケンスを送出する事によって モードを変更する事ができます。

ノーマルカーソルモード
画面上のカーソルを移動する為のシーケンスと同じシーケンスが送信されます。 例えば、上キーは <ESC>[A というシーケンスが送信されます。
アプリケーションカーソルモード
ノーマルカーソルモードとは別のシーケンスが送信されます。 例えば、上キーは <ESC>OAというシーケンスが送信されます。
またTera Termでは、マウスのホイールを回転させた時にスクロールバーが上下する代わりに、 カーソルの上または下キーのシーケンスが送信されるようになります。 アプリケーションカーソルモード時のマウスホイールの動作も参照してください。

アプリケーションキーパッド/カーソルモードの無効化

場合によっては、アプリケーションキーパッド/カーソルモードを使いたくない 事があるかもしれません。 例えば、viエディタは起動された時に端末をアプリケーションキーパッドモードに 切り替えます。これによってテンキーに特殊な機能を割り振る事が出来るように なりますが、逆にテンキーによって数値を入力する事が出来なくなります。 vi上でもテンキーで数値を入力したい場合は、 キーボード設定ダイアログで アプリケーションキーパッドモードを無効化してみてください。 ただしこの設定を行っていると、アプリケーションキーパッドモードを使用する 他のアプリケーションで問題がでるかもしれませんので注意してください。

アプリケーションキーパッドモードを無効化するには他の方法もあります。


B-Plus のヒント

B-Plus は、7 bit 回線では使用できません。また、B-Plus は CompuServe や NIFTY-Serve 等の BBS からのダウンロード/へのアップロードのためだけに使用してください。Tera Term の B-Plus は PC (通信ソフト)間のファイル転送に対応していません。

シリアルポートの場合、Data が 7 bit だと、B-Plus が使えません。[Setup] Serial port で Data を 8 bit にしてください。 モデム(ホスト)側の設定も同じにしてください。

転送がうまくいかない場合、制御文字をすべてエスケープしてみてください。

また、次の設定をすると便利です。
→ B-Plus ダウンロードの自動起動

正しく転送できない場合は、B-Plus のログを取って作者に送ってください。

参考: 中間ホストを経由してホストに接続した場合のファイル転送


ダブルクリックによる単語選択の区切り文字

左マウスボタンで単語をダブルクリックすると、その単語を選択することができます。
設定ファイルの [Tera Term] セクションの DelimList 行を以下のように変更することによって単語の区切り文字を指定することができます。

DelimList=<区切り文字のリスト>

例えば、

DelimList=<>()[]

は6つの区切り文字 "<", ">", "(", ")", "[", "]" を指定します。 ただし、スペース文字と "$" はそれぞれ、"$20", "$24" という形式で指定しなければなりません。

DelimList=$20 ; スペース文字

省略時:
DelimList=$20!"#$24%&'()*+,-./:;<=>?@[\]^`{|}~

この "DelimList" 行には、1バイトコード文字(いわゆる半角文字)しか指定できません。2バイトコード文字(いわゆる全角文字)は区切り文字として取り扱われます。
2バイトコード文字を区切り文字としないようにするには、DelimDBCS 行を以下のように変更してください。

DelimDBCS=off

省略時:
DelimDBCS=on

以前のバージョンの Tera Term と単語選択の仕方を同じにするには、

DelimList=$20
DelimDBCS=off

としてください。


中間ホストを経由してホストに接続した場合のファイル転送

あるホストにログインして、そこからさらに他のホストへログインした場合、終端ホストと Tera Term の間のファイル転送 (Kermit, XMODEM, YMODEM, ZMODEM, B-PLUS, Quick-VAN) がうまくいかないことがあります。

Tera Term 作者はこのような状況でのファイル転送を想定してませんので、他の転送法(直接終端ホストに接続する、一旦中間ホストのディスクへアップロード/ダウンロードする、ftp を使用する等)を取ることをお勧めします。

この問題は以下のような原因が考えられ、場合によっては解決できることがあります。

1) Tera Term <-> 中間ホスト または 中間ホスト <-> 終端ホストのフロー制御が正しく行われていない。

接続が TCP/IP (ダイアルアップ PPP も含む)ならばフロー制御は正しく行われているはずです。 シリアルポート(モデム+電話回線の非 PPP(パソコン通信)も含む)接続の場合は、フロー制御を正しく設定してください。

2) Tera Term <-> 中間ホスト または 中間ホスト <-> 終端ホストで制御文字の一部が失われる。

Telnet 接続の場合、バイナリモードで接続する必要がある場合があります。

Kermit ではこのことは通常問題になりません。B-Plus と ZMODEM では、すべての制御文字をエスケープすることにより正しくファイル転送ができるようになる可能性があります。XMODEM, YMODEM と Quick-VAN では、すべての 8-bit 文字を通す回線を使用しないと正しくファイル転送ができません。

中間ホストから telnet コマンドで終端ホストに接続した場合、Tera Term が送出した制御文字の一部は中間ホストの telnet コマンドにより吸収されてしまい、終端ホストに伝わらないことがあります。これらの制御文字は通常 telnet の "echo", "escape", "erase", "flushoutput", "interrupt", "kill", "quit", "areyouthere" 等の機能に割り当てられています。ホストからファイルのダウンロードはできるが、ホストへのアップロードはできないというような場合、このような状況が原因になっている可能性が高いです。この問題を解決するには telnet コマンドの各機能に対して割り当てられた制御文字を解除するか、あるいは上述のように ZMODEM と B-Plus の場合はすべての制御文字をエスケープするようにしてください。ただし telnet コマンドによっては、各機能に割り当てられた制御文字をうまく解除できない場合があります。

いずれの場合も中間ホスト <-> 終端ホスト間の通信の設定は Tera Term から直接することができません。
この問題はいくつかの原因が重なっておきている場合もあり、Tera Term 作者に解決法を質問されてもお答えできない場合が多いです。
上記のヒントを参考にしても解決できない(上記の内容が理解できない)場合は、残念ですがあきらめてください。


IMEのヒント

前後参照変換

すでに確定済みの文字があった場合においても、カーソル前後の文字を参照して、最適な変換を行うしくみです。 ATOKでは「カーソル位置前後の文章を参照して変換する」、MS-IMEでは「挿入時、前の内容を参照して変換をする」と呼ばれています。
この機能はIME(Input Method Editor)[*1]とアプリケーションと連携して実現するため、アプリケーション側の対応も必要です。また、当該機能は厳密にMicrosoftから仕様が開示されていないので、アプリケーション(Tera Term)の実装はアドホックなものとなり、IMEとの組み合わせによっては、正しく動作しない場合があります。
[*1] かつてはFEP(Front End Processor)と呼ばれていた。

夏にお茶を飲みながら、本を読む。

例として、上記の確定した文章があるとします。

(A)夏に(B)お茶を飲みながら、(C)本を読む。

前後参照変換機能が有効になっている場合、(A),(B),(C)の位置にカーソルがあり、「atui」と入力すると、IMEはそれぞれ下記のように適切な漢字に変換します。

暑い夏に熱いお茶を飲みながら、厚い本を読む。

Tera Termの実装としては、WM_IME_REQUESTメッセージでIMR_DOCUMENTFEEDパラメータを受信したら、現在のカーソルがある行のデータを返却することで、IMEの変換処理に貢献します。
データの返却方法は、ATOKとIMEで異なります。

夏に|お茶を飲みながら、本を読む。

ATOK2012の場合、|の位置にカーソルがあり、「a」と入力した時点で、メッセージが飛んできます。 このときTera Termは、「夏にお茶を飲みながら、本を読む。」というデータを返します。
MS-IME2002/2003の場合、「あつi」と入力した時点で、メッセージが飛んできます。 このときTera Termは、「夏にあつお茶を飲みながら、本を読む。」というデータを返します。


正しくない "Kanji-out" を使用可能にする

一部のシステムで用いられている "kanji-out" シーケンス ^[(H は、JIS/ISO の規格に従っていません。本当に必要のある場合以外は使用しないでください。
初期設定では間違いを防ぐため [Setup] terminal ダイアログボックスで ^[(H が選択できないようになっています。

^[(H を選択できるようにするには、設定ファイルの [Tera Term] セクションの AllowWrongSequence 行を、

AllowWrongSequence=on

のように変更してください。ダイアログボックスで選択できるようになります。

省略時:
AllowWrongSequence=off


ログの取り方、ログの再生機能

ログ (log) 機能をつかうと、ホストから送られてきた文字をファイルに保存することができます。

ログの取りかた

以下の手順にしたがってください。

  1. [File] Logコマンドを実行する。
  2. "Tera Term: Log" ダイアログボックスが現れる。

    保存するファイルのファイル名を File Name: に入力する。
    Binary を選択すると、ホストから送られた文字はすべてファイルに書き込まれる。
    Binary を選択しないと、漢字、改行コードは変換されて書き込まれる。エスケープシーケンスは書き込まれない。
    Append を選択すると、ファイルがすでに存在する場合、追加して書き込まれる。
    Append を選択しないと、ファイルがすでに存在する場合、上書きされる。

  3. OKボタンを押すと、"Tera Term: Log" というアイコンが現れ、ログが開始される。ログを取っている間も、一部の機能を除いて普通に Tera Term を使用することができる。
  4. ログを終了したり、中断したい場合は、アイコンを(ダブル)クリックしてダイアログボックスを表示させ、Close または Pause ボタンを押す。Pause ボタンを押すと Start ボタンに変わるので、それを押すとログが再開される。

保存したファイルは、「メモ帳」等のエディタで見ることができますが、エスケープシーケンス等を含んだファイルは、 ログの再生機能を使って見ると便利です。

ログの再生のしかた

コマンドラインを、

TTERMPRO /R=<ログファイル名>

のように指定して Tera Term を実行します。すると、あたかもホストから文字が送られてきたかのように、ログファイルを再生することができます。

または、[File] New connectionで Host: の所に

/R=<ログファイル名>

と入力しても、ログファイルが再生できます。


名前付きパイプ

VMwareやHyper-Vといった仮想化ソフトウェアの名前付きパイプを利用することにより、Tera Termから名前付きパイプを介して、仮想マシンのゲストOSへシリアルコンソール接続を行うことができるようになります。

   +---------------+
   | Guest OS      |
   |               |
   +----[COM]------+
   | Hypervisor    |
   +------+--------+
          |
          |                              +-------------+
          |                              |             |
          +-------[Named pipe]-----------+  Tera Term  |
                                         |             |
                                         +-------------+

Linux on VMware

VMware Player 3.1.5 + Fedora 16の組み合わせを例としてあげます。

VMware Player 3以降で名前付きパイプに対応しましたが、古いバージョンでは未対応なので、新しいバージョンにアップグレードして下さい。「仮想マシンの設定」ダイアログ - ハードウェア - シリアルポートにおいて、「名前付きパイプを使用する」を選択し、下記の通り入力します。

  • 「\\.\pipe\vmware-serial-port」
  • 「この端末はサーバです」
  • 「接続先はアプリケーションです」

Fedora 16は、デフォルトではシリアルコンソールが使用されていません。GRUB2の設定を変更することにより、ブートローダおよびLinuxブートログ、ログインプロンプトをシリアルコンソールに出力することができるようになります。
GRUB2の設定方法について示します。 root権限で、/etc/default/grub を編集します。

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="Fedora"
GRUB_DEFAULT=saved
GRUB_CMDLINE_LINUX="rd.md=0 rd.dm=0 rd.lvm.lv=VolGroup/lv_swap quiet rhgb rd.lvm.lv=VolGroup/lv_root rd.luks=0 LANG=ja_JP.UTF-8  KEYTABLE=jp106"
GRUB_TERMINAL="serial console"
GRUB_SERIAL_COMMAND="serial --unit=0 --speed=38400"
GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,38400"
次に、grub2-mkconfigコマンドを実行し、設定を反映させます。
# grub2-mkconfig -o /boot/grub2/grub.cfg

以上より、VMwareからFedoraを起動すると、名前付きパイプ(\\.\pipe\vmware-serial-port)が作成されるので、Tera Termから接続可能となります。なお、ブレーク信号には対応していないので、Tera Termから"Send break"してもMagic SysRq keyは動作しません。

参考までに、Fedora 15以前では Legacy GRUB が採用されているため、シリアルコンソールの設定が異なります。 root権限で、/boot/grub/grub.conf を直接編集します。

default=0
timeout=5
#splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
serial --unit=0 --speed=38400
terminal --timeout=5 serial console
title Fedora (2.6.38.6-26.rc1.fc15.i686.PAE)
        root (hd0,0)
        kernel /vmlinuz-2.6.38.6-26.rc1.fc15.i686.PAE ro root=/dev/mapper/VolGroup-lv_root rd_LVM_LV=VolGroup/lv_root rd_LVM_LV=VolGroup/lv_swap rd_NO_LUKS rd_NO_MD rd_NO_DM LANG=ja_JP.UTF-8 KEYTABLE=jp106 selinux=0 rhgb quiet console=tty0 console=ttyS0,38400
        initrd /initramfs-2.6.38.6-26.rc1.fc15.i686.PAE.img

Windows Server on Hyper-V

Windows Server 2008 R2 の Hyper-V を使い、仮想マシン上で Windows Server を動作させる例を挙げます。

Hyper-V のCOMポートの設定で、名前付きパイプを指定します。名前付きパイプの形式は「\\.\pipe\」となります。 当該名前付きパイプを使って、Tera Termから Hyper-V のCOMポートに接続することができます。 なお、ゲストOSは Windows Server でないと、SAC(Special Administration Console)は利用できません。デスクトップ版WindowsではSACは利用不可なので、名前付きパイプで接続しても、何もできません。


NIFTY-Serve のヒント

NIFTY-Serve への telnet 接続法がわからない場合は、従来の方法(いわゆるパソコン通信)で NIFTY-Serve へ接続し、"GO TELNET" コマンドで TELNET メニューへ行き、telnet 接続の案内 (telnet to NIFTY Serve) を読んでください。

漢字モードの設定

[Setup] Terminal で漢字モードの設定をしてください。通常は、受信、送信とも SJIS (Shift-JIS) にします。

ログイン時のプロンプト "Enter Connection-ID --->" で "SVC" と入力するときに以下のようにオプションを付け加えることにより漢字コードの種類が指定できます。 Tera Term 側の漢字コードの設定もそれにわせて下さい。

Connection-ID  Tera Term の漢字モード
-----------------------------------------------------------------
SVC または SVC/SJIS	SJIS
SVC/EUC        EUC
SVC/NJS1       JIS, Kanji-In: ESC$B, Kanji-Out: ESC(J
SVC/OJS1       JIS, Kanji-In: ESC$@, Kanji-Out: ESC(J

ファイルのアップロード、ダウンロードする場合、B-Plus のヒント、XMODEM のヒントを読んでください。

参考: 中間ホストを経由してホストに接続した場合のファイル転送


C1 制御文字 ($80-$9F) を使用しない

Tera Term の漢字モード(受信)を EUC か JIS にして、 Teraminal ID を VT2XX または、 VT3XX にしている場合、Shift-JIS の漢字を受信すると、ハングアップすることがあります。

これは、Shift-JIS コードの中に C1 制御文字 ($80-9F) が含まれているために、それらを制御文字として解釈してしまい、端末の状態がおかしくなるからです。

例えば、ホストによってはログイン時などに SJIS(Shift-JIS), EUC, JIS などの数種類の漢字コードを端末に送り、どのコードが正しく表示されてるか ユーザーに入力させる、ということがあり、このような場合に問題が発生します。

もし、このような状態になった場合、[Control] Reset terminal で端末の状態をリセットしてください。

このような問題をさけるには、3つの方法があります。

  1. 漢字モード(受信)を SJIS に設定する。
  2. [Setup] Terminal で Terminal ID を VT1XX (例えば VT100) にする。
  3. 設定ファイルの [Tera Term] セクションの Accept8BitCtrl 行を
    Accept8BitCtrl=off
    のように編集し、 C1 制御文字として送られてきた文字を無視するように設定する。
    省略時:
Accept8bitCtrl=on


TCP/IP 接続で 23 以外の TCP port 番号を使用する場合の注意

Telnet 用ポート番号

コマンドライン、または [File] New connection ダイアログボックスでは、TCP/IP 接続に使用される TCP ポート番号 (<TCP port#>) と telnet フラグ (<telnet flag>) を指定することができます。コマンドラインでこれらのパラメーターが省略された場合は、Tera Term 設定ファイルに書かれている設定値が使用されます。

<telnet flag> が 1 (on) で、かつ <TCP port#> が 23 の場合だけ、Tera Term はホストに接続した直後に、自発的に telnet コマンドをホストに送信し option negotiation を開始します。

この telnet のための特別なポート番号 23 は、設定ファイルの [Tera Term] セクションの TelPort 行で以下のように変更することができます。

TelPort=<telnet port#>

省略時:
TelPort=23

<telnet flag> と <TCP port #> が何であれ Tera Term はホストから送られてきた telnet コマンドに応答することができます。

非 telnet TCP/IP 接続用の端末設定

Telnet プロトコルに対応していないホスト(通常 23 以外のポート番号を使用)に TCP/IP 接続する場合、ローカルエコーを on に、送信する改行コードを CR+LF にする必要がある場合があります。設定ファイルの [Tera Term] セクションの TCPLocalEcho と TCPCRSend 行を、

TCPLocalEcho=on
TCPCRSend=CRLF    (CR も指定可能)

のように変更すると、<telnet flag> が 0 (off) の場合、または <TCP port#> が <telnet port#> でない場合に、接続直後に、ローカルエコーを on に、送信改行コードを CR+LF に自動的に変更します。それ以外の場合は [Setup] Terminal での設定値が使用されます。これらのオプションによって、一つの設定ファイルで telnet 接続と非 telnet 接続の両方に対応することが可能となります。

省略時:
TCPLocalEcho=off  (このオプションは使わず、常に [Setup] Terminal の設定値が使用される)
TCPCRSend=        (このオプションは使わず、常に [Setup] Terminal の設定値が使用される)


パソコン通信的接続法

ここでは、インターネットを利用した telnet 接続ではなく、従来のパソコン通信的な接続法、つまりモデムと電話回線を使用して NiftyServe 等の BBS に接続する方法を説明します。

  1. まず、[File] New connection コマンドで "Serial" を選択し、それからモデムがつながっているポート(以降仮に COM1 だとします)を選択して Ok を押してください。
  2. 後々のために、ここで [Setup] General の "Default Port" で "COM1" を選択しておいてください。
  3. [Setup] Serial port で シリアルポートのパラメーターを以下のようにしてください。
    Port:           COM1
Speed:          38400
    (お使いのモデムが 28800 bps 対応の場合。調子が悪い場合はより小さい値にしてみてください)
Data:           8 bit
Parity:         none
Stop:           1 bit
Flow control:   hard
Transmit delay: 0 0
  4. 2と3 で行った設定を保存するために、[Setup] Save setup を実行してください。次回からはこれらの設定をする必要がなくなります。
    ------ 以降は、接続のたびに行う必要があります。------
  5. Tera Term には、普通のパソコン通信ソフトが持っているようなダイアル機能がありません。ダイアルをするには、モデムにコマンドを手で入力するか、あるいはマクロで送信させなければなりません。いきなりマクロを作るまえに、以下のように手動で接続をしてみてください。
    • モデムのコマンドは "AT" で始まる文字列で、モデムのマニュアルに説明が書かれていますので、一度目を通してください。
    • ダイアルする前にモデムを初期化します。
      ATZ[Enter] と入力してください([Enter] は "Enter" キーを押すという意味)。"OK" とモデムから応答があるはずです。接続先やモデムの種類によって、さらに設定コマンドを入力する必要がある場合がありますが、場合によりけりなので、とりあえずここでは省略します。うまくダイアル、接続ができない場合は、マニュアルを読んで適切なコマンドを指定してモデムを初期設定してください。
    • ダイアルするには、
      ATD[電話番号][Enter]    または、
ATDP[電話番号][Enter]   (パルス回線の場合)
ATDT[電話番号][Enter]   (トーン(プッシュホン)回線の場合)
      と入力してください。電話番号はもちろん NiftyServe 等のアクセスポイントの電話番号です。うまくアクセスポイントにつながると、モデムから
      CONNECT XXXXX  (XXXXX は設定により異なる)
      というメッセージが来ます。もし CONNECT メッセージが来ない場合はモデムの設定がおかしいです。電話回線が混んでいる場合(話し中)、BUSY というメッセージが来ます。
    • うまく接続できない場合はモデムの設定がおかしいことが多いですが、設定法は場合によりけりなので、作者に質問しないでください(答えられません)。
    • 接続が確立したら、BBSにログインするためのメッセージが表示されるはずですので、それにしたがって ID や パスワードを入力してログインしてください(詳しくは BBS の説明書をご覧ください)。

BBS への接続、ログインする手順がわかったら、その手順をマクロを使って自動的に実行させることができます。付属のサンプルマクロ DIALUP.TTL とマクロヘルプ を参考に挑戦してみてください(マクロの作り方を作者に質問しないでください)。


PC-VAN のヒント

漢字モードの設定

[Setup] Terminal で漢字モードの設定をしてください。通常は、受信、送信とも SJIS (Shift-JIS) にします。

Telnet で PC-VAN に接続し、ファイルのアップロード、ダウンロードをする場合は、必ずバイナリオプションで接続してください(1996年6月現在)。詳しくは、「Quick-VAN のヒント」を読んでください。

参考: 中間ホストを経由してホストに接続した場合のファイル転送


VT100 の PF1-PF4 キー

キーボードの初期設定では VT100 の PF1-PF4 キーの機能はテンキーの一番上の列の４つのキー (IBM/PC の場合 "Num Lock", "/", "*", "-" ; PC98 の場合 "HOME CLR", "HELP" "-", "/")に割り当てられています。これを F1-F4 キーに割り当てるように変更するには以下のようにキーボード設定ファイル KEYBOARD.CNF を書き換えてください。詳しくは、KEYCODE.TXTを読んでください。

以下は IBM-PC キーボードの場合(PC98 の場合は KEYCODE.EXE を使用してキーコードを調べてください)。

[Numeric keypad]
PF1=59
PF2=60
PF3=61
PF4=62
; 59-62 は F1-F4 key のキーコード

[X function keys]
XF1=off
XF2=off
XF3=off
XF4=off
; キーコード 59-62 を二重使用しないようにするため XF1-XF4 を "off" にする。


Quick-VAN のヒント

Quick-VAN は、PC-VAN という BBS で用いられているファイル転送プロトコルです。Quick-VAN は、7 bit 回線では使用できません。

シリアルポートの場合

Data が 7 bit だと、 Quick-VAN が使えません。[Setup] Serial port で Data を 8 bit にしてください。モデム(ホスト)側の設定も同じにしてください。

Telnet の場合

PC-VAN に接続する場合は、必ずバイナリオプションを指定してください (1995年12月現在)。バイナリオプションで接続するには、

  • コマンドラインに /B オプションをつけるか、
  • Tera Term 設定ファイルを書き換えてください。
    → Telnet のバイナリオプション

また、次の設定をすると転送速度が改善する場合があります。
→ Quick-VAN の window size

どうしても正常に転送できない場合は、ホスト側の Quick-VAN コマンドを正しく指定していることを確認した上で、 Quick-VAN のログを取り、作者に送ってください。

参考: 中間ホストを経由してホストに接続した場合のファイル転送


TELNET プロトコルに関連付ける

Tera Term 4.59よりインストーラで関連付け出来るようになりました。

実行するアプリケーションを、下記のように指定します。

"C:\Program Files\teraterm\ttermpro.exe" /nossh /T=1 %1

TTSSH がインストールされていて TERATERM.INI で SSH が有効だと、Tera Term は SSH 接続を開始してしまいます。
コマンドラインオプションに "/nossh" を指定することで、TTSSH に "SSHを無効にする" ことを通知します。

コマンドラインオプションに "/T=1" を指定することで、接続が TELNET であることを明示的に ttermpro.exe に通知します。


Tera Term の設定法

Tera Term の設定は、[Setup] メニューのコマンドでほとんどおこなうことができます。
また、Tera Term 設定ファイルを直接編集することによって、より細かい設定を行うことができます。

また、キーボード設定ファイルを書きかえることで自由にキー設定を変更することができます。
詳しくは、KEYCODE.TXT を読んでください。


ユーザー・ショートカット・キー

キーボード設定ファイルの[Shortcut keys] と [VT function keys] セクションの項目を書き換えると、以下のショートカット・キーを自分の好きなキーに割り当てることができます。詳しくは、KEYCODE.TXTを読んでください。

[Shortcut keys]
セクションの項目    機能                                初期設定

EditCopy            [Edit] Copy コマンド*1)             Ctrl+Insert
EditPaste           [Edit] Paste コマンド *1)           Shift+ nsert
EditPasteCR         [Edit] Paste<CR> コマンド *1)       なし
EditCLS             [Edit] Clear screen コマンド        なし
EditCLB             [Edit] Clear buffer コマンド        なし
ControlOpenTEK      [Control] Open TEK コマンド         なし
ControlCloseTEK     [Control] Close TEK コマンド        なし
LineUp              一行スクロールアップ                Ctrl+↑
LineDown            一行スクロールダウン                Ctrl+↓
PageUp              一ページスクロールアップ            Ctrl+PageUp
PageDown            一ページスクロールダウン            Ctrl+PageDown
BuffTop             バッファの先頭へスクロール          Ctrl+Home
BuffBottom          バッファの最後へスクロール          Ctrl+End
NextWin             次の Tera Term ウィンドウへ移動     Ctrl+Tab
PrevWin             前の Tera Term ウィンドウへ移動     Ctrl+Shift+Tab
NextShownWin        次の Tera Term ウィンドウへ移動     なし
                    (最小化されたウィンドウは対象外)
PrevShownWin        前の Tera Term ウィンドウへ移動     なし
                    (最小化されたウィンドウは対象外)
LocalEcho           ローカルエコーを on/off にする。    なし

[VT function keys]
セクションの項目    機能                                初期設定

Hold                受信ポートをロック/ロック解除       なし
Print               [File] Print コマンド *1)           なし
Break               ブレーク信号送出 *1)                なし

*1) これらの機能にはシステム・ショートカット・キーが割り当てられています。

例えば、Ctrl+V を [Edit] Paste に割り当てたい場合は、キーボード設定ファイルの [Shortcut keys] セクションで、

EditPaste=1071

としてください (IBM PC/AT キーボードの場合)。

また [User keys] セクションでは、ユーザーキーを使ってすべてのメニューコマンドに対してショートカット・キーを設定することができます


vim からの制御シーケンスの使用例

Tera Term では、制御シーケンスを使用する事によってホスト側から Tera Term の動作を変更したりする事が出来ます。 ここでは vim からこれらの制御シーケンスを活用する為の設定例を紹介します。

挿入モードへの出入り時にカーソル形状を変更する

Tera Term では、以下のカーソル表示状態変更制御シーケンスに対応しています。

略称 | シーケンス | 機能
DECTCEM | ESC [ ? 25 h | カーソルを表示状態にする
 | ESC [ ? 25 l | カーソルを非表示状態にする
DECSCUSR | ESC [ 0 SP q | カーソル形状を箱型で点滅状態にする
 | ESC [ 1 SP q | カーソル形状を箱型で点滅状態にする
 | ESC [ 2 SP q | カーソル形状を箱型で点灯(非点滅)状態にする
 | ESC [ 3 SP q | カーソル形状を下線で点滅状態にする
 | ESC [ 4 SP q | カーソル形状を下線で点灯(非点滅)状態にする
 | ESC [ 5 SP q | カーソル形状を縦線で点滅状態にする
 | ESC [ 6 SP q | カーソル形状を縦線で点灯(非点滅)状態にする
WYSTCURM | ESC [ 33 h | カーソルを点灯(非点滅)状態にする
 | ESC [ 33 l | カーソルを点滅状態にする
WYULCURM | ESC [ 34 h | カーソル形状を下線にする
 | ESC [ 34 l | カーソル形状を箱型にする
(AT&T 610) | ESC [ ? 12 l | カーソルを点灯(非点滅)状態にする
 | ESC [ ? 12 h | カーソルを点滅状態にする

これらの制御シーケンスを挿入モードに入る時 (t_SI 設定)、置換モードに入る時 (t_SR 設定) および挿入モード/置換モードから出る時 (t_EI 設定) に出力する事で、挿入モード/置換モードでのカーソル形状を変更できます。
例えば .vimrc に以下の設定を追加すると、挿入モードに入った時にカーソル形状が縦線で点滅に、置換モードでは下線で点滅に、挿入モード/置換モードから出た時に箱型で点滅に変わるようになります。

let &t_SI .= "\e[5 q"
let &t_SR .= "\e[3 q"
let &t_EI .= "\e[1 q"

注: DECTCEM 以外の制御シーケンスを使うには、Additional Settings ダイアログの Control sequence タブに有る Cursor control sequence を on にする必要があります。(デフォルトは off)

クリップボードからの貼り付け時に自動インデントを無効にする

注: Vim 8.0.0238 より Vim 本体で Bracketed Paste Mode に対応した為、下記の設定を追加しなくても貼り付け時には自動インデントや補完等が無効になります。
しかし、tmux 利用時には Bracketed Paste Mode が有効にならないので、tmux を併用する場合は依然として下記の設定が必要になります。

通常、ホスト側のアプリケーション (vim 等) からは、ユーザのキー入力とクリップボードからの貼り付けを区別できません。 しかし xterm の拡張機能である Bracketed Paste Mode を利用するとこれらを区別出来るようになるため、クリップボードからの貼り付け時は動作を変える事ができます。

.vimrc に以下の設定を追加すると、クリップボードからの貼り付け時に自動で set paste を実行して、自動インデントや補完等が無効になります。

if has("patch-8.0.0238")
    " Bracketed Paste Mode対応バージョン(8.0.0238以降)では、特に設定しない
    " 場合はTERMがxtermの時のみBracketed Paste Modeが使われる。
    " tmux利用時はTERMがscreenなので、Bracketed Paste Modeを利用するには
    " 以下の設定が必要となる。
    if &term =~ "screen"
        let &t_BE = "\e[?2004h"
        let &t_BD = "\e[?2004l"
        exec "set t_PS=\e[200~"
        exec "set t_PE=\e[201~"
    endif
else
    " 8.0.0210 ～ 8.0.0237 ではVim本体でのBracketed Paste Mode対応の挙動が
    " 望ましくない(自動インデントが無効にならない)ので、Vim本体側での対応を
    " 無効にする。
    if has("patch-8.0.0210")
        set t_BE=
    endif

    " Vim本体がBracketed Paste Modeに対応していない時の為の設定。
    if &term =~ "xterm" || &term =~ "screen"
        let &t_ti .= "\e[?2004h"
        let &t_te .= "\e[?2004l"

        function XTermPasteBegin(ret)
            set pastetoggle=<Esc>[201~
            set paste
            return a:ret
        endfunction

        noremap <special> <expr> <Esc>[200~ XTermPasteBegin("0i")
        inoremap <special> <expr> <Esc>[200~ XTermPasteBegin("")
        vnoremap <special> <expr> <Esc>[200~ XTermPasteBegin("c")
        cnoremap <special> <Esc>[200~ <nop>
        cnoremap <special> <Esc>[201~ <nop>
    endif
endif

上記の設定ではノーマルモードで貼り付けを行うと挿入モードに切り替わって貼り付けが行われますが、これを行わずに挿入モードの時のみ有効にする場合は以下の設定を使用して下さい。
後述のGNU Screenとの併用時の注意点にある設定を行う場合はこちらの方が都合がいいでしょう。

if &term =~ "xterm"
    let &t_SI .= "\e[?2004h"
    let &t_EI .= "\e[?2004l"

    function XTermPasteBegin(ret)
        set pastetoggle=<Esc>[201~
        set paste
        return a:ret
    endfunction

    inoremap <special> <expr> <Esc>[200~ XTermPasteBegin("")
endif

Bracketed Paste mode について

この機能は xterm 拡張で、有効になっていると、クリップボードからの貼り付け時に文字列の前後に特別なシーケンスを付加するというものです。
具体的には、DECSET の 2004(<CSI>?2004h) で有効になり、貼り付け時に文字列の前に <ESC>200~, 後ろに <ESC>201~ が付くようになります。

IME を制御する

Tera Term では IME の状態を制御する為の独自の制御シーケンスをサポートしています。 この制御シーケンスを利用すれば、モードにより IME の有効/無効を切り替えるといった事が出来るようになります。

.vimrc に以下の設定を追加すると、挿入モードから抜けた時に IME をオフにし、再度挿入モードに入った時に IME の状態を元に戻すようになります。

let &t_SI .= "\e[<r"
let &t_EI .= "\e[<s\e[<0t"
let &t_te .= "\e[<0t\e[<s"

set timeoutlen=100

timeoutlen の設定は、挿入モードで ESC キーを押してから実際に挿入モードを抜ける(IME がオフになる)までの時間を調整しています。 この値を短くすれば ESC キーを押してから IME がオフになるまでの時間が短くなりますが、 遅い回線を使っている時などにカーソルキーやファンクションキーが正しく働かないというトラブルが起きる事があります。
また ESC キーを押した後の遅れを減らすには"挿入モードでの ESC キーを押した後の待ちを無くす"の設定を利用する方法もあります。

挿入モードでの ESC キーを押した後の待ちを無くす

Tera Term や xterm 等の端末エミュレータでは、ESC キーが押された時に ESC (0x1b) を送信します。また、カーソルキーやファンクションキー等が押された時に ESC で始まる文字列を送信します。 この為、ホスト側のアプリケーションでは ESC を受信しても、それだけでは ESC キーが押されたのか、それともカーソルキーやファンクションキーが押されたのか区別する事が出来ません。
そこで vim では ESC を受信した時は 1 秒ほど待ち、他の文字が送られてこないか、送られてきた場合はカーソルキー等を表す文字列になるかどうかで、ESC キーが押されたのか、それともカーソルキー等が押されたのかを判別します。 この為、挿入モードで ESC キーを押されてから実際に挿入モードを抜けるのが 1 秒程遅れます。 これにより、モードによりカーソル形状を変える設定や IME を制御する設定を行っても、状態が反映されるのが遅れます。

この問題は Application Escape Mode を使う事で回避できます。 .vimrc に以下の設定を追加すると、挿入モードで ESC キーを押した時に待たずにすぐに挿入モードを抜けるようになります。

let &t_SI .= "\e[?7727h"
let &t_EI .= "\e[?7727l"
inoremap <special> <Esc>O[ <Esc>

ウィンドウタイトルを保存/復元する

注: Vim 8.1.0253 より、Vim がタイトルの保存/復元機能に対応したため、下記の設定は必要ありません。

Tera Term では xterm のウィンドウタイトル変更制御シーケンスに対応しています。 例えば vim の場合、set title を実行するとウィンドウタイトルに現在開いているファイル名等の情報が表示されるようになります。
しかし vim はウィンドウタイトルの変更は出来ますが、元のタイトルが何であったか把握する事が出来ません。 その為 vim の終了時に元のウィンドウタイトルに戻す事が出来ず、代わりに "Thanks for flying Vim" や "Vim を使ってくれてありがとう" というメッセージをウィンドウタイトルにセットして終了します。

この問題は、ウィンドウタイトルの保存/復元機能を使う事で回避できます。 .vimrc に以下の設定を追加すると、vim 起動時にウィンドウタイトルを保存し、終了時に保存したタイトルに復元するようになります。

if !has("patch-8.1.0253")
    let &t_ti .= "\e[22;0t"
    let &t_te .= "\e[23;0t"
endif

縦分割時のスクロールの高速化

vim で縦分割(vsplit)をすると遅いとかがくがくすると言われる事がよくあります。 これは多くの端末エミュレータが基準としている VT100 や VT200 シリーズの仕様からくる問題です。

VT100 にはスクロールする範囲を設定する機能(スクロールリージョン/上下マージン)が有りますが、 これは例えば上マージンを5行目に、下マージンを20行目にセットする事によってスクロールする範囲を5行目から20行目にするというもので、 縦方向の桁単位で指定する事は出来ません。
このため、横分割(split)では上下マージンを利用してスクロールを行う事が出来ますが、 縦分割ではスクロールが利用できないため、スクロールしたい領域全体を書き直す必要があり、 スクロールが遅くなります。

しかし、VT400 シリーズ以降では桁位置によるスクロール範囲設定(左右マージン)機能が追加されており、Tera Term でもバージョン 4.79 からこの機能をサポートしました。 以下の設定を .vimrc に追加して縦分割時のスクロールに左右マージンを利用するように設定する事によって、縦分割時のスクロールが改善されます。

if &term =~ "xterm"
    let &t_ti .= "\e[?69h"
    let &t_te .= "\e[?69l"
    let &t_CV = "\e[%i%p1%d;%p2%ds"
endif

注: この設定を行うと、左右マージンに対応していない端末では縦分割が正しく動かなくなります。xterm や mlterm, RLogin, tanasinn, pangoterm などは左右マージンに対応していますが、それ以外の端末を併用する場合は注意してください。

GNU Screenとの併用時の注意点

GNU Screenを使用している場合、screen内部で動かしているアプリケーションが制御シーケンスを送っても、そのシーケンスにscreenが対応していない場合はTera Term側へ送らずに捨ててしまい期待通りに動きません。その場合、

if &term == "screen"
    let &t_SI .= "\eP\e[3 q\e\\"
    let &t_EI .= "\eP\e[1 q\e\\"
else
    let &t_SI .= "\e[3 q"
    let &t_EI .= "\e[1 q"
endif

というように、端末タイプが screen の時は t_SI, t_EI, t_ti, t_te に設定するシーケンスを "\eP" と "\e\\" で挟むとTera Termに制御シーケンスが届くようになります。
ただし、この方法を使って制御シーケンスがscreenを抜けるようにしても送ったシーケンスの状態はscreenの管理外になるので、screenのウィンドウを切り替えた時等に期待通りに動かない場合がありますので注意してください。

vim の設定

背景色

Tera Term 4.83からxtermのTermcap String Queryに対応したことにより、vimは起動時、端末の色数、すなわち 256色対応であることを自動で認識できるようになりました。そのため、vimの背景色に応じたハイライトカラーを 描画するために、適切に background の設定を行う必要性があります。
背景色が暗い色(例えば黒)の時は dark、明るい色(例えば白)の時は light にして、いずれかの設定を 試してみてください。

set background=dark

background は端末の背景色を vim に伝えるための設定であり、正しく設定されていないと ハイライト等で文字色と背景色に似た色を使い見づらくなる場合があります。
色数の自動認識を止めるには set t_RV= を .vimrc に追加してください。ただし、マウスタイプ等の自動認識も止まります。

なお、backgroundオプションの詳細は、vimで :help 'background'を参照願います。


Virtual Store

Vista以降のファイル仮想化

Windows Vista以降では、特定のファイルやレジストリにデータを読み書きすると、
自動的に別の場所に読み書きするというしくみが備わっており、"Virtual Store"と呼ばれます。
OSのユーザアカウント制御(UAC)が有効であり、Tera Termを管理者として実行していない場合に、
当該機能が有効となります。

"Virtual Store"機能が有効の場合、Tera Termが「%ProgramFiles(x86)%\teraterm」に読み書きしたファイルは、
「%LOCALAPPDATA%\VirtualStore\Program Files (x86)\teraterm」にリダイレクトされます。
対象となるファイルは、teraterm.iniやログファイル、ssh_known_hosts などです。


XMODEM のヒント

XMODEM は、8 bit コード ($00-$FF の文字すべて)を完全に通す回線を用いないと使用できません。

シリアルポートの場合

Dataが 7 bit だったり、フロー制御が Xon/Xoff だったりすると、XMODEM が使えません。[Setup] Serial port で Data を 8 bit にし、Flow control を hard (CTS/RTS) か none にしてください。モデム(ホスト)側の設定も同じにしてください。

Telnet の場合

もし正しく転送できない場合はバイナリオプションで telnet 接続してみてください。
バイナリオプションで接続するには、

  • コマンドラインに /B オプションをつけるか、
  • Tera Term 設定ファイルを書き換えてください。
    → Telnet のバイナリオプション

どうしても正常に転送できない場合は、ホスト側の XMODEM コマンドを正しく設定および使用していることを確認した上で、XMODEM のログを取り、作者に送ってください。

参考: 中間ホストを経由してホストに接続した場合のファイル転送


ZMODEM のヒント

ZMODEM は、7 bit 回線では使用できません。

シリアルポートの場合

Data が 7 bitだと、ZMODEM が使えません。[Setup] Serial port で Data を 8 bit にしてください。モデム(ホスト)側の設定も同じにしてください。

Telnet の場合

もし正しく転送できない場合は制御文字をすべてエスケープしてみてください。それでもだめな場合はバイナリオプションで telnet 接続してみてください。
バイナリオプションで接続するには、

  • コマンドラインに /B オプションをつけるか、
  • Tera Term 設定ファイルを書き換えてください。
    → Telnet のバイナリオプション

どうしても正常に転送できない場合は、ホスト側の ZMODEM コマンドを正しく設定および使用していることを確認した上で、ZMODEM のログを取り、作者に送ってください。

また、以下の設定も可能です。

  • → ZMODEM 受信の自動起動
  • → ZMODEM 送信の設定

参考: 中間ホストを経由してホストに接続した場合のファイル転送

通信ソフトウェア

ZMODEMによるファイル送信は、Red Hat系Linux(Fedora, CentOS)上で lrzsz パッケージに対して正常に動作します。zmtx-zmrx パッケージに対しては動かないことがあります。
com0comを利用すると、ループバック接続でTera Termやハイパーターミナルと相互通信することができます。

モデム通信プログラム

  • lrzsz
  • zmtx-zmrx
  • Null-modem emulator(com0com)