SVX日記

2004|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|

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

  さて。これで完了である。これにより「Shift + Ctrl + F12」を押すごとに、端末のイメージカラーをサイクリックに変更することができる。

  画像の説明

  なお、注意深くマクロを読めばわかるが、単にサイクリックに変えているだけでなく、一発目だけはタイトルバーの記述によって特定の色に変化するようになっている。よって「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側で文字列の終端処理をちゃんとしとらんようである。まぁ、大して実害はないのでそこはあきらめよう。

  しかしこの色、コダわって微調整していると、どこまでもイジり続けてしまいそうだ……グリーンディスプレイはこんな色ではない!! もっとこうキューっと……とかね。それよりなによりTERATERMは全画面モードをサポートしたりしないのかなぁ、オマケにインターレース風表示とかして……こんな感じだ。うぅむ、シブい。

  画像の説明