ターミナルエミュレータの実装
Daisuke Murase <typester@cpan.org>
AS3 で ttyrec 再生
これをずっとWebで再生したいなって思ってた
as3になるとバイナリを扱えるようになると聞いていてずっとwktkしていて、
Flex2 SDK が出てすぐ作成開始。
だけど結構むずかしい
端末のエスケープシーケンスを地道に実装していかなければいけないのだけれど
資料がなかなかない
そもそもこういう古い技術に対する知識がないので
調べ方がわからないというのもある
ところでエスケープシーケンスってなによ?
ASCIIの文字以外のところ

制御文字ってとこですね
0x1b
ESC
0x00 - 0x1f だけじゃ数が足りないのでこれをprefixとしてつかう
ESC [
CSI
ESCの下にさらにあるprefixコード
CSI {number} A
= ESC [ {number} A
カーソルをnumber行上に移動
CSI {number} B
カーソルをnumber行下に移動
CSI {x} ; {y} H
カーソルを x, y の位置に移動 (超頻出)
そんなこんなでできたのがこれ
まだぜんぜん完璧じゃないのだけど、
エスケープシーケンス知ってると
プログラムにもいかせるかも!
print "0x1b[10,10H"
座標 10, 10 にカーソル移動したり
あれ?
端末の制御コード
まじめに実装したから
もしかして
Linuxアプリの出力を
そのまま流しても
再生できるんじゃね?
オンライン
NetHack プレーヤー
実装
実装 (サーバーサイド)
- perl + POE
- PoCo::Server::TCP (TCPサーバー)
- POE::Wheel::Run (nethack起動)
実装 (サーバーサイド)
TCPからの入力をそのままnethackへ、nethackの出力をtcpへつなぐだけのサーバー
実装 (クライアントサイド)
Socket + ByteArray
ttyrecプレーヤーの再生データをTCPからのストリームに変更したもの
これってほかにも
いろいろできそうですね
今、これをみて
夢がひろがりんぐしてるかたは
実装してみると楽しいよ!
schemeとか
haskellとか
言語実装ブームも面白いけど
制御コードもなかなか
面白いよ!
もし
TTYShareもっとよくしたる!
という
as3 プログラマ
perl プログラマ
いらっしゃったら
ご清聴ありがとうございました!