端末から色付きでコピペしたい

  • 投稿日:
  • by
  • カテゴリ:



わがままな要望です。


端末ウィンドウがカラフルになっても、文書へ色付きでコピペできなければ魅力半減です。


常々各種テキストエディタにも同様の不便を感じています。


その点ではVisualStudioなどのIDEはマメに対応しており、例えばソースの一部をWORD文書にコピペすると、書式で色を付けてくれます。


VS2005のソースエディタからソースをコピペしたWORD文書の例:


f:id:syasuda:20100410005134p:image


これと同じことをTeratermでも対応してくれたらなぁ、ということです。


チケット一覧を眺めると、そんな要望は出ていないようです。


http://sourceforge.jp/projects/ttssh2/ticket/


検討だけしてみました。


デバッガで追いかけたところ、void BuffCBCopy(BOOL Table) @ buffer.cでバッファに詰めて、void CBClose() @ clipboar.cでクリップボードにデータを設定しているようです。


SetClipboardData(CF_TEXT, CBCopyHandle);


あとは端末ウィンドウに表示されている内容の属性が入っている場所を確認です。


これは、先ほどのWORD文書にコピペした部分の以下のメモリに格納されているらしいことがわかりました。AttrBuff2ですな。



static PCHAR CodeBuff; /* Character code buffer */
static PCHAR AttrBuff; /* Attribute buffer */
static PCHAR AttrBuff2; /* Color attr buffer */
static PCHAR AttrBuffFG; /* Foreground color attr buffer */
static PCHAR AttrBuffBG; /* Background color attr buffer */

あとはクリップボードのサンプルコード辺りを参考にデータの詰め込みを変更すれば色付きでクリップボードに転送できるはずです。


# 言うは易し、の典型のような