From 0740af1e47aacf61a6c3f617e8930dbb4ae3756c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lukas=20Backstr=C3=B6m?= <lukas@erlang.org>
Date: Wed, 4 Sep 2024 11:40:40 +0200
Subject: [PATCH 1/7] stdlib: Add custom shell user's guide

---
 lib/stdlib/doc/assets/pshell.es             |  87 ++++++++
 lib/stdlib/doc/docs.exs                     |   2 +
 lib/stdlib/doc/guides/custom_shell.md       | 220 ++++++++++++++++++++
 lib/stdlib/doc/guides/terminal_interface.md |  21 ++
 lib/stdlib/src/shell.erl                    |   6 +-
 5 files changed, 334 insertions(+), 2 deletions(-)
 create mode 100755 lib/stdlib/doc/assets/pshell.es
 create mode 100644 lib/stdlib/doc/guides/custom_shell.md
 create mode 100644 lib/stdlib/doc/guides/terminal_interface.md

diff --git a/lib/stdlib/doc/assets/pshell.es b/lib/stdlib/doc/assets/pshell.es
new file mode 100755
index 000000000000..b2cb0583dfb1
--- /dev/null
+++ b/lib/stdlib/doc/assets/pshell.es
@@ -0,0 +1,87 @@
+#!/usr/bin/env escript
+%% pshell.es
+-export([start/0]).
+main(_Args) ->
+    shell:start_interactive({?MODULE, start, []}),
+    timer:sleep(infinity). %% Make sure the escript does not exit
+
+-spec start() -> pid().
+start() ->
+    spawn(fun() ->
+                  io:setopts([{expand_fun, fun expand_fun/1}]),
+                  io:format("Starting process inspection shell~n"),
+                  loop()
+          end).
+
+-spec expand_fun(ReverseLine :: string()) -> {yes, string(), list(string())} |
+          {no, nil(), nil()}.
+expand_fun("") ->
+    {yes, "", ["list", "inspect", "suspend", "resume"]};
+expand_fun(Curr) ->
+    expand_fun(lists:reverse(Curr), ["list", "inspect", "suspend", "resume"]).
+
+expand_fun(_Curr, []) ->
+    {no, "", []};
+expand_fun(Curr, [H | T]) ->
+    case lists:prefix(Curr, H) of
+        true ->
+            {yes, lists:reverse(lists:reverse(H) -- lists:reverse(Curr)), []};
+        false ->
+            expand_fun(Curr, T)
+    end.
+
+loop() ->
+    case io:get_line("> ") of
+        eof -> ok;
+        {error, Reason} -> exit(Reason);
+        Data -> eval(string:trim(Data))
+    end,
+    loop().
+
+eval("list") ->
+    Format = " ~.10ts | ~.10ts | ~.10ts~n",
+    io:format(Format,["Pid", "Name", "MsgQ Len"]),
+    [begin
+         [{registered_name,Name},{message_queue_len,Len}]
+             = erlang:process_info(Pid, [registered_name, message_queue_len]),
+         io:format(Format,[to_list(Pid), to_list(Name), to_list(Len)])
+     end || Pid <- processes()];
+eval("inspect " ++ PidStr) ->
+    case parse_pid(PidStr) of
+        invalid -> ok;
+        Pid ->
+            [{registered_name, Name}, {memory, Memory}, {messages, Messages}, {status, Status}] =
+                erlang:process_info(Pid, [registered_name, memory, messages, status]),
+            io:format("Pid: ~p~nName: ~ts~nStatus: ~p~nMemory: ~p~nMessages: ~p~n",
+                      [Pid, to_list(Name), Status, Memory, Messages])
+    end;
+eval("suspend " ++ PidStr) ->
+    case parse_pid(PidStr) of
+        invalid -> ok;
+        Pid ->
+            erlang:suspend_process(Pid),
+            io:format("Suspeneded ~ts~n", [Pid])
+    end;
+eval("resume " ++ PidStr) ->
+    case parse_pid(PidStr) of
+        invalid -> ok;
+        Pid ->
+            erlang:resumne_process(Pid),
+            io:format("Resumed ~ts~n", [Pid])
+    end;
+eval(Unknown) ->
+    io:format("Unknown command: '~ts'~n",[Unknown]).
+
+to_list(Pid) when is_pid(Pid) ->
+    pid_to_list(Pid);
+to_list(Atom) when is_atom(Atom) ->
+    atom_to_list(Atom);
+to_list(Int) when is_integer(Int) ->
+    integer_to_list(Int);
+to_list(List) when is_list(List) ->
+    List.
+
+parse_pid(PidStr) ->
+    try list_to_pid(PidStr)
+    catch _:_ -> io:format("Invalid pid format~n"), invalid
+    end.
\ No newline at end of file
diff --git a/lib/stdlib/doc/docs.exs b/lib/stdlib/doc/docs.exs
index 15957e70f56c..d3cb216f15b3 100644
--- a/lib/stdlib/doc/docs.exs
+++ b/lib/stdlib/doc/docs.exs
@@ -71,6 +71,8 @@
   extras: [
     "guides/introduction.md",
     "guides/io_protocol.md",
+    "guides/custom_shell.md",
+    "guides/terminal_interface.md",
     "guides/unicode_usage.md",
     "guides/uri_string_usage.md",
     "references/assert_hrl.md",
diff --git a/lib/stdlib/doc/guides/custom_shell.md b/lib/stdlib/doc/guides/custom_shell.md
new file mode 100644
index 000000000000..4e36d87d94cb
--- /dev/null
+++ b/lib/stdlib/doc/guides/custom_shell.md
@@ -0,0 +1,220 @@
+<!--
+%CopyrightBegin%
+
+Copyright Ericsson AB 2024. All Rights Reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+%CopyrightEnd%
+-->
+# Creating a custom shell
+
+This guide will show how to create a custom shell. The most common
+use case for this is to support other languages running on the Erlang VM,
+but it can also be used to create specialized debugging shells a system.
+
+This guide will build on top of the built-in [Erlang line editor](`m:edlin`),
+which means that the keybindings described in [tty - A Command-Line Interface](`e:erts:tty.md`)
+can be used edit the input before it is passed to the custom shell. This
+somewhat limits what the custom shell can do, but it also means that we do not
+have to implement line editing ourselves. If you need more control over the
+shell, then use [Creating a terminal application](terminal_interface.md) as
+a starting-point to build your own line editor and shell.
+
+## A process inspection shell
+
+The custom shell that we are going to build is a process inspection shell
+that supports the following commands:
+
+* `list` - lists all processes
+* `inspect pid()` - inspect a process
+* `suspend pid()` - suspend a process
+* `resume pid()` - resume a process
+
+Lets get started!
+
+## Starting with a custom shell
+
+The custom shell will be implemented in an `m:escript`, but it could just
+as well be in a regular system or as a remote shell. To start a custom shell
+we first need to start Erlang in `-noinput` or `-noshell` mode. `m:escript` are
+started by default in `-noshell` mode, so we don't have to do anything special here.
+To start the custom shell we then call `shell:start_interactive/1`.
+
+```
+#!/usr/bin/env escript
+%% pshell.es
+-export([start/0]).
+main(_Args) ->
+    shell:start_interactive({?MODULE, start, []}),
+    timer:sleep(infinity). %% Make sure the escript does not exit
+
+-spec start() -> pid().
+start() ->
+    spawn(fun() ->
+                  io:format(~"Starting process inspection shell~n"),
+                  loop()
+          end).
+
+loop() ->
+    receive _M -> loop() end.
+```
+
+If we run the above we will get this:
+
+```
+$ ./pshell.es
+Erlang/OTP 28 [DEVELOPMENT] [erts-15.0.1] [source-b395339a02] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [jit:ns]
+
+Starting process inspection shell
+
+```
+
+The `t:io:standard_io/0` of the created shell process will be set to the
+Erlang line editor, which means that we can use the normal `m:io` functions
+to read and write data to the terminal.
+
+## Adding our first command
+
+Let's start adding the shell interface. We will use `io:get_line/1` to read from
+`t:io:standard_io/0` as this shell will be line based. However, for a more complex
+shell it is better to send [`get_until` I/O requests](io_protocol.md#input-requests)
+as commands read that way can span multiple lines. So we expand our `loop/0` with
+a `io:get_line/1` and pass the results to our parser.
+
+```
+loop() ->
+    case io:get_line("> ") of
+        eof -> ok;
+        {error, Reason} -> exit(Reason);
+        Data -> eval(string:trim(Data))
+    end,
+    loop().
+
+eval("list") ->
+    Format = " ~.10ts | ~.10ts | ~.10ts~n",
+    io:format(Format,["Pid", "Name", "MsgQ Len"]),
+    [begin
+         [{registered_name,Name},{message_queue_len,Len}]
+             = erlang:process_info(Pid, [registered_name, message_queue_len]),
+         io:format(Format,[to_list(Pid), to_list(Name), to_list(Len)])
+     end || Pid <- processes()];
+eval(Unknown) ->
+    io:format("Unknown command: '~ts'~n",[Unknown]).
+
+to_list(Pid) when is_pid(Pid) ->
+    pid_to_list(Pid);
+to_list(Atom) when is_atom(Atom) ->
+    atom_to_list(Atom);
+to_list(Int) when is_integer(Int) ->
+    integer_to_list(Int);
+to_list(List) when is_list(List) ->
+    List.
+```
+
+If we run the above we will get this:
+
+```txt
+$ ./pshell.es
+Erlang/OTP 28 [DEVELOPMENT] [erts-15.0.1] [source-b395339a02] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [jit:ns]
+
+Starting process inspection shell
+> list
+ Pid        | Name       | MsgQ Len  
+ <0.0.0>    | init       | 0         
+ <0.1.0>    | erts_code_ | 0         
+ <0.2.0>    |            | 0         
+ <0.3.0>    |            | 0         
+ <0.4.0>    |            | 0         
+ <0.5.0>    |            | 0         
+ <0.6.0>    |            | 0         
+ <0.7.0>    |            | 0         
+ <0.8.0>    | socket_reg | 0         
+ <0.10.0>   |            | 0         
+ <0.11.0>   | erl_prim_l | 0         
+ <0.43.0>   | logger     | 0         
+ <0.45.0>   | applicatio | 0
+...
+```
+
+With this all in place we can now easily add `inspect`, `suspend` and `resume` as well.
+
+```
+eval("inspect " ++ PidStr) ->
+    case parse_pid(PidStr) of
+        invalid -> ok;
+        Pid ->
+            [{registered_name, Name}, {memory, Memory}, {messages, Messages}, {status, Status}] =
+                erlang:process_info(Pid, [registered_name, memory, messages, status]),
+            io:format("Pid: ~p~nName: ~ts~nStatus: ~p~nMemory: ~p~nMessages: ~p~n",
+                      [Pid, to_list(Name), Status, Memory, Messages])
+    end;
+eval("suspend " ++ PidStr) ->
+    case parse_pid(PidStr) of
+        invalid -> ok;
+        Pid ->
+            erlang:suspend_process(Pid),
+            io:format("Suspeneded ~ts~n")
+    end;
+eval("resume " ++ PidStr) ->
+    case parse_pid(PidStr) of
+        invalid -> ok;
+        Pid ->
+            erlang:resumne_process(Pid),
+            io:format("Resumed ~ts~n")
+    end;
+```
+
+## Adding autocompletion
+
+Wouldn't it be great if we could add some simple auto-completion for our shell? We can do that
+by setting a `m:edlin_expand` fun for our shell. This is done by calling [`io:setopts([{expand_fun, Fun}])`](`io:setopts/2`). The fun that we provide is will receive the reversed current line from
+`m:edlin` and is expected to return possible expansions. Let's start by adding a simple fun to
+expand our commands.
+
+```
+-spec start() -> pid().
+start() ->
+    spawn(fun() ->
+                  io:setopts([{expand_fun, fun expand_fun/1}]),
+                  io:format(~"Starting process inspection shell~n"),
+                  loop()
+          end).
+
+-spec expand_fun(ReverseLine :: string()) -> {yes, string(), list(string())} |
+          {no, nil(), nil()}.
+expand_fun("") -> %% If line is empty, we list all available commands
+    {yes, "", ["list", "inspect", "suspend", "resume"]};
+expand_fun(Curr) ->
+    expand_fun(lists:reverse(Curr), ["list", "inspect", "suspend", "resume"]).
+
+expand_fun(_Curr, []) ->
+    {no, "", []};
+expand_fun(Curr, [Cmd | T]) ->
+    case lists:prefix(Curr, Cmd) of
+        true ->
+            %% If Curr is a prefix of Cmd we subtract Curr from Cmd to get the
+            %% characters we need to complete with.
+            {yes, lists:reverse(lists:reverse(Cmd) -- lists:reverse(Curr)), []};
+        false ->
+            expand_fun(Curr, T)
+    end.
+```
+
+With the above code we will get expansions of our commands if we hit `<TAB>` in the shell.
+Its possible to make very complex completion algorithms, for example the Erlang shell
+has completions based on the function specifications of your code. It is important though that
+the shell still feels responsive, so calling out to a LLM model for completion may or may not
+be a good idea.
+
+The complete source code for this example can be found [here](assets/pshell.es).
\ No newline at end of file
diff --git a/lib/stdlib/doc/guides/terminal_interface.md b/lib/stdlib/doc/guides/terminal_interface.md
new file mode 100644
index 000000000000..54eec5e6140e
--- /dev/null
+++ b/lib/stdlib/doc/guides/terminal_interface.md
@@ -0,0 +1,21 @@
+<!--
+%CopyrightBegin%
+
+Copyright Ericsson AB 2024. All Rights Reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+%CopyrightEnd%
+-->
+# Creating a terminal application
+
diff --git a/lib/stdlib/src/shell.erl b/lib/stdlib/src/shell.erl
index 775fcf5219d7..3135c95c2461 100644
--- a/lib/stdlib/src/shell.erl
+++ b/lib/stdlib/src/shell.erl
@@ -85,11 +85,13 @@ allowed:
   data.
 
 - **[mfa()](`t:erlang:mfa/0`)** - Starts the interactive shell using
-  [`mfa()`](`t:erlang:mfa/0`) as the default shell.
+  [`mfa()`](`t:erlang:mfa/0`) as the default shell. The `t:mfa/0` should
+  return the `t:pid/0` of the created shell process.
 
 - **\{[node()](`t:erlang:node/0`), [mfa()](`t:erlang:mfa/0`)\}** - Starts the
   interactive shell using [`mfa()`](`t:erlang:mfa/0`) on
-  [`node()`](`t:erlang:node/0`) as the default shell.
+  [`node()`](`t:erlang:node/0`) as the default shell. The `t:mfa/0` should
+  return the `t:pid/0` of the created shell process.
 
 - **\{remote, [`string()`](`t:erlang:string/0`)\}** - Starts the interactive
   shell using as if [`-remsh`](`e:erts:erl_cmd.md#remsh`) was given to

From eeff64c77548b7011d6eadcdac32356e7ded3c4a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lukas=20Backstr=C3=B6m?= <lukas@erlang.org>
Date: Thu, 5 Sep 2024 17:18:26 +0200
Subject: [PATCH 2/7] shell: Add support for reading individual keystrokes

---
 bootstrap/lib/kernel/ebin/group.beam        | Bin 20640 -> 20976 bytes
 bootstrap/lib/kernel/ebin/prim_tty.beam     | Bin 23764 -> 23732 bytes
 bootstrap/lib/kernel/ebin/user_drv.beam     | Bin 18512 -> 18772 bytes
 bootstrap/lib/kernel/ebin/user_sup.beam     | Bin 1968 -> 1976 bytes
 bootstrap/lib/stdlib/ebin/io_lib.beam       | Bin 14600 -> 14760 bytes
 bootstrap/lib/stdlib/ebin/shell.beam        | Bin 41564 -> 41660 bytes
 erts/emulator/nifs/common/prim_tty_nif.c    | 227 ++++++++++----------
 lib/kernel/src/group.erl                    |  59 +++--
 lib/kernel/src/prim_tty.erl                 |  83 ++++---
 lib/kernel/src/user_drv.erl                 |  64 ++++--
 lib/kernel/src/user_sup.erl                 |   4 +-
 lib/kernel/test/interactive_shell_SUITE.erl | 140 ++++++++++++
 lib/stdlib/doc/assets/tic-tac-toe.es        | 106 +++++++++
 lib/stdlib/doc/guides/terminal_interface.md | 154 +++++++++++++
 lib/stdlib/src/io_lib.erl                   |  16 +-
 lib/stdlib/src/shell.erl                    |   6 +-
 make/ex_doc.exs                             |  12 +-
 17 files changed, 673 insertions(+), 198 deletions(-)
 create mode 100755 lib/stdlib/doc/assets/tic-tac-toe.es

diff --git a/bootstrap/lib/kernel/ebin/group.beam b/bootstrap/lib/kernel/ebin/group.beam
index dcba3c61415b757514032e8abd660f4eabfef705..d286e8c78648f38f6418868adf2cec9553067ce2 100644
GIT binary patch
literal 20976
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
P=NbFMGbfRU%K!a82B--^

literal 20640
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
VK%4l;-?$&o=!4IgL=mL$`G30<m5u-a

diff --git a/bootstrap/lib/kernel/ebin/prim_tty.beam b/bootstrap/lib/kernel/ebin/prim_tty.beam
index 724616684b8a6dbe717a8710a0d5f87cc61076f2..5135bdfdbba1acd9e498c9fc18a9158d7daa331f 100644
GIT binary patch
literal 23732
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

literal 23764
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

diff --git a/bootstrap/lib/kernel/ebin/user_drv.beam b/bootstrap/lib/kernel/ebin/user_drv.beam
index cc7c72ac9e67464340fcba905a1ad3665f10c707..599f7d5f2909a22dba0093ff42f0262727667feb 100644
GIT binary patch
literal 18772
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
b1O9MXE&*kw!UWeEQ$t_hpFdoh%k_T%(olwo

literal 18512
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

diff --git a/bootstrap/lib/kernel/ebin/user_sup.beam b/bootstrap/lib/kernel/ebin/user_sup.beam
index 8235b0e0e205fe5e401a4439f369ec0b58e8fa91..7b35ff2a247fa2bd993367efc5b8ec54f31db1e2 100644
GIT binary patch
delta 209
zcmV;?051Qq54aBqMo&^P000NDu?SZNf205a0W^4=rH#D~!Y~YkL!m!Q7bF;%`WWm;
zh_|Q$v1lN~$Z_!l<i$w}6GAL3*7;8Nol>e+O106YJCns2fG$aH;#IA8+I!^g4BQdi
zkfF<QN|$jcqy!=)sXV^jRUGEh<fk|EkTS3)&amybU>f9UwYA=|)vgZ%I42D{CNrtr
z-T&+spWWKyOO)2%N0#b@cm<P5hyO^8u|XeQVm$#!3tw)N{03DJ9Sth?!6fPZQ-?Wl
LW|njflVJx>vzA|z

delta 201
zcmV;)05<=)53mmiMo&^P000N5u?SZNf13aR0U~&um5nhD!Y~X)O(C>P7bF;%dW*6n
z&QV3Gp(!Cjj*AbFi<4A{36NN<Z$CYM04M>VjyBDOtfqi8rnrw+*d4WVo|_ADLwNIy
zO~#3C;!ub}B2Th*{&n5PVJTH!x}F}Q0&C*@?C=T9g*>;`#u+x+c40tkrSi6)9#eMP
z|J>5~w|e@i7T;7+#@#0tb=EfE_ymoXSd9Ra1P4_RbsqN+D{BsF64uMe3;tV`lW7M}
DVQg6W

diff --git a/bootstrap/lib/stdlib/ebin/io_lib.beam b/bootstrap/lib/stdlib/ebin/io_lib.beam
index 1f443d22f601af949ce2640d60be77f12da517c7..74b8894b67edf6f3ef6a41f4f1f59d17775879ab 100644
GIT binary patch
delta 3382
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

delta 3165
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

diff --git a/bootstrap/lib/stdlib/ebin/shell.beam b/bootstrap/lib/stdlib/ebin/shell.beam
index eafb537cd6aee9740f36813a66dd1e54f191e36d..67e6fe0cb794bc879bbe960bdf2d3b45771ee033 100644
GIT binary patch
literal 41660
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

literal 41564
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
Bp^^Xq

diff --git a/erts/emulator/nifs/common/prim_tty_nif.c b/erts/emulator/nifs/common/prim_tty_nif.c
index 825677d56364..73fd7569abf2 100644
--- a/erts/emulator/nifs/common/prim_tty_nif.c
+++ b/erts/emulator/nifs/common/prim_tty_nif.c
@@ -82,6 +82,12 @@
 #define DEF_HEIGHT 24
 #define DEF_WIDTH 80
 
+enum TTYState {
+    unavailable,
+    disabled,
+    enabled
+};
+
 typedef struct {
 #ifdef __WIN32__
     HANDLE ofd;
@@ -101,7 +107,7 @@ typedef struct {
 #endif
     ErlNifPid self;
     ErlNifPid reader;
-    int tty;       /* if the tty is initialized */
+    enum TTYState tty;       /* if the tty is initialized */
 #ifdef HAVE_TERMCAP
     struct termios tty_smode;
     struct termios tty_rmode;
@@ -123,7 +129,6 @@ static ErlNifResourceType *tty_rt;
 static ERL_NIF_TERM isatty_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]);
 static ERL_NIF_TERM tty_create_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]);
 static ERL_NIF_TERM tty_init_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]);
