我正在尝试与 NCURSES 程序进行交互。
作为一个例子,我正在使用 GNU Screen 并在里面运行 aptitude。(你可以用 mc 来代替。)
下面的程序使用 -x 启动一个屏幕会话以连接到我的会话。
我想通过按向下箭头和向上箭头进行导航。
如果我发送“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 (up) 和 ESC [ B (down) 在命令历史记录中行走与 bash 一起使用。
想知道为什么在 aptitude 中我没有将 TERM=xterm 更改为 TERM=ansi 来修复它。为什么 xterm 不起作用仍然让我感到困惑。