Update ptyDriver.py
This commit is contained in:
parent
224739ecfb
commit
05b9a72b38
@ -11,7 +11,7 @@ from fenrirscreenreader.core.screenDriver import screenDriver
|
|||||||
from fenrirscreenreader.utils import screen_utils
|
from fenrirscreenreader.utils import screen_utils
|
||||||
|
|
||||||
|
|
||||||
class fenrirScreen(pyte.HistoryScreen):
|
class fenrirScreen(pyte.Screen):
|
||||||
def set_margins(self, *args, **kwargs):
|
def set_margins(self, *args, **kwargs):
|
||||||
kwargs.pop("private", None)
|
kwargs.pop("private", None)
|
||||||
return super(fenrirScreen, self).set_margins(*args, **kwargs)
|
return super(fenrirScreen, self).set_margins(*args, **kwargs)
|
||||||
@ -101,7 +101,7 @@ class driver(screenDriver):
|
|||||||
self.env['screen']['autoIgnoreScreens'] = []
|
self.env['screen']['autoIgnoreScreens'] = []
|
||||||
self.env['general']['prevUser'] = getpass.getuser()
|
self.env['general']['prevUser'] = getpass.getuser()
|
||||||
self.env['general']['currUser'] = getpass.getuser()
|
self.env['general']['currUser'] = getpass.getuser()
|
||||||
def readAll(self, fd, timeout = 9999999, interruptFd = None, len = 2048):
|
def readAll(self, fd, timeout = 9999999, interruptFd = None, len = 8192):
|
||||||
bytes = b''
|
bytes = b''
|
||||||
fdList = []
|
fdList = []
|
||||||
fdList += [fd]
|
fdList += [fd]
|
||||||
@ -172,6 +172,18 @@ class driver(screenDriver):
|
|||||||
os.read(self.signalPipe[0], 1)
|
os.read(self.signalPipe[0], 1)
|
||||||
lines, columns = self.resizeTerminal(self.p_out)
|
lines, columns = self.resizeTerminal(self.p_out)
|
||||||
terminal.resize(lines, columns)
|
terminal.resize(lines, columns)
|
||||||
|
# output
|
||||||
|
if self.p_out in r:
|
||||||
|
try:
|
||||||
|
msgBytes = self.readAll(self.p_out.fileno(), timeout=0.2, interruptFd=sys.stdin)
|
||||||
|
except (EOFError, OSError):
|
||||||
|
active.value = False
|
||||||
|
break
|
||||||
|
terminal.feed(msgBytes)
|
||||||
|
os.write(sys.stdout.fileno(), msgBytes)
|
||||||
|
eventQueue.put({"Type":fenrirEventType.ScreenUpdate,
|
||||||
|
"Data":screen_utils.createScreenEventData(terminal.GetScreenContent())
|
||||||
|
})
|
||||||
# input
|
# input
|
||||||
if sys.stdin in r:
|
if sys.stdin in r:
|
||||||
try:
|
try:
|
||||||
@ -187,19 +199,7 @@ class driver(screenDriver):
|
|||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
eventQueue.put({"Type":fenrirEventType.ByteInput,
|
eventQueue.put({"Type":fenrirEventType.ByteInput,
|
||||||
"Data":msgBytes })
|
"Data":msgBytes })
|
||||||
# output
|
|
||||||
if self.p_out in r:
|
|
||||||
try:
|
|
||||||
msgBytes = self.readAll(self.p_out.fileno(), timeout=0.001, interruptFd=sys.stdin)
|
|
||||||
except (EOFError, OSError):
|
|
||||||
active.value = False
|
|
||||||
break
|
|
||||||
terminal.feed(msgBytes)
|
|
||||||
os.write(sys.stdout.fileno(), msgBytes)
|
|
||||||
eventQueue.put({"Type":fenrirEventType.ScreenUpdate,
|
|
||||||
"Data":screen_utils.createScreenEventData(terminal.GetScreenContent())
|
|
||||||
})
|
|
||||||
except Exception as e: # Process died?
|
except Exception as e: # Process died?
|
||||||
print(e)
|
print(e)
|
||||||
active.value = False
|
active.value = False
|
||||||
|
Loading…
Reference in New Issue
Block a user