From dcebf9c7f954a55350b68d0ead1935612c4e2e05 Mon Sep 17 00:00:00 2001 From: Berke Güzel Date: Thu, 15 Oct 2026 13:04:01 +0300 Subject: Rename the library to wsap_vtcore ncurses installs and defines struct term. In a file that includes both headers, an ncurses TERMINAL * and this library's terminal are silently the same type. The name wsap_vtcore avoids the clash. The public header is now . Every global symbol uses the wsap_vtcore_ prefix, every macro uses WSAP_VTCORE_, and the shared library is libwsap_vtcore.so.0. The default terminal name is now "wsap_vtcore". The ISA override variable is WSAP_VTCORE_ISA. No other behavior changes. The amalgamation writes wsap_vtcore.c and wsap_vtcore.h. Co-Authored-By: Claude Haiku 5.5 --- include/wsap_vtcore/wsap_vtcore_input.h | 202 ++++++++++++++++++++++++++++++++ 1 file changed, 202 insertions(+) create mode 100644 include/wsap_vtcore/wsap_vtcore_input.h (limited to 'include/wsap_vtcore/wsap_vtcore_input.h') diff --git a/include/wsap_vtcore/wsap_vtcore_input.h b/include/wsap_vtcore/wsap_vtcore_input.h new file mode 100644 index 0000000..337a292 --- /dev/null +++ b/include/wsap_vtcore/wsap_vtcore_input.h @@ -0,0 +1,202 @@ +#ifndef WSAP_VTCORE_INPUT_H +#define WSAP_VTCORE_INPUT_H + +#include +#include +#include +#include "wsap_vtcore_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +enum wsap_vtcore_key { + WSAP_VTCORE_KEY_NONE = 0, + + WSAP_VTCORE_KEY_RETURN, + WSAP_VTCORE_KEY_BACKSPACE, + WSAP_VTCORE_KEY_TAB, + WSAP_VTCORE_KEY_ESCAPE, + + WSAP_VTCORE_KEY_UP, + WSAP_VTCORE_KEY_DOWN, + WSAP_VTCORE_KEY_RIGHT, + WSAP_VTCORE_KEY_LEFT, + WSAP_VTCORE_KEY_HOME, + WSAP_VTCORE_KEY_END, + WSAP_VTCORE_KEY_PAGE_UP, + WSAP_VTCORE_KEY_PAGE_DOWN, + WSAP_VTCORE_KEY_INSERT, + WSAP_VTCORE_KEY_DELETE, + + WSAP_VTCORE_KEY_F1, WSAP_VTCORE_KEY_F2, WSAP_VTCORE_KEY_F3, WSAP_VTCORE_KEY_F4, WSAP_VTCORE_KEY_F5, + WSAP_VTCORE_KEY_F6, WSAP_VTCORE_KEY_F7, WSAP_VTCORE_KEY_F8, WSAP_VTCORE_KEY_F9, WSAP_VTCORE_KEY_F10, + WSAP_VTCORE_KEY_F11, WSAP_VTCORE_KEY_F12, WSAP_VTCORE_KEY_F13, WSAP_VTCORE_KEY_F14, WSAP_VTCORE_KEY_F15, + WSAP_VTCORE_KEY_F16, WSAP_VTCORE_KEY_F17, WSAP_VTCORE_KEY_F18, WSAP_VTCORE_KEY_F19, WSAP_VTCORE_KEY_F20, + WSAP_VTCORE_KEY_F21, WSAP_VTCORE_KEY_F22, WSAP_VTCORE_KEY_F23, WSAP_VTCORE_KEY_F24, WSAP_VTCORE_KEY_F25, + WSAP_VTCORE_KEY_F26, WSAP_VTCORE_KEY_F27, WSAP_VTCORE_KEY_F28, WSAP_VTCORE_KEY_F29, WSAP_VTCORE_KEY_F30, + WSAP_VTCORE_KEY_F31, WSAP_VTCORE_KEY_F32, WSAP_VTCORE_KEY_F33, WSAP_VTCORE_KEY_F34, WSAP_VTCORE_KEY_F35, + + WSAP_VTCORE_KEY_KP_0, WSAP_VTCORE_KEY_KP_1, WSAP_VTCORE_KEY_KP_2, WSAP_VTCORE_KEY_KP_3, WSAP_VTCORE_KEY_KP_4, + WSAP_VTCORE_KEY_KP_5, WSAP_VTCORE_KEY_KP_6, WSAP_VTCORE_KEY_KP_7, WSAP_VTCORE_KEY_KP_8, WSAP_VTCORE_KEY_KP_9, + WSAP_VTCORE_KEY_KP_DECIMAL, + WSAP_VTCORE_KEY_KP_ENTER, + WSAP_VTCORE_KEY_KP_ADD, + WSAP_VTCORE_KEY_KP_SUBTRACT, + WSAP_VTCORE_KEY_KP_MULTIPLY, + WSAP_VTCORE_KEY_KP_DIVIDE, + WSAP_VTCORE_KEY_KP_EQUAL, + WSAP_VTCORE_KEY_KP_SEPARATOR, + WSAP_VTCORE_KEY_KP_LEFT, + WSAP_VTCORE_KEY_KP_RIGHT, + WSAP_VTCORE_KEY_KP_UP, + WSAP_VTCORE_KEY_KP_DOWN, + WSAP_VTCORE_KEY_KP_PAGE_UP, + WSAP_VTCORE_KEY_KP_PAGE_DOWN, + WSAP_VTCORE_KEY_KP_HOME, + WSAP_VTCORE_KEY_KP_END, + WSAP_VTCORE_KEY_KP_INSERT, + WSAP_VTCORE_KEY_KP_DELETE, + WSAP_VTCORE_KEY_KP_BEGIN, + + WSAP_VTCORE_KEY_CAPS_LOCK, + WSAP_VTCORE_KEY_SCROLL_LOCK, + WSAP_VTCORE_KEY_NUM_LOCK, + WSAP_VTCORE_KEY_PRINT_SCREEN, + WSAP_VTCORE_KEY_PAUSE, + WSAP_VTCORE_KEY_MENU, + + WSAP_VTCORE_KEY_MEDIA_PLAY, + WSAP_VTCORE_KEY_MEDIA_PAUSE, + WSAP_VTCORE_KEY_MEDIA_STOP, + WSAP_VTCORE_KEY_MEDIA_FORWARD, + WSAP_VTCORE_KEY_MEDIA_REWIND, + WSAP_VTCORE_KEY_MEDIA_NEXT, + WSAP_VTCORE_KEY_MEDIA_PREV, + WSAP_VTCORE_KEY_MEDIA_RECORD, + WSAP_VTCORE_KEY_VOLUME_DOWN, + WSAP_VTCORE_KEY_VOLUME_UP, + WSAP_VTCORE_KEY_MUTE, + + WSAP_VTCORE_KEY_LSHIFT, + WSAP_VTCORE_KEY_LCTRL, + WSAP_VTCORE_KEY_LALT, + WSAP_VTCORE_KEY_LSUPER, + WSAP_VTCORE_KEY_LHYPER, + WSAP_VTCORE_KEY_LMETA, + WSAP_VTCORE_KEY_RSHIFT, + WSAP_VTCORE_KEY_RCTRL, + WSAP_VTCORE_KEY_RALT, + WSAP_VTCORE_KEY_RSUPER, + WSAP_VTCORE_KEY_RHYPER, + WSAP_VTCORE_KEY_RMETA, + WSAP_VTCORE_KEY_ISO_LEVEL3_SHIFT, + WSAP_VTCORE_KEY_ISO_LEVEL5_SHIFT, + + WSAP_VTCORE_KEY_COUNT +}; + +enum wsap_vtcore_mod { + WSAP_VTCORE_MOD_SHIFT = 1, + WSAP_VTCORE_MOD_ALT = 2, + WSAP_VTCORE_MOD_CTRL = 4, + WSAP_VTCORE_MOD_SUPER = 8, + WSAP_VTCORE_MOD_HYPER = 16, + WSAP_VTCORE_MOD_META = 32, + WSAP_VTCORE_MOD_CAPS = 64, + WSAP_VTCORE_MOD_NUM = 128, +}; + +enum wsap_vtcore_key_action { + WSAP_VTCORE_KEY_PRESS = 1, + WSAP_VTCORE_KEY_REPEAT = 2, + WSAP_VTCORE_KEY_RELEASE = 3, +}; + +enum wsap_vtcore_mouse_button { + WSAP_VTCORE_MOUSE_BUTTON_PRIMARY = 0, + WSAP_VTCORE_MOUSE_BUTTON_MIDDLE, + WSAP_VTCORE_MOUSE_BUTTON_SECONDARY, + WSAP_VTCORE_MOUSE_BUTTON_NONE, + /* Extra buttons 8 through 11 in xterm mouse reporting (encoded as 128..131). */ + WSAP_VTCORE_MOUSE_BUTTON_EXTRA_1, + WSAP_VTCORE_MOUSE_BUTTON_EXTRA_2, + WSAP_VTCORE_MOUSE_BUTTON_EXTRA_3, + WSAP_VTCORE_MOUSE_BUTTON_EXTRA_4, + WSAP_VTCORE_MOUSE_WHEEL_UP = 16, + WSAP_VTCORE_MOUSE_WHEEL_DOWN, + WSAP_VTCORE_MOUSE_WHEEL_LEFT, + WSAP_VTCORE_MOUSE_WHEEL_RIGHT, +}; + +enum wsap_vtcore_mouse_event_kind { + WSAP_VTCORE_MOUSE_PRESS = 0, + WSAP_VTCORE_MOUSE_RELEASE, + WSAP_VTCORE_MOUSE_MOTION, + WSAP_VTCORE_MOUSE_SCROLL, + WSAP_VTCORE_MOUSE_LEAVE, +}; + +struct wsap_vtcore_key_event { + enum wsap_vtcore_key_action action; + uint16_t key; /* enum wsap_vtcore_key; WSAP_VTCORE_KEY_NONE for a text key */ + uint16_t keypad; /* the WSAP_VTCORE_KEY_KP_* key when the key is on the keypad */ + unsigned mods; /* enum wsap_vtcore_mod */ + uint32_t codepoint; /* the code point of the key without modifiers */ + uint32_t shifted; /* the code point of the key with Shift */ + uint32_t base; /* the code point of the key in the US layout */ + uint32_t text; /* the code point the key types, or 0 */ + bool text_deferred; /* an input method sends the text later */ +}; + +struct wsap_vtcore_mouse_event { + struct wsap_vtcore_vector2i pos; /* Grid cell coordinates (col, row) */ + struct wsap_vtcore_vector2i pixel; /* Absolute pixel position in terminal grid */ + /* + * Button identifier: + * - Press and release: the button that changed state (WSAP_VTCORE_MOUSE_BUTTON_*). + * - Motion: the held button for drag events, or WSAP_VTCORE_MOUSE_BUTTON_NONE for hover. + * - Scroll: the wheel direction (WSAP_VTCORE_MOUSE_WHEEL_*). + */ + int button; + unsigned mods; + int scroll_lines; + float scroll_delta; + enum wsap_vtcore_mouse_event_kind kind; +}; + +/* The keys that are down. An all-zero value has no keys down. */ +struct wsap_vtcore_keyboard_state { + uint64_t down[(WSAP_VTCORE_KEY_COUNT + 63) / 64]; +}; + +/* Record a press, repeat, or release in s. */ +WSAP_VTCORE_API void wsap_vtcore_keyboard_update(struct wsap_vtcore_keyboard_state *s, const struct wsap_vtcore_key_event *ev); +WSAP_VTCORE_API bool wsap_vtcore_keyboard_key_down(const struct wsap_vtcore_keyboard_state *s, enum wsap_vtcore_key key); + +/* Kitty keyboard protocol flags, as in wsap_vtcore_modes.keyboard. */ +enum wsap_vtcore_keyboard_flag { + WSAP_VTCORE_KEYBOARD_DISAMBIGUATE = 1, + WSAP_VTCORE_KEYBOARD_EVENT_TYPES = 2, + WSAP_VTCORE_KEYBOARD_ALTERNATE_KEYS = 4, + WSAP_VTCORE_KEYBOARD_ALL_KEYS = 8, + WSAP_VTCORE_KEYBOARD_ASSOCIATED_TEXT = 16, +}; + +enum wsap_vtcore_input_status { + WSAP_VTCORE_INPUT_UNHANDLED = 0, /* the terminal does not use the event */ + WSAP_VTCORE_INPUT_CONSUMED, /* the terminal uses the event but sends nothing */ + WSAP_VTCORE_INPUT_BYTES, /* send the len bytes in buf to the program */ + WSAP_VTCORE_INPUT_BUFFER_FULL, /* buf is too small; len is 0 */ +}; + +struct wsap_vtcore_input_result { + size_t len; + enum wsap_vtcore_input_status status; +}; + +#ifdef __cplusplus +} +#endif + +#endif /* WSAP_VTCORE_INPUT_H */ -- cgit v1.2.3