SVX日記
2006-04-06(Thu) イロイッカイズツ
まず、キーをバインドしよう。TERATERMではKEYBOARD.CNFに記述を加えることで、特定の文字列を打ち込んだり、マクロやメニューコマンドを実行したりできる。今回はマクロを起動する必要があるので「User5」として、マクロ「chgcol.ttl」を起動するための記述を追加する。
; Shift + Ctrl + B key: set bash env
User1=1584,2,rc.ttl
; Shift + Ctrl + V key: set vi env
User2=1583,0,:set number$0D:set tabstop=4$0D:set showmode$0D:set noshowmatch$0D:set noautoindent$0D
; Shift + Ctrl + 4 key: set vi tab 4
User3=1541,0,:set tabstop=4$0D
; Shift + Ctrl + 8 key: set vi tab 8
User4=1576,0,:set tabstop=8$0D
; Shift + Ctrl + F12 key: change color
User5=1624,2,chgcol.ttl
1624とかいう数字はキーバインドで、TERATERM付属のkeycode.exeを利用して調べる。なお、この記述をKEYBOARD.CNFに加えたら、一旦すべてのTARATERMを終了しなければならない。KEYBOARD.CNFは起動時にしか読み込まれないからだ。
gettitle titletext ; get text in title bar
strcompare titletext '2' ; 1...
if result=-1 goto change2 ; -> Green
strcompare titletext '3' ; 2...
if result=-1 goto change3 ; -> Bule
strcompare titletext 'SUZAKU' ; 3...
if result=-1 goto change1 ; -> Orange
strcompare titletext 'ml4' ; SUZAKU...
if result=-1 goto change1 ; -> Orange
strcompare titletext 'wbel3' ; ml4...
if result=-1 goto change3 ; -> Blue
strcompare titletext 'wbel4' ; wbel3...
if result=-1 goto change2 ; -> Green
; wbel4...
goto change3 ; -> Bule
:change1
restoresetup 'TERATERM1.INI' ; Orange
end
:change2
restoresetup 'TERATERM2.INI' ; Green
end
:change3
restoresetup 'TERATERM3.INI' ; Blue
end
タイトルバーのテキストによって、違うINIファイルを読み直すというだけの処理。まさにそれだけ。ただし、テキストは大小比較により判別を行っているので、項目はアスキーコード順に並べておく必要があることに注意。あとはINIファイルを3つ用意。元のINIファイルをコピーして、各々に、異なる文字の色、異なるタイトルバー文字列を指定する。
・TERATERM1.INI(橙系、プラズマディスプレイ風)
VTColor=255,207,159,64,32,0
VTBoldColor=255,223,191,64,32,0
Title=1-ColorChange
・TERATERM2.INI(緑系、グリーンディスプレイ風)
VTColor=112,223,0,16,48,0
VTBoldColor=176,255,64,16,48,0
Title=2-ColorChange
・TERATERM3.INI(青系、mz-2000外部ディスプレイ風?)
VTColor=128,208,255,32,16,48
VTBoldColor=208,208,255,32,16,48
Title=3-ColorChange
なお、注意深くマクロを読めばわかるが、単にサイクリックに変えているだけでなく、一発目だけはタイトルバーの記述によって特定の色に変化するようになっている。よって「WBEL3は緑で、WBEL4は青で……みたいなテーマカラーを持たせつつ」も、色の変化と同時にタイトルバーの記述を本来のホストと違う名前(2-ColorChangeとか)に変化させているので「サイクリックに好みの色を選択」できるようにもなっているわけである。まぁ、この挙動を説明するのはちょっとややこしいが、まぁ、動かしてみりゃわかる。
で、以前も公開したが、その場で好みの環境を整えるマクロ「rc.ttl」の最後に、先のマクロをincludeするようにもしてしまう。うひゃひゃ、カラフルかつ快適じゃ!!
Prompt1 = '$ '
Prompt2 = '# '
Shell = "bash"
sendln Shell
wait Prompt1 Prompt2
Env = "export LANG=ja_JP.eucjp; export LESSCHARSET=iso8859"
sendln Env
wait Prompt1 Prompt2
Alias = "alias ls='ls -lrtF'; alias cp='cp -p'; alias ex='pushd +1'"
sendln Alias
wait Prompt1 Prompt2
Uuenc = "function uuenc () { gzip -c $1 | uuencode uuuuuuuu.gz | sed 's/$/!/g'; }"
sendln Uuenc
wait Prompt1 Prompt2
Uudec = "function uudec () { cat $1 | sed 's/!$//g' | uudecode; gunzip -N uuuuuuuu.gz; rm $1; }"
sendln Uudec
wait Prompt1 Prompt2
Prompt = "PS1='\[\033[1;1m\]\n<\u> \d - \t\n\H:$PWD \$\[\033[0m\] \e]2;$HOSTNAME\a'"
sendln Prompt
include 'chgcol.ttl'
なお、昨日のプロンプトから、さりげなく$PWDを抜いている。どうも、タイトルバーの文字列が長すぎるとマクロコマンドのgettitleあたりでコケてしまうのである。おそらく、TERATERM側で文字列の終端処理をちゃんとしとらんようである。まぁ、大して実害はないのでそこはあきらめよう。