NCURSES プログラムと対話しようとしています。
例として、私は GNU Screen を使用しており、内部で aptitude を実行しています。(代わりに mc で試すことができます。)
以下のプログラムは、私のセッションに接続するために -x で screen セッションを開始します。
下向き矢印と上向き矢印を押してナビゲートしたい。
終了するために「q」を送信すると、他の画面セッションにボックスがポップアップ表示されます。
矢印キーなどの特殊キーを機能させるにはどうすればよいですか?
現在、送信している VT102 シーケンスを無視しているようです。
from twisted.internet import protocol, reactor
class MyPP(protocol.ProcessProtocol):
def connectionMade(self):
reactor.callLater(1.0, self.foo)
def foo(self):
self.transport.write('\033[B')
def processExited(self, reason):
print "processExited, status %s" % (reason.value.exitCode,)
def outReceived(self, data):
print data
def errReceived(self, data):
print "errReceived!", data
pp = MyPP()
command = ['screen', '-x']
reactor.spawnProcess(pp, command[0], command, {'TERM':'xterm'}, usePTY=True)
reactor.run()
更新:
Ted は、ESC [ A (上) と ESC [ B (下) を使用してコマンド履歴をたどると、bash で動作することを教えてくれました。
なぜ適切ではないのか疑問に思っています。TERM=xterm を TERM=ansi に変更して修正しました。なぜ xterm が機能しないのか、いまだに困惑しています。