#pragma once #include #include #include #include #include "nvim/event/loop.h" #include "nvim/event/stream.h" #include "nvim/event/time.h" #include "nvim/rbuffer.h" #include "nvim/tui/input_defs.h" // IWYU pragma: export #include "nvim/tui/tui.h" #include "nvim/types_defs.h" typedef enum { kKeyEncodingLegacy, ///< Legacy key encoding kKeyEncodingKitty, ///< Kitty keyboard protocol encoding kKeyEncodingXterm, ///< Xterm's modifyOtherKeys encoding (XTMODKEYS) } KeyEncoding; typedef struct { int in_fd; // Phases: -1=all 0=disabled 1=first-chunk 2=continue 3=last-chunk int8_t paste; bool ttimeout; bool waiting_for_kkp_response; ///< True if we are expecting to receive a response to a query for ///< Kitty keyboard protocol support KeyEncoding key_encoding; ///< The key encoding used by the terminal emulator OptInt ttimeoutlen; TermKey *tk; TermKey_Terminfo_Getstr_Hook *tk_ti_hook_fn; ///< libtermkey terminfo hook TimeWatcher timer_handle; Loop *loop; Stream read_stream; RBuffer *key_buffer; TUIData *tui_data; } TermInput; typedef enum { kIncomplete = -1, kNotApplicable = 0, kComplete = 1, } HandleState; #ifdef INCLUDE_GENERATED_DECLARATIONS # include "tui/input.h.generated.h" #endif