Tôi đang cố gắng tương tác với chương trình NCURSES.Làm cách nào để tôi tương tác với quy trình con giả vờ là thiết bị đầu cuối?
Ví dụ tôi đang sử dụng Màn hình GNU và chạy aptitude bên trong. (bạn có thể dùng thử với mc thay thế.)
Chương trình bên dưới bắt đầu phiên màn hình với -x để kết nối với phiên của tôi.
Tôi muốn điều hướng bằng cách nhấn Mũi tên xuống và Mũi tên lên.
Nếu tôi gửi 'q' để thoát, tôi thấy một hộp bật lên trong phiên màn hình khác của tôi.
Tôi cần làm gì để nhận các phím đặc biệt như phím mũi tên hoạt động?
Dường như nó bỏ qua chuỗi VT102 mà tôi đang gửi.
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()
CẬP NHẬT:
Ted nói với tôi đi bộ trong lịch sử lệnh với ESC [A (lên) và ESC [B (xuống) làm việc với bash.
Tự hỏi tại sao trong aptitude nó không thay đổi TERM = xterm thành TERM = ansi sửa lỗi. Tại sao xterm không làm việc vẫn còn đố tôi.
Đây là câu hỏi hơi khó hiểu - bạn có hỏi cách gửi các phím điều khiển, chẳng hạn như Mũi tên xuống, trên mạng qua Xoắn không? – Michael
Không phải trên mạng. spawnProcess bắt đầu một quá trình cục bộ và nối các mô tả tập tin để bạn có thể nói chuyện với nó. –
ESC B trong 'foo' có nghĩa là mũi tên xuống không? Mũi tên xuống tạo ESC [B, không chỉ ESC B. – torek