syntax = "proto3";

package api.input_mode;

message InputModeMessage {
  InputMode input_mode = 1;
}

enum InputMode {
    /// In `Normal` mode, input is always written to the terminal, except for the shortcuts leading
    /// to other modes
    Normal = 0;
    /// In `Locked` mode, input is always written to the terminal and all shortcuts are disabled
    /// except the one leading back to normal mode
    Locked = 1;
    /// `Resize` mode allows resizing the different existing panes.
    Resize = 2;
    /// `Pane` mode allows creating and closing panes, as well as moving between them.
    Pane = 3;
    /// `Tab` mode allows creating and closing tabs, as well as moving between them.
    Tab = 4;
    /// `Scroll` mode allows scrolling up and down within a pane.
    Scroll = 5;
    /// `EnterSearch` mode allows for typing in the needle for a search in the scroll buffer of a pane.
    EnterSearch = 6;
    /// `Search` mode allows for searching a term in a pane (superset of `Scroll`).
    Search = 7;
    /// `RenameTab` mode allows assigning a new name to a tab.
    RenameTab = 8;
    /// `RenamePane` mode allows assigning a new name to a pane.
    RenamePane = 9;
    /// `Session` mode allows detaching sessions
    Session = 10;
    /// `Move` mode allows moving the different existing panes within a tab
    Move = 11;
    /// `Prompt` mode allows interacting with active prompts.
    Prompt = 12;
    /// `Tmux` mode allows for basic tmux keybindings functionality
    Tmux = 13;
}