-static ERL_NIF_TERM tty_set_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]);
 static ERL_NIF_TERM setlocale_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]);
 static ERL_NIF_TERM tty_select_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]);
 static ERL_NIF_TERM tty_write_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]);
@@ -140,11 +145,14 @@ static ERL_NIF_TERM tty_tgetflag_nif(ErlNifEnv* env, int argc, const ERL_NIF_TER
 static ERL_NIF_TERM tty_tgetstr_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]);
 static ERL_NIF_TERM tty_tgoto_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]);
 
+#ifdef __WIN32__
+static HANDLE tty_windows_select(ErlNifEnv *env, TTYResource *tty, ERL_NIF_TERM *error);
+#endif
+
 static ErlNifFunc nif_funcs[] = {
     {"isatty", 1, isatty_nif},
     {"tty_create", 0, tty_create_nif},
-    {"tty_init", 3, tty_init_nif},
-    {"tty_set", 1, tty_set_nif},
+    {"tty_init", 2, tty_init_nif},
     {"setlocale", 1, setlocale_nif},
     {"tty_select", 2, tty_select_nif},
     {"tty_window_size", 1, tty_window_size_nif},
@@ -186,6 +194,7 @@ ERL_NIF_INIT(prim_tty, nif_funcs, load, NULL, upgrade, unload)
     ATOM_DECL(stdout);                          \
     ATOM_DECL(stderr);                          \
     ATOM_DECL(select);                          \
+    ATOM_DECL(raw);                          \
     ATOM_DECL(sig);
 
 
@@ -249,7 +258,7 @@ static ERL_NIF_TERM tty_encoding_nif(ErlNifEnv* env, int argc, const ERL_NIF_TER
     TTYResource *tty;
     if (!enif_get_resource(env, argv[0], tty_rt, (void **)&tty))
         return enif_make_badarg(env);
-    if (tty->tty)
+    if (tty->tty == enabled)
         return enif_make_tuple2(env, enif_make_atom(env, "utf16"),
                                 enif_make_atom(env, "little"));
 #endif
@@ -437,14 +446,14 @@ static ERL_NIF_TERM tty_read_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM ar
      *
      **/
     if (GetFileType(tty->ifd) == FILE_TYPE_CHAR) {
-        if (tty->ifdOverlapped == INVALID_HANDLE_VALUE) {
+        if (tty->ifdOverlapped == INVALID_HANDLE_VALUE && tty->tty == enabled) {
             /* Input is a terminal and we are in "new shell" mode */
 
             ssize_t inputs_read, num_characters = 0;
             wchar_t *characters = NULL;
             INPUT_RECORD inputs[128];
 
-            ASSERT(tty->tty);
+            ASSERT(tty->tty == enabled);
 
             if (!ReadConsoleInputW(tty->ifd, inputs, sizeof(inputs)/sizeof(*inputs),
                                    &inputs_read)) {
@@ -558,12 +567,13 @@ static ERL_NIF_TERM tty_read_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM ar
                 }
             }
             res *= sizeof(wchar_t);
-        } else {
-            /* Input is a terminal and we are in "noshell" or "oldshell" mode */
+        } else if (tty->ifdOverlapped != INVALID_HANDLE_VALUE) {
+            /* Input is a terminal and we are in "{noshell, cooked}" or "oldshell" mode.
+               We just triggered in a select from a overlapped ReadFile. */
 	    DWORD bytesRead = 0;
 	    debug("GetOverlapped on %d\r\n", tty->ifdOverlapped);
 	    if (!GetOverlappedResult(tty->ifdOverlapped, &tty->overlapped, &bytesRead, TRUE)) {
-		if (GetLastError() == ERROR_OPERATION_ABORTED && tty->tty) {
+		if (GetLastError() == ERROR_OPERATION_ABORTED && tty->tty == enabled) {
                     /* The overlapped operation was cancels by CancelIo because
                        we are upgrading to "newshell". So we close the handles
                        involved with the overlapped io and select on the stdin
@@ -595,6 +605,18 @@ static ERL_NIF_TERM tty_read_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM ar
                     return make_errno_error(env, "ReadFile");
 	    }
 	    select_event = tty->overlapped.hEvent;
+        } else {
+            /* Input is a terminal, we are in "{noshell, cooked}" or "oldshell" mode,
+               but we don't have a overlapped ReadFile, so we create one.
+            */
+            ERL_NIF_TERM error;
+            select_event = tty_windows_select(env, tty, &error);
+            if (select_event == INVALID_HANDLE_VALUE) {
+                return error;
+            }
+            enif_select(env, select_event, ERL_NIF_SELECT_READ, tty, NULL, argv[1]);
+            /* Return {error,aborted} to signal that the encoding has changed . */
+            return make_error(env, enif_make_atom(env, "aborted"));
         }
     } else {
         /* Input is not a terminal */
@@ -782,13 +804,25 @@ static ERL_NIF_TERM tty_create_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM
     TTYResource *tty = enif_alloc_resource(tty_rt, sizeof(TTYResource));
     ERL_NIF_TERM tty_term;
     memset(tty, 0, sizeof(*tty));
+
+#ifdef HARD_DEBUG
+    logFile = fopen("tty.log","w+");
+#endif
+
+    tty->tty = unavailable;
+
 #ifndef __WIN32__
     tty->ifd = 0;
     tty->ofd = 1;
-#else
-#ifdef HARD_DEBUG
-    logFile = fopen("tty.log","w+");
+
+#ifdef HAVE_TERMCAP
+    if (tcgetattr(tty->ofd, &tty->tty_rmode) >= 0) {
+        tty->tty = disabled;
+    }
 #endif
+
+#else
+
     tty->ifd = GetStdHandle(STD_INPUT_HANDLE);
     if (tty->ifd == INVALID_HANDLE_VALUE || tty->ifd == NULL) {
         tty->ifd = CreateFile("nul", GENERIC_READ, 0,
@@ -806,6 +840,7 @@ static ERL_NIF_TERM tty_create_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM
             /* Failed to set any VT mode, can't do anything here. */
             return make_errno_error(env, "SetConsoleMode");
         }
+        tty->tty = disabled;
     }
     if (GetConsoleMode(tty->ifd, &tty->dwOriginalInMode))
     {
@@ -830,50 +865,41 @@ static ERL_NIF_TERM tty_create_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM
 static ERL_NIF_TERM tty_init_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) {
 
 #if defined(HAVE_TERMCAP) || defined(__WIN32__)
-    ERL_NIF_TERM canon, echo, sig;
+    ERL_NIF_TERM input;
     TTYResource *tty;
-    int fd;
 
-    debug("tty_init_nif(%T,%T,%T)\r\n", argv[0], argv[1], argv[2]);
+    debug("tty_init_nif(%T,%T)\r\n", argv[0], argv[1]);
 
-    if (argc != 3 ||
-        !tty_get_fd(env, argv[1], &fd) ||
-        !enif_is_map(env, argv[2])) {
+    if (argc != 2 || !enif_is_map(env, argv[1])) {
         return enif_make_badarg(env);
     }
 
     if (!enif_get_resource(env, argv[0], tty_rt, (void **)&tty))
         return enif_make_badarg(env);
 
-    if (!enif_get_map_value(env, argv[2], enif_make_atom(env,"canon"), &canon))
-        canon = enif_make_atom(env, "undefined");
-    if (!enif_get_map_value(env, argv[2], enif_make_atom(env,"echo"), &echo))
-        echo = enif_make_atom(env, "undefined");
-    if (!enif_get_map_value(env, argv[2], enif_make_atom(env,"sig"), &sig))
-        sig = enif_make_atom(env, "undefined");
+    if (!enif_get_map_value(env, argv[1], enif_make_atom(env, "input"), &input))
+        return enif_make_badarg(env);
 
-#ifndef __WIN32__
-    if (tcgetattr(fd, &tty->tty_rmode) < 0) {
-        return make_errno_error(env, "tcgetattr");
+    if (tty->tty == unavailable) {
+        if (enif_is_identical(input, atom_raw))
+            return make_enotsup(env);
+        return atom_ok;
     }
 
+    tty->tty = enif_is_identical(input, atom_raw) ? enabled : disabled;
+
+#ifndef __WIN32__
+
+    /* Restore the original mode, that is canonical echo mode */
     tty->tty_smode = tty->tty_rmode;
 
-    /* Default characteristics for all usage including termcap output. */
-    tty->tty_smode.c_iflag &= ~ISTRIP;
+    if (tty->tty == enabled) {
 
-    /* erts_fprintf(stderr,"canon %T\r\n", canon); */
-    /* Turn canonical (line mode) on off. */
-    if (enif_is_identical(canon, atom_true)) {
-        tty->tty_smode.c_iflag |= ICRNL;
-        tty->tty_smode.c_lflag |= ICANON;
-        tty->tty_smode.c_oflag |= OPOST;
-        tty->tty_smode.c_cc[VEOF] = tty->tty_rmode.c_cc[VEOF];
-#ifdef VDSUSP
-        tty->tty_smode.c_cc[VDSUSP] = tty->tty_rmode.c_cc[VDSUSP];
-#endif
-    }
-    if (enif_is_identical(canon, atom_false)) {
+        /* Default characteristics for all usage including termcap output. */
+        tty->tty_smode.c_iflag &= ~ISTRIP;
+
+        /* erts_fprintf(stderr,"canon %T\r\n", canon); */
+        /* Turn canonical (line mode) off. */
         tty->tty_smode.c_iflag &= ~ICRNL;
         tty->tty_smode.c_lflag &= ~ICANON;
         tty->tty_smode.c_oflag &= ~OPOST;
@@ -883,52 +909,41 @@ static ERL_NIF_TERM tty_init_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM ar
 #ifdef VDSUSP
         tty->tty_smode.c_cc[VDSUSP] = 0;
 #endif
-    }
 
-    /* Turn echo on or off. */
-    /* erts_fprintf(stderr,"echo %T\r\n", echo); */
-    if (enif_is_identical(echo, atom_true))
-        tty->tty_smode.c_lflag |= ECHO;
-    if (enif_is_identical(echo, atom_false))
+        /* Turn echo off. */
+        /* erts_fprintf(stderr,"echo %T\r\n", echo); */
         tty->tty_smode.c_lflag &= ~ECHO;
 
-    /* erts_fprintf(stderr,"sig %T\r\n", sig); */
-    /* Set extra characteristics for "RAW" mode, no signals. */
-    if (enif_is_identical(sig, atom_true)) {
-        /* Ignore IMAXBEL as not POSIX. */
-#ifndef QNX
-        tty->tty_smode.c_iflag |= (BRKINT|IGNPAR|ICRNL|IXON|IXANY);
-#else
-        tty->tty_smode.c_iflag |= (BRKINT|IGNPAR|ICRNL|IXON);
-#endif
-        tty->tty_smode.c_lflag |= (ISIG|IEXTEN);
     }
-    if (enif_is_identical(sig, atom_false)) {
-        /* Ignore IMAXBEL as not POSIX. */
-#ifndef QNX
-        tty->tty_smode.c_iflag &= ~(BRKINT|IGNPAR|ICRNL|IXON|IXANY);
-#else
-        tty->tty_smode.c_iflag &= ~(BRKINT|IGNPAR|ICRNL|IXON);
-#endif
-        tty->tty_smode.c_lflag &= ~(ISIG|IEXTEN);
+
+    if (tcsetattr(tty->ofd, TCSANOW, &tty->tty_smode) < 0) {
+        return make_errno_error(env, "tcsetattr");
     }
 
 #else
+    DWORD dwOutMode = tty->dwOutMode;
+    DWORD dwInMode = tty->dwInMode;
+    
     debug("origOutMode: %x origInMode: %x\r\n", 
           tty->dwOriginalOutMode, tty->dwOriginalInMode);
 
-    /* If we cannot disable NEWLINE_AUTO_RETURN we continue anyway as things work */
-    if (SetConsoleMode(tty->ofd, tty->dwOutMode | DISABLE_NEWLINE_AUTO_RETURN)) {
-        tty->dwOutMode |= DISABLE_NEWLINE_AUTO_RETURN;
+    if (tty->tty == enabled) {
+        dwOutMode  |= DISABLE_NEWLINE_AUTO_RETURN;
+        dwInMode &= ~(ENABLE_ECHO_INPUT | ENABLE_LINE_INPUT);
     }
 
-    tty->dwInMode &= ~(ENABLE_ECHO_INPUT | ENABLE_LINE_INPUT);
-    if (!SetConsoleMode(tty->ifd, tty->dwInMode))
+    if (!SetConsoleMode(tty->ifd, dwInMode))
     {
         /* Failed to set disable echo or line input mode */
         return make_errno_error(env, "SetConsoleMode");
     }
 
+    
+    if (!SetConsoleMode(tty->ofd, dwOutMode)) {
+        /* If we cannot disable NEWLINE_AUTO_RETURN we continue anyway as things work */
+        ;
+    }
+
     /* If we are changing from "-noshell" to a shell we
        need to cancel any outstanding async io. This
        will cause the enif_select to trigger which allows
@@ -940,26 +955,9 @@ static ERL_NIF_TERM tty_init_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM ar
 
 #endif /* __WIN32__ */
 
-    tty->tty = 1;
-
-    return atom_ok;
-#else
-    return make_enotsup(env);
-#endif
-}
-
-static ERL_NIF_TERM tty_set_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) {
-#if defined(HAVE_TERMCAP) || defined(__WIN32__)
-    TTYResource *tty;
-    if (!enif_get_resource(env, argv[0], tty_rt, (void **)&tty))
-        return enif_make_badarg(env);
-#ifdef HAVE_TERMCAP
-    if (tty->tty && tcsetattr(tty->ifd, TCSANOW, &tty->tty_smode) < 0) {
-        return make_errno_error(env, "tcsetattr");
-    }
-#endif
     enif_self(env, &tty->self);
     enif_monitor_process(env, tty, &tty->self, NULL);
+
     return atom_ok;
 #else
     return make_enotsup(env);
@@ -1008,39 +1006,52 @@ static ERL_NIF_TERM tty_window_size_nif(ErlNifEnv* env, int argc, const ERL_NIF_
             ));
 }
 
+#ifdef __WIN32__
+static HANDLE tty_windows_select(ErlNifEnv *env, TTYResource *tty, ERL_NIF_TERM *error) {
+    if (tty->tty == enabled || GetFileType(tty->ifd) != FILE_TYPE_CHAR) {
+        return tty->ifd;
+    }
+
+    tty->ifdOverlapped = CreateFile("CONIN$", GENERIC_READ, FILE_SHARE_READ, NULL,
+                                    OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
+    enif_alloc_binary(1024, &tty->overlappedBuffer);
+    tty->overlapped.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
+    debug("Calling ReadFile on %d\r\n", tty->ifdOverlapped);
+    if (!ReadFile(tty->ifdOverlapped, tty->overlappedBuffer.data, tty->overlappedBuffer.size,
+                  NULL, &tty->overlapped)) {
+        if (GetLastError() != ERROR_IO_PENDING) {
+            *error = make_errno_error(env, "ReadFile");
+            return INVALID_HANDLE_VALUE;
+        }
+    }
+    debug("Select on %d\r\n",  tty->overlapped.hEvent);
+    return tty->overlapped.hEvent;
+}
+#endif
+
 static ERL_NIF_TERM tty_select_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) {
     TTYResource *tty;
 #ifndef __WIN32__
+    int select_event;
     extern int using_oldshell; /* set this to let the rest of erts know */
 #else
-    struct tty_reader *tty_reader;
+    HANDLE select_event;
 #endif
     if (!enif_get_resource(env, argv[0], tty_rt, (void **)&tty))
         return enif_make_badarg(env);
 
 #ifndef __WIN32__
     using_oldshell = 0;
-
-    enif_select(env, tty->ifd, ERL_NIF_SELECT_READ, tty, NULL, argv[1]);
+    select_event = tty->ifd;
 #else
-    if (tty->tty || GetFileType(tty->ifd) != FILE_TYPE_CHAR) {
-        debug("Select on %d\r\n",  tty->ifd);
-        enif_select(env, tty->ifd, ERL_NIF_SELECT_READ, tty, NULL, argv[1]);
-    } else {
-        tty->ifdOverlapped = CreateFile("CONIN$", GENERIC_READ, FILE_SHARE_READ, NULL,
-                                        OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
-        enif_alloc_binary(1024, &tty->overlappedBuffer);
-        tty->overlapped.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
-        debug("Calling ReadFile on %d\r\n", tty->ifdOverlapped);
-        if (!ReadFile(tty->ifdOverlapped, tty->overlappedBuffer.data, tty->overlappedBuffer.size, NULL, &tty->overlapped)) {
-            if (GetLastError() != ERROR_IO_PENDING) {
-                return make_errno_error(env, "ReadFile");
-            }
-        }
-        debug("Select on %d\r\n",  tty->overlapped.hEvent);
-        enif_select(env, tty->overlapped.hEvent, ERL_NIF_SELECT_READ, tty, NULL, argv[1]);
+    ERL_NIF_TERM error;
+    select_event = tty_windows_select(env, tty, &error);
+    if (select_event == INVALID_HANDLE_VALUE) {
+        return error;
     }
 #endif
+    debug("Select on %d\r\n", select_event);
+    enif_select(env, select_event, ERL_NIF_SELECT_READ, tty, NULL, argv[2]);
 
     enif_self(env, &tty->reader);
     enif_monitor_process(env, tty, &tty->reader, NULL);
diff --git a/lib/kernel/src/group.erl b/lib/kernel/src/group.erl
index 043761c43d98..ef83d9b4cdbc 100644
--- a/lib/kernel/src/group.erl
+++ b/lib/kernel/src/group.erl
@@ -67,12 +67,15 @@
         }).
 
 -record(state,
-        { read_mode :: list | binary,
+        { read_type :: list | binary,
           driver :: pid(),
           echo :: boolean(),
           dumb :: boolean(),
           shell = noshell :: noshell | pid(),
 
+          %% Only used by dumb
+          terminal_mode = cooked :: raw | cooked | disabled,
+
           %% Only used by xterm
           line_history :: [string()] | undefined,
           save_history :: boolean(), %% Whether get_line and get_until should save history
@@ -129,7 +132,7 @@ init([Drv, Shell, Options]) ->
 
     State = #state{
                driver = Drv,
-               read_mode = list,
+               read_type = list,
                dumb = Dumb,
                save_history = not Dumb,
 
@@ -230,9 +233,7 @@ server(info, {io_request,From,ReplyAs,Req}, Data) when is_pid(From), ?IS_INPUT_R
     {next_state,
      if Data#state.dumb orelse not Data#state.echo -> dumb; true -> xterm end,
      Data#state{ input = #input_state{ from = From, reply_as = ReplyAs } },
-     {next_event, internal, Req}};
-server(info, {Drv, echo, Bool}, Data = #state{ driver = Drv }) ->
-    {keep_state, Data#state{ echo = Bool }};
+     {next_event, internal, Req} };
 server(info, {Drv, _}, #state{ driver = Drv }) ->
     %% We postpone any Drv event sent to us as they are handled in xterm or dumb states
     {keep_state_and_data, postpone};
@@ -240,16 +241,29 @@ server(info, Msg, Data) ->
     handle_info(server, Msg, Data).
 
 %% This is the dumb terminal state, also used for noshell and xterm get_password
+
+%% When terminal_mode == raw, the terminal is in '{noshell,raw}'  mode, which means that
+%% for get_until and get_chars we change the behaviour a bit so that characters are
+%% delivered as they are typed instead of at new-lines.
+dumb(internal, {get_chars, Encoding, Prompt, N}, Data = #state{ terminal_mode = raw }) ->
+    dumb(input_request, {collect_chars_eager, N, Prompt, Encoding, fun get_chars_dumb/5}, Data);
+dumb(internal, {get_line, Encoding, Prompt}, Data = #state{ terminal_mode = raw }) ->
+    dumb(input_request, {collect_line, [], Prompt, Encoding, fun get_line_dumb/5}, Data);
+dumb(internal, {get_until, Encoding, Prompt, M, F, As}, Data = #state{ terminal_mode = raw }) ->
+    dumb(input_request, {get_until, {M, F, As}, Prompt, Encoding, fun get_chars_dumb/5}, Data);
+
 dumb(internal, {get_chars, Encoding, Prompt, N}, Data) ->
     dumb(input_request, {collect_chars, N, Prompt, Encoding, fun get_chars_dumb/5}, Data);
 dumb(internal, {get_line, Encoding, Prompt}, Data) ->
     dumb(input_request, {collect_line, [], Prompt, Encoding, fun get_line_dumb/5}, Data);
 dumb(internal, {get_until, Encoding, Prompt, M, F, As}, Data) ->
     dumb(input_request, {get_until, {M, F, As}, Prompt, Encoding, fun get_line_dumb/5}, Data);
+
 dumb(internal, {get_password, _Encoding}, Data) ->
     %% TODO: Implement for noshell by disabling characters echo if isatty(stdin)
     io_reply(Data, {error, enotsup}),
     pop_state(Data);
+
 dumb(input_request, {CollectF, CollectAs, Prompt, Encoding, GetFun},
      Data = #state{ input = OrigInputState }) ->
 
@@ -278,7 +292,7 @@ dumb(data, Buf, Data = #state{ input = #input_state{ prompt_bytes = Pbs, encodin
             io_reply(Data, {error,{no_translation, unicode, latin1}}),
             pop_state(Data#state{ buf = [] });
         {done, NewLine, RemainBuf} ->
-            EncodedLine = cast(NewLine, Data#state.read_mode, Encoding),
+            EncodedLine = cast(NewLine, Data#state.read_type, Encoding),
             case io_lib:CollectF(State, EncodedLine, Encoding, CollectAs) of
                 {stop, eof, _} ->
                     io_reply(Data, eof),
@@ -361,7 +375,7 @@ xterm(data, Buf, Data = #state{ input = #input_state{
     %% Get a single line using edlin
     case get_line_edlin(Buf, Pbs, Cont, Lines, Encoding, Data) of
         {done, NewLines, RemainBuf} ->
-            CurrentLine = cast(edlin:current_line(NewLines), Data#state.read_mode, Encoding),
+            CurrentLine = cast(edlin:current_line(NewLines), Data#state.read_type, Encoding),
             case io_lib:CollectF(start, CurrentLine, Encoding, CollectAs) of
                 {stop, eof, _} ->
                     io_reply(Data, eof),
@@ -427,6 +441,12 @@ handle_info(State, {Drv, {data, Buf}}, Data = #state{ driver = Drv }) ->
     ?MODULE:State(data, Buf, Data);
 handle_info(State, {Drv, eof}, Data = #state{ driver = Drv }) ->
     ?MODULE:State(data, eof, Data);
+handle_info(_State, {Drv, echo, Bool}, Data = #state{ driver = Drv }) ->
+    {keep_state, Data#state{ echo = Bool } };
+handle_info(_State, {Drv, terminal_mode, Mode}, Data = #state{ driver = Drv }) ->
+    noshell = Data#state.shell,
+    true = lists:member(Mode, [raw, cooked, disabled]),
+    {keep_state, Data#state{ terminal_mode = Mode }};
 
 handle_info(_State, {io_request, From, ReplyAs, {setopts, Opts}}, Data) ->
     {Reply, NewData} = setopts(Opts, Data),
@@ -717,9 +737,9 @@ do_setopts(Opts, Data) ->
         undefined ->
             ok
     end,
-    ReadMode =
+    ReadType =
         case proplists:get_value(binary, Opts,
-                                 case Data#state.read_mode of
+                                 case Data#state.read_type of
                                      binary -> true;
                                      _ -> false
                                  end) of
@@ -729,7 +749,7 @@ do_setopts(Opts, Data) ->
                 list
         end,
     LineHistory = proplists:get_value(line_history, Opts, true),
-    {ok, Data#state{ expand_fun = ExpandFun, echo = Echo, read_mode = ReadMode,
+    {ok, Data#state{ expand_fun = ExpandFun, echo = Echo, read_type = ReadType,
                      save_history = LineHistory }}.
 
 normalize_expand_fun(Options, Default) ->
@@ -758,7 +778,7 @@ getopts(Data) ->
                        _ ->
                            false
                    end},
-    Bin = {binary, case Data#state.read_mode of
+    Bin = {binary, case Data#state.read_type of
                        binary ->
                            true;
                        _ ->
@@ -1087,7 +1107,8 @@ get_line_dumb(Buf, _Pbs, Cont, ToEnc, Data = #state{ driver = Drv }) ->
 
     EditLineRes =
         if
-            Data#state.shell =:= noshell -> edit_line_noshell(cast(Buf, list), Cont, []);
+            Data#state.shell =:= noshell ->
+                edit_line_noshell(cast(Buf, list), Cont, [], Data#state.terminal_mode);
             true -> edit_line_dumb(cast(Buf, list), Cont, [])
         end,
 
@@ -1160,16 +1181,18 @@ edit_line_dumb([Char|Cs],Chars, Rs) ->
     edit_line_dumb(Cs,[Char|Chars], [{put_chars, unicode, [Char]}|Rs]).
 
 %% This is used by noshell to get just get everything until the next \n
-edit_line_noshell(eof, [], _) ->
+edit_line_noshell(eof, [], _, _) ->
     eof;
-edit_line_noshell(eof, Chars, Rs) ->
+edit_line_noshell(eof, Chars, Rs, _) ->
     {done, Chars, eof, lists:reverse(Rs)};
-edit_line_noshell([],Chars, Rs) ->
+edit_line_noshell([],Chars, Rs, _) ->
     {more, Chars, lists:reverse(Rs)};
-edit_line_noshell([NL|Cs],Chars, Rs) when NL =:= $\n ->
+edit_line_noshell([NL|Cs],Chars, Rs, raw) when NL =:= $\r ->
+    {done, [$\n | Chars], Cs, lists:reverse([{put_chars, unicode, "\r\n"}|Rs])};
+edit_line_noshell([NL|Cs],Chars, Rs, _) when NL =:= $\n ->
     {done, [$\n | Chars], Cs, lists:reverse([{put_chars, unicode, "\n"}|Rs])};
-edit_line_noshell([Char|Cs],Chars, Rs) ->
-    edit_line_noshell(Cs, [Char|Chars], [{put_chars, unicode, [Char]}|Rs]).
+edit_line_noshell([Char|Cs],Chars, Rs, TerminalMode) ->
+    edit_line_noshell(Cs, [Char|Chars], [{put_chars, unicode, [Char]}|Rs], TerminalMode).
 
 %% Handling of the line history stack
 new_stack(Ls) -> {stack,Ls,{},[]}.
diff --git a/lib/kernel/src/prim_tty.erl b/lib/kernel/src/prim_tty.erl
index 1eba84ab53e9..7fd34f9ceb12 100644
--- a/lib/kernel/src/prim_tty.erl
+++ b/lib/kernel/src/prim_tty.erl
@@ -111,7 +111,7 @@
          ansi_regexp/0, ansi_color/2]).
 -export([reader_stop/1, disable_reader/1, enable_reader/1, is_reader/2, is_writer/2]).
 
--nifs([isatty/1, tty_create/0, tty_init/3, tty_set/1, setlocale/1,
+-nifs([isatty/1, tty_create/0, tty_init/2, setlocale/1,
        tty_select/2, tty_window_size/1, tty_encoding/1, write_nif/2, read_nif/2, isprint/1,
        wcwidth/1, wcswidth/1,
        sizeof_wchar/0, tgetent_nif/1, tgetnum_nif/1, tgetflag_nif/1, tgetstr_nif/1,
@@ -138,7 +138,7 @@
 -record(state, {tty :: tty() | undefined,
                 reader :: {pid(), reference()} | undefined,
                 writer :: {pid(), reference()} | undefined,
-                options,
+                options = #{ input => cooked, output => cooked } :: options(),
                 unicode = true :: boolean(),
                 lines_before = [],   %% All lines before the current line in reverse order
                 lines_after = [],    %% All lines after the current line.
@@ -166,12 +166,8 @@
                 ansi_regexp
                }).
 
--type options() :: #{ tty => boolean(),
-                      input => boolean(),
-                      canon => boolean(),
-                      echo => boolean(),
-                      sig => boolean()
-                    }.
+-type options() :: #{ input := cooked | raw | disabled,
+                      output := raw | cooked }.
 -type request() ::
         {putc_raw, binary()} |
         {putc, unicode:unicode_binary()} |
@@ -241,7 +237,7 @@ on_load(Extra) ->
 -spec window_size(state()) -> {ok, {non_neg_integer(), non_neg_integer()}} | {error, term()}.
 window_size(State = #state{ tty = TTY }) ->
     case tty_window_size(TTY) of
-        {error, enotsup} when map_get(tty, State#state.options) ->
+        {error, enotsup} when map_get(input, State#state.options) =:= raw ->
             %% When the TTY is enabled, we should return a "dummy" row and column
             %% when we cannot find the proper size.
             {ok, {State#state.cols, State#state.rows}};
@@ -275,28 +271,25 @@ init(UserOptions) when is_map(UserOptions) ->
     init_term(#state{ tty = TTY, unicode = UnicodeMode, options = Options, ansi_regexp = ANSI_RE_MP }).
 init_term(State = #state{ tty = TTY, options = Options }) ->
     TTYState =
-        case maps:get(tty, Options) of
-            true ->
-                %% If a reader has been started already, we disable it to avoid race conditions when
-                %% upgrading the terminal
-                [disable_reader(State) || State#state.reader =/= undefined],
-
-                try
-                    case tty_init(TTY, stdout, Options) of
-                        ok -> ok;
-                        {error, enotsup} -> error(enotsup)
-                    end,
-                    NewState = init(State, os:type()),
-                    ok = tty_set(TTY),
-
-                    NewState
-                after
-                    [enable_reader(State) || State#state.reader =/= undefined]
-                end;
-            false ->
+        case maps:get(input, Options) of
+            raw ->
+                init(State, os:type());
+            Else when Else =:= cooked; Else =:= disabled ->
                 State
         end,
 
+    try
+        [disable_reader(State) || State#state.reader =/= undefined],
+
+        case tty_init(TTY, Options) of
+            ok -> ok;
+            {error, enotsup} -> error(enotsup)
+        end
+
+    after
+        [enable_reader(State) || State#state.reader =/= undefined]
+    end,
+
     WriterState =
         if TTYState#state.writer =:= undefined ->
                 {ok, Writer} = proc_lib:start_link(?MODULE, writer, [State#state.tty]),
@@ -305,7 +298,7 @@ init_term(State = #state{ tty = TTY, options = Options }) ->
                 TTYState
         end,
     ReaderState =
-        case {maps:get(input, Options), TTYState#state.reader} of
+        case {maps:get(input, Options) =/= disabled, TTYState#state.reader} of
             {true, undefined} ->
                 DefaultReaderEncoding = if State#state.unicode -> utf8;
                                            not State#state.unicode -> latin1
@@ -352,18 +345,18 @@ init_ssh(UserOptions, {Cols, Rows}, IOEncoding) ->
 
 
 -spec reinit(state(), options()) -> state().
-reinit(State, UserOptions) ->
-    init_term(State#state{ options = options(UserOptions) }).
+reinit(State = #state{ options = OldOptions }, UserOptions) ->
+    case options(UserOptions) of
+        OldOptions -> State;
+        _ ->
+            init_term(State#state{ options = options(UserOptions) })
+    end.
 
 options(UserOptions) ->
-    maps:merge(
-      #{ input => true,
-         tty => true,
-         canon => false,
-         echo => false }, UserOptions).
+    maps:merge(#{ input => raw, output => cooked }, UserOptions).
+
 init(State, ssh) ->
     State#state{ xn = true };
-
 init(State, {unix,_}) ->
 
     case os:getenv("TERM") of
@@ -506,7 +499,7 @@ handle_signal(State, sigwinch) ->
 handle_signal(State, resize) ->
     update_geometry(State);
 handle_signal(State, sigcont) ->
-    tty_set(State#state.tty),
+    tty_init(State#state.tty, State#state.options),
     State.
 
 -spec disable_reader(state()) -> ok.
@@ -562,10 +555,10 @@ reader_loop(TTY, Parent, ReaderRef, FromEnc, Acc) ->
                     Parent ! {ReaderRef, eof},
                     ok;
                 {error, aborted} ->
-                    %% The read operation was aborted. This only happens on
-                    %% Windows when we change from "noshell" to "newshell".
-                    %% When it happens we need to re-read the tty_encoding as
-                    %% it has changed.
+                    %% The read operation was aborted. This happens on
+                    %% Windows when we change from "{noshell, cooked}" to "{noshell, raw}"
+                    %% or "newshell".
+                    %% When it happens we need to re-read the tty_encoding as it has changed.
                     reader_loop(TTY, Parent, ReaderRef, tty_encoding(TTY), Acc);
                 {ok, <<>>} ->
                     %% EAGAIN or EINTR
@@ -646,7 +639,7 @@ writer_loop(TTY, WriterRef) ->
     end.
 
 -spec handle_request(state(), request()) -> {erlang:iovec(), state()}.
-handle_request(State = #state{ options = #{ tty := false } }, Request) ->
+handle_request(State = #state{ options = #{ output := raw } }, Request) ->
     case Request of
         {putc_raw, Binary} ->
             {Binary, State};
@@ -1428,9 +1421,7 @@ isatty(_Fd) ->
 -spec tty_create() -> {ok, tty()}.
 tty_create() ->
     erlang:nif_error(undef).
-tty_init(_TTY, _Fd, _Options) ->
-    erlang:nif_error(undef).
-tty_set(_TTY) ->
+tty_init(_TTY, _Options) ->
     erlang:nif_error(undef).
 setlocale(_TTY) ->
     erlang:nif_error(undef).
diff --git a/lib/kernel/src/user_drv.erl b/lib/kernel/src/user_drv.erl
index d90bb8cb6921..09026a096688 100644
--- a/lib/kernel/src/user_drv.erl
+++ b/lib/kernel/src/user_drv.erl
@@ -104,6 +104,7 @@
 -record(state, { tty :: prim_tty:state() | undefined,
                  write :: reference() | undefined,
                  read :: reference() | undefined,
+                 terminal_mode :: raw | cooked | disabled,
                  shell_started = new :: new | old | false,
                  editor :: #editor{} | undefined,
                  user :: pid(),
@@ -111,9 +112,10 @@
                  groups, queue }).
 
 -type shell() :: {module(), atom(), [term()]} | {node(), module(), atom(), [term()]}.
--type arguments() :: #{ initial_shell => noshell | shell() |
-                        {remote, unicode:charlist()} | {remote, unicode:charlist(), {module(), atom(), [term()]}},
-                        input => boolean() }.
+-type arguments() ::
+        #{ initial_shell => noshell | shell() |
+           {remote, unicode:charlist()} | {remote, unicode:charlist(), {module(), atom(), [term()]}},
+           input => cooked | raw | disabled }.
 
 %% Default line editing shell
 -spec start() -> pid().
@@ -162,20 +164,22 @@ init(Args) ->
     IsTTY = prim_tty:isatty(stdin) =:= true andalso prim_tty:isatty(stdout) =:= true,
     StartShell = maps:get(initial_shell, Args, undefined) =/= noshell,
     OldShell = maps:get(initial_shell, Args, undefined) =:= oldshell,
+
     try
         if
             not IsTTY andalso StartShell; OldShell ->
                 error(enotsup);
             IsTTY, StartShell ->
-                TTYState = prim_tty:init(#{}),
+                TTYState = prim_tty:init(#{ input => raw,
+                                            output => cooked }),
                 init_standard_error(TTYState, true),
-                {ok, init, {Args, #state{ user = start_user() } },
+                {ok, init, {Args, #state{ terminal_mode = raw, user = start_user() } },
                  {next_event, internal, TTYState}};
-           true ->
-                TTYState = prim_tty:init(#{input => maps:get(input, Args, true),
-                                           tty => false}),
+            true ->
+                TTYState = prim_tty:init(
+                             #{ input => maps:get(input, Args), output => raw }),
                 init_standard_error(TTYState, false),
-                {ok, init, {Args,#state{ user = start_user() } },
+                {ok, init, {Args,#state{ terminal_mode = maps:get(input, Args), user = start_user() } },
                  {next_event, internal, TTYState}}
         end
     catch error:enotsup ->
@@ -186,9 +190,9 @@ init(Args) ->
             %% The oldshell mode is important as it is
             %% the mode used when running erlang in an
             %% emacs buffer.
-            CatchTTYState = prim_tty:init(#{tty => false}),
+            CatchTTYState = prim_tty:init(#{ input => cooked, output => raw }),
             init_standard_error(CatchTTYState, false),
-            {ok, init, {Args,#state{ shell_started = old, user = start_user() } },
+            {ok, init, {Args,#state{ terminal_mode = cooked, shell_started = old, user = start_user() } },
              {next_event, internal, CatchTTYState}}
     end.
 
@@ -245,6 +249,7 @@ exit_on_remote_shell_error(_, _, Result) ->
 %% We have been started with -noshell. In this mode the current_group is
 %% the `user` group process.
 init_noshell(State) ->
+    State#state.user ! {self(), terminal_mode, State#state.terminal_mode},
     init_shell(State#state{ shell_started = false }, "").
 
 init_remote_shell(State, Node, {M, F, A}) ->
@@ -336,7 +341,7 @@ init_local_shell(State, InitialShell) ->
 
 init_shell(State, Slogan) ->
 
-    init_standard_error(State#state.tty, State#state.shell_started =:= new),
+    init_standard_error(State#state.tty, State#state.terminal_mode =:= raw),
     Curr = gr_cur_pid(State#state.groups),
     put(current_group, Curr),
     {next_state, server, State#state{ current_group = gr_cur_pid(State#state.groups) },
@@ -367,16 +372,28 @@ server({call, From}, {start_shell, Args},
                 not IsTTY andalso StartShell; OldShell ->
                     error(enotsup);
                 IsTTY, StartShell ->
-                    NewTTY = prim_tty:reinit(TTY, #{ }),
-                    State#state{ tty = NewTTY,
-                                 shell_started = new };
-               true ->
-                    NewTTY = prim_tty:reinit(TTY, #{ tty => false }),
-                    State#state{ tty = NewTTY, shell_started = false }
+                    NewTTY = prim_tty:reinit(TTY, #{ input => raw, output => cooked }),
+                    State#state{ tty = NewTTY, terminal_mode = raw, shell_started = new };
+                not StartShell ->
+                    Input = maps:get(input, Args),
+                    if not IsTTY andalso Input =:= raw ->
+                            error(enotsup);
+                       true ->
+                            State#state{
+                              terminal_mode = Input,
+                              tty = prim_tty:reinit(TTY, #{ input => Input,
+                                                            output => raw }),
+                              shell_started = false }
+                    end
             end
         catch error:enotsup ->
-                NewTTYState = prim_tty:reinit(TTY, #{ tty => false }),
-                State#state{ tty = NewTTYState, shell_started = old }
+                NewTTYState = prim_tty:reinit(TTY, #{ input => cooked, output => raw }),
+                Shell = if StartShell ->
+                                old;
+                           true ->
+                                false
+                        end,
+                State#state{ terminal_mode = cooked, tty = NewTTYState, shell_started = Shell }
         end,
     #{ read := ReadHandle, write := WriteHandle } = prim_tty:handles(NewState#state.tty),
     NewHandleState = NewState#state {
@@ -386,7 +403,12 @@ server({call, From}, {start_shell, Args},
     {Result, Reply}
         = case maps:get(initial_shell, Args, undefined) of
               noshell ->
-                  {init_noshell(NewHandleState), ok};
+                  case maps:get(input, Args) =:= NewHandleState#state.terminal_mode of
+                    true ->
+                        {init_noshell(NewHandleState), ok};
+                    false ->
+                        {init_noshell(NewHandleState), {error, enotsup}}
+                    end;
               {remote, Node} ->
                   case init_remote_shell(NewHandleState, Node, {shell, start, []}) of
                       {error, _} = Error ->
diff --git a/lib/kernel/src/user_sup.erl b/lib/kernel/src/user_sup.erl
index 96ee518ab5e5..7525077d450c 100644
--- a/lib/kernel/src/user_sup.erl
+++ b/lib/kernel/src/user_sup.erl
@@ -124,13 +124,13 @@ check_flags([{nouser, []} |T], Attached, _) -> check_flags(T, Attached, nouser);
 check_flags([{user, [User]} | T], Attached, _) ->
     check_flags(T, Attached, {list_to_atom(User), start, []});
 check_flags([{noshell, []} | T], Attached, _) ->
-    check_flags(T, Attached, {user_drv, start, [#{ initial_shell => noshell }]});
+    check_flags(T, Attached, {user_drv, start, [#{ initial_shell => noshell, input => cooked }]});
 check_flags([{oldshell, []} | T], false, _) ->
     %% When running in detached mode, we ignore any -oldshell flags as we do not
     %% want input => true to be set as they may halt the node (on bsd)
     check_flags(T, false, {user_drv, start, [#{ initial_shell => oldshell }]});
 check_flags([{noinput, []} | T], Attached, _) ->
-    check_flags(T, Attached, {user_drv, start, [#{ initial_shell => noshell, input => false }]});
+    check_flags(T, Attached, {user_drv, start, [#{ initial_shell => noshell, input => disabled }]});
 check_flags([{master, [Node]} | T], Attached, _) ->
     check_flags(T, Attached, {master, list_to_atom(Node)});
 check_flags([_H | T], Attached, User) -> check_flags(T, Attached, User);
diff --git a/lib/kernel/test/interactive_shell_SUITE.erl b/lib/kernel/test/interactive_shell_SUITE.erl
index 05f1a61e178d..d4c34022302d 100644
--- a/lib/kernel/test/interactive_shell_SUITE.erl
+++ b/lib/kernel/test/interactive_shell_SUITE.erl
@@ -40,6 +40,7 @@
          init_per_testcase/2, end_per_testcase/2,
 	 get_columns_and_rows/1, exit_initial/1, job_control_local/1,
 	 job_control_remote/1,stop_during_init/1,wrap/1,
+         noshell_raw/1,
          shell_history/1, shell_history_resize/1, shell_history_eaccess/1,
          shell_history_repair/1, shell_history_repair_corrupt/1,
          shell_history_corrupt/1,
@@ -67,6 +68,8 @@
          external_editor/1, external_editor_visual/1,
          external_editor_unicode/1, shell_ignore_pager_commands/1]).
 
+-export([get_until/2]).
+
 -export([test_invalid_keymap/1, test_valid_keymap/1]).
 %% Exports for custom shell history module
 -export([load/0, add/1]).
@@ -91,6 +94,7 @@ groups() ->
        ctrl_keys, stop_during_init, wrap,
        shell_invalid_ansi,
        shell_get_password,
+       noshell_raw,
        {group, shell_history},
        {group, remsh}]},
      {shell_history, [],
@@ -2186,6 +2190,142 @@ wrap(Config) when is_list(Config) ->
     end,
     ok.
 
+noshell_raw(Config) ->
+
+    case proplists:get_value(default_shell, Config) of
+        new ->
+
+            TCGl = group_leader(),
+            TC = self(),
+
+            TestcaseFun = fun() ->
+                                  link(TC),
+                                  group_leader(whereis(user), self()),
+
+                                  try
+                                    %% Make sure we are in unicode encoding
+                                    unicode = proplists:get_value(encoding, io:getopts()),
+
+                                    "\fhello\n" = io:get_line("1> "),
+                                    io:format(TCGl, "TC Line: ~p~n", [?LINE]),
+                                    ok = shell:start_interactive({noshell, raw}),
+
+                                    io:format(TCGl, "TC Line: ~p~n", [?LINE]),
+
+                                    %% Test that we can receive 1 char when N is 100
+                                    [$\^p] = io:get_chars("2> ", 100),
+
+                                    io:format(TCGl, "TC Line: ~p~n", [?LINE]),
+
+                                    %% Test that we only receive 1 char when N is 1
+                                    "a" = io:get_chars("3> ", 1),
+                                    "bc" = io:get_chars("", 2),
+
+                                    io:format(TCGl, "TC Line: ~p~n", [?LINE]),
+
+                                    %% Test that get_chars counts characters not bytes
+                                    ok = io:setopts([binary]),
+                                    ~b"å" = io:get_chars("4> ", 1),
+                                    ~b"äö" = io:get_chars("", 2),
+
+                                    io:format(TCGl, "TC Line: ~p~n", [?LINE]),
+
+                                    %% Test that echo works
+                                    ok = io:setopts([{echo, true}]),
+                                    ~b"åäö" = io:get_chars("5> ", 100),
+                                    ok = io:setopts([{echo, false}]),
+
+                                    io:format(TCGl, "TC Line: ~p~n", [?LINE]),
+
+                                    %% Test that get_line works
+                                    ~b"a\n" = io:get_line("6> "),
+
+                                    io:format(TCGl, "TC Line: ~p~n", [?LINE]),
+
+                                    %% Test that get_until works
+                                    ok = io:setopts([{echo, true}]),
+                                    ~b"a,b,c" = io:request({get_until, unicode, "7> ", ?MODULE, get_until, []}),
+                                    ok = io:setopts([{echo, false}]),
+
+                                    io:format(TCGl, "TC Line: ~p~n", [?LINE]),
+
+                                    %% Test that we can go back to cooked mode
+                                    ok = shell:start_interactive({noshell, cooked}),
+                                    io:format(TCGl, "TC Line: ~p~n", [?LINE]),
+                                    ~b"abc" = io:get_chars(user, "8> ", 3),
+                                    io:format(TCGl, "TC Line: ~p~n", [?LINE]),
+                                    ~b"\n" = io:get_chars(user, "", 1),
+
+                                    io:format("exit")
+                                  catch E:R:ST ->
+                                    io:format(TCGl, "~p", [{E, R, ST}])
+                                  end
+                          end,
+
+            rtnode:run(
+              [
+               {eval, fun() -> spawn(TestcaseFun), ok end},
+
+               %% Test io:get_line in cookec mode
+               {expect, "1> $"},
+               {putline, "hello"},
+
+               %% Test io:get_chars 100 in  raw mode
+               {expect, "2> $"},
+               {putdata, [$\^p]},
+
+               %% Test io:get_chars 1 in raw mode
+               {expect, "3> $"},
+               {putdata, "abc"},
+
+               %% Test io:get_chars unicode
+               {expect, "4> $"},
+               {putdata, ~b"åäö"},
+
+               %% Test that raw + echo works
+               {expect, "5> $"},
+               {putdata, ~b"åäö"},
+               {expect, "åäö$"},
+
+               %% Test io:get_line in raw mode
+               {expect, "6> $"},
+               {putdata, "a\r"}, %% When in raw mode, \r is newline.
+
+               %% Test io:get_until in raw mode
+               {expect, "7> $"},
+               {putline, "a"},
+               {expect, "a\n7> $"},
+               {putline, "b"},
+               {expect, "b\n7> $"},
+               {putdata, "c."},
+               {expect, "c.$"},
+
+               %% Test io:get_line in cooked mode
+               {expect, "8> $"},
+               {putdata, "a"},
+               {expect, "a"},
+               {putdata, "b"},
+               {expect, "b"},
+               {putline, "c"},
+               {expect, "c\r\n$"},
+
+               {expect, "exit$"}
+              ], [], [],
+              ["-noshell","-pz",filename:dirname(code:which(?MODULE))]);
+        _ -> ok
+    end,
+    ok.
+
+get_until(start, NewChars) ->
+    get_until([], NewChars);
+get_until(State, NewChars) ->
+    Chars = State ++ NewChars,
+    case string:split(Chars, ".") of
+        [Chars] -> {more, Chars ++ ","};
+        [Before, After] -> {done, [C || C <- Before, C =/= $\n], After}
+    end.
+
+
 %% This testcase tests that shell_history works as it should.
 %% We use Ctrl + P = Cp=[$\^p] in order to navigate up
 %% We use Ctrl + N = Cp=[$\^n] in order to navigate down
diff --git a/lib/stdlib/doc/assets/tic-tac-toe.es b/lib/stdlib/doc/assets/tic-tac-toe.es
new file mode 100755
index 000000000000..0fb694905ce2
--- /dev/null
+++ b/lib/stdlib/doc/assets/tic-tac-toe.es
@@ -0,0 +1,106 @@
+#!/usr/bin/env escript
+main(_Args) ->
+    ok = shell:start_interactive({noshell, raw}),
+    
+    io:put_chars("\e[?1049h"), %% Enable alternate screen buffer
+    io:put_chars("\e[?25l"), %% Hide the cursor
+    draw_board(),
+    loop({0, "X", list_to_tuple(lists:duplicate(9, ""))}),
+    io:put_chars("\e[?25h"), %% Show the cursor
+    io:put_chars("\e[?1049l"), %% Disable alternate screen buffer
+    ok.
+
+draw_board() ->
+    io:put_chars("\e[5;0H"), %% Move cursor to top left
+    io:put_chars(
+      ["     ╔═══════╤═══════╤═══════╗\r\n",
+       "     ║       │       │       ║\r\n",
+       "     ║       │       │       ║     Place an X by pressing Enter\r\n",
+       "     ║       │       │       ║\r\n",
+       "     ╟───────┼───────┼───────╢\r\n",
+       "     ║       │       │       ║\r\n",
+       "     ║       │       │       ║\r\n",
+       "     ║       │       │       ║\r\n",
+       "     ╟───────┼───────┼───────╢\r\n",
+       "     ║       │       │       ║\r\n",
+       "     ║       │       │       ║\r\n",
+       "     ║       │       │       ║\r\n",
+       "     ╚═══════╧═══════╧═══════╝\r\n"]),
+    ok.
+
+loop(State) ->
+    io:put_chars(draw_state(State)),
+    case handle_input(io:get_chars("", 30), State) of
+        stop -> stop;
+        NewState ->
+            io:put_chars(clear_selection(State)),
+            loop(NewState)
+    end.
+
+%% Clear/draw the selection markers, making sure
+%% not to overwrite if a X or O exists.
+%%   \b = Move cursor left
+%%   \e[C = Move cursor right
+%%   \n = Move cursor down
+clear_selection({Pos, _, _}) ->
+    [set_position(Pos),
+     "       ","\b\b\b\b\b\b\b\n",
+     " \e[C\e[C\e[C\e[C\e[C ",
+     "\b\b\b\b\b\b\b\n","       "].
+
+draw_selection({Pos, _, _}) ->
+    [set_position(Pos),
+     "┌─────┐","\b\b\b\b\b\b\b\n",
+     "│\e[C\e[C\e[C\e[C\e[C│",
+     "\b\b\b\b\b\b\b\n","└─────┘"].
+
+%% Set the cursor position to be at the top
+%% left of the field of the given position
+set_position(Pos) ->
+    Row = 6 + (Pos div 3) * 4,
+    Col = 7 + (Pos rem 3) * 8,
+    io_lib:format("\e[~p;~pH",[Row, Col]).
+
+%% Update selection and whos turn it is
+draw_state({_, Turn, _} = State) ->
+    [draw_selection(State),
+     io_lib:format("\e[7;45H~s",[Turn])].
+
+%% Draw X or O
+draw_marker(Pos, Turn) ->
+    [set_position(Pos), "\e[C\e[C\e[C\n", Turn].
+
+handle_input({ok, Chars}, State) ->
+    handle_input({ok, Chars}, State);
+handle_input(eof, _State) ->
+    stop;
+handle_input("\e[A" ++ Rest, {Pos, Turn, State}) ->
+    %% Up key
+    handle_input(Rest, {max(0, Pos - 3), Turn, State});
+handle_input("\e[B" ++ Rest, {Pos, Turn, State}) ->
+    %% Down key
+    handle_input(Rest, {min(8, Pos + 3), Turn, State});
+handle_input("\e[C" ++ Rest, {Pos, Turn, State}) ->
+    %% right key
+    handle_input(Rest, {min(8, Pos + 1), Turn, State});
+handle_input("\e[D" ++ Rest, {Pos, Turn, State}) ->
+    %% left key
+    handle_input(Rest, {max(0, Pos - 1), Turn, State});
+handle_input("\r" ++ Rest, {Pos, Turn, State} = OldState) ->
+    NewState =
+        case element(Pos+1, State) of
+            "" when Turn =:= "X" ->
+                io:put_chars(draw_marker(Pos, Turn)),
+                {Pos, "O", setelement(Pos+1, State, Turn)};
+            "" when Turn =:= "O" ->
+                io:put_chars(draw_marker(Pos, Turn)),
+                {Pos, "X", setelement(Pos+1, State, Turn)};
+            _ -> io:put_chars("\^G"), OldState
+        end,
+    handle_input(Rest, NewState);
+handle_input("q" ++ _, _State) ->
+    stop;
+handle_input([_ | T], State) ->
+    handle_input(T, State);
+handle_input([], State) ->
+    State.
\ No newline at end of file
diff --git a/lib/stdlib/doc/guides/terminal_interface.md b/lib/stdlib/doc/guides/terminal_interface.md
index 54eec5e6140e..9cfb9e236657 100644
--- a/lib/stdlib/doc/guides/terminal_interface.md
+++ b/lib/stdlib/doc/guides/terminal_interface.md
@@ -19,3 +19,157 @@ limitations under the License.
 -->
 # Creating a terminal application
 
+This guide will show how to create a very simple tic-tac-toe game in
+the shell. We will go through how to read key-strokes and how to update
+the screen to show the tic-tac-toe board. The game will be implemented as an
+`m:escript`, but it can just as well be implemented in a regular system.
+
+Let us start by drawing the board which will look like this:
+
+```txt
+╔═══════╤═══════╤═══════╗
+║┌─────┐│       │       ║
+║│     ││       │       ║     Place an X by pressing Enter
+║└─────┘│       │       ║
+╟───────┼───────┼───────╢
+║       │       │       ║
+║       │       │       ║
+║       │       │       ║
+╟───────┼───────┼───────╢
+║       │       │       ║
+║       │       │       ║
+║       │       │       ║
+╚═══════╧═══════╧═══════╝
+```
+{: .monospace-font }
+
+
+We will use the alternate screen buffer for our game so first we need to set that up:
+
+```
+#!/usr/bin/env escript
+main(_Args) ->
+    
+    io:put_chars("\e[?1049h"), %% Enable alternate screen buffer
+    io:put_chars("\e[?25l"), %% Hide the cursor
+    draw_board(),
+    timer:sleep(5000),
+    io:put_chars("\e[?25h"), %% Show the cursor
+    io:put_chars("\e[?1049l"), %% Disable alternate screen buffer
+    ok.
+```
+
+We then use the box drawing parts of Unicode to draw our board:
+
+```
+draw_board() ->
+    io:put_chars("\e[5;0H"), %% Move cursor to top left
+    io:put_chars(
+      ["     ╔═══════╤═══════╤═══════╗\r\n",
+       "     ║       │       │       ║\r\n",
+       "     ║       │       │       ║     Place an X by pressing Enter\r\n",
+       "     ║       │       │       ║\r\n",
+       "     ╟───────┼───────┼───────╢\r\n",
+       "     ║       │       │       ║\r\n",
+       "     ║       │       │       ║\r\n",
+       "     ║       │       │       ║\r\n",
+       "     ╟───────┼───────┼───────╢\r\n",
+       "     ║       │       │       ║\r\n",
+       "     ║       │       │       ║\r\n",
+       "     ║       │       │       ║\r\n",
+       "     ╚═══════╧═══════╧═══════╝\r\n"]),
+    ok.
+```
+{: .monospace-font }
+
+Let us add some interactivity to our game! To do that we need to change the
+shell from running in `cooked` to `raw` mode. This is done by calling
+[`shell:start_interactive({noshell, raw})`](`shell:start_interactive/1`).
+We can then use `io:get_chars/2` to read key strokes from the user. The key
+strokes will be returned as [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code), 
+so we will have need to handle the codes for up, down, left, right and enter.
+
+It could look something like this:
+
+```
+main(_Args) ->
+    ok = shell:start_interactive({noshell, raw}),
+    
+    io:put_chars("\e[?1049h"), %% Enable alternate screen buffer
+    io:put_chars("\e[?25l"), %% Hide the cursor
+    draw_board(),
+    loop(0),
+    io:put_chars("\e[?25h"), %% Show the cursor
+    io:put_chars("\e[?1049l"), %% Disable alternate screen buffer
+    ok.
+
+loop(Pos) ->
+    io:put_chars(draw_selection(Pos)),
+    %% Read at most 1024 characters from stdin.
+    {ok, Chars} = io:get_chars("", 1024),
+    case handle_input(Chars, Pos) of
+        stop -> stop;
+        NewPos ->
+            io:put_chars(clear_selection(Pos)),
+            loop(NewPos)
+    end.
+
+handle_input("\e[A" ++ Rest, Pos) ->
+    %% Up key
+    handle_input(Rest, max(0, Pos - 3));
+handle_input("\e[B" ++ Rest, Pos) ->
+    %% Down key
+    handle_input(Rest, min(8, Pos + 3));
+handle_input("\e[C" ++ Rest, Pos) ->
+    %% right key
+    handle_input(Rest, min(8, Pos + 1));
+handle_input("\e[D" ++ Rest, Pos) ->
+    %% left key
+    handle_input(Rest, max(0, Pos - 1));
+handle_input("q" ++ _, _State) ->
+    stop;
+handle_input([_ | T], State) ->
+    handle_input(T, State);
+handle_input([], State) ->
+    State.
+```
+
+Note that when using `io:get_chars/2` with the shell set in `{noshell, raw}` mode
+it will return as soon as any data is available. The number of characters
+is the maximum number that will be returned. We use 1024 here to make sure that
+we always get all the data in one read.
+
+We also need to draw the selection marker, we do this using some simple drawing
+routines.
+
+```
+%% Clear/draw the selection markers, making sure
+%% not to overwrite if a X or O exists.
+%%   \b = Move cursor left
+%%   \e[C = Move cursor right
+%%   \n = Move cursor down
+clear_selection(Pos) ->
+    [set_position(Pos),
+     "       ","\b\b\b\b\b\b\b\n",
+     " \e[C\e[C\e[C\e[C\e[C ",
+     "\b\b\b\b\b\b\b\n","       "].
+
+draw_selection(Pos) ->
+    [set_position(Pos),
+     "┌─────┐","\b\b\b\b\b\b\b\n",
+     "│\e[C\e[C\e[C\e[C\e[C│",
+     "\b\b\b\b\b\b\b\n","└─────┘"].
+
+%% Set the cursor position to be at the top
+%% left of the field of the given position
+set_position(Pos) ->
+    Row = 6 + (Pos div 3) * 4,
+    Col = 7 + (Pos rem 3) * 8,
+    io_lib:format("\e[~p;~pH",[Row, Col]).
+```
+{: #monospace-font }
+
+Now we have a program where we can move the marker around the board.
+To complete the game we need to add some state so that we know which
+squares are marked and whos turn it is. You can find the final solution
+in [tic-tac-toe.es](assets/tic-tac-toe.es).
\ No newline at end of file
diff --git a/lib/stdlib/src/io_lib.erl b/lib/stdlib/src/io_lib.erl
index 543496c34ca2..967c4d1afdcd 100644
--- a/lib/stdlib/src/io_lib.erl
+++ b/lib/stdlib/src/io_lib.erl
@@ -86,7 +86,7 @@ used for flattening deep lists.
 	 printable_list/1, printable_latin1_list/1, printable_unicode_list/1]).
 
 %% Utilities for collecting characters mostly used by group
--export([collect_chars/3, collect_chars/4,
+-export([collect_chars/3, collect_chars/4, collect_chars_eager/4,
 	 collect_line/3, collect_line/4, collect_line_no_eol/4,
 	 get_until/3, get_until/4]).
 
@@ -1135,6 +1135,20 @@ collect_chars_list(Stack, N, []) ->
 collect_chars_list(Stack,N, [H|T]) ->
     collect_chars_list([H|Stack], N-1, T).
 
+%% A special collect_chars that never returns more_chars,
+%% instead it eagerly stops collecting if it has received
+%% any characters at all.
+-doc false.
+collect_chars_eager(State, Chars, Encoding, N) ->
+    case collect_chars(State, Chars, Encoding, N) of
+        {list, Stack, _} when Stack =/= [] ->
+            {stop, lists:reverse(Stack), []};
+        {binary, Stack, _} when Stack =/= [<<>>] ->
+            {stop, binrev(Stack), []};
+        Else ->
+            Else
+    end.
+
 %% collect_line(State, Data, _). New in R9C.
 %%  Returns:
 %%	{stop,Result,RestData}
diff --git a/lib/stdlib/src/shell.erl b/lib/stdlib/src/shell.erl
index 3135c95c2461..aeefaf647d62 100644
--- a/lib/stdlib/src/shell.erl
+++ b/lib/stdlib/src/shell.erl
@@ -115,7 +115,7 @@ On error this function will return:
   description of the error reasons.
 """.
 -doc(#{since => <<"OTP 26.0">>}).
--spec start_interactive(noshell | {module(), atom(), [term()]}) ->
+-spec start_interactive(noshell | {noshell, raw | cooked} | {module(), atom(), [term()]}) ->
           ok | {error, already_started};
                        ({remote, string()}) ->
           ok | {error, already_started | noconnection};
@@ -123,6 +123,10 @@ On error this function will return:
           ok | {error, already_started | noconnection | badfile | nofile | on_load_failure}.
 start_interactive({Node, {M, F, A}}) ->
     user_drv:start_shell(#{ initial_shell => {Node, M, F ,A} });
+start_interactive(noshell) ->
+    start_interactive({noshell, cooked});
+start_interactive({noshell, Type}) when Type =:= raw; Type =:= cooked ->
+    user_drv:start_shell(#{ initial_shell => noshell, input => Type });
 start_interactive(InitialShell) ->
     user_drv:start_shell(#{ initial_shell => InitialShell }).
 
diff --git a/make/ex_doc.exs b/make/ex_doc.exs
index 9e2d71572ea4..bb19a1c7b8df 100644
--- a/make/ex_doc.exs
+++ b/make/ex_doc.exs
@@ -228,6 +228,9 @@ config = [
     :epub ->
       """
       <style type="text/css">
+        #monospace-font > code {
+          font-family: monospace;
+        }
         .content-inner pre code.mermaid {
           display: none;
         }
@@ -235,7 +238,14 @@ config = [
       """
 
     _ ->
-      ""
+      """
+      <style type="text/css">
+        .monospace-font > code {
+          font-family: monospace;
+        }
+      </style>
+
+      """
   end
 ]
 

From 61003ace248714f6141c627ac849b8bb48aea373 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lukas=20Backstr=C3=B6m?= <lukas@erlang.org>
Date: Wed, 11 Sep 2024 20:27:34 +0200
Subject: [PATCH 3/7] shell: Implement lazy-read for noshell

When running in `-noshell` mode, it is "normal" for programs
to not eagerly read from stdin. This commit changes so that
we only issue read requests to stdin when `user` has received
a read request from the application.

This change also makes it so that on Windows we don't have to
abort an ongoing read request, which means that we can use
ReadFile in non-overlapped mode and thus Unicode will work
when reading from stdin in noshell mode on windows.
---
 bootstrap/lib/kernel/ebin/group.beam        | Bin 20976 -> 21172 bytes
 bootstrap/lib/kernel/ebin/prim_tty.beam     | Bin 23732 -> 24176 bytes
 bootstrap/lib/kernel/ebin/user_drv.beam     | Bin 18772 -> 18940 bytes
 bootstrap/lib/stdlib/ebin/io_lib.beam       | Bin 14760 -> 14860 bytes
 erts/emulator/nifs/common/prim_tty_nif.c    | 476 ++++++++++----------
 lib/kernel/src/group.erl                    |   7 +-
 lib/kernel/src/prim_tty.erl                 | 140 +++---
 lib/kernel/src/user_drv.erl                 |  15 +
 lib/kernel/test/interactive_shell_SUITE.erl |  12 +-
 lib/stdlib/src/io_lib.erl                   |  25 +-
 lib/stdlib/src/shell.erl                    |  23 +-
 11 files changed, 391 insertions(+), 307 deletions(-)

diff --git a/bootstrap/lib/kernel/ebin/group.beam b/bootstrap/lib/kernel/ebin/group.beam
index d286e8c78648f38f6418868adf2cec9553067ce2..26ba0ebe5942812ba80ff7cede35352b89c34d8e 100644
GIT binary patch
literal 21172
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
H?%)3dT&_)V

literal 20976
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
P=NbFMGbfRU%K!a82B--^

diff --git a/bootstrap/lib/kernel/ebin/prim_tty.beam b/bootstrap/lib/kernel/ebin/prim_tty.beam
index 5135bdfdbba1acd9e498c9fc18a9158d7daa331f..9804b8f549790b7f8e3150bad2aba83e525934f5 100644
GIT binary patch
literal 24176
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
SCeO|pIu*)}9obQGJpTtsF4MmN

literal 23732
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

diff --git a/bootstrap/lib/kernel/ebin/user_drv.beam b/bootstrap/lib/kernel/ebin/user_drv.beam
index 599f7d5f2909a22dba0093ff42f0262727667feb..d8ad75b57e0c7c59a17a61b42119c3165df0b89f 100644
GIT binary patch
delta 10607
zcmZvC349Fa|NlOjjXXx4c4U?~V`38-Hp8%sY$A+JROlg<R46LqzADsxZQQqFv^B1E
z-$mmnElR7}Z?&q_RZ6wrqPMCZsQSO3*(CD+{_6GGJTuSd`5e#ZexC99V)D01=o1|}
zHg-7L-FbuNiIs0S91aOT{%@bdLEhM1D2|FCoy{B3<M6kD4J4g+f5Ng!^fbdK8*K~S
zPF-8LyZ++`1)`hRV|-+xSyNs?eCB@n2|PcPJNUDOWY$So8%U4@i?)lBXgxwZ1riqG
zt-VvymKlO<h}H1+WRyZ<!hokZz$|oCk9^vGTHuPU_zb{FKv&HjE>AGeq8%b)#E}j{
zJ4ZVlhByiovZEx!!@3A!VnrG&7;R~c+Ypmvi#|(rnt-KUVjMD|&s(%3a7XBbcJ;HM
z5Mqb&1YHqh@E|Lq6c8lLO>*xN8wA|hUJsk(T^n7fZ;v&ct^}VUWE$>Zt|9j}L<LN9
zqNIf$)=eljM7MzFN|CFDVj-P%C$yWfRv@%{pts~(!6y1vu@~}uQmpc|oX&a>`hp=Q
zLYf|xB6rDRQo<^hUk2?-Xnq*lGmtB}KvEV}xqojqAej{i#mTH$uY_Vk3p}j1jIoy?
z)`ujyQPPogHh|FH9@a-F_OQMQ#YWp~*>C~)9Mo6eWL0B>{R!=3!z|jV9ie?KnpY|E
zD^Uk`XEN)@5&JnsPnc%sQkwmiMYdIBN30?0PO&k-oM;zLR5~K<6*G6`<?2GLp$OSd
zLi-QsZ3w;7*<eBk41_cj@&x5J23f3cB(=@w5^axFT)i#&Jg4Ac10kvCg<b{`I?z}P
zwG1*ps#>$!VCar7O~|!qR~TPj!43<n*kSWQ)wtlOu)YL88z!`X1=&dOXG3*1gwP=Y
z!6AFtNcl9ZDF+0_y**a)8NDHNH>b{88$xa>dr?p@0{{f+?vz+7BNrl!AoN9}KsIt=
zL_81u|0o%4i%Ka4E&4(kslsxkdXy(sSdP@NG=a+~Cb8jSA{#~MaEs=b>Rt%+HX!j!
z2nQ~c;)75<ZAt}Up<a44U%=;saBvx#8eyw?JfS0bD3#&%aw@DNXU+`)=%_&NY#|MX
zU}GUdG8-d$*=RyXV@Kt%dULFFHjdCSM%#tu0DZ~;V-0Z(+<IIvOq|g1My4<;U$SUl
z7_))l6k;TZHDRzDe<w=1W4#coh(4d?pwf{-LMKH#B#7=pT=ugOK+cZKpobk2#NmGS
zn%p8!*4b;^oHKM*L}*b!b_fAk@&;rjBhAY}Vlcp_iR0L0LMMmVavrVG+1W6r(-0Dj
z44>i747eqi?Wg^tq+45D0&<o`2Y{!?5S$)1#RsQr1}je`bc!K1$EK!A*^(`;UuYvl
z$cEE5OEL^G6>c*Sc#?;`BNRx6gXfpvdO21X#Bolrn58Hd9psX3IrfTA?#go^6coj2
zQyMSCC{V<-5St#(C`GXHbU_Zd3k455Dhtt$YzQhC84zwTm?V4H5ut!9+1AQ*=FlbZ
zlfh1rVRDNOadBv88$6>_Gk&(vo627EDgmz}BjA;C(lVf?d~pJsBTi(q#7S%>p)*S~
z6>#gwYp;2QXer-tJ8k|sp!_2EYi7k7H4|r*>Qv7+a-dR|;Z7)9Hq@zTJ^XC8*{((t
zGTWR`qgGO(Et4(MoJUMDz$8Q9TMfARzUP|n)Tk01_Gs<gXeHn9It{nW$bpiF!?8cI
zopb>#JcZ2{r?Pp3&Vv_mm2(vc&VZ{33U^rarAKt;OWEAd4Dls#nyW3XV(WYXR>}d_
zLLTByi;jTQ^OD)iUGju%F_BX-#OX3%E{l%D#v2m)vaNP*uZ6ak6^S$1tKuy7ia47s
z5$CW)gf1#ojHJVhxJoQK3aP14h%Gj^*Q`@%v@4yNgf5m0$=p@HO41k?p{7ljhsBao
zbOq=xY^sFBShISAIP!|wxK@>#<4{Jp#!*l#I^KS98sa>>OfY-aN@_ap(Y{}Or0cLj
znWXEmXqmRenb15iCz^+9)qei9vgP@3zU8QtmDqBsSC+Yryvb~-;Kg!KS}u4AU7E@)
zSxINh2(?n#av244Sv0mCc9?*BwR?*Ir<sH%V3c{kZc>NkepFC9b`QnoE9`BZg|gWS
zLRWAnwWE6hYHT<RRwHj85>oL~kYUSSbVRuuIU6z@GPl;Q8y9pLG3XG6V-H19ii8yU
zZmhAEttw_K30-M^Upp>ul_9<yPCB77Mhig)8AE~7p?Jb*ABNfTT^{lx)K{0A@~|}s
z1qCG@*~1NYnCx`0&SsCes*zKihW4sCF0M}Ont(gs8)ECdhFFC7LX7D-9=6`x6;~}d
z6%NoC?hs<f1f{?(Z``Y<VY*4ci7X^G<BrBtg+-^s*Sz-PwSs;diKnC<I)O36hGDfu
zXY$8%wvN!X$f<;`gH5qw7HImU{BW9@Y=?x)Y+L6sIvaqd9`>Huy-pliZ%(LFBRGe9
zJUq$6_S!z5%--;cO9Pq6HVGw;KNnn@L8*JVQnwVd4TNss3coFcmHj@S-&D*t61q`R
z9Bq6NUgI`eKU&R=Kh=dO0}is8&`m}GWZWz%5)!8Xp6P6B2BBMw2)O^&GL}k0rbXw0
zXLIn}&1vr}X4?qeR-Wf^KL2_#+fL|qv$Ik=xP#EwZTdUH^idFZ5xUceKtSy()AoFj
zjq|bMJRzUZH|&VZ#sVaHcn5#lE$LykEr%86p&Dfqx~Kfy-0<AqKqhZb7x3QG!`>2t
z328p|CUWTt_LjJm?GsnBw+P*b{ntYE*iY!2c&v@>@3+Nk3n@5-u#OWf`ZCP0G~jY1
z1YB?h?j;9Yy0{8&2#NzjU0~Od4IfWaK8r5o+knDkVCBH(vXLhE442!G1;Y)$SOj>A
z;dC1=FE~KcTLd?%ltmYFS2bLyTCQ1=4(!E#_JO%0UX4Eh4hrYM3!08nW!gMk638v#
zY|KC7>%_cOBJ?Z+wfq$>v#Hjt-Sh2|3M2d3L7Df;vTleW<}j3itn;d*i(};ii@y3O
zD;-4e$_0-?9jJ$7gt`nAhZirXRENBJz^$M_95Of7jj!^W3vt4G_IP=g1PPZyLce*r
zZjDH*G`$25aht-9htUjXLEZ15D)aFO3MU_rT69^~T0-ANs%Ve*_bfV_&mXhsR6f3M
z(Ybv7IIPdd51_LwF_F*@Ejnk9o6!GQbU982Yb8QI+Q|Nc&T*40DErtaa_mBJU9d<J
z*DDc4k~=NWUC2I(H5#*zhp`icp0Jnb;yOnWsumaV<MJ~b_{=ApWnnHmDJzbB_zR`+
z#j;QV1&`2^0PbU-qP&S49fmlSBYe66ywll#2t8%d6%ebzG$i295I3jbio@A|#fI#R
zxQU%6^t7Lya;M^_@Ol(tznZBD^@3;o><bv|6bz<_o1+b+HytM!!|mg_(V{DnFjD>O
zcO>E81)aCKX)^mg*0{|s7O>9={XE2e^YKHFFI%<`Dar1DZy}m#j=T!3?*l)(9qznu
z^H%Mg&dw5gmJ`C7gm@3TEsI;xdxx8_Q24ZmUIOWyANW=;PK=9OW4oU_(OvyqDI%l*
zy#jVY+{(@qdfx1j7#q3PUN=6mPU{Os0+82*sUe(7sI7;?#FXz7#O-#r-QWuNB%ZJm
zfwj@5aw)NHwTmHkC%icuSP#HWHn2*)I$2*pgj2CbfL#_hvrB|tdQ=-gC<$vfLw9K*
z_NSnWJFr=V^dBy+Dufg^j0Ib4ViW4sC6~=mz3PFjQ94b8?e3vRd4pXMcd;)C{W8S<
zO5kV-wh$`twsAb1f_Y%WJuJGNZxq~GnD^?{30?`YyI~BTp<XXlg17>ayaO6&2vh+%
zz@j@rXr7;4MdIfc^RTNz+d>=4bMrTZUX5kf;45EY3k$<5z7kwjO7O#7(Js(fn$Er^
z^s8#@Dxuff)nHc#+^otM5&AVmB=j5JY8W^~So94DkYevea6(V~Oj^vh!&`4BOi+Y8
zh0xy3FAdCVNp*w&^|M>Z3%BgN!25e7itpjFw``Z404Tir7WZlg`Vz?vNVtmY$Q!pZ
zP_m71^B8vMJy26RIPppgQCj-h{jhu9kImQF4TF7~&8`#rEq62zyDm2rcVpw=c^yJr
zm(hAS<P<!#mYuQ>W7wKHwy~FQ!`!86&92*Zg?ETIO8nIcgS+7{_hH#R>^pG>yGiIx
zj%)D#ZJ&(_M~L~ZZ0=1yhtsSXtXI|SUcXYy?}2{{Q9X<Of==^ibeca9`a`+>OI#~5
zTqRmkc-v_Q@P6zUZRd}6+j#(1{fW>YOWID~Td>Vfwy?bI{P|yLDWDbZL2Y_(+db$n
zb`N^6d=Gl4d=Gk<_n^UpkFxzO*t!AFSif5Iojq`j+ei;Qzy7wzN9Y{{79W2{!r_yD
zAU5_uwm%U>JSqQW(Ia~j2)zq;=Hoq!ZsqIlTXYW}|F-B+B)`4LeGgJJL1-;_GyGam
z@V3bF>Keat&?0p95263y;FIIggdA~Sz^iyuG?LLeBL{1RoK*buK#rqVAV<mZX^xDv
zUK~^0#~zC7*+W7fN_sv&t$A}QAgvMA0Xn_Jec%Tgy)r_0)5U#0yh=u4pqGNfpAf5i
zbA<46!XbvY<Shb%ctOA`zG=^k`%3^qnxI9($_F&3_!fR|Yfhp%qwR*>kdev~?1+CC
zQN5z1ElEJ+pwi2c5KAX&q+g4*T{@`M<vXvWYZZuE0iFnkb-m(2_%pOp*UOU-Mj<-e
zu=`H0P2KG?<jg1sZ3RIR&}3<1u@*(tC_7QU2X9gUaC1P#VvQ1&BDTXl>oLfrORFW6
zd&8AbH^Q8o+%Wh)4`lco*M+z>!alF672ypYyWdhpJSK-9D{&EdmPzwM^3_m56{tXl
z3LX;=YD_$=MH4mJme}A2Bb+u3*~i&i^tjWZ`J{!Mx9+MNvEGd;IUu2p+f30Cf*<^w
z42%<!4BZy&pdhXao9VG=MX|LZqh~_C`Ve6_%df?RQzVX9E6_V3WdFkxDbHBETmJ})
z=J~b9OY^AqIP$0=Zncl~YVh$`t+Ei(q_QlEM`x8VvVBNB0sN)^t0bwK_Bc^1*U%nE
zHpP8Hi3VN#*s8`vIy6-wsvM4WThx!kqPj|?;0ITWeiEhBp$&Og?u<a!<bb+0NPH6F
zCt37U*i$vfHmntNae@+2t3*2#o7yQ*TkO}Wf*L=ut5x{|2T@~nE#AH(vTd|qQ^a?)
zI^q$n7Hm`<HmXL{YGBf^#Gk82>(Hm-M4?J3@v21bJT;588bqyO(a$hzRAe}}AZJ<h
zG<PC1zL7V0=HIMV6QmmnF**dQW#8$(hs}JBU9^T**5icZinZEAt&Meh*xBMNdX_q9
z0J7J?=Irn}2QI5hyLy<3Z%_d}i=KxgHQ<mSLY-TXgW`Sg6;N!945so{T;~sNi@t~K
zqoRAiz{f<3UgTpvNW@3z_X}jDV_>WTrwPZYZ_!JbdmnQR%H+RXB7Z|Je{!+rA*#pd
z8zH1?8c~yhinFMyVdQsHU&3;6yrXGLn_}-*C|*IWp+zrqrj0Cm6%3BUlzOxzL8pe;
zn;*lP;Y`YF{#Q{3jkoAE@XS!P#^!!K(b<Hkjm>MiqBpVV*F2Koo189)crE%3rw0~3
zTj2kom-+~I=6%8Zzh>jcalxh*{T53;R*2fnuRUSs9<3=3_nM(=Eex$WQJW*Q?Grn4
zPDVh`bJE;cQ6zq%rHLUeRXnNr#ZR>qqNbF(-*s#=Gg8vB!PxK7ntH`%{2B<?Oh|$m
z;C+L;E{~ZeyixuP`{Y+_j&f+J|Auyxqb+XY3TFDXXM|Mz6l4&{W;dkaF7!L}VQoU%
z(>SJs0nbQ0_MAdE^wLU2{JtEo7Uef+Z!TXvqqP!0*IJ6hv~;4Tmk1+e8?qA{z|HUv
z_731`yrn;lBrYI6%h7E4KPVRcu{_4v|BKP;|6u%79^+g&j9`gwjZ(pFp;wFNwKn1f
zEmORxWr$yB0r8U7ny9U#9cZGU^q-Lwa!TXoayU2wxO_AaRrWT%gunb!ZVwry%DPo<
zG82<QJIVZ7ZnjN%I#)pFb~)e^2=At`N5rezQ{q?Jlj1e4z4*1(PTZzt!ExFWwJm5u
z2t)i7KK@%d%&bztHURFF0fIzrR|@$Wkl)K7L~UORxCX!<<p58X0=@#^&vJmLN&!~^
z_^TY?X^Vb`4n}>(qBr^2!J>B&E3GB)&-QB_;DH?k1%X=PfKI!(+yjLtJleCkM=rS<
zzwG1}=IXPYMn{X@2aRtKZ#gMiH*`C0!LN07x5#trT3253^K>njsJSIAaR$!NIjE@s
z!6!SxAD=^le9ohF%@CWVXkG1gDWrAv>f$h5TJ-|J9MUw_GYl8sZG;S=0&GsyPXD(4
z%%k;n)37M7lw}FKi`w(>qRvF^T*4=Z^HIc$z!OrmE;+4p+}@DZ#r&vg&3eG^A{Fu;
z%Md@w5J(#Vy_3!R`EuB1rDipQSlX4}G9v1E|NJ-HvRO#$ZhxY?jDY1eI+D98QM>uH
zjsiSGCTe%Cy%#L{0NR@f?e&PxM{O$mVkhTX^dD5Cwtj6W>@w88bi{dA8w!E0Ydysq
zT0T+pkxPTk<#erps6FwV0>T9t{gC4!?3NYI&8b58*=MN^WYl4ZLmyV9$(Tm^PQa(5
zk_*3FOC^|W$MF(4R(pPURU?4$B)tAbUK9otYrTlt3m;J|Rfv-M(x*Jy5TT%duGY^|
zone^=LFPeaG7qw4?gN>76SX%uw?N+h$&LFRON~T+dpboM2*V35ORWG-&p?&DNl3s4
z4gTQ`H<N0VIj4C-umU9NkgoM5Y9GF!qJsM*PK07Ut~3?=#;apG-&+Tw_8pL0GA|^=
z<U>9E2IhLS{`U7ht-mbZ!8QzE?yPLdQY(UYQ;#+no^H1&yi&Ea`xO2`MHQoBbXo<U
zNbNG*pMNe=2bir=sst-x4`qOX*b}$yASi<u!NDNR--ke3e0&k=<nu#eU_KUFYBYS{
zchr_)yy~kgtilmc;fOL7j<8ku5>z;xsKX(c0f`=?5=Bi4sxM)pH6|VpPpBh6h0`8s
zsS;@asS|aSM;nLsNn8`s#<`WXXyWb8(#?Az`=fwb8QXuBpHx!u<9FP+8IYWQZLA#9
zg7yLTu6^Rwf-+XvM_?B}*BNp4-E4xT#&Fl?UpBQ#Jo3lr+GwJVHVgepbPT8G(I%N8
ze{66R<QeM$4e?${PDyatZPYlwHqxDnU+D=t!=p{a$Lx~tWEmxGHvgoJva8CFxT8m#
zB8d0=+T^^<>{M-XrV_|>IPLpe9}d=vFVj+8WpWj9xuPcM+IXUlH(R781t)|BE0V>_
zaFmkzs=!%r0jo}oR<iklotJspQmeqHa!RhUoxBb!u5ed9347=I4q9quJ{Ex|A17OC
z)vQdSPJyi4_ERl27WQ}mTTg?@0)mXxJKa*NVe%g+Wrmc^&j5xvP>{KM&9v0&06j#0
zm=)4y3fT=DNbUi_urF8RAyN&vUanu84bz6SIZ!=t(bLGu+HARPp}ix;mb8Ho_S@O`
zP9J`n!zI+`T58RRm<CR;m>1IK{tt`BU{Nc~V!q8{fw?HHR^0qDA`3W?mo2q6XhdQM
z3q#t==83ep2650;49o!a*O?gUpwDGib{YwYd8ESx{*jW$t%A0ChAFpjr!BJ7c#w#K
z7>n&L9p4_Hbpc*g7uLh6#{_@wko>5^uj5oV=Md7Cn8R8q9Zg#z-ij}=)C8Q%)mJPv
z5frIG)K^2=EB3||^al2~LHlaj@VYIv9v2}1$1>t^h2^yy9|>(~Co?|X)!;QtO#%@S
zVl546uh~Sx7aAot;0jWqpgg`j!?M)+SRO4Aby-NW_;MJ7r~BoW+5iv+$cm7*JPc7d
zWTmBg0C^0MRUvJqIVL?mnEZ@FQK&+e0}#nU)YV3e@Qg&e5Oqy>4y)JlB#mi>K2Owj
zma1WG3<O;t(l#TXb2o5%v<+^Y{vtS|4bcvr`?p8ii0!wf8K@hZh`Nz~l~6ZH`Fb07
zgu4y=u1#M-<}E!>@C~8lBuj0CNK?a}kHT!%;*#U@<_eOwi>O;HRR@23a#OeBAlpWc
zklP5d*Jyz2eK(}}%>4{neWGr&)W%p>1?#q(lUi0wd)-o-V4^BExx;7>%Xf(;Z)bQr
z)v(Q7>Do@gkuzd=F8^OX?S>R$bY|hP>+Vx6Pmqf7cnsi2%%w&K3G6;)WJDyc#e2zr
z3?i!moQ9u(-)H!ZD0%K`reur`?!cS<kKAef5Lhx^u##-WNcgX0zDmjbc8n3_=3~O|
zWPKPOUjNj95nRgo4o9VyV^*x}G-PPaHqzl^qh44cZLN^`T>mt-Vbu1Nj$<pw1WyIp
z)OJ;jS>kK6Ry=q8#h=oye);pr(Ty%;y>d5y_SH{5UbS-n*f-ceg;(CT#*VsfUA*{f
zi=E$&z0!Q@h4Ht$u3D--nc}O`VI=+X=8{T!%>MTKl=F*jPO0c0QFp^9RquFx6H@iR
zk}nQVYCq=3*RL<zHfr@VZ+>?CRWqybk2kdqwX41w{PA>Ff6o_spK8yKtMpjWq(M^)
zube!Qa`g9ZJ7<3S^35j`7qxt{;k;k(&)D7i*@WWD7Zw+sYxv>iQzxc0>htl`ZO>;M
zJy5sHq93L%Z1zsN5#>q!Z@VUU7S!55`rB<UoqW|@**`t)WX6sqxuc%T>LDJTD7Twj
z{OQ6oX{}DQsAyyf8P$Ki82ogr8k}`|eC+MaVn?D9nf}9r!RC^mACHMWHoRfPmDZ_3
z*RyMKpV+lz(C{@=^p{#)``T=M?eemgXJ%~rDQAao-0&S4g>(0-zt2DZ?FZ9S@Aasc
z+_m16c4H?dZ)~$*$9F55JoxUyjmNvJO{sM9iv{ure+X;0Hu$USnd_aK9dFp?-NHmY
zIC6oOyXBkfFORBLwY`ztxk~kCDmg2Y9FpI++gF?KPZ-#JrJ{}A`RcidhWhYM!{;5l
za*w2bROPQZJ>#Z6obhl(g}+;=^B&HAIJikmY14_$+lRF3-Tu=1-7*hHkC{_EeBEb`
zzjr=;s!ROJb4QQ<b9D6jd++JrH2?l;`ug@WpK2Ex#Hs~5)u=e*?nIhf?d44u%?@X;
zJe79#;k`af$MrD^E2WPuuIRqMw`cvl)OI^E?seSoy(jA9T~}r;J)5QEonP~I$58IV
zW39GM=u&G({m#yUOIhug9q>LpJGQWS*VlilSMir(XSZL5HP(8)k-PfhgeSIK2$6Nq
zrUxqauUWm-u|F1V9P`xblfnAp=IKpuW<@U52fKdh*RP|Ve!kkG6TdJ0ZQjY9*M=M$
zBJUkl-~6KY=|yLT-{?MU-N}uKzkN|JDf|0<_b1g`ec|mxGlSBAsADk)C#<;J?Dn|}
z8&*HJs;Aa*L;lRmQ{pR6nm;P1+l~5Hf6n>lK~b|6XWl#hQ^PG?G7cP_c`=|Ab!}U>
zYVh=&XAiHq`_Xj&p-E}pFTSU&*Ql&U8*6W8Ma>KEo}boyZ10;j`mOz;@cA=^Eu;Rb
ze5Li6iXTk-kiF1i*~r@7mma39p1yqYVaKg&d!-M45$0DB-ygO6fxGBtjr;v`rJRrJ
zIF6lP`a$JC4s5CU=Z>CDX8WF-vHP6-@ehs~FT5?bi1RiI)>u_@z>$hc#^4C`&dLVE
z>4*trvU}OFA9f#6XKYy8Z%3B7w@QbUGY8ef7rGuBe!cp-@#8A?`1Re`(@oD_=-U6#
zg^34(`nd6X$B()5_xVL}Uv^seD>?qB6w@gA$GFxBa~H&n|Fh9sj+6C?Yk&581J-p~
zaYFliYmd{nhb>rLzi3nSQ^Du_J02!||ISD2-}fK?^2wSn7WAKSVcqI~s{OHl$l=Vi
zElX1`#a|j-IBVGbjR%6K*L^*3-<7^&Dg^VIyf<k~g|xAYf4sJR_kqS@^Z5gA6#TR8
z!rdJOalaKR?^f+xc;oB$Z`QmsuF}(;?)SL#&mZ!-HAA;OjOaHwa1xp7={_TRV$i0V
eYqFk_2E-30W4dqcH`Li~*3YeGwKN}O<^4aWZd!T(

delta 10693
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

diff --git a/bootstrap/lib/stdlib/ebin/io_lib.beam b/bootstrap/lib/stdlib/ebin/io_lib.beam
index 74b8894b67edf6f3ef6a41f4f1f59d17775879ab..e03a42d6f1c9479359a6fbb96a3ca90a30c17236 100644
GIT binary patch
delta 3180
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

delta 3019
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

diff --git a/erts/emulator/nifs/common/prim_tty_nif.c b/erts/emulator/nifs/common/prim_tty_nif.c
index 73fd7569abf2..cc299bd337ae 100644
--- a/erts/emulator/nifs/common/prim_tty_nif.c
+++ b/erts/emulator/nifs/common/prim_tty_nif.c
@@ -60,6 +60,9 @@
 #ifdef HAVE_SYS_UIO_H
 #include <sys/uio.h>
 #endif
+#ifdef HAVE_POLL_H
+#include <poll.h>
+#endif
 
 #if defined IOV_MAX
 #define MAXIOV IOV_MAX
@@ -92,15 +95,11 @@ typedef struct {
 #ifdef __WIN32__
     HANDLE ofd;
     HANDLE ifd;
-    HANDLE ifdOverlapped;
     DWORD dwOriginalOutMode;
     DWORD dwOriginalInMode;
     DWORD dwOutMode;
     DWORD dwInMode;
 
-    /* Fields to handle the threaded reader */
-    OVERLAPPED overlapped;
-    ErlNifBinary overlappedBuffer;
 #else
     int ofd;       /* stdout */
     int ifd;       /* stdin */
@@ -129,6 +128,7 @@ static ErlNifResourceType *tty_rt;
 static ERL_NIF_TERM isatty_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]);
 static ERL_NIF_TERM tty_create_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]);
 static ERL_NIF_TERM tty_init_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]);
+static ERL_NIF_TERM tty_is_open(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]);
 static ERL_NIF_TERM setlocale_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]);
 static ERL_NIF_TERM tty_select_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]);
 static ERL_NIF_TERM tty_write_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]);
@@ -145,20 +145,17 @@ static ERL_NIF_TERM tty_tgetflag_nif(ErlNifEnv* env, int argc, const ERL_NIF_TER
 static ERL_NIF_TERM tty_tgetstr_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]);
 static ERL_NIF_TERM tty_tgoto_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]);
 
-#ifdef __WIN32__
-static HANDLE tty_windows_select(ErlNifEnv *env, TTYResource *tty, ERL_NIF_TERM *error);
-#endif
-
 static ErlNifFunc nif_funcs[] = {
     {"isatty", 1, isatty_nif},
     {"tty_create", 0, tty_create_nif},
     {"tty_init", 2, tty_init_nif},
     {"setlocale", 1, setlocale_nif},
+    {"tty_is_open", 2, tty_is_open},
     {"tty_select", 2, tty_select_nif},
     {"tty_window_size", 1, tty_window_size_nif},
     {"write_nif", 2, tty_write_nif, ERL_NIF_DIRTY_JOB_IO_BOUND},
     {"tty_encoding", 1, tty_encoding_nif},
-    {"read_nif", 2, tty_read_nif, ERL_NIF_DIRTY_JOB_IO_BOUND},
+    {"read_nif", 3, tty_read_nif, ERL_NIF_DIRTY_JOB_IO_BOUND},
     {"isprint", 1, isprint_nif},
     {"wcwidth", 1, wcwidth_nif},
     {"wcswidth", 1, wcswidth_nif},
@@ -258,7 +255,7 @@ static ERL_NIF_TERM tty_encoding_nif(ErlNifEnv* env, int argc, const ERL_NIF_TER
     TTYResource *tty;
     if (!enif_get_resource(env, argv[0], tty_rt, (void **)&tty))
         return enif_make_badarg(env);
-    if (tty->tty == enabled)
+    if (GetFileType(tty->ifd) == FILE_TYPE_CHAR)
         return enif_make_tuple2(env, enif_make_atom(env, "utf16"),
                                 enif_make_atom(env, "little"));
 #endif
@@ -399,6 +396,7 @@ static ERL_NIF_TERM tty_read_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM ar
     TTYResource *tty;
     ErlNifBinary bin;
     ERL_NIF_TERM res_term;
+    Uint64 n;
     ssize_t res = 0;
 #ifdef __WIN32__
     HANDLE select_event;
@@ -406,37 +404,38 @@ static ERL_NIF_TERM tty_read_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM ar
     int select_event;
 #endif
 
+    ASSERT(argc == 3);
+
     if (!enif_get_resource(env, argv[0], tty_rt, (void **)&tty))
         return enif_make_badarg(env);
 
+    if (!enif_get_uint64(env, argv[2], &n))
+        return enif_make_badarg(env);
+
+    n = n > 1024 ? 1024 : n;
+
     select_event = tty->ifd;
 
-#ifdef __WIN32__
     debug("tty_read_nif(%T, %T, %T)\r\n",argv[0],argv[1],argv[2]);
+
+#ifdef __WIN32__
     /**
      * We have three different read scenarios we need to deal with
      * using different approaches.
      *
-     * ### New Shell
+     * ### New Shell / Raw NoShell
      *
      * Here characters need to be delivered as they are typed and we
      * also need to handle terminal resize events. So we use ReadConsoleInputW
      * to read.
      *
-     * ### Input is a terminal, but there is no shell, or old shell
+     * ### Input is a terminal, but there is noshell, or old shell
      *
      * Here we should operate in "line mode", that is characters should only
-     * be delivered when the user hits enter. Therefore we cannot use
-     * ReadConsoleInputW, and we also cannot use ReadFile in synchronous mode
-     * as it will block until a complete line is done. So we use the
-     * OVERLAPPED support of ReadFile to read data.
-     *
-     * From this mode it is important to be able to upgrade to a "New Shell"
-     * terminal.
-     *
-     * Unfortunately it does not seem like unicode works at all when in this
-     * mode. At least when I try it, all unicode characters are translated to
-     * "?". Maybe it could be solved by using ReadConsoleW?
+     * be delivered when the user hits enter. Here we used to use OVERLAPPED ReadFile,
+     * but that caused unicode to not work, so instead we use ReadFile. 
+     * 
+     * This call will block a single dirty io schedulers until the user hits Enter.
      *
      * ### Input is an anonymous pipe
      *
@@ -445,185 +444,157 @@ static ERL_NIF_TERM tty_read_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM ar
      * call will not block until a full line is complete, so this is safe to do.
      *
      **/
-    if (GetFileType(tty->ifd) == FILE_TYPE_CHAR) {
-        if (tty->ifdOverlapped == INVALID_HANDLE_VALUE && tty->tty == enabled) {
-            /* Input is a terminal and we are in "new shell" mode */
+    if (GetFileType(tty->ifd) == FILE_TYPE_CHAR && tty->tty == enabled) {
+        /* Input is a terminal and we are in "new shell"/"raw" mode */
 
-            ssize_t inputs_read, num_characters = 0;
-            wchar_t *characters = NULL;
-            INPUT_RECORD inputs[128];
+        ssize_t inputs_read, num_characters = 0;
+        wchar_t *characters = NULL;
+        INPUT_RECORD inputs[128];
 
-            ASSERT(tty->tty == enabled);
+        n = MIN(n, sizeof(inputs) / sizeof(inputs[0]));
 
-            if (!ReadConsoleInputW(tty->ifd, inputs, sizeof(inputs)/sizeof(*inputs),
-                                   &inputs_read)) {
-                return make_errno_error(env, "ReadConsoleInput");
-            }
+        ASSERT(tty->tty == enabled);
+
+        if (!ReadConsoleInputW(tty->ifd, inputs, n, &inputs_read)) {
+            return make_errno_error(env, "ReadConsoleInput");
+        }
 
-            /**
-             * Reading keyevents using ReadConsoleInput is a bit fragile as
-             * different consoles and different input modes cause events to
-             * be triggered in different ways. I've so far identified four
-             * different input methods that work slightly differently and
-             * two classes of consoles that also work slightly differently.
-             *
-             * The input methods are:
-             *   - Normal key presses
-             *   - Microsoft IME
-             *   - Pasting into console
-             *   - Using Alt+ modifiers
-             *
-             * ### Normal key presses
-             *
-             * When typing normally both key down and up events are sent with
-             * the typed character. If typing a Unicode character (for instance if
-             * you are using a keyboard with Cyrillic layout), that character also
-             * is sent as both key up and key down. This behavior is the same on all
-             * consoles.
-             *
-             * ### Microsoft IME
-             *
-             * When typing Japanese, Chinese and many other languages it is common to
-             * use a "Input Method Editor". Basically what it does is that if you type
-             * "sushi" using the Japanese IME it convert that to "すし". All characters
-             * typed using IME end up as only keydown events on cmd.exe and powershell,
-             * while in Windows Terminal and Alacritty both keydown and keyup events
-             * are sent.
-             *
-             * ### Pasting into console
-             *
-             * When text pasting into the console, any ascii text pasted ends up as both
-             * keydown and keyup events. Any non-ascii text pasted seem to be sent using
-             * a keydown event with UnicodeChar set to 0 and then immediately followed by a
-             * keyup event with the non-ascii text.
-             *
-             * ### Using Alt+ modifiers
-             *
-             * A very old way of inputting Unicode characters on Windows is to press
-             * the left alt key and then some numbers on the number pad. For instance
-             * you can type Alt+1 to write a ☺. When doing this first a keydown
-             * with 0 is sent and then some events later a keyup with the character
-             * is sent. This behavior seems to only work on cmd.exe and powershell.
-             *
-             *
-             * So to summarize:
-             *  - Normal presses -- Always keydown and keyup events
-             *  - IME -- Always keydown, sometimes keyup
-             *  - Pasting -- Always keydown=0 directly followed by keyup=value
-             *  - Alt+ -- Sometimes keydown=0 followed eventually by keyup=value
-             *
-             * So in order to read characters we should always read the keydown event,
-             * except when it is 0, then we should read the adjacent keyup event.
-             * This covers all modes and consoles except Alt+. If we want Alt+ to work
-             * we probably have to use PeekConsoleInput to make sure the correct events
-             * are available and inspect the state of the key event somehow.
-             **/
-
-            for (int i = 0; i < inputs_read; i++) {
-                if (inputs[i].EventType == KEY_EVENT) {
-                    if (inputs[i].Event.KeyEvent.bKeyDown) {
-                        if (inputs[i].Event.KeyEvent.uChar.UnicodeChar != 0) {
-                            num_characters++;
-                        } else if (i + 1 < inputs_read && !inputs[i+1].Event.KeyEvent.bKeyDown) {
-                            num_characters++;
-                        }
+        /**
+         * Reading keyevents using ReadConsoleInput is a bit fragile as
+         * different consoles and different input modes cause events to
+         * be triggered in different ways. I've so far identified four
+         * different input methods that work slightly differently and
+         * two classes of consoles that also work slightly differently.
+         *
+         * The input methods are:
+         *   - Normal key presses
+         *   - Microsoft IME
+         *   - Pasting into console
+         *   - Using Alt+ modifiers
+         *
+         * ### Normal key presses
+         *
+         * When typing normally both key down and up events are sent with
+         * the typed character. If typing a Unicode character (for instance if
+         * you are using a keyboard with Cyrillic layout), that character also
+         * is sent as both key up and key down. This behavior is the same on all
+         * consoles.
+         *
+         * ### Microsoft IME
+         *
+         * When typing Japanese, Chinese and many other languages it is common to
+         * use a "Input Method Editor". Basically what it does is that if you type
+         * "sushi" using the Japanese IME it convert that to "すし". All characters
+         * typed using IME end up as only keydown events on cmd.exe and powershell,
+         * while in Windows Terminal and Alacritty both keydown and keyup events
+         * are sent.
+         *
+         * ### Pasting into console
+         *
+         * When text pasting into the console, any ascii text pasted ends up as both
+         * keydown and keyup events. Any non-ascii text pasted seem to be sent using
+         * a keydown event with UnicodeChar set to 0 and then immediately followed by a
+         * keyup event with the non-ascii text.
+         *
+         * ### Using Alt+ modifiers
+         *
+         * A very old way of inputting Unicode characters on Windows is to press
+         * the left alt key and then some numbers on the number pad. For instance
+         * you can type Alt+1 to write a ☺. When doing this first a keydown
+         * with 0 is sent and then some events later a keyup with the character
+         * is sent. This behavior seems to only work on cmd.exe and powershell.
+         *
+         *
+         * So to summarize:
+         *  - Normal presses -- Always keydown and keyup events
+         *  - IME -- Always keydown, sometimes keyup
+         *  - Pasting -- Always keydown=0 directly followed by keyup=value
+         *  - Alt+ -- Sometimes keydown=0 followed eventually by keyup=value
+         *
+         * So in order to read characters we should always read the keydown event,
+         * except when it is 0, then we should read the adjacent keyup event.
+         * This covers all modes and consoles except Alt+. If we want Alt+ to work
+         * we probably have to use PeekConsoleInput to make sure the correct events
+         * are available and inspect the state of the key event somehow.
+         **/
+
+        for (int i = 0; i < inputs_read; i++) {
+            if (inputs[i].EventType == KEY_EVENT) {
+                if (inputs[i].Event.KeyEvent.bKeyDown) {
+                    if (inputs[i].Event.KeyEvent.uChar.UnicodeChar != 0) {
+                        num_characters++;
+                    } else if (i + 1 < inputs_read && !inputs[i+1].Event.KeyEvent.bKeyDown) {
+                        num_characters++;
                     }
                 }
             }
-            enif_alloc_binary(num_characters * sizeof(wchar_t), &bin);
-            characters = (wchar_t*)bin.data;
-            for (int i = 0; i < inputs_read; i++) {
-                switch (inputs[i].EventType)
-                {
-                case KEY_EVENT:
-                    if (inputs[i].Event.KeyEvent.bKeyDown) {
-                        if (inputs[i].Event.KeyEvent.uChar.UnicodeChar != 0) {
-			    debug("Read %u\r\n",inputs[i].Event.KeyEvent.uChar.UnicodeChar);
-                            characters[res++] = inputs[i].Event.KeyEvent.uChar.UnicodeChar;
-                        } else if (i + 1 < inputs_read && !inputs[i+1].Event.KeyEvent.bKeyDown) {
-                            debug("Read %u\r\n",inputs[i+1].Event.KeyEvent.uChar.UnicodeChar);
-                            characters[res++] = inputs[i+1].Event.KeyEvent.uChar.UnicodeChar;
-                        }
+        }
+        enif_alloc_binary(num_characters * sizeof(wchar_t), &bin);
+        characters = (wchar_t*)bin.data;
+        for (int i = 0; i < inputs_read; i++) {
+            switch (inputs[i].EventType)
+            {
+            case KEY_EVENT:
+                if (inputs[i].Event.KeyEvent.bKeyDown) {
+                    if (inputs[i].Event.KeyEvent.uChar.UnicodeChar != 0) {
+                        debug("Read %u\r\n",inputs[i].Event.KeyEvent.uChar.UnicodeChar);
+                        characters[res++] = inputs[i].Event.KeyEvent.uChar.UnicodeChar;
+                    } else if (i + 1 < inputs_read && !inputs[i+1].Event.KeyEvent.bKeyDown) {
+                        debug("Read %u\r\n",inputs[i+1].Event.KeyEvent.uChar.UnicodeChar);
+                        characters[res++] = inputs[i+1].Event.KeyEvent.uChar.UnicodeChar;
                     }
-                    break;
-                case WINDOW_BUFFER_SIZE_EVENT:
-                    enif_send(env, &tty->self, NULL,
-                        enif_make_tuple2(env, argv[1],
-                              enif_make_tuple2(
-                                  env, enif_make_atom(env, "signal"),
-                                       enif_make_atom(env, "resize"))));
-                    break;
-                case MOUSE_EVENT:
-                    /* We don't do anything with the mouse event */
-                    break;
-                case MENU_EVENT:
-                case FOCUS_EVENT:
-                    /* Should be ignored according to
-                       https://docs.microsoft.com/en-us/windows/console/input-record-str */
-                    break;
-                default:
-                    fprintf(stderr,"Unknown event: %d\r\n", inputs[i].EventType);
-                    break;
                 }
+                break;
+            case WINDOW_BUFFER_SIZE_EVENT:
+                enif_send(env, &tty->self, NULL,
+                    enif_make_tuple2(env, argv[1],
+                        enif_make_tuple2(env,
+                            enif_make_atom(env, "signal"),
+                            enif_make_atom(env, "resize"))));
+                break;
+            case MOUSE_EVENT:
+                /* We don't do anything with the mouse event */
+                break;
+            case MENU_EVENT:
+            case FOCUS_EVENT:
+                /* Should be ignored according to
+                    https://docs.microsoft.com/en-us/windows/console/input-record-str */
+                break;
+            default:
+                fprintf(stderr,"Unknown event: %d\r\n", inputs[i].EventType);
+                break;
             }
-            res *= sizeof(wchar_t);
-        } else if (tty->ifdOverlapped != INVALID_HANDLE_VALUE) {
-            /* Input is a terminal and we are in "{noshell, cooked}" or "oldshell" mode.
-               We just triggered in a select from a overlapped ReadFile. */
-	    DWORD bytesRead = 0;
-	    debug("GetOverlapped on %d\r\n", tty->ifdOverlapped);
-	    if (!GetOverlappedResult(tty->ifdOverlapped, &tty->overlapped, &bytesRead, TRUE)) {
-		if (GetLastError() == ERROR_OPERATION_ABORTED && tty->tty == enabled) {
-                    /* The overlapped operation was cancels by CancelIo because
-                       we are upgrading to "newshell". So we close the handles
-                       involved with the overlapped io and select on the stdin
-                       handle. From now on we use ReadConsoleInputW to get
-                       input. */
-                    CloseHandle(tty->ifdOverlapped);
-                    CloseHandle(tty->overlapped.hEvent);
-                    tty->ifdOverlapped = INVALID_HANDLE_VALUE;
-                    enif_select(env, tty->ifd, ERL_NIF_SELECT_READ, tty, NULL, argv[1]);
-                    /* Return {error,aborted} to signal that the encoding has changed . */
-                    return make_error(env, enif_make_atom(env, "aborted"));
-		}
-		return make_errno_error(env, "GetOverlappedResult");
-	    }
-	    if (bytesRead == 0) {
-		return make_error(env, enif_make_atom(env, "closed"));
-	    }
-	    debug("Read %d bytes\r\n", bytesRead);
-#ifdef HARD_DEBUG
-	    for (int i = 0; i < bytesRead; i++)
-                debug("Read %u\r\n", tty->overlappedBuffer.data[i]);
-#endif
-	    bin = tty->overlappedBuffer;
-	    res = bytesRead;
-	    enif_alloc_binary(1024, &tty->overlappedBuffer);
-	    if (!ReadFile(tty->ifdOverlapped, tty->overlappedBuffer.data,
-                          tty->overlappedBuffer.size, NULL, &tty->overlapped)) {
-		if (GetLastError() != ERROR_IO_PENDING)
-                    return make_errno_error(env, "ReadFile");
-	    }
-	    select_event = tty->overlapped.hEvent;
-        } else {
-            /* Input is a terminal, we are in "{noshell, cooked}" or "oldshell" mode,
-               but we don't have a overlapped ReadFile, so we create one.
-            */
-            ERL_NIF_TERM error;
-            select_event = tty_windows_select(env, tty, &error);
-            if (select_event == INVALID_HANDLE_VALUE) {
-                return error;
-            }
-            enif_select(env, select_event, ERL_NIF_SELECT_READ, tty, NULL, argv[1]);
-            /* Return {error,aborted} to signal that the encoding has changed . */
-            return make_error(env, enif_make_atom(env, "aborted"));
         }
+        res *= sizeof(wchar_t);
     } else {
-        /* Input is not a terminal */
+        /* Input is not a terminal or we are in "cooked" mode */
         DWORD bytesTransferred;
-        enif_alloc_binary(1024, &bin);
-        if (ReadFile(tty->ifd, bin.data, bin.size,
-                     &bytesTransferred, NULL)) {
+        BOOL readRes;
+        const char *errorFunction;
+        if (GetFileType(tty->ifd) == FILE_TYPE_CHAR) {
+            /* This ReadConsoleW call may hang until Enter is pressed.
+            * This will block one dirty io schedulers, but that should be ok as it will
+            * only happen if the application wants to read data, i.e. it is reasonable to
+            * expect and enter to be hit "soon".
+            *
+            * NOTE: I've tried various things to try to figure out if ReadFile/ReadConsole
+            * will block or not, but one of the crazy thing with ReadFile/ReadConsole is
+            * that you need to call it before the characters on the terminal are echoed,
+            * so we need this call to be blocking. What we could do is move the read to another
+            * thread so that we don't consume a dirty io scheduler, but I've opted to keep
+            * it simple and not do that.
+            */
+            enif_alloc_binary(n * sizeof(wchar_t), &bin);
+            readRes = ReadConsoleW(tty->ifd, bin.data, n, &bytesTransferred, NULL);
+            bytesTransferred *= sizeof(wchar_t);
+            errorFunction = "ReadConsoleW";
+        }
+        else {
+            enif_alloc_binary(n, &bin);
+            readRes = ReadFile(tty->ifd, bin.data, bin.size, &bytesTransferred, NULL);
+            errorFunction = "ReadFile";
+        }
+        if (readRes) {
             res = bytesTransferred;
             if (res == 0) {
                 enif_release_binary(&bin);
@@ -634,11 +605,11 @@ static ERL_NIF_TERM tty_read_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM ar
             enif_release_binary(&bin);
             if (error == ERROR_BROKEN_PIPE)
                 return make_error(env, enif_make_atom(env, "closed"));
-            return make_errno_error(env, "ReadFile");
+            return make_errno_error(env, errorFunction);
         }
     }
 #else
-    enif_alloc_binary(1024, &bin);
+    enif_alloc_binary(n, &bin);
     res = read(tty->ifd, bin.data, bin.size);
     if (res < 0) {
         if (errno != EAGAIN && errno != EINTR) {
@@ -669,6 +640,77 @@ static ERL_NIF_TERM tty_read_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM ar
     return enif_make_tuple2(env, atom_ok, res_term);
 }
 
+/* Poll if stdin/stdout/stderr are still open. */
+static ERL_NIF_TERM tty_is_open(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) {
+    TTYResource *tty;
+    int fd;
+
+    if (!enif_get_resource(env, argv[0], tty_rt, (void **)&tty))
+        return enif_make_badarg(env);
+
+    if (tty_get_fd(env, argv[1], &fd)) {
+
+#ifdef WIN32
+        HANDLE handle;
+        DWORD bytesAvailable = 0;
+
+        switch (fd) {
+            case 0: handle = GetStdHandle(STD_INPUT_HANDLE); break;
+            case 1: handle = GetStdHandle(STD_OUTPUT_HANDLE); break;
+            case 2: handle = GetStdHandle(STD_ERROR_HANDLE); break;
+        }
+
+        switch (GetFileType(handle))  {
+            case FILE_TYPE_CHAR: {
+                DWORD eventsAvailable;
+                if (!GetNumberOfConsoleInputEvents(handle, &eventsAvailable)) {
+                    return atom_false;
+                }
+                return atom_true;
+            }
+            case FILE_TYPE_DISK: {
+                return atom_true;
+            }
+            default: {
+                DWORD bytesAvailable = 0;
+                // Check the state of the pipe
+                if (!PeekNamedPipe(handle, NULL, 0, NULL, &bytesAvailable, NULL)) {
+                    DWORD err = GetLastError();
+
+                    // If the error is ERROR_BROKEN_PIPE, it means stdin has been closed
+                    if (err == ERROR_BROKEN_PIPE) {
+                        return atom_false;
+                    }
+                    else {
+                        return make_errno_error(env, "PeekNamedPipe");
+                    }
+                }
+                return atom_true;
+            }
+        }
+
+#else
+
+        struct pollfd fds[1];
+        int ret;
+        
+        fds[0].fd = fd;
+        fds[0].events = POLLHUP;
+        fds[0].revents = 0;
+        ret = poll(fds, 1, 0);
+
+        if (ret < 0) {
+            return make_errno_error(env, __FUNCTION__);
+        } else if (ret == 0) {
+            return atom_true;
+        } else if (ret == 1 && fds[0].revents & POLLHUP) {
+            return atom_false;
+        }
+#endif
+    }
+    return enif_make_badarg(env);
+}
+
 static ERL_NIF_TERM setlocale_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) {
 #ifdef __WIN32__
     TTYResource *tty;
@@ -850,7 +892,7 @@ static ERL_NIF_TERM tty_create_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM
             return make_errno_error(env, "SetConsoleMode");
         }
     }
-    tty->ifdOverlapped = INVALID_HANDLE_VALUE;
+    
 #endif
 
     tty_term = enif_make_resource(env, tty);
@@ -944,15 +986,6 @@ static ERL_NIF_TERM tty_init_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM ar
         ;
     }
 
-    /* If we are changing from "-noshell" to a shell we
-       need to cancel any outstanding async io. This
-       will cause the enif_select to trigger which allows
-       us to do more cleanup in tty_read_nif. */
-    if (tty->ifdOverlapped != INVALID_HANDLE_VALUE) {
-        debug("CancelIo on %d\r\n", tty->ifdOverlapped);
-        CancelIoEx(tty->ifdOverlapped, &tty->overlapped);
-    }
-
 #endif /* __WIN32__ */
 
     enif_self(env, &tty->self);
@@ -1006,52 +1039,21 @@ static ERL_NIF_TERM tty_window_size_nif(ErlNifEnv* env, int argc, const ERL_NIF_
             ));
 }
 
-#ifdef __WIN32__
-static HANDLE tty_windows_select(ErlNifEnv *env, TTYResource *tty, ERL_NIF_TERM *error) {
-    if (tty->tty == enabled || GetFileType(tty->ifd) != FILE_TYPE_CHAR) {
-        return tty->ifd;
-    }
-
-    tty->ifdOverlapped = CreateFile("CONIN$", GENERIC_READ, FILE_SHARE_READ, NULL,
-                                    OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
-    enif_alloc_binary(1024, &tty->overlappedBuffer);
-    tty->overlapped.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
-    debug("Calling ReadFile on %d\r\n", tty->ifdOverlapped);
-    if (!ReadFile(tty->ifdOverlapped, tty->overlappedBuffer.data, tty->overlappedBuffer.size,
-                  NULL, &tty->overlapped)) {
-        if (GetLastError() != ERROR_IO_PENDING) {
-            *error = make_errno_error(env, "ReadFile");
-            return INVALID_HANDLE_VALUE;
-        }
-    }
-    debug("Select on %d\r\n",  tty->overlapped.hEvent);
-    return tty->overlapped.hEvent;
-}
-#endif
-
 static ERL_NIF_TERM tty_select_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) {
     TTYResource *tty;
+
 #ifndef __WIN32__
-    int select_event;
     extern int using_oldshell; /* set this to let the rest of erts know */
-#else
-    HANDLE select_event;
 #endif
+
     if (!enif_get_resource(env, argv[0], tty_rt, (void **)&tty))
         return enif_make_badarg(env);
 
 #ifndef __WIN32__
     using_oldshell = 0;
-    select_event = tty->ifd;
-#else
-    ERL_NIF_TERM error;
-    select_event = tty_windows_select(env, tty, &error);
-    if (select_event == INVALID_HANDLE_VALUE) {
-        return error;
-    }
 #endif
-    debug("Select on %d\r\n", select_event);
-    enif_select(env, select_event, ERL_NIF_SELECT_READ, tty, NULL, argv[2]);
+    debug("Select on %d\r\n", tty->ifd);
+    enif_select(env, tty->ifd, ERL_NIF_SELECT_READ, tty, NULL, argv[1]);
 
     enif_self(env, &tty->reader);
     enif_monitor_process(env, tty, &tty->reader, NULL);
diff --git a/lib/kernel/src/group.erl b/lib/kernel/src/group.erl
index ef83d9b4cdbc..17b4562ff6bd 100644
--- a/lib/kernel/src/group.erl
+++ b/lib/kernel/src/group.erl
@@ -307,9 +307,11 @@ dumb(data, Buf, Data = #state{ input = #input_state{ prompt_bytes = Pbs, encodin
                     io_reply(Data, {error,err_func(io_lib, CollectF, CollectAs)}),
                     pop_state(Data#state{ buf = [] });
                 NewState ->
+                    [Data#state.driver ! {self(), read, io_lib:CollectF(NewState)} || Data#state.shell =:= noshell],
                     dumb(data, RemainBuf, Data#state{ input = InputState#input_state{ cont = undefined, io_lib_state = NewState } })
             end;
         {more_chars, NewCont} ->
+            [Data#state.driver ! {self(), read, 0} || Data#state.shell =:= noshell],
             {keep_state, Data#state{ input = InputState#input_state{ cont = NewCont } } }
     end;
 
@@ -409,7 +411,7 @@ xterm(data, Buf, Data = #state{ input = #input_state{
                 {'EXIT',_} ->
                     io_reply(Data, {error,err_func(io_lib, CollectF, CollectAs)}),
                     pop_state(Data#state{ buf = [] });
-                _M ->
+                _NewState ->
                     xterm(data, RemainBuf, Data#state{ input = InputState#input_state{ cont = undefined, lines = NewLines} })
             end;
         {blink, NewCont} ->
@@ -443,6 +445,9 @@ handle_info(State, {Drv, eof}, Data = #state{ driver = Drv }) ->
     ?MODULE:State(data, eof, Data);
 handle_info(_State, {Drv, echo, Bool}, Data = #state{ driver = Drv }) ->
     {keep_state, Data#state{ echo = Bool } };
+handle_info(_State, {Drv, {error, _} = Error}, Data = #state{ driver = Drv }) ->
+    io_reply(Data, Error),
+    pop_state(Data#state{ buf = [] });
 handle_info(_State, {Drv, terminal_mode, Mode}, Data = #state{ driver = Drv }) ->
     noshell = Data#state.shell,
     true = lists:member(Mode, [raw, cooked, disabled]),
diff --git a/lib/kernel/src/prim_tty.erl b/lib/kernel/src/prim_tty.erl
index 7fd34f9ceb12..45600663f7ef 100644
--- a/lib/kernel/src/prim_tty.erl
+++ b/lib/kernel/src/prim_tty.erl
@@ -106,21 +106,24 @@
 %%        to previous line automatically.
 
 -export([init/1, init_ssh/3, reinit/2, isatty/1, handles/1, unicode/1, unicode/2,
-         handle_signal/2, window_size/1, update_geometry/3, handle_request/2, write/2, write/3,
+         handle_signal/2, window_size/1, update_geometry/3, handle_request/2,
+         write/2, write/3,
          npwcwidth/1, npwcwidth/2,
          ansi_regexp/0, ansi_color/2]).
--export([reader_stop/1, disable_reader/1, enable_reader/1, is_reader/2, is_writer/2]).
+-export([reader_stop/1, disable_reader/1, enable_reader/1, read/1, read/2,
+         is_reader/2, is_writer/2]).
 
 -nifs([isatty/1, tty_create/0, tty_init/2, setlocale/1,
-       tty_select/2, tty_window_size/1, tty_encoding/1, write_nif/2, read_nif/2, isprint/1,
+       tty_select/2, tty_window_size/1,
+       tty_encoding/1, tty_is_open/2, write_nif/2, read_nif/3, isprint/1,
        wcwidth/1, wcswidth/1,
        sizeof_wchar/0, tgetent_nif/1, tgetnum_nif/1, tgetflag_nif/1, tgetstr_nif/1,
        tgoto_nif/1, tgoto_nif/2, tgoto_nif/3]).
 
--export([reader_loop/5, writer_loop/2]).
+-export([reader_loop/2, writer_loop/2]).
 
 %% Exported in order to remove "unused function" warning
--export([sizeof_wchar/0, wcswidth/1, tgoto/1, tgoto/2, tgoto/3]).
+-export([sizeof_wchar/0, wcswidth/1, tgoto/1, tgoto/2, tgoto/3, tty_is_open/2]).
 
 %% proc_lib exports
 -export([reader/1, writer/1]).
@@ -510,6 +513,18 @@ disable_reader(#state{ reader = {ReaderPid, _} }) ->
 enable_reader(#state{ reader = {ReaderPid, _} }) ->
     ok = call(ReaderPid, enable).
 
+-spec read(state()) -> ok.
+read(#state{ reader = {ReaderPid, _} }) ->
+    ReaderPid ! {read, infinity},
+    ok.
+
+-spec read(state(), pos_integer()) -> ok.
+read(State, 0) ->
+    read(State, 1024);
+read(#state{ reader = {ReaderPid, _} }, N) ->
+    ReaderPid ! {read, N},
+    ok.
+
 call(Pid, Msg) ->
     Alias = erlang:monitor(process, Pid, [{alias, reply_demonitor}]),
     Pid ! {Alias, Msg},
@@ -530,69 +545,84 @@ reader([TTY, Encoding, Parent]) ->
                   utf8 -> Encoding;
                   Else -> Else
               end,
-    reader_loop(TTY, Parent, ReaderRef, FromEnc, <<>>).
+    reader_loop(#{ tty => TTY, parent => Parent,
+                   reader => ReaderRef, enc => FromEnc, read => 0,
+                   ready_input => false}, <<>>).
 
-reader_loop(TTY, Parent, ReaderRef, FromEnc, Acc) ->
+reader_loop(State = #{ tty := TTY, reader := ReaderRef, enc := FromEnc, read := Read,
+                       ready_input := ReadyInput }, Acc) ->
     receive
         {DisableAlias, disable} ->
             DisableAlias ! {DisableAlias, ok},
             receive
                 {EnableAlias, enable} ->
                     EnableAlias ! {EnableAlias, ok},
-                    ?MODULE:reader_loop(TTY, Parent, ReaderRef, FromEnc, Acc)
+                    ?MODULE:reader_loop(State, Acc)
             end;
         {set_unicode_state, _} when FromEnc =:= {utf16, little} ->
-            ?MODULE:reader_loop(TTY, Parent, ReaderRef, FromEnc, Acc);
+            ?MODULE:reader_loop(State, Acc);
         {set_unicode_state, Bool} ->
             NewFromEnc = if Bool -> utf8; not Bool -> latin1 end,
-            ?MODULE:reader_loop(TTY, Parent, ReaderRef, NewFromEnc, Acc);
+            ?MODULE:reader_loop(State#{ enc := NewFromEnc }, Acc);
         {_Alias, stop} ->
             ok;
-        {select, TTY, ReaderRef, ready_input} ->
-            %% This call may block until data is available
-            case read_nif(TTY, ReaderRef) of
-                {error, closed} ->
-                    Parent ! {ReaderRef, eof},
-                    ok;
-                {error, aborted} ->
-                    %% The read operation was aborted. This happens on
-                    %% Windows when we change from "{noshell, cooked}" to "{noshell, raw}"
-                    %% or "newshell".
-                    %% When it happens we need to re-read the tty_encoding as it has changed.
-                    reader_loop(TTY, Parent, ReaderRef, tty_encoding(TTY), Acc);
-                {ok, <<>>} ->
-                    %% EAGAIN or EINTR
-                    ?MODULE:reader_loop(TTY, Parent, ReaderRef, FromEnc, Acc);
-                {ok, UtfXBytes} ->
-
-                    %% read_nif may have blocked for a long time, so we check if
-                    %% there have been any changes to the unicode state before
-                    %% decoding the data.
-                    UpdatedFromEnc = flush_unicode_state(FromEnc),
-
-                    {Bytes, NewAcc, NewFromEnc} =
-                        case unicode:characters_to_binary([Acc, UtfXBytes], UpdatedFromEnc, utf8) of
-                            {error, B, Error} ->
-                                %% We should only be able to get incorrect encoded data when
-                                %% using utf8
-                                UpdatedFromEnc = utf8,
-                                Parent ! {self(), set_unicode_state, false},
+        {read, N} when ReadyInput ->
+            reader_read(State#{ read := N }, Acc);
+        {read, N} when not ReadyInput ->
+            ?MODULE:reader_loop(State#{ read := N }, Acc);
+        {select, TTY, ReaderRef, ready_input} when Read > 0; Read =:= infinity ->
+            reader_read(State, Acc);
+        {select, TTY, ReaderRef, ready_input} when Read =:= 0 ->
+            ?MODULE:reader_loop(State#{ ready_input := true }, Acc);
+        _M ->
+            % erlang:display(_M),
+            ?MODULE:reader_loop(State, Acc)
+    end.
+
+reader_read(State = #{ tty := TTY, parent := Parent, reader := ReaderRef,
+                       enc := FromEnc, read := Read }, Acc) ->
+    %% This call may block until data is available
+    case read_nif(TTY, ReaderRef, if Read =:= infinity -> 1024; true -> Read end) of
+        {error, closed} ->
+            Parent ! {ReaderRef, eof},
+            ok;
+        {ok, <<>>} ->
+            %% EAGAIN or EINTR
+            ?MODULE:reader_loop(State#{ ready_input := false }, Acc);
+        {ok, UtfXBytes} ->
+
+            %% read_nif may have blocked for a long time, so we check if
+            %% there have been any changes to the unicode state before
+            %% decoding the data.
+            UpdatedFromEnc = flush_unicode_state(FromEnc),
+
+            {Bytes, NewAcc, NewFromEnc} =
+                case unicode:characters_to_binary([Acc, UtfXBytes], UpdatedFromEnc, utf8) of
+                    {error, B, Error} ->
+                        %% We should only be able to get incorrect encoded data when
+                        %% using utf8
+                        UpdatedFromEnc = utf8,
+                        Parent ! {self(), set_unicode_state, false},
+                        receive
+                            {set_unicode_state, false} ->
                                 receive
-                                    {set_unicode_state, false} ->
-                                        receive
-                                            {Parent, set_unicode_state, _} -> ok
-                                        end
-                                end,
-                                Latin1Chars = unicode:characters_to_binary(Error, latin1, utf8),
-                                {<<B/binary,Latin1Chars/binary>>, <<>>, latin1};
-                            {incomplete, B, Inc} ->
-                                {B, Inc, UpdatedFromEnc};
-                            B when is_binary(B) ->
-                                {B, <<>>, UpdatedFromEnc}
+                                    {Parent, set_unicode_state, _} -> ok
+                                end
                         end,
-                    Parent ! {ReaderRef, {data, Bytes}},
-                    ?MODULE:reader_loop(TTY, Parent, ReaderRef, NewFromEnc, NewAcc)
-            end
+                        Latin1Chars = unicode:characters_to_binary(Error, latin1, utf8),
+                        {<<B/binary,Latin1Chars/binary>>, <<>>, latin1};
+                    {incomplete, B, Inc} ->
+                        {B, Inc, UpdatedFromEnc};
+                    B when is_binary(B) ->
+                        {B, <<>>, UpdatedFromEnc}
+                end,
+            Parent ! {ReaderRef, {data, Bytes}},
+            ResetRead = if
+                           Read =:= infinity -> infinity;
+                           true -> 0
+                        end,
+            ?MODULE:reader_loop(State#{ read := ResetRead, ready_input := false,
+                                        enc := NewFromEnc }, NewAcc)
     end.
 
 flush_unicode_state(FromEnc) ->
@@ -1429,9 +1459,11 @@ tty_select(_TTY, _ReadRef) ->
     erlang:nif_error(undef).
 tty_encoding(_TTY) ->
     erlang:nif_error(undef).
+tty_is_open(_TTY, _Fd) ->
+    erlang:nif_error(undef).
 write_nif(_TTY, _IOVec) ->
     erlang:nif_error(undef).
-read_nif(_TTY, _Ref) ->
+read_nif(_TTY, _Ref, _N) ->
     erlang:nif_error(undef).
 tty_window_size(_TTY) ->
     erlang:nif_error(undef).
diff --git a/lib/kernel/src/user_drv.erl b/lib/kernel/src/user_drv.erl
index 09026a096688..dabfc91ab78a 100644
--- a/lib/kernel/src/user_drv.erl
+++ b/lib/kernel/src/user_drv.erl
@@ -342,6 +342,10 @@ init_local_shell(State, InitialShell) ->
 init_shell(State, Slogan) ->
 
     init_standard_error(State#state.tty, State#state.terminal_mode =:= raw),
+
+    %% Tell the reader to read greedily if there is a shell
+    [prim_tty:read(State#state.tty) || State#state.shell_started =/= false],
+
     Curr = gr_cur_pid(State#state.groups),
     put(current_group, Curr),
     {next_state, server, State#state{ current_group = gr_cur_pid(State#state.groups) },
@@ -466,6 +470,17 @@ server(info, {ReadHandle,eof}, State = #state{ read = ReadHandle }) ->
 server(info,{ReadHandle,{signal,Signal}}, State = #state{ tty = TTYState, read = ReadHandle }) ->
     {keep_state, State#state{ tty = prim_tty:handle_signal(TTYState, Signal) }};
 
+server(info, {Requester, read, N}, State = #state{ tty = TTYState })
+  when Requester =:= State#state.current_group ->
+    %% Only allowed when current_group == user
+    true = State#state.current_group =:= State#state.user,
+    ok = prim_tty:read(TTYState, N),
+    keep_state_and_data;
+
+server(info, {Requester, read, _N}, _State) ->
+    Requester ! {self(), {error, enotsup}},
+    keep_state_and_data;
+
 server(info, {Requester, tty_geometry}, #state{ tty = TTYState }) ->
     case prim_tty:window_size(TTYState) of
         {ok, Geometry} ->
diff --git a/lib/kernel/test/interactive_shell_SUITE.erl b/lib/kernel/test/interactive_shell_SUITE.erl
index d4c34022302d..55bf25e347c3 100644
--- a/lib/kernel/test/interactive_shell_SUITE.erl
+++ b/lib/kernel/test/interactive_shell_SUITE.erl
@@ -76,7 +76,7 @@
 %% For custom prompt testing
 -export([prompt/1]).
 -export([output_to_stdout_slowly/1]).
--record(tmux, {peer, node, name, orig_location }).
+-record(tmux, {peer, node, name, ssh_server_name, orig_location }).
 suite() ->
     [{ct_hooks,[ts_install_cth]},
      {timetrap,{minutes,3}}].
@@ -1921,11 +1921,11 @@ setup_tty(Config) ->
             check_content(Tmux,"Enter password for \"foo\""),
             "" = tmux("send -t " ++ ClientName ++ " bar Enter"),
             timer:sleep(1000),
-            check_content(Tmux,"\\d+>");
+            check_content(Tmux,"\\d+\n?>"),
+            Tmux#tmux{ ssh_server_name = Name };
         true ->
-            ok
-    end,
-    Tmux.
+            Tmux
+    end.
 
 get_top_parent_test_group(Config) ->
     maybe
@@ -1983,6 +1983,8 @@ prompt(L) ->
 stop_tty(Term) ->
     catch peer:stop(Term#tmux.peer),
     ct:log("~ts",[get_content(Term, "-e")]),
+    [ct:log("~ts",[get_content(Term#tmux{ name = Term#tmux.ssh_server_name }, "-e")])
+      || Term#tmux.ssh_server_name =/= undefined],
 %    "" = tmux("kill-window -t " ++ Term#tmux.name),
     ok.
 
diff --git a/lib/stdlib/src/io_lib.erl b/lib/stdlib/src/io_lib.erl
index 967c4d1afdcd..90e426ca0b79 100644
--- a/lib/stdlib/src/io_lib.erl
+++ b/lib/stdlib/src/io_lib.erl
@@ -86,9 +86,9 @@ used for flattening deep lists.
 	 printable_list/1, printable_latin1_list/1, printable_unicode_list/1]).
 
 %% Utilities for collecting characters mostly used by group
--export([collect_chars/3, collect_chars/4, collect_chars_eager/4,
-	 collect_line/3, collect_line/4, collect_line_no_eol/4,
-	 get_until/3, get_until/4]).
+-export([collect_chars/1, collect_chars/3, collect_chars/4, collect_chars_eager/4,
+	 collect_line/1, collect_line/3, collect_line/4, collect_line_no_eol/4,
+	 get_until/1, get_until/3, get_until/4]).
 
 %% The following functions were used by Yecc's include-file.
 -export([write_unicode_string/1, write_unicode_char/1,
@@ -1135,15 +1135,20 @@ collect_chars_list(Stack, N, []) ->
 collect_chars_list(Stack,N, [H|T]) ->
     collect_chars_list([H|Stack], N-1, T).
 
+%% Fetch the number of remaining bytes
+-doc false.
+collect_chars({_, _, N}) ->
+    N.
+
 %% A special collect_chars that never returns more_chars,
 %% instead it eagerly stops collecting if it has received
 %% any characters at all.
 -doc false.
 collect_chars_eager(State, Chars, Encoding, N) ->
     case collect_chars(State, Chars, Encoding, N) of
-        {list, Stack, _} when Stack =/= [] ->
+        {list, Stack, _N} when Stack =/= [] ->
             {stop, lists:reverse(Stack), []};
-        {binary, Stack, _} when Stack =/= [<<>>] ->
+        {binary, Stack, _N} when Stack =/= [<<>>] ->
             {stop, binrev(Stack), []};
         Else ->
             Else
@@ -1220,6 +1225,11 @@ collect_line_list([H|T], Stack) ->
 collect_line_list([], Stack) ->
     Stack.
 
+%% Return the number of remaing bytes, 0 for unknown.
+-doc false.
+collect_line(_State) ->
+    0.
+
 %% Translator function to emulate a new (R9C and later) 
 %% I/O client when you have an old one.
 %%
@@ -1276,6 +1286,11 @@ binrev(L) ->
 binrev(L, T) ->
     list_to_binary(lists:reverse(L, T)).
 
+%% Return the number of remaing bytes, 0 for unknown.
+-doc false.
+get_until(_State) ->
+    0.
+
 -doc false.
 -spec limit_term(term(), depth()) -> term().
 
diff --git a/lib/stdlib/src/shell.erl b/lib/stdlib/src/shell.erl
index aeefaf647d62..838cf56e0fe4 100644
--- a/lib/stdlib/src/shell.erl
+++ b/lib/stdlib/src/shell.erl
@@ -65,6 +65,9 @@ non_local_allowed(_,_,State) ->
 Starts the interactive shell if it has not already been started. It can be used
 to programatically start the shell from an escript or when erl is started with
 the -noinput or -noshell flags.
+
+Calling this function will start a remote shell if `-remsh` is given on the
+command line or a local shell if not.
 """.
 -doc(#{since => <<"OTP 26.0">>}).
 -spec start_interactive() -> ok | {error, already_started}.
@@ -78,11 +81,21 @@ or when [`erl`](`e:erts:erl_cmd.md`) is started with the
 [`-noshell`](`e:erts:erl_cmd.md#noshell`) flags. The following options are
 allowed:
 
-- **noshell** - Starts the interactive shell as if
-  [`-noshell`](`e:erts:erl_cmd.md#noshell`) was given to
-  [`erl`](`e:erts:erl_cmd.md`). This is only useful when erl is started with
-  [`-noinput`](`e:erts:erl_cmd.md#noinput`) and the system want to read input
-  data.
+- **noshell | {noshell, Mode}** - Starts the interactive shell
+  as if [`-noshell`](`e:erts:erl_cmd.md#noshell`) was given to
+  [`erl`](`e:erts:erl_cmd.md`).
+
+  It is possible to give a `Mode` indicating if the input should be set
+  in `cooked` or `raw` mode. `Mode` only has en effect if `t:io:user/0` is a tty.
+  If no `Mode` is given, it defaults is `cooked`.
+
+  When in `raw` mode all key presses are passed to `t:io:user/0` as they are
+  typed when they are typed and the characters are not echoed to the terminal.
+  It is possible to set the `echo` to `true` using `io:setopts/2` to enabling
+  echoing again.
+
+  When in `cooked` mode the OS will handle the line editing and all data is
+  passed to `t:io:user/0` when a newline is entered.
 
 - **[mfa()](`t:erlang:mfa/0`)** - Starts the interactive shell using
   [`mfa()`](`t:erlang:mfa/0`) as the default shell. The `t:mfa/0` should

From a539e32b37879738c032d98694f065364c768288 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lukas=20Backstr=C3=B6m?= <lukas@erlang.org>
Date: Tue, 17 Sep 2024 10:37:37 +0200
Subject: [PATCH 4/7] kernel: Fix bug where shell getting eof would not halt
 node

When an Erlang shell gets EOF it should halt the node, however
very often stderr is also closed at the same time which caused
the error printing to crash preventing halt to be called.
---
 lib/stdlib/src/shell.erl | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/stdlib/src/shell.erl b/lib/stdlib/src/shell.erl
index 838cf56e0fe4..8e5b5d1c40c3 100644
--- a/lib/stdlib/src/shell.erl
+++ b/lib/stdlib/src/shell.erl
@@ -374,7 +374,7 @@ server_loop(N0, Eval_0, Bs00, RT, FT, Ds00, History0, Results0) ->
                             [N]),
             server_loop(N0, Eval0, Bs0, RT, FT, Ds0, History0, Results0);
         eof ->
-            fwrite_severity(fatal, <<"Terminating erlang (~w)">>, [node()]),
+            catch fwrite_severity(fatal, <<"Terminating erlang (~w)">>, [node()]),
             halt()
     end.
 

From b088d526369c0cae8e325468e4af64fb738df0c2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lukas=20Backstr=C3=B6m?= <lukas@erlang.org>
Date: Wed, 18 Sep 2024 09:12:31 +0200
Subject: [PATCH 5/7] erts: Fix isatty on windows

---
 erts/emulator/nifs/common/prim_tty_nif.c | 57 ++++++++++++++++++------
 lib/stdlib/test/io_proto_SUITE.erl       | 38 +++++++++++++---
 2 files changed, 75 insertions(+), 20 deletions(-)

diff --git a/erts/emulator/nifs/common/prim_tty_nif.c b/erts/emulator/nifs/common/prim_tty_nif.c
index cc299bd337ae..b3a3b8b0fb27 100644
--- a/erts/emulator/nifs/common/prim_tty_nif.c
+++ b/erts/emulator/nifs/common/prim_tty_nif.c
@@ -234,18 +234,48 @@ static int tty_get_fd(ErlNifEnv *env, ERL_NIF_TERM atom, int *fd) {
     return 1;
 }
 
-static ERL_NIF_TERM isatty_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) {
+#ifdef __WIN32__
+static HANDLE tty_get_handle(ErlNifEnv *env, ERL_NIF_TERM atom) {
+    HANDLE handle = INVALID_HANDLE_VALUE;
     int fd;
+    if (tty_get_fd(env, atom, &fd)) {
+    
+        switch (fd) {
+            case 0: handle = GetStdHandle(STD_INPUT_HANDLE); break;
+            case 1: handle = GetStdHandle(STD_OUTPUT_HANDLE); break;
+            case 2: handle = GetStdHandle(STD_ERROR_HANDLE); break;
+        }
+    }
+    return handle;
+}
+#endif
 
+static ERL_NIF_TERM isatty_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) {
+#ifdef __WIN32__
+    HANDLE handle = tty_get_handle(env, argv[0]);
+
+    if (handle == INVALID_HANDLE_VALUE)
+        return atom_ebadf;
+    
+    switch (GetFileType(handle)) {
+        case FILE_TYPE_CHAR: return atom_true;
+        case FILE_TYPE_PIPE:
+        case FILE_TYPE_DISK: return atom_false;
+        default: return atom_ebadf;
+    }
+#else
+    int fd;
     if (tty_get_fd(env, argv[0], &fd)) {
         if (isatty(fd)) {
             return atom_true;
         } else if (errno == EINVAL || errno == ENOTTY) {
             return atom_false;
-        } else {
+        }
+        else {
             return atom_ebadf;
         }
     }
+#endif
 
     return enif_make_badarg(env);
 }
@@ -643,22 +673,21 @@ static ERL_NIF_TERM tty_read_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM ar
 /* Poll if stdin/stdout/stderr are still open. */
 static ERL_NIF_TERM tty_is_open(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) {
     TTYResource *tty;
+#ifdef __WIN32__
+    HANDLE handle;
+#else
     int fd;
+#endif
 
     if (!enif_get_resource(env, argv[0], tty_rt, (void **)&tty))
         return enif_make_badarg(env);
 
-    if (tty_get_fd(env, argv[1], &fd)) {
+#ifdef __WIN32__
 
-#ifdef WIN32
-        HANDLE handle;
-        DWORD bytesAvailable = 0;
+    handle = tty_get_handle(env, argv[1]);
 
-        switch (fd) {
-            case 0: handle = GetStdHandle(STD_INPUT_HANDLE); break;
-            case 1: handle = GetStdHandle(STD_OUTPUT_HANDLE); break;
-            case 2: handle = GetStdHandle(STD_ERROR_HANDLE); break;
-        }
+    if (handle != INVALID_HANDLE_VALUE) {
+        DWORD bytesAvailable = 0;
 
         switch (GetFileType(handle))  {
             case FILE_TYPE_CHAR: {
@@ -688,9 +717,9 @@ static ERL_NIF_TERM tty_is_open(ErlNifEnv* env, int argc, const ERL_NIF_TERM arg
                 return atom_true;
             }
         }
-
+    }
 #else
-
+    if (tty_get_fd(env, argv[1], &fd)) {
         struct pollfd fds[1];
         int ret;
         
@@ -706,8 +735,8 @@ static ERL_NIF_TERM tty_is_open(ErlNifEnv* env, int argc, const ERL_NIF_TERM arg
         } else if (ret == 1 && fds[0].revents & POLLHUP) {
             return atom_false;
         }
-#endif
     }
+#endif
     return enif_make_badarg(env);
 }
 
diff --git a/lib/stdlib/test/io_proto_SUITE.erl b/lib/stdlib/test/io_proto_SUITE.erl
index 7c4b7d867ba5..a838f082ec41 100644
--- a/lib/stdlib/test/io_proto_SUITE.erl
+++ b/lib/stdlib/test/io_proto_SUITE.erl
@@ -316,19 +316,45 @@ setopts_getopts(Config) when is_list(Config) ->
        {expect, "true"}
       ],[],"",["-oldshell"]),
 
-    %% Test that terminal options when used in non-terminal
-    %% are returned as they should
+    %% Test that terminal options when used in non-terminal are returned as they should
+    %% both when run as an os:cmd and when run directly as a port.
     Erl = ct:get_progname(),
-    Str = os:cmd(Erl ++ " -noshell -eval \"io:format(~s'~p.',[io:getopts()])\" -s init stop"),
+    CmdStr = os:cmd(Erl ++ " -noshell -eval \"io:format(~s'~p.',[io:getopts()])\" -s init stop"),
     maybe
-        {ok, T, _} ?= erl_scan:string(Str),
+        {ok, T, _} ?= erl_scan:string(CmdStr),
         {ok, Opts} ?= erl_parse:parse_term(T),
         ?assertEqual(false, proplists:get_value(terminal,Opts)),
-        ?assertEqual(false, proplists:get_value(stdin,Opts)),
+        case os:type() of
+            {win32, nt} ->
+                %% On Windows stdin will be a tty
+                ?assertEqual(true, proplists:get_value(stdin,Opts));
+            _ ->
+                ?assertEqual(false, proplists:get_value(stdin,Opts))
+        end,
         ?assertEqual(false, proplists:get_value(stdout,Opts)),
         ?assertEqual(false, proplists:get_value(stderr,Opts))
     else
-        _ -> ct:fail({failed_to_parse, Str})
+        _ -> ct:fail({failed_to_parse, CmdStr})
+    end,
+
+    Port = erlang:open_port({spawn, Erl ++ " -noshell -eval \"io:format(~s'~p.',[io:getopts()])\" -s init stop"},
+            [exit_status]),
+    PortStr = (fun F() ->
+        receive
+            {Port,{data,D}} -> D ++ F();
+            {Port,{exit_status,0}} -> []
+        end
+    end)(),
+
+    maybe
+        {ok, PortT, _} ?= erl_scan:string(PortStr),
+        {ok, PortOpts} ?= erl_parse:parse_term(PortT),
+        ?assertEqual(false, proplists:get_value(terminal,PortOpts)),
+        ?assertEqual(false, proplists:get_value(stdin,PortOpts)),
+        ?assertEqual(false, proplists:get_value(stdout,PortOpts)),
+        ?assertEqual(proplists:get_value(stderr, io:getopts()), proplists:get_value(stderr,PortOpts))
+    else
+        _ -> ct:fail({failed_to_parse, PortStr})
     end,
     ok.
 

From 42aa7609728e2711ce0a2a1d3356e4df3912f0e0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lukas=20Backstr=C3=B6m?= <lukas@erlang.org>
Date: Tue, 29 Oct 2024 10:30:40 +0100
Subject: [PATCH 6/7] kernel: Print token that could not be parsed in tty test

---
 lib/kernel/test/interactive_shell_SUITE.erl | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/lib/kernel/test/interactive_shell_SUITE.erl b/lib/kernel/test/interactive_shell_SUITE.erl
index 55bf25e347c3..04832cb6ebbf 100644
--- a/lib/kernel/test/interactive_shell_SUITE.erl
+++ b/lib/kernel/test/interactive_shell_SUITE.erl
@@ -297,10 +297,15 @@ end_per_testcase(_Case, Config) ->
 -endif.
 
 string_to_term(Str) ->
-    {ok,Tokens,_EndLine} = erl_scan:string(Str ++ "."),
-    {ok,AbsForm} = erl_parse:parse_exprs(Tokens),
-    {value,Value,_Bs} = erl_eval:exprs(AbsForm, erl_eval:new_bindings()),
-    Value.
+    try
+        {ok,Tokens,_EndLine} = erl_scan:string(Str ++ "."),
+        {ok,AbsForm} = erl_parse:parse_exprs(Tokens),
+        {value,Value,_Bs} = erl_eval:exprs(AbsForm, erl_eval:new_bindings()),
+        Value
+    catch E:R:ST ->
+        ct:log("Could not parse: ~ts~n", [Str]),
+        erlang:raise(E,R,ST)
+    end.
 
 run_unbuffer_escript(Rows, Columns, EScript, NoTermStdIn, NoTermStdOut) ->
     DataDir = filename:join(filename:dirname(code:which(?MODULE)), "interactive_shell_SUITE_data"),

From bd2ba031d06bd19c0aab4868b1ed2edc816d74b2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lukas=20Backstr=C3=B6m?= <lukas@erlang.org>
Date: Wed, 30 Oct 2024 12:34:03 +0100
Subject: [PATCH 7/7] kernel: Use send_tty to send data to stdin in tests

---
 lib/kernel/test/interactive_shell_SUITE.erl | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/lib/kernel/test/interactive_shell_SUITE.erl b/lib/kernel/test/interactive_shell_SUITE.erl
index 04832cb6ebbf..7bb085043c1d 100644
--- a/lib/kernel/test/interactive_shell_SUITE.erl
+++ b/lib/kernel/test/interactive_shell_SUITE.erl
@@ -534,9 +534,9 @@ shell_format(Config) ->
         send_tty(Term1, "Down"),
         tmux(["resize-window -t ",tty_name(Term1)," -x ",200]),
         timer:sleep(1000),
-        send_stdin(Term1, "shell:format_shell_func(\"emacs -batch \${file} -l \"\n"),
-        send_stdin(Term1, EmacsFormat),
-        send_stdin(Term1, "\" -f emacs-format-function\").\n"),
+        send_tty(Term1, "shell:format_shell_func(\"emacs -batch \${file} -l \"\n"),
+        send_tty(Term1, EmacsFormat),
+        send_tty(Term1, "\" -f emacs-format-function\").\n"),
         check_content(Term1, "{shell,erl_pp_format_func}"),
         send_tty(Term1, "Up"),
         send_tty(Term1, "Up"),
@@ -547,7 +547,7 @@ shell_format(Config) ->
         check_content(Term1, "fun\\(X\\) ->\\s*..         X\\s*.. end."),
         send_tty(Term1, "Down"),
         check_content(Term1, ">$"),
-        send_stdin(Term1, "shell:format_shell_func({bad,format}).\n"),
+        send_tty(Term1, "shell:format_shell_func({bad,format}).\n"),
         send_tty(Term1, "Up"),
         send_tty(Term1, "Up"),
         send_tty(Term1, "\n"),