summaryrefslogtreecommitdiff
path: root/lib/kernel/src/prim_tty.erl
diff options
context:
space:
mode:
Diffstat (limited to 'lib/kernel/src/prim_tty.erl')
-rw-r--r--lib/kernel/src/prim_tty.erl5
1 files changed, 5 insertions, 0 deletions
diff --git a/lib/kernel/src/prim_tty.erl b/lib/kernel/src/prim_tty.erl
index 3a70873748..a03e746cc9 100644
--- a/lib/kernel/src/prim_tty.erl
+++ b/lib/kernel/src/prim_tty.erl
@@ -166,6 +166,7 @@
sig => boolean()
}.
-type request() ::
+ {putc_raw, binary()} |
{putc, unicode:unicode_binary()} |
{putc_keep_state, unicode:unicode_binary()} |
{expand, unicode:unicode_binary()} |
@@ -537,6 +538,8 @@ writer_loop(TTY, WriterRef) ->
-spec handle_request(state(), request()) -> {erlang:iovec(), state()}.
handle_request(State = #state{ options = #{ tty := false } }, Request) ->
case Request of
+ {putc_raw, Binary} ->
+ {Binary, State};
{putc, Binary} ->
{encode(Binary, State#state.unicode), State};
beep ->
@@ -613,6 +616,8 @@ handle_request(State = #state{ unicode = U }, {putc, Binary}) ->
{_, _, _, NewBA} = split(NewLength - OldLength, NewState#state.buffer_after, U),
{encode(PutBuffer, U), NewState#state{ buffer_after = NewBA }}
end;
+handle_request(State, {putc_raw, Binary}) ->
+ handle_request(State, {putc, unicode:characters_to_binary(Binary, latin1)});
handle_request(State = #state{}, delete_after_cursor) ->
{[State#state.delete_after_cursor],
State#state{buffer_after = [],