Skip to main content

src/etch/erlang/tty_state.erl

-module(tty_state).

-export([init/0, set_raw/1, is_raw_mode/0]).

init() ->
    case ets:whereis(tty_state) of
        undefined ->
            ets:new(tty_state, [named_table, public, set]),
            ets:insert(tty_state, {raw_mode, false});
        _ ->
            ok
    end.

set_raw(IsRaw) ->
    init(),
    ets:insert(tty_state, {raw_mode, IsRaw}).

is_raw_mode() ->
    case ets:whereis(tty_state) of
        undefined ->
            ets:new(tty_state, [named_table, public, set]),
            ets:insert(tty_state, {raw_mode, false}),
            false;
        _ ->
            case ets:lookup(tty_state, raw_mode) of
                [{raw_mode, true}] ->
                    true;
                _ ->
                    false
            end
    end.