On Wed, Jan 6, 2021 at 5:54 AM Marnix <[email protected]> wrote:

> “How do you indent that you users interact with your app?’
>
> The application is an Interactive Fiction Interpreter. All user input is
> text (keyboard) and so is the application’s output. When running locally,
> the application runs ins a CMD-window (windows) or a terminal window (linux
> and macos). So I think what I need is one web page with an input prompt and
> output on the same page. Sort of like a chat conversation: enter some text
> and get a reply.
>

In that case maybe you want to look into some kind of web-based terminal
similar UI.. you can then hook that up to emscripten either via
stdin/stdout, or probably more simply via direct functions call from JS to
C++ and back again.
For terminals in JS it looks like there are many options:
https://xtermjs.org/ https://hterm.org/ both look good.

You probably don't want to be doing `window.input` which is why emscripten
is doing under the hood by default here.

Having said that there may be a bug that is worth fixing around how stdin
is being read from the result of `window.input`.. its might be worth fixing
but it doesn't sounds like it would lead you to a solution you could use in
production.

Op woensdag 6 januari 2021 om 13:24:41 UTC+1 schreef [email protected]:
>
>> Reading text input via input pop-ups is probably only useful debugging.
>>   I think the primitive support for reading stdin in this way allows you to
>> get things running quickly, but any production application on the web
>> probably needs to be redesigned such that it gets its input some other more
>> web-friendly way.   How do you indent that you users interact with your
>> app?
>>
>> If you are interested the code in question (that gets input from
>> `window.input` JS API) seems to be here:
>> https://github.com/emscripten-core/emscripten/blob/289befa9cd7120a7d21835b45903993c44b2c593/src/library_tty.js#L133
>>
>> On Sat, Jan 2, 2021 at 4:52 AM Marnix <[email protected]> wrote:
>>
>>> I’m on Windows 10 and have a pretty large (I think) console application
>>> written in C. 90+ files and about 17.000 lines of code.
>>>
>>> It compiles without errors/warnings in emcc. However, when I run it, the
>>> text input does not seem to work correctly. It keeps popping up the input
>>> window and buffering text. So I went back to basics and to reproduce and
>>> isolate the issue added a scanf() statement to the hello_world program that
>>> comes with the emscripten package:
>>>
>>> ===================================================
>>> /*
>>> * Copyright 2011 The Emscripten Authors. All rights reserved.
>>> * Emscripten is available under two separate licenses, the MIT license
>>> and the
>>> * University of Illinois/NCSA Open Source License. Both these licenses
>>> can be
>>> * found in the LICENSE file.
>>> */
>>> #include <stdio.h>
>>>
>>> int main() {
>>>   char input[25];
>>>
>>>   printf("hello, world!\n");
>>>   printf("Enter input: ");
>>>   scanf("%s", input);
>>>   printf("\nInput is: %s\n", input);
>>>
>>>   return 0;
>>> }
>>> ===================================================
>>>
>>>  I compiled the file with command “emcc tests/hello_world.c –o
>>> hello_world.html”.
>>>
>>> This little program has the same issue. It keeps asking for input and
>>> only when I cancel the input window it prints “hello, world!” “Enter input:
>>> “ and “Input is: <what I entered>“.
>>>
>>> The program is at this link on my website so you can see the behavior:
>>> hello_world <https://www.xvan.nl/emscripten/hello_world.html>
>>>
>>> What I don't understand: why is the input window coming back each time
>>> and why is the text buffered until I cancel the input window?
>>>
>>> I did search the group, but actually I don’t know what I’m looking for.
>>>
>>>
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "emscripten-discuss" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/emscripten-discuss/29395d49-9ada-4100-b542-f1e59602137bn%40googlegroups.com
>>> <https://groups.google.com/d/msgid/emscripten-discuss/29395d49-9ada-4100-b542-f1e59602137bn%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>> --
> You received this message because you are subscribed to the Google Groups
> "emscripten-discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/emscripten-discuss/217e6a32-b62b-4693-8799-28f19d9a08d8n%40googlegroups.com
> <https://groups.google.com/d/msgid/emscripten-discuss/217e6a32-b62b-4693-8799-28f19d9a08d8n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/emscripten-discuss/CAL_va285mig-dJKNEsHTgrq9UfYnokx3rcdh4V5PLHurcdH4mQ%40mail.gmail.com.

Reply via email to