Maybe you know that I love Cataclysm DDA, I think that is the best floss game at the moment.
Well, I am trying to wrap the game with a script in python for catch the stdout and send key press. This game have 2 modes: SDL and ncurses. the target is ncurses of course.
"Why do mdtrooper make this weird script?" It is a good question. I want to wrap the ncurses game to have only a simple stdin and stdout (such as CLI or API) to "link" with Godot. And yes, in Godot do the 3D magic.
I look for help in other places:
Open a process and catch stdout and send custom keypress in Stackoverflow
Godot 3D frontend (0,000001 % complete) in oficial CataclysmDDA forum
My proofs are:
A simple ncurses proof:
- {l Code}: {l Select All Code}
#! /usr/bin/python3
import sys,os
import curses
def draw_menu(stdscr):
k = 0
while (k != ord('q')):
stdscr.clear()
height, width = stdscr.getmaxyx()
stdscr.addstr(0, 0, "HOLA {}".format(k))
stdscr.refresh()
k = stdscr.getch()
def main():
curses.wrapper(draw_menu)
if __name__ == "__main__":
main()
Some fault tryings to wrap the ncurses proof:
- {l Code}: {l Select All Code}
#! /usr /bin/python3
"""
ps -A | grep cata
xdotool search --pid 3819
xdotool key --window 50331670 q
"""
"""
from subprocess import Popen, PIPE
#p = Popen('./test5.py', stdin=PIPE, stdout=PIPE, shell=True)
#p = Popen('./test5.py', shell=True)
p = Popen('./test2.py')
print(p.pid)
sleep(100)
# p.stdin.close()
# p.stdout.close()
# p.wait()
"""
# ~ import pexpect
# ~ child = pexpect.spawn("./test5.py")
# ~ child.send('a')
# ~ child.send('b')
# ~ child.interact()
# ~ import sys
# ~ import pexpect
# ~ child = pexpect.spawn('./test5.py', logfile=open("/tmp/file", "wb"))
# ~ child.logfile = open("/tmp/file", "wb")
# ~ child.expect(pexpect.EOF)
# ~ child.send('a')
# ~ child.send('q')
# ~ child.interact()
"""
https://stackoverflow.com/questions/2575528/simulating-key-press-event-using-python-for-linux
spawn
fout = file('output.txt', 'w') child.logfile = fout
"""
import sys
from time import sleep
import pexpect
child = pexpect.spawn('./test5.py')
child.logfile = open("/tmp/file", "wb")
sleep(2)
child.send('a')
print(child.read())
# ~ child.send('q')
I am very lost. I don't know the way to wrap the ncurses app.
Regards.