開発作業メモ
- TERATERM.INI への項目追加
- 国際化メッセージの対応
- マクロコマンド追加時の作業リスト
- メニューID追加時の命名規則
- アイコン
- ライブラリバージョンアップ時の変更箇所
- ダンプ
TERATERM.INI への項目追加
どんなときに追加するか
新しい機能が追加されて動作が変わると、これまでどおりの動作を期待するユーザにとっては不便になる。
動作を切り替えられるように、TERATERM.INI へ項目を追加する。
デフォルト値
新しい動作が大多数のユーザにとって便利になる、安全である、混乱を生まないものであれば「on」としてよい。
そうでない場合は「off」として、以前と同じ動作になるようにすべき。
項目名
すでに EnableFoo... や DisableBar... が混在してしまっているが、混乱しやすい。
今後は Baz... という形式にするのが望ましい。
変更箇所
- ソースコード
- INI ファイルの読み書き部分
teraterm\ttpset\ttset.c
- tttset 構造体
teraterm\common\tttypes.h
Tera Term 4(TT4) と Tera Term 5(TT5) の両方でプラグインを動作させるには TT4 の構造体と互換性を持たせる必要がある
そのため、新しいメンバーは末尾に追加する
同様に、使用しなくなったメンバーは削除せず reserve_XXX にリネームして残しておく
- ドキュメント
- Tera Term 設定ファイルの全項目一覧
setup/teraterm-ini.html
- 設定ダイアログのヘルプ(ダイアログに変更 UI がある場合)
menu 以下のダイアログのページ
- 設定項目のヘルプ(ダイアログに変更 UI がない場合)
setup 以下の該当する分類のページ
- デフォルトの INI ファイル
installer\release\TERATERM.INI
国際化メッセージの対応
新しく国際化メッセージに対応する
- ソースコード
言語ファイルを読み込む
- ダイアログのメッセージの場合には、リソースファイルに英語のメッセージをデフォルトのテキストとして記述する
- 言語ファイルを修正する
修正するのは installer/release/lang_utf8 配下の言語ファイル
- English.lng(英語)
- 英語のメッセージを追加する
- メッセージの更新日として今日を記述する
- この対応時に更新されるので、最終翻訳日はない
- 英語の言語ファイルはプログラムから読み込まれないが、他の言語ファイルへ翻訳するときの参考となる
- Japanese.lng(日本語)
- 日本語に翻訳したメッセージを追加する
- メッセージの更新日として今日を記述する
- この対応時に更新されるので、最終翻訳日はない
- 他の言語ファイル
- 英語のメッセージを追加する
- メッセージの更新日として今日を記述する
- 翻訳はアップデートされていないので最終翻訳日は更新しない
国際化メッセージを翻訳する
- 言語ファイルを修正する
- 対象言語のファイルに英語で書かれているメッセージを、対象言語のメッセージに翻訳する
- メッセージの更新日は更新しない
- 最終翻訳日を更新する
マクロコマンド追加時の作業リスト
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桁目は 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
アイコン
アイコンファイルには、4bit の 32px, 16px 画像、32bit の 256px, 48px, 32px, 16px 画像を含めます。
各アイコンファイルには以下の種類の画像が含まれています。
T (Tera Term)
icon file | icon name | 4bit 32px | 4bit 16px | 32bit 256px | 32bit 48px | 32bit 32px | 32bit 16px |
teraterm\common\teraterm.ico | TTERM (Default) | BMP | BMP | PNG | BMP | BMP | BMP |
teraterm\common\teraterm_classic.ico | TTERM_CLASSIC | BMP | BMP | - | - | - | - |
teraterm\common\teraterm_3d.ico | TTERM_3D | BMP | BMP | PNG | BMP | BMP | BMP |
teraterm\common\teraterm_flat.ico | TTERM_FLAT | BMP | BMP | PNG | BMP | BMP | BMP |
VT (VT Window)
icon file | icon name | 4bit 32px | 4bit 16px | 32bit 256px | 32bit 48px | 32bit 32px | 32bit 16px |
teraterm\common\vt.ico | VT (Default) | BMP | BMP | PNG | BMP | BMP | BMP |
teraterm\common\vt_classic.ico | VT_CLASSIC | BMP | BMP | - | - | - | - |
teraterm\common\vt_3d.ico | VT_3D | BMP | BMP | PNG | BMP | BMP | BMP |
teraterm\common\vt_flat.ico | VT_FLAT | BMP | BMP | PNG | BMP | BMP | BMP |
TEK (TEK Windows)
icon file | icon name | 4bit 32px | 4bit 16px | 32bit 256px | 32bit 48px | 32bit 32px | 32bit 16px |
teraterm\common\tek.ico | TEK | BMP | BMP | - | - | - | - |
M (Macro)
icon file | icon name | 4bit 32px | 4bit 16px | 32bit 256px | 32bit 48px | 32bit 32px | 32bit 16px |
teraterm\ttpmacro\ttmacro.ico | - | BMP | BMP | PNG | BMP | BMP | BMP |
teraterm\ttpmacro\ttmacro_3d.ico | - | BMP | BMP | PNG | BMP | BMP | BMP |
teraterm\ttpmacro\ttmacro_flat.ico | - | BMP | BMP | PNG | BMP | BMP | BMP |
MF (Macro File)
icon file | icon name | 4bit 32px | 4bit 16px | 32bit 256px | 32bit 48px | 32bit 32px | 32bit 16px |
teraterm\ttpmacro\ttmacrof.ico | - | BMP | BMP | PNG | BMP | BMP | BMP |
keycode
icon file | icon name | 4bit 32px | 4bit 16px | 32bit 256px | 32bit 48px | 32bit 32px | 32bit 16px |
teraterm\keycode\keycode.ico | - | BMP | BMP | - | BMP | - | - |
TTSSH
icon file | icon name | 4bit 32px | 4bit 16px | 32bit 256px | 32bit 48px | 32bit 32px | 32bit 16px |
teraterm\ttpmacro\ttsecure.ico | flat2 (Default) | BMP | BMP | PNG | BMP | BMP | BMP |
teraterm\ttpmacro\ttsecure_classic.ico | classic | BMP | BMP | - | - | - | - |
teraterm\ttpmacro\ttsecure_yellow.ico | yellow | BMP | BMP | PNG | BMP | BMP | BMP |
teraterm\ttpmacro\ttsecure_green.ico | green | BMP | BMP | PNG | BMP | BMP | BMP |
teraterm\ttpmacro\ttsecure_flat.ico | flat | BMP | BMP | PNG | BMP | BMP | BMP |
TeraTerm Menu
icon file | icon name | 4bit 32px | 4bit 16px | 32bit 256px | 32bit 48px | 32bit 32px | 32bit 16px |
ttpmenu\teraterm.ico | - | BMP | BMP | - | BMP | BMP | BMP |
Cygterm+
icon file | icon name | 4bit 32px | 4bit 16px | 32bit 256px | 32bit 48px | 32bit 32px | 32bit 16px |
cygwin\cygterm\cygterm.ico | CYGTERM | BMP | BMP | - | BMP | BMP | BMP |
アイコンファイルへの画像の格納順は「ビット数が小さい順、サイズが大きい順」とします。
そうでないと、プログラムがサイズを指定せずに「最大サイズの画像」を取得しようとしたときに「最初の画像」が取り出されるためです。
アイコンファイルには 4bit 画像を含めます。
Windows NT 4.0 は 4bit アイコンのみサポートしているためです。また、Windows 2000 の通知領域も 4bit アイコンのみサポートしています。
4bit アイコンには以下の色が使用できます。
| #000000 | (0,0,0) |
| #800000 | (128,0,0) |
| #ff0000 | (255,0,0) |
| #ff00ff | (255,0,255) |
| #008080 | (0,128,128) |
| #008000 | (0,128,0) |
| #00ff00 | (0,255,0) |
| #00ffff | (0,255,255) |
| #000080 | (0,0,128) |
| #800080 | (128,0,128) |
| #0000ff | (0,0,255) |
| #c0c0c0 | (192,192,192) |
| #808080 | (128,128,128) |
| #808000 | (128,128,0) |
| #ffff00 | (255,255,0) |
| #ffffff | 255,255,255 |
アイコン用画像のソースファイルは以下に格納されています。
source file |
bit |
T |
VT |
Macro |
SSH |
Cygwin |
teraterm\common\flat_icon_16.psd |
4bit |
v |
v |
v |
v |
v |
32bit |
v |
v |
v |
v |
v |
teraterm\common\flat_icon_32.psd |
4bit |
v |
v |
v |
v |
v |
32bit |
v |
v |
v |
v |
v |
teraterm\common\flat_icon_48.psd |
32bit |
v |
v |
v |
v |
v |
teraterm\common\flat_icon_256.psd |
32bit |
v |
v |
v |
v |
- |
source file |
bit |
Keycode |
teraterm\common\keycode_48.psd |
4bit |
v |
source file |
bit |
T |
VT |
Macro |
Macro File |
SSH |
Cygwin |
teraterm\common\flat2_icon_16.psd |
4bit |
v |
v |
v |
v |
v |
v |
32bit |
v |
v |
v |
v |
v |
v |
teraterm\common\flat2_icon_32.psd |
4bit |
v |
v |
v |
v |
v |
v |
32bit |
v |
v |
v |
v |
v |
v |
teraterm\common\flat2_icon_48.psd |
32bit |
v |
v |
v |
v |
v |
v |
teraterm\common\flat2_icon_256.psd |
32bit |
v |
v |
v |
v |
v |
- |
ライブラリバージョンアップ時の変更箇所
変更が必要なファイル
- doc/(en|ja)/html/about/history.html
- ライブラリを使うコンポーネントの (その他|Misc) セクションに追記する
- doc/(en|ja)/html/reference/develop.html
- libs/download.cmake
- SRC_URL のバージョンを変更する
- DIR_IN_ARC のバージョンを変更する
- ARC_HASH を変更する。(ダウンロード破損チェック用)
- 公式配布元のハッシュ値を使用する。(LibreSSL, Oniguruma, zlib)
- 公式がハッシュ値を公開していないものは、手元で求める。(argon2, cJSON, SFMT)
- CHECK_HASH を変更する。(バージョンチェック用)
- バージョンチェックに使うファイルのハッシュ値を手元で求める。
- TeraTermProject/update_website リポジトリの add/manual フォルダ配下
- Web サイトで表示するライセンスファイルは TeraTermProject/update_website リポジトリで管理している。
ライセンスファイルに変更があれば差し替える。
ファイルのハッシュ値の求めかた
% sha256sum foo.bar
% openssl dgst -sha256 foo.bar
ダンプ
ダンプファイルを使ったデバグ方法。
必要なファイル
- dmpファイル(ミニダンプファイル)
-
ttermpro.exe 内で問題があったときに
フォルダ
%LOCALAPPDATA%\teraterm5
に出力されます。
teraterm_YYMMDD-HHMMSS_HASH.dmp といったファイル名になります。
- pdbファイル
-
pdb = program database files (symbol files)
exeファイルのデバグ情報ファイル
- exeファイル
-
ttermpro.exe
使い方
- ミニダンプをダブルクリックしてVisual Studioを起動する
- アクションの[ネイティブのみでデバグ]をクリック