diff options
Diffstat (limited to 'src/input.c')
| -rw-r--r-- | src/input.c | 598 |
1 files changed, 299 insertions, 299 deletions
diff --git a/src/input.c b/src/input.c index 2f0cd5c..7f76bb7 100644 --- a/src/input.c +++ b/src/input.c @@ -1,4 +1,4 @@ -#include "term.h" +#include "wsap_vtcore.h" #include "unicode/utf8.h" #include <string.h> @@ -53,18 +53,18 @@ static inline void sb_u32(struct seqbuf *sb, uint32_t val) static inline void sb_utf8(struct seqbuf *sb, uint32_t cp) { char tmp[8]; - size_t n = (size_t)term_utf8_encode(cp, tmp); + size_t n = (size_t)wsap_vtcore_utf8_encode(cp, tmp); sb_bytes(sb, tmp, n); } -static struct term_input_result sb_result(const struct seqbuf *sb, const char *buf) +static struct wsap_vtcore_input_result sb_result(const struct seqbuf *sb, const char *buf) { if (sb->overflow) - return (struct term_input_result){ .status = TERM_INPUT_BUFFER_FULL }; + return (struct wsap_vtcore_input_result){ .status = WSAP_VTCORE_INPUT_BUFFER_FULL }; size_t len = (size_t)(sb->p - buf); - return (struct term_input_result){ - .status = len ? TERM_INPUT_BYTES : TERM_INPUT_CONSUMED, + return (struct wsap_vtcore_input_result){ + .status = len ? WSAP_VTCORE_INPUT_BYTES : WSAP_VTCORE_INPUT_CONSUMED, .len = len, }; } @@ -74,122 +74,122 @@ struct kitty_desc { char final; }; -static const struct kitty_desc kitty_desc[TERM_KEY_COUNT] = { - [TERM_KEY_RETURN] = { 13, 'u' }, - [TERM_KEY_BACKSPACE] = { 127, 'u' }, - [TERM_KEY_TAB] = { 9, 'u' }, - [TERM_KEY_ESCAPE] = { 27, 'u' }, - - [TERM_KEY_UP] = { 1, 'A' }, - [TERM_KEY_DOWN] = { 1, 'B' }, - [TERM_KEY_RIGHT] = { 1, 'C' }, - [TERM_KEY_LEFT] = { 1, 'D' }, - [TERM_KEY_HOME] = { 1, 'H' }, - [TERM_KEY_END] = { 1, 'F' }, - [TERM_KEY_PAGE_UP] = { 5, '~' }, - [TERM_KEY_PAGE_DOWN] = { 6, '~' }, - [TERM_KEY_INSERT] = { 2, '~' }, - [TERM_KEY_DELETE] = { 3, '~' }, - - [TERM_KEY_F1] = { 1, 'P' }, - [TERM_KEY_F2] = { 1, 'Q' }, - [TERM_KEY_F3] = { 13, '~' }, - [TERM_KEY_F4] = { 1, 'S' }, - [TERM_KEY_F5] = { 15, '~' }, - [TERM_KEY_F6] = { 17, '~' }, - [TERM_KEY_F7] = { 18, '~' }, - [TERM_KEY_F8] = { 19, '~' }, - [TERM_KEY_F9] = { 20, '~' }, - [TERM_KEY_F10] = { 21, '~' }, - [TERM_KEY_F11] = { 23, '~' }, - [TERM_KEY_F12] = { 24, '~' }, - [TERM_KEY_F13] = { 57376, 'u' }, - [TERM_KEY_F14] = { 57377, 'u' }, - [TERM_KEY_F15] = { 57378, 'u' }, - [TERM_KEY_F16] = { 57379, 'u' }, - [TERM_KEY_F17] = { 57380, 'u' }, - [TERM_KEY_F18] = { 57381, 'u' }, - [TERM_KEY_F19] = { 57382, 'u' }, - [TERM_KEY_F20] = { 57383, 'u' }, - [TERM_KEY_F21] = { 57384, 'u' }, - [TERM_KEY_F22] = { 57385, 'u' }, - [TERM_KEY_F23] = { 57386, 'u' }, - [TERM_KEY_F24] = { 57387, 'u' }, - [TERM_KEY_F25] = { 57388, 'u' }, - [TERM_KEY_F26] = { 57389, 'u' }, - [TERM_KEY_F27] = { 57390, 'u' }, - [TERM_KEY_F28] = { 57391, 'u' }, - [TERM_KEY_F29] = { 57392, 'u' }, - [TERM_KEY_F30] = { 57393, 'u' }, - [TERM_KEY_F31] = { 57394, 'u' }, - [TERM_KEY_F32] = { 57395, 'u' }, - [TERM_KEY_F33] = { 57396, 'u' }, - [TERM_KEY_F34] = { 57397, 'u' }, - [TERM_KEY_F35] = { 57398, 'u' }, - - [TERM_KEY_KP_0] = { 57399, 'u' }, - [TERM_KEY_KP_1] = { 57400, 'u' }, - [TERM_KEY_KP_2] = { 57401, 'u' }, - [TERM_KEY_KP_3] = { 57402, 'u' }, - [TERM_KEY_KP_4] = { 57403, 'u' }, - [TERM_KEY_KP_5] = { 57404, 'u' }, - [TERM_KEY_KP_6] = { 57405, 'u' }, - [TERM_KEY_KP_7] = { 57406, 'u' }, - [TERM_KEY_KP_8] = { 57407, 'u' }, - [TERM_KEY_KP_9] = { 57408, 'u' }, - [TERM_KEY_KP_DECIMAL] = { 57409, 'u' }, - [TERM_KEY_KP_DIVIDE] = { 57410, 'u' }, - [TERM_KEY_KP_MULTIPLY] = { 57411, 'u' }, - [TERM_KEY_KP_SUBTRACT] = { 57412, 'u' }, - [TERM_KEY_KP_ADD] = { 57413, 'u' }, - [TERM_KEY_KP_ENTER] = { 57414, 'u' }, - [TERM_KEY_KP_EQUAL] = { 57415, 'u' }, - [TERM_KEY_KP_SEPARATOR] = { 57416, 'u' }, - [TERM_KEY_KP_LEFT] = { 57417, 'u' }, - [TERM_KEY_KP_RIGHT] = { 57418, 'u' }, - [TERM_KEY_KP_UP] = { 57419, 'u' }, - [TERM_KEY_KP_DOWN] = { 57420, 'u' }, - [TERM_KEY_KP_PAGE_UP] = { 57421, 'u' }, - [TERM_KEY_KP_PAGE_DOWN] = { 57422, 'u' }, - [TERM_KEY_KP_HOME] = { 57423, 'u' }, - [TERM_KEY_KP_END] = { 57424, 'u' }, - [TERM_KEY_KP_INSERT] = { 57425, 'u' }, - [TERM_KEY_KP_DELETE] = { 57426, 'u' }, - [TERM_KEY_KP_BEGIN] = { 1, 'E' }, - - [TERM_KEY_CAPS_LOCK] = { 57358, 'u' }, - [TERM_KEY_SCROLL_LOCK] = { 57359, 'u' }, - [TERM_KEY_NUM_LOCK] = { 57360, 'u' }, - [TERM_KEY_PRINT_SCREEN] = { 57361, 'u' }, - [TERM_KEY_PAUSE] = { 57362, 'u' }, - [TERM_KEY_MENU] = { 57363, 'u' }, - - [TERM_KEY_MEDIA_PLAY] = { 57428, 'u' }, - [TERM_KEY_MEDIA_PAUSE] = { 57429, 'u' }, - [TERM_KEY_MEDIA_STOP] = { 57432, 'u' }, - [TERM_KEY_MEDIA_FORWARD] = { 57433, 'u' }, - [TERM_KEY_MEDIA_REWIND] = { 57434, 'u' }, - [TERM_KEY_MEDIA_NEXT] = { 57435, 'u' }, - [TERM_KEY_MEDIA_PREV] = { 57436, 'u' }, - [TERM_KEY_MEDIA_RECORD] = { 57437, 'u' }, - [TERM_KEY_VOLUME_DOWN] = { 57438, 'u' }, - [TERM_KEY_VOLUME_UP] = { 57439, 'u' }, - [TERM_KEY_MUTE] = { 57440, 'u' }, - - [TERM_KEY_LSHIFT] = { 57441, 'u' }, - [TERM_KEY_LCTRL] = { 57442, 'u' }, - [TERM_KEY_LALT] = { 57443, 'u' }, - [TERM_KEY_LSUPER] = { 57444, 'u' }, - [TERM_KEY_LHYPER] = { 57445, 'u' }, - [TERM_KEY_LMETA] = { 57446, 'u' }, - [TERM_KEY_RSHIFT] = { 57447, 'u' }, - [TERM_KEY_RCTRL] = { 57448, 'u' }, - [TERM_KEY_RALT] = { 57449, 'u' }, - [TERM_KEY_RSUPER] = { 57450, 'u' }, - [TERM_KEY_RHYPER] = { 57451, 'u' }, - [TERM_KEY_RMETA] = { 57452, 'u' }, - [TERM_KEY_ISO_LEVEL3_SHIFT] = { 57453, 'u' }, - [TERM_KEY_ISO_LEVEL5_SHIFT] = { 57454, 'u' }, +static const struct kitty_desc kitty_desc[WSAP_VTCORE_KEY_COUNT] = { + [WSAP_VTCORE_KEY_RETURN] = { 13, 'u' }, + [WSAP_VTCORE_KEY_BACKSPACE] = { 127, 'u' }, + [WSAP_VTCORE_KEY_TAB] = { 9, 'u' }, + [WSAP_VTCORE_KEY_ESCAPE] = { 27, 'u' }, + + [WSAP_VTCORE_KEY_UP] = { 1, 'A' }, + [WSAP_VTCORE_KEY_DOWN] = { 1, 'B' }, + [WSAP_VTCORE_KEY_RIGHT] = { 1, 'C' }, + [WSAP_VTCORE_KEY_LEFT] = { 1, 'D' }, + [WSAP_VTCORE_KEY_HOME] = { 1, 'H' }, + [WSAP_VTCORE_KEY_END] = { 1, 'F' }, + [WSAP_VTCORE_KEY_PAGE_UP] = { 5, '~' }, + [WSAP_VTCORE_KEY_PAGE_DOWN] = { 6, '~' }, + [WSAP_VTCORE_KEY_INSERT] = { 2, '~' }, + [WSAP_VTCORE_KEY_DELETE] = { 3, '~' }, + + [WSAP_VTCORE_KEY_F1] = { 1, 'P' }, + [WSAP_VTCORE_KEY_F2] = { 1, 'Q' }, + [WSAP_VTCORE_KEY_F3] = { 13, '~' }, + [WSAP_VTCORE_KEY_F4] = { 1, 'S' }, + [WSAP_VTCORE_KEY_F5] = { 15, '~' }, + [WSAP_VTCORE_KEY_F6] = { 17, '~' }, + [WSAP_VTCORE_KEY_F7] = { 18, '~' }, + [WSAP_VTCORE_KEY_F8] = { 19, '~' }, + [WSAP_VTCORE_KEY_F9] = { 20, '~' }, + [WSAP_VTCORE_KEY_F10] = { 21, '~' }, + [WSAP_VTCORE_KEY_F11] = { 23, '~' }, + [WSAP_VTCORE_KEY_F12] = { 24, '~' }, + [WSAP_VTCORE_KEY_F13] = { 57376, 'u' }, + [WSAP_VTCORE_KEY_F14] = { 57377, 'u' }, + [WSAP_VTCORE_KEY_F15] = { 57378, 'u' }, + [WSAP_VTCORE_KEY_F16] = { 57379, 'u' }, + [WSAP_VTCORE_KEY_F17] = { 57380, 'u' }, + [WSAP_VTCORE_KEY_F18] = { 57381, 'u' }, + [WSAP_VTCORE_KEY_F19] = { 57382, 'u' }, + [WSAP_VTCORE_KEY_F20] = { 57383, 'u' }, + [WSAP_VTCORE_KEY_F21] = { 57384, 'u' }, + [WSAP_VTCORE_KEY_F22] = { 57385, 'u' }, + [WSAP_VTCORE_KEY_F23] = { 57386, 'u' }, + [WSAP_VTCORE_KEY_F24] = { 57387, 'u' }, + [WSAP_VTCORE_KEY_F25] = { 57388, 'u' }, + [WSAP_VTCORE_KEY_F26] = { 57389, 'u' }, + [WSAP_VTCORE_KEY_F27] = { 57390, 'u' }, + [WSAP_VTCORE_KEY_F28] = { 57391, 'u' }, + [WSAP_VTCORE_KEY_F29] = { 57392, 'u' }, + [WSAP_VTCORE_KEY_F30] = { 57393, 'u' }, + [WSAP_VTCORE_KEY_F31] = { 57394, 'u' }, + [WSAP_VTCORE_KEY_F32] = { 57395, 'u' }, + [WSAP_VTCORE_KEY_F33] = { 57396, 'u' }, + [WSAP_VTCORE_KEY_F34] = { 57397, 'u' }, + [WSAP_VTCORE_KEY_F35] = { 57398, 'u' }, + + [WSAP_VTCORE_KEY_KP_0] = { 57399, 'u' }, + [WSAP_VTCORE_KEY_KP_1] = { 57400, 'u' }, + [WSAP_VTCORE_KEY_KP_2] = { 57401, 'u' }, + [WSAP_VTCORE_KEY_KP_3] = { 57402, 'u' }, + [WSAP_VTCORE_KEY_KP_4] = { 57403, 'u' }, + [WSAP_VTCORE_KEY_KP_5] = { 57404, 'u' }, + [WSAP_VTCORE_KEY_KP_6] = { 57405, 'u' }, + [WSAP_VTCORE_KEY_KP_7] = { 57406, 'u' }, + [WSAP_VTCORE_KEY_KP_8] = { 57407, 'u' }, + [WSAP_VTCORE_KEY_KP_9] = { 57408, 'u' }, + [WSAP_VTCORE_KEY_KP_DECIMAL] = { 57409, 'u' }, + [WSAP_VTCORE_KEY_KP_DIVIDE] = { 57410, 'u' }, + [WSAP_VTCORE_KEY_KP_MULTIPLY] = { 57411, 'u' }, + [WSAP_VTCORE_KEY_KP_SUBTRACT] = { 57412, 'u' }, + [WSAP_VTCORE_KEY_KP_ADD] = { 57413, 'u' }, + [WSAP_VTCORE_KEY_KP_ENTER] = { 57414, 'u' }, + [WSAP_VTCORE_KEY_KP_EQUAL] = { 57415, 'u' }, + [WSAP_VTCORE_KEY_KP_SEPARATOR] = { 57416, 'u' }, + [WSAP_VTCORE_KEY_KP_LEFT] = { 57417, 'u' }, + [WSAP_VTCORE_KEY_KP_RIGHT] = { 57418, 'u' }, + [WSAP_VTCORE_KEY_KP_UP] = { 57419, 'u' }, + [WSAP_VTCORE_KEY_KP_DOWN] = { 57420, 'u' }, + [WSAP_VTCORE_KEY_KP_PAGE_UP] = { 57421, 'u' }, + [WSAP_VTCORE_KEY_KP_PAGE_DOWN] = { 57422, 'u' }, + [WSAP_VTCORE_KEY_KP_HOME] = { 57423, 'u' }, + [WSAP_VTCORE_KEY_KP_END] = { 57424, 'u' }, + [WSAP_VTCORE_KEY_KP_INSERT] = { 57425, 'u' }, + [WSAP_VTCORE_KEY_KP_DELETE] = { 57426, 'u' }, + [WSAP_VTCORE_KEY_KP_BEGIN] = { 1, 'E' }, + + [WSAP_VTCORE_KEY_CAPS_LOCK] = { 57358, 'u' }, + [WSAP_VTCORE_KEY_SCROLL_LOCK] = { 57359, 'u' }, + [WSAP_VTCORE_KEY_NUM_LOCK] = { 57360, 'u' }, + [WSAP_VTCORE_KEY_PRINT_SCREEN] = { 57361, 'u' }, + [WSAP_VTCORE_KEY_PAUSE] = { 57362, 'u' }, + [WSAP_VTCORE_KEY_MENU] = { 57363, 'u' }, + + [WSAP_VTCORE_KEY_MEDIA_PLAY] = { 57428, 'u' }, + [WSAP_VTCORE_KEY_MEDIA_PAUSE] = { 57429, 'u' }, + [WSAP_VTCORE_KEY_MEDIA_STOP] = { 57432, 'u' }, + [WSAP_VTCORE_KEY_MEDIA_FORWARD] = { 57433, 'u' }, + [WSAP_VTCORE_KEY_MEDIA_REWIND] = { 57434, 'u' }, + [WSAP_VTCORE_KEY_MEDIA_NEXT] = { 57435, 'u' }, + [WSAP_VTCORE_KEY_MEDIA_PREV] = { 57436, 'u' }, + [WSAP_VTCORE_KEY_MEDIA_RECORD] = { 57437, 'u' }, + [WSAP_VTCORE_KEY_VOLUME_DOWN] = { 57438, 'u' }, + [WSAP_VTCORE_KEY_VOLUME_UP] = { 57439, 'u' }, + [WSAP_VTCORE_KEY_MUTE] = { 57440, 'u' }, + + [WSAP_VTCORE_KEY_LSHIFT] = { 57441, 'u' }, + [WSAP_VTCORE_KEY_LCTRL] = { 57442, 'u' }, + [WSAP_VTCORE_KEY_LALT] = { 57443, 'u' }, + [WSAP_VTCORE_KEY_LSUPER] = { 57444, 'u' }, + [WSAP_VTCORE_KEY_LHYPER] = { 57445, 'u' }, + [WSAP_VTCORE_KEY_LMETA] = { 57446, 'u' }, + [WSAP_VTCORE_KEY_RSHIFT] = { 57447, 'u' }, + [WSAP_VTCORE_KEY_RCTRL] = { 57448, 'u' }, + [WSAP_VTCORE_KEY_RALT] = { 57449, 'u' }, + [WSAP_VTCORE_KEY_RSUPER] = { 57450, 'u' }, + [WSAP_VTCORE_KEY_RHYPER] = { 57451, 'u' }, + [WSAP_VTCORE_KEY_RMETA] = { 57452, 'u' }, + [WSAP_VTCORE_KEY_ISO_LEVEL3_SHIFT] = { 57453, 'u' }, + [WSAP_VTCORE_KEY_ISO_LEVEL5_SHIFT] = { 57454, 'u' }, }; struct legacy_desc { @@ -197,61 +197,61 @@ struct legacy_desc { char final; bool app_cursor; char keypad_ss3; - enum term_key equiv; + enum wsap_vtcore_key equiv; }; -static const struct legacy_desc legacy_desc[TERM_KEY_COUNT] = { - [TERM_KEY_UP] = { .tilde = 0, .final = 'A', .app_cursor = true }, - [TERM_KEY_DOWN] = { .tilde = 0, .final = 'B', .app_cursor = true }, - [TERM_KEY_RIGHT] = { .tilde = 0, .final = 'C', .app_cursor = true }, - [TERM_KEY_LEFT] = { .tilde = 0, .final = 'D', .app_cursor = true }, - [TERM_KEY_HOME] = { .tilde = 0, .final = 'H', .app_cursor = true }, - [TERM_KEY_END] = { .tilde = 0, .final = 'F', .app_cursor = true }, - [TERM_KEY_PAGE_UP] = { .tilde = 5, .final = '~' }, - [TERM_KEY_PAGE_DOWN] = { .tilde = 6, .final = '~' }, - [TERM_KEY_INSERT] = { .tilde = 2, .final = '~' }, - [TERM_KEY_DELETE] = { .tilde = 3, .final = '~' }, - - [TERM_KEY_F1] = { .tilde = 0, .final = 'P' }, - [TERM_KEY_F2] = { .tilde = 0, .final = 'Q' }, - [TERM_KEY_F3] = { .tilde = 0, .final = 'R' }, - [TERM_KEY_F4] = { .tilde = 0, .final = 'S' }, - [TERM_KEY_F5] = { .tilde = 15, .final = '~' }, - [TERM_KEY_F6] = { .tilde = 17, .final = '~' }, - [TERM_KEY_F7] = { .tilde = 18, .final = '~' }, - [TERM_KEY_F8] = { .tilde = 19, .final = '~' }, - [TERM_KEY_F9] = { .tilde = 20, .final = '~' }, - [TERM_KEY_F10] = { .tilde = 21, .final = '~' }, - [TERM_KEY_F11] = { .tilde = 23, .final = '~' }, - [TERM_KEY_F12] = { .tilde = 24, .final = '~' }, - - [TERM_KEY_KP_0] = { .keypad_ss3 = 'p' }, - [TERM_KEY_KP_1] = { .keypad_ss3 = 'q' }, - [TERM_KEY_KP_2] = { .keypad_ss3 = 'r' }, - [TERM_KEY_KP_3] = { .keypad_ss3 = 's' }, - [TERM_KEY_KP_4] = { .keypad_ss3 = 't' }, - [TERM_KEY_KP_5] = { .keypad_ss3 = 'u' }, - [TERM_KEY_KP_6] = { .keypad_ss3 = 'v' }, - [TERM_KEY_KP_7] = { .keypad_ss3 = 'w' }, - [TERM_KEY_KP_8] = { .keypad_ss3 = 'x' }, - [TERM_KEY_KP_9] = { .keypad_ss3 = 'y' }, - [TERM_KEY_KP_DECIMAL] = { .keypad_ss3 = 'n' }, - [TERM_KEY_KP_DIVIDE] = { .keypad_ss3 = 'o' }, - [TERM_KEY_KP_MULTIPLY] = { .keypad_ss3 = 'j' }, - [TERM_KEY_KP_SUBTRACT] = { .keypad_ss3 = 'm' }, - [TERM_KEY_KP_ADD] = { .keypad_ss3 = 'k' }, - [TERM_KEY_KP_ENTER] = { .keypad_ss3 = 'M', .equiv = TERM_KEY_RETURN }, - [TERM_KEY_KP_LEFT] = { .equiv = TERM_KEY_LEFT }, - [TERM_KEY_KP_RIGHT] = { .equiv = TERM_KEY_RIGHT }, - [TERM_KEY_KP_UP] = { .equiv = TERM_KEY_UP }, - [TERM_KEY_KP_DOWN] = { .equiv = TERM_KEY_DOWN }, - [TERM_KEY_KP_PAGE_UP] = { .equiv = TERM_KEY_PAGE_UP }, - [TERM_KEY_KP_PAGE_DOWN] = { .equiv = TERM_KEY_PAGE_DOWN }, - [TERM_KEY_KP_HOME] = { .equiv = TERM_KEY_HOME }, - [TERM_KEY_KP_END] = { .equiv = TERM_KEY_END }, - [TERM_KEY_KP_INSERT] = { .equiv = TERM_KEY_INSERT }, - [TERM_KEY_KP_DELETE] = { .equiv = TERM_KEY_DELETE }, - [TERM_KEY_KP_BEGIN] = { .tilde = 0, .final = 'E' }, +static const struct legacy_desc legacy_desc[WSAP_VTCORE_KEY_COUNT] = { + [WSAP_VTCORE_KEY_UP] = { .tilde = 0, .final = 'A', .app_cursor = true }, + [WSAP_VTCORE_KEY_DOWN] = { .tilde = 0, .final = 'B', .app_cursor = true }, + [WSAP_VTCORE_KEY_RIGHT] = { .tilde = 0, .final = 'C', .app_cursor = true }, + [WSAP_VTCORE_KEY_LEFT] = { .tilde = 0, .final = 'D', .app_cursor = true }, + [WSAP_VTCORE_KEY_HOME] = { .tilde = 0, .final = 'H', .app_cursor = true }, + [WSAP_VTCORE_KEY_END] = { .tilde = 0, .final = 'F', .app_cursor = true }, + [WSAP_VTCORE_KEY_PAGE_UP] = { .tilde = 5, .final = '~' }, + [WSAP_VTCORE_KEY_PAGE_DOWN] = { .tilde = 6, .final = '~' }, + [WSAP_VTCORE_KEY_INSERT] = { .tilde = 2, .final = '~' }, + [WSAP_VTCORE_KEY_DELETE] = { .tilde = 3, .final = '~' }, + + [WSAP_VTCORE_KEY_F1] = { .tilde = 0, .final = 'P' }, + [WSAP_VTCORE_KEY_F2] = { .tilde = 0, .final = 'Q' }, + [WSAP_VTCORE_KEY_F3] = { .tilde = 0, .final = 'R' }, + [WSAP_VTCORE_KEY_F4] = { .tilde = 0, .final = 'S' }, + [WSAP_VTCORE_KEY_F5] = { .tilde = 15, .final = '~' }, + [WSAP_VTCORE_KEY_F6] = { .tilde = 17, .final = '~' }, + [WSAP_VTCORE_KEY_F7] = { .tilde = 18, .final = '~' }, + [WSAP_VTCORE_KEY_F8] = { .tilde = 19, .final = '~' }, + [WSAP_VTCORE_KEY_F9] = { .tilde = 20, .final = '~' }, + [WSAP_VTCORE_KEY_F10] = { .tilde = 21, .final = '~' }, + [WSAP_VTCORE_KEY_F11] = { .tilde = 23, .final = '~' }, + [WSAP_VTCORE_KEY_F12] = { .tilde = 24, .final = '~' }, + + [WSAP_VTCORE_KEY_KP_0] = { .keypad_ss3 = 'p' }, + [WSAP_VTCORE_KEY_KP_1] = { .keypad_ss3 = 'q' }, + [WSAP_VTCORE_KEY_KP_2] = { .keypad_ss3 = 'r' }, + [WSAP_VTCORE_KEY_KP_3] = { .keypad_ss3 = 's' }, + [WSAP_VTCORE_KEY_KP_4] = { .keypad_ss3 = 't' }, + [WSAP_VTCORE_KEY_KP_5] = { .keypad_ss3 = 'u' }, + [WSAP_VTCORE_KEY_KP_6] = { .keypad_ss3 = 'v' }, + [WSAP_VTCORE_KEY_KP_7] = { .keypad_ss3 = 'w' }, + [WSAP_VTCORE_KEY_KP_8] = { .keypad_ss3 = 'x' }, + [WSAP_VTCORE_KEY_KP_9] = { .keypad_ss3 = 'y' }, + [WSAP_VTCORE_KEY_KP_DECIMAL] = { .keypad_ss3 = 'n' }, + [WSAP_VTCORE_KEY_KP_DIVIDE] = { .keypad_ss3 = 'o' }, + [WSAP_VTCORE_KEY_KP_MULTIPLY] = { .keypad_ss3 = 'j' }, + [WSAP_VTCORE_KEY_KP_SUBTRACT] = { .keypad_ss3 = 'm' }, + [WSAP_VTCORE_KEY_KP_ADD] = { .keypad_ss3 = 'k' }, + [WSAP_VTCORE_KEY_KP_ENTER] = { .keypad_ss3 = 'M', .equiv = WSAP_VTCORE_KEY_RETURN }, + [WSAP_VTCORE_KEY_KP_LEFT] = { .equiv = WSAP_VTCORE_KEY_LEFT }, + [WSAP_VTCORE_KEY_KP_RIGHT] = { .equiv = WSAP_VTCORE_KEY_RIGHT }, + [WSAP_VTCORE_KEY_KP_UP] = { .equiv = WSAP_VTCORE_KEY_UP }, + [WSAP_VTCORE_KEY_KP_DOWN] = { .equiv = WSAP_VTCORE_KEY_DOWN }, + [WSAP_VTCORE_KEY_KP_PAGE_UP] = { .equiv = WSAP_VTCORE_KEY_PAGE_UP }, + [WSAP_VTCORE_KEY_KP_PAGE_DOWN] = { .equiv = WSAP_VTCORE_KEY_PAGE_DOWN }, + [WSAP_VTCORE_KEY_KP_HOME] = { .equiv = WSAP_VTCORE_KEY_HOME }, + [WSAP_VTCORE_KEY_KP_END] = { .equiv = WSAP_VTCORE_KEY_END }, + [WSAP_VTCORE_KEY_KP_INSERT] = { .equiv = WSAP_VTCORE_KEY_INSERT }, + [WSAP_VTCORE_KEY_KP_DELETE] = { .equiv = WSAP_VTCORE_KEY_DELETE }, + [WSAP_VTCORE_KEY_KP_BEGIN] = { .tilde = 0, .final = 'E' }, }; enum input_mod_key { @@ -268,42 +268,42 @@ enum input_mod_key { struct mod_desc { enum input_mod_key group; - enum term_key partner; + enum wsap_vtcore_key partner; }; -static const struct mod_desc mod_desc[TERM_KEY_COUNT] = { - [TERM_KEY_LSHIFT] = { MOD_KEY_SHIFT, TERM_KEY_RSHIFT }, - [TERM_KEY_RSHIFT] = { MOD_KEY_SHIFT, TERM_KEY_LSHIFT }, - [TERM_KEY_LCTRL] = { MOD_KEY_CTRL, TERM_KEY_RCTRL }, - [TERM_KEY_RCTRL] = { MOD_KEY_CTRL, TERM_KEY_LCTRL }, - [TERM_KEY_LALT] = { MOD_KEY_ALT, TERM_KEY_RALT }, - [TERM_KEY_RALT] = { MOD_KEY_ALT, TERM_KEY_LALT }, - [TERM_KEY_LSUPER] = { MOD_KEY_SUPER, TERM_KEY_RSUPER }, - [TERM_KEY_RSUPER] = { MOD_KEY_SUPER, TERM_KEY_LSUPER }, - [TERM_KEY_LHYPER] = { MOD_KEY_HYPER, TERM_KEY_RHYPER }, - [TERM_KEY_RHYPER] = { MOD_KEY_HYPER, TERM_KEY_LHYPER }, - [TERM_KEY_LMETA] = { MOD_KEY_META, TERM_KEY_RMETA }, - [TERM_KEY_RMETA] = { MOD_KEY_META, TERM_KEY_LMETA }, - [TERM_KEY_ISO_LEVEL3_SHIFT] = { MOD_KEY_ISO3, TERM_KEY_NONE }, - [TERM_KEY_ISO_LEVEL5_SHIFT] = { MOD_KEY_ISO5, TERM_KEY_NONE }, +static const struct mod_desc mod_desc[WSAP_VTCORE_KEY_COUNT] = { + [WSAP_VTCORE_KEY_LSHIFT] = { MOD_KEY_SHIFT, WSAP_VTCORE_KEY_RSHIFT }, + [WSAP_VTCORE_KEY_RSHIFT] = { MOD_KEY_SHIFT, WSAP_VTCORE_KEY_LSHIFT }, + [WSAP_VTCORE_KEY_LCTRL] = { MOD_KEY_CTRL, WSAP_VTCORE_KEY_RCTRL }, + [WSAP_VTCORE_KEY_RCTRL] = { MOD_KEY_CTRL, WSAP_VTCORE_KEY_LCTRL }, + [WSAP_VTCORE_KEY_LALT] = { MOD_KEY_ALT, WSAP_VTCORE_KEY_RALT }, + [WSAP_VTCORE_KEY_RALT] = { MOD_KEY_ALT, WSAP_VTCORE_KEY_LALT }, + [WSAP_VTCORE_KEY_LSUPER] = { MOD_KEY_SUPER, WSAP_VTCORE_KEY_RSUPER }, + [WSAP_VTCORE_KEY_RSUPER] = { MOD_KEY_SUPER, WSAP_VTCORE_KEY_LSUPER }, + [WSAP_VTCORE_KEY_LHYPER] = { MOD_KEY_HYPER, WSAP_VTCORE_KEY_RHYPER }, + [WSAP_VTCORE_KEY_RHYPER] = { MOD_KEY_HYPER, WSAP_VTCORE_KEY_LHYPER }, + [WSAP_VTCORE_KEY_LMETA] = { MOD_KEY_META, WSAP_VTCORE_KEY_RMETA }, + [WSAP_VTCORE_KEY_RMETA] = { MOD_KEY_META, WSAP_VTCORE_KEY_LMETA }, + [WSAP_VTCORE_KEY_ISO_LEVEL3_SHIFT] = { MOD_KEY_ISO3, WSAP_VTCORE_KEY_NONE }, + [WSAP_VTCORE_KEY_ISO_LEVEL5_SHIFT] = { MOD_KEY_ISO5, WSAP_VTCORE_KEY_NONE }, }; static const unsigned mod_group_input_mod[MOD_KEY_COUNT] = { - TERM_MOD_SHIFT, TERM_MOD_CTRL, TERM_MOD_ALT, - TERM_MOD_SUPER, TERM_MOD_HYPER, TERM_MOD_META, + WSAP_VTCORE_MOD_SHIFT, WSAP_VTCORE_MOD_CTRL, WSAP_VTCORE_MOD_ALT, + WSAP_VTCORE_MOD_SUPER, WSAP_VTCORE_MOD_HYPER, WSAP_VTCORE_MOD_META, 0, 0, }; -static inline bool key_is_modifier(enum term_key k) +static inline bool key_is_modifier(enum wsap_vtcore_key k) { - return (unsigned)k < TERM_KEY_COUNT && - (mod_desc[k].partner != TERM_KEY_NONE || + return (unsigned)k < WSAP_VTCORE_KEY_COUNT && + (mod_desc[k].partner != WSAP_VTCORE_KEY_NONE || mod_desc[k].group == MOD_KEY_ISO3 || mod_desc[k].group == MOD_KEY_ISO5); } -static unsigned effective_mods(const struct term_keyboard_state *s, - const struct term_key_event *ev) +static unsigned effective_mods(const struct wsap_vtcore_keyboard_state *s, + const struct wsap_vtcore_key_event *ev) { unsigned mods = ev->mods; if (!key_is_modifier(ev->key)) return mods; @@ -312,8 +312,8 @@ static unsigned effective_mods(const struct term_keyboard_state *s, if (d->group >= MOD_KEY_ISO3) return mods; unsigned bit = mod_group_input_mod[d->group]; - bool other_held = term_keyboard_key_down(s, d->partner); - if (ev->action != TERM_KEY_RELEASE || other_held) mods |= bit; + bool other_held = wsap_vtcore_keyboard_key_down(s, d->partner); + if (ev->action != WSAP_VTCORE_KEY_RELEASE || other_held) mods |= bit; else mods &= ~bit; return mods; } @@ -325,13 +325,13 @@ static void format_kitty(struct seqbuf *sb, uint32_t code, char final, { sb_bytes(sb, "\033[", 2); if (final != 'u' && final != '~' && code <= 1 && !shifted && !base && - !mods && !(flags & TERM_KEYBOARD_EVENT_TYPES) && !report_text) { + !mods && !(flags & WSAP_VTCORE_KEYBOARD_EVENT_TYPES) && !report_text) { sb_ch(sb, final); return; } sb_u32(sb, code); - if ((flags & TERM_KEYBOARD_ALTERNATE_KEYS) && !functional) { + if ((flags & WSAP_VTCORE_KEYBOARD_ALTERNATE_KEYS) && !functional) { if (shifted) { sb_ch(sb, ':'); sb_u32(sb, shifted); @@ -342,11 +342,11 @@ static void format_kitty(struct seqbuf *sb, uint32_t code, char final, sb_u32(sb, base); } } - if (mods || (flags & TERM_KEYBOARD_EVENT_TYPES) || report_text) { + if (mods || (flags & WSAP_VTCORE_KEYBOARD_EVENT_TYPES) || report_text) { sb_ch(sb, ';'); sb_u32(sb, mods + 1); } - if ((flags & TERM_KEYBOARD_EVENT_TYPES) && event != 1) { + if ((flags & WSAP_VTCORE_KEYBOARD_EVENT_TYPES) && event != 1) { sb_ch(sb, ':'); sb_u32(sb, event); } @@ -357,55 +357,55 @@ static void format_kitty(struct seqbuf *sb, uint32_t code, char final, sb_ch(sb, final); } -static bool encode_kitty(const struct term_keyboard_state *s, - const struct term_key_event *ev, - const struct term_modes *m, +static bool encode_kitty(const struct wsap_vtcore_keyboard_state *s, + const struct wsap_vtcore_key_event *ev, + const struct wsap_vtcore_modes *m, struct seqbuf *sb) { unsigned flags = m->keyboard; - unsigned event = ev->action == TERM_KEY_PRESS ? 1u : - ev->action == TERM_KEY_REPEAT ? 2u : 3u; - if (!flags) return ev->action == TERM_KEY_RELEASE; + unsigned event = ev->action == WSAP_VTCORE_KEY_PRESS ? 1u : + ev->action == WSAP_VTCORE_KEY_REPEAT ? 2u : 3u; + if (!flags) return ev->action == WSAP_VTCORE_KEY_RELEASE; const struct kitty_desc *d = &kitty_desc[ev->key]; bool functional = d->code != 0; char final = functional ? d->final : 'u'; - bool all = (flags & TERM_KEYBOARD_ALL_KEYS) != 0; + bool all = (flags & WSAP_VTCORE_KEYBOARD_ALL_KEYS) != 0; - bool lock = ev->key == TERM_KEY_CAPS_LOCK || ev->key == TERM_KEY_SCROLL_LOCK || - ev->key == TERM_KEY_NUM_LOCK; + bool lock = ev->key == WSAP_VTCORE_KEY_CAPS_LOCK || ev->key == WSAP_VTCORE_KEY_SCROLL_LOCK || + ev->key == WSAP_VTCORE_KEY_NUM_LOCK; if ((key_is_modifier(ev->key) || lock) && !all) return true; unsigned mods = effective_mods(s, ev); - if (ev->action == TERM_KEY_PRESS) { - if (ev->key == TERM_KEY_CAPS_LOCK) mods ^= TERM_MOD_CAPS; - if (ev->key == TERM_KEY_NUM_LOCK) mods ^= TERM_MOD_NUM; + if (ev->action == WSAP_VTCORE_KEY_PRESS) { + if (ev->key == WSAP_VTCORE_KEY_CAPS_LOCK) mods ^= WSAP_VTCORE_MOD_CAPS; + if (ev->key == WSAP_VTCORE_KEY_NUM_LOCK) mods ^= WSAP_VTCORE_MOD_NUM; } - bool plain_control = ev->key == TERM_KEY_RETURN || ev->key == TERM_KEY_TAB || - ev->key == TERM_KEY_BACKSPACE; - if (ev->action == TERM_KEY_RELEASE && - (!(flags & TERM_KEYBOARD_EVENT_TYPES) || (!all && plain_control))) + bool plain_control = ev->key == WSAP_VTCORE_KEY_RETURN || ev->key == WSAP_VTCORE_KEY_TAB || + ev->key == WSAP_VTCORE_KEY_BACKSPACE; + if (ev->action == WSAP_VTCORE_KEY_RELEASE && + (!(flags & WSAP_VTCORE_KEYBOARD_EVENT_TYPES) || (!all && plain_control))) return true; - const unsigned command_mods = TERM_MOD_ALT | TERM_MOD_CTRL | - TERM_MOD_SUPER | TERM_MOD_HYPER | - TERM_MOD_META; + const unsigned command_mods = WSAP_VTCORE_MOD_ALT | WSAP_VTCORE_MOD_CTRL | + WSAP_VTCORE_MOD_SUPER | WSAP_VTCORE_MOD_HYPER | + WSAP_VTCORE_MOD_META; uint32_t text = ev->text; bool has_text = text >= 32 && !(text >= 127 && text < 160) && !(mods & command_mods); - if (!all && has_text) return ev->action == TERM_KEY_RELEASE; + if (!all && has_text) return ev->action == WSAP_VTCORE_KEY_RELEASE; if (!all && plain_control && !(mods & 63)) - return ev->action == TERM_KEY_RELEASE; - if (!(flags & (TERM_KEYBOARD_DISAMBIGUATE | TERM_KEYBOARD_EVENT_TYPES | TERM_KEYBOARD_ALL_KEYS))) - return ev->action == TERM_KEY_RELEASE; + return ev->action == WSAP_VTCORE_KEY_RELEASE; + if (!(flags & (WSAP_VTCORE_KEYBOARD_DISAMBIGUATE | WSAP_VTCORE_KEYBOARD_EVENT_TYPES | WSAP_VTCORE_KEYBOARD_ALL_KEYS))) + return ev->action == WSAP_VTCORE_KEY_RELEASE; uint32_t code = d->code, shifted = 0, base = 0; if (!functional) { code = ev->codepoint; - if (flags & TERM_KEYBOARD_ALTERNATE_KEYS) { - shifted = (mods & TERM_MOD_SHIFT) ? ev->shifted : 0; + if (flags & WSAP_VTCORE_KEYBOARD_ALTERNATE_KEYS) { + shifted = (mods & WSAP_VTCORE_MOD_SHIFT) ? ev->shifted : 0; base = ev->base; if (shifted == code) shifted = 0; if (base == code) base = 0; @@ -413,25 +413,25 @@ static bool encode_kitty(const struct term_keyboard_state *s, } if (!code) return true; - bool report_text = all && (flags & TERM_KEYBOARD_ASSOCIATED_TEXT) && has_text && - ev->action != TERM_KEY_RELEASE; + bool report_text = all && (flags & WSAP_VTCORE_KEYBOARD_ASSOCIATED_TEXT) && has_text && + ev->action != WSAP_VTCORE_KEY_RELEASE; format_kitty(sb, code, final, flags, functional, shifted, base, mods & 0xff, event, report_text, text); return true; } -static uint32_t control_base_char(const struct term_key_event *ev) +static uint32_t control_base_char(const struct wsap_vtcore_key_event *ev) { - uint32_t ch = ((ev->mods & TERM_MOD_SHIFT) && ev->shifted) + uint32_t ch = ((ev->mods & WSAP_VTCORE_MOD_SHIFT) && ev->shifted) ? ev->shifted : ev->codepoint; return ch < 0x80 ? ch : 0; } -static bool encode_legacy(const struct term_key_event *ev, - const struct term_modes *m, +static bool encode_legacy(const struct wsap_vtcore_key_event *ev, + const struct wsap_vtcore_modes *m, struct seqbuf *sb) { - if (m->app_keypad && (unsigned)ev->keypad < TERM_KEY_COUNT && + if (m->app_keypad && (unsigned)ev->keypad < WSAP_VTCORE_KEY_COUNT && legacy_desc[ev->keypad].keypad_ss3) { sb_bytes(sb, "\033O", 2); sb_ch(sb, legacy_desc[ev->keypad].keypad_ss3); @@ -439,7 +439,7 @@ static bool encode_legacy(const struct term_key_event *ev, } uint32_t ch = control_base_char(ev); - if ((ev->mods & TERM_MOD_CTRL) && ch) { + if ((ev->mods & WSAP_VTCORE_MOD_CTRL) && ch) { if ((ch >= 'a' && ch <= 'z') || (ch >= '@' && ch <= '_')) { sb_ch(sb, (char)(ch & 0x1f)); return true; @@ -450,13 +450,13 @@ static bool encode_legacy(const struct term_key_event *ev, unsigned csi = ev->mods & 63; unsigned p = csi + 1; - bool shift = (ev->mods & TERM_MOD_SHIFT) != 0; + bool shift = (ev->mods & WSAP_VTCORE_MOD_SHIFT) != 0; - enum term_key k = ev->key; - if (legacy_desc[k].equiv != TERM_KEY_NONE) + enum wsap_vtcore_key k = ev->key; + if (legacy_desc[k].equiv != WSAP_VTCORE_KEY_NONE) k = legacy_desc[k].equiv; - if ((unsigned)k < TERM_KEY_COUNT) { + if ((unsigned)k < WSAP_VTCORE_KEY_COUNT) { const struct legacy_desc *d = &legacy_desc[k]; if (d->final) { if (d->tilde) { @@ -483,15 +483,15 @@ static bool encode_legacy(const struct term_key_event *ev, } switch (k) { - case TERM_KEY_RETURN: sb_ch(sb, '\r'); return true; - case TERM_KEY_BACKSPACE: + case WSAP_VTCORE_KEY_RETURN: sb_ch(sb, '\r'); return true; + case WSAP_VTCORE_KEY_BACKSPACE: sb_ch(sb, m->backarrow_bs ? '\x08' : '\x7f'); return true; - case TERM_KEY_TAB: + case WSAP_VTCORE_KEY_TAB: if (shift) { sb_bytes(sb, "\033[Z", 3); } else { sb_ch(sb, '\t'); } return true; - case TERM_KEY_ESCAPE: sb_ch(sb, '\033'); return true; + case WSAP_VTCORE_KEY_ESCAPE: sb_ch(sb, '\033'); return true; default: break; } @@ -502,64 +502,64 @@ static bool encode_legacy(const struct term_key_event *ev, return false; } -void term_keyboard_update(struct term_keyboard_state *s, const struct term_key_event *ev) +void wsap_vtcore_keyboard_update(struct wsap_vtcore_keyboard_state *s, const struct wsap_vtcore_key_event *ev) { - if (!s || !ev || ev->key <= TERM_KEY_NONE || ev->key >= TERM_KEY_COUNT) + if (!s || !ev || ev->key <= WSAP_VTCORE_KEY_NONE || ev->key >= WSAP_VTCORE_KEY_COUNT) return; - if (ev->action == TERM_KEY_RELEASE) + if (ev->action == WSAP_VTCORE_KEY_RELEASE) s->down[ev->key >> 6] &= ~(1ull << (ev->key & 63)); - else if (ev->action == TERM_KEY_PRESS || ev->action == TERM_KEY_REPEAT) + else if (ev->action == WSAP_VTCORE_KEY_PRESS || ev->action == WSAP_VTCORE_KEY_REPEAT) s->down[ev->key >> 6] |= 1ull << (ev->key & 63); } -bool term_keyboard_key_down(const struct term_keyboard_state *s, enum term_key key) +bool wsap_vtcore_keyboard_key_down(const struct wsap_vtcore_keyboard_state *s, enum wsap_vtcore_key key) { - return s && key > TERM_KEY_NONE && (unsigned)key < TERM_KEY_COUNT && + return s && key > WSAP_VTCORE_KEY_NONE && (unsigned)key < WSAP_VTCORE_KEY_COUNT && ((s->down[key >> 6] >> (key & 63)) & 1); } -static inline bool legacy_is_escape(const struct term_key_event *ev, - const struct term_modes *m) +static inline bool legacy_is_escape(const struct wsap_vtcore_key_event *ev, + const struct wsap_vtcore_modes *m) { - if (m->app_keypad && (unsigned)ev->keypad < TERM_KEY_COUNT && + if (m->app_keypad && (unsigned)ev->keypad < WSAP_VTCORE_KEY_COUNT && legacy_desc[ev->keypad].keypad_ss3) return true; - if ((ev->mods & TERM_MOD_CTRL) && control_base_char(ev) == '[') + if ((ev->mods & WSAP_VTCORE_MOD_CTRL) && control_base_char(ev) == '[') return true; - enum term_key k = ev->key; - if (legacy_desc[k].equiv != TERM_KEY_NONE) + enum wsap_vtcore_key k = ev->key; + if (legacy_desc[k].equiv != WSAP_VTCORE_KEY_NONE) k = legacy_desc[k].equiv; - if ((unsigned)k < TERM_KEY_COUNT && legacy_desc[k].final) + if ((unsigned)k < WSAP_VTCORE_KEY_COUNT && legacy_desc[k].final) return true; - if (k == TERM_KEY_ESCAPE) + if (k == WSAP_VTCORE_KEY_ESCAPE) return true; - if (k == TERM_KEY_TAB && (ev->mods & TERM_MOD_SHIFT)) + if (k == WSAP_VTCORE_KEY_TAB && (ev->mods & WSAP_VTCORE_MOD_SHIFT)) return true; if (ev->text == '\033') return true; return false; } -struct term_input_result term_input_encode_key(const struct term_keyboard_state *s, - const struct term_key_event *ev, - const struct term_modes *m, +struct wsap_vtcore_input_result wsap_vtcore_input_encode_key(const struct wsap_vtcore_keyboard_state *s, + const struct wsap_vtcore_key_event *ev, + const struct wsap_vtcore_modes *m, char *buf, size_t buf_sz) { - struct term_input_result out = {0}; + struct wsap_vtcore_input_result out = {0}; if (!ev || !m || !buf || - (ev->action != TERM_KEY_PRESS && ev->action != TERM_KEY_REPEAT && - ev->action != TERM_KEY_RELEASE) || - (unsigned)ev->key >= TERM_KEY_COUNT) + (ev->action != WSAP_VTCORE_KEY_PRESS && ev->action != WSAP_VTCORE_KEY_REPEAT && + ev->action != WSAP_VTCORE_KEY_RELEASE) || + (unsigned)ev->key >= WSAP_VTCORE_KEY_COUNT) return out; struct seqbuf sb = { .p = buf, .left = buf_sz }; bool handled = encode_kitty(s, ev, m, &sb); if (!handled) { - if (ev->action == TERM_KEY_RELEASE) + if (ev->action == WSAP_VTCORE_KEY_RELEASE) return out; - if ((ev->mods & TERM_MOD_ALT) && !legacy_is_escape(ev, m)) + if ((ev->mods & WSAP_VTCORE_MOD_ALT) && !legacy_is_escape(ev, m)) sb_ch(&sb, '\033'); handled = encode_legacy(ev, m, &sb); @@ -571,45 +571,45 @@ struct term_input_result term_input_encode_key(const struct term_keyboard_state return sb_result(&sb, buf); } -struct term_input_result term_input_encode_mouse(const struct term_mouse_event *ev, - const struct term_modes *m, +struct wsap_vtcore_input_result wsap_vtcore_input_encode_mouse(const struct wsap_vtcore_mouse_event *ev, + const struct wsap_vtcore_modes *m, char *buf, size_t buf_sz) { - struct term_input_result out = {0}; + struct wsap_vtcore_input_result out = {0}; if (!ev || !m || !buf) return out; - if (!m->mouse || (ev->mods & TERM_MOD_SHIFT)) return out; + if (!m->mouse || (ev->mods & WSAP_VTCORE_MOD_SHIFT)) return out; - out.status = TERM_INPUT_CONSUMED; - if (ev->kind == TERM_MOUSE_LEAVE) return out; - struct term_vector2i cell = ev->pos; + out.status = WSAP_VTCORE_INPUT_CONSUMED; + if (ev->kind == WSAP_VTCORE_MOUSE_LEAVE) return out; + struct wsap_vtcore_vector2i cell = ev->pos; if (cell.x < 0 || cell.y < 0 || cell.x >= m->grid.x || cell.y >= m->grid.y) return out; - if (m->mouse == TERM_MOUSE_X10 && (ev->kind == TERM_MOUSE_RELEASE || ev->kind == TERM_MOUSE_MOTION)) { + if (m->mouse == WSAP_VTCORE_MOUSE_X10 && (ev->kind == WSAP_VTCORE_MOUSE_RELEASE || ev->kind == WSAP_VTCORE_MOUSE_MOTION)) { return out; } - if (ev->kind == TERM_MOUSE_MOTION && (m->mouse == TERM_MOUSE_NORMAL || - (m->mouse == TERM_MOUSE_BUTTON && ev->button == TERM_MOUSE_BUTTON_NONE))) { + if (ev->kind == WSAP_VTCORE_MOUSE_MOTION && (m->mouse == WSAP_VTCORE_MOUSE_NORMAL || + (m->mouse == WSAP_VTCORE_MOUSE_BUTTON && ev->button == WSAP_VTCORE_MOUSE_BUTTON_NONE))) { return out; } int button; - if (ev->button >= TERM_MOUSE_BUTTON_PRIMARY && ev->button <= TERM_MOUSE_BUTTON_NONE) + if (ev->button >= WSAP_VTCORE_MOUSE_BUTTON_PRIMARY && ev->button <= WSAP_VTCORE_MOUSE_BUTTON_NONE) button = ev->button; - else if (ev->button >= TERM_MOUSE_BUTTON_EXTRA_1 && ev->button <= TERM_MOUSE_BUTTON_EXTRA_4) - button = 128 + ev->button - TERM_MOUSE_BUTTON_EXTRA_1; - else if (ev->button >= TERM_MOUSE_WHEEL_UP && ev->button <= TERM_MOUSE_WHEEL_RIGHT) - button = 64 + ev->button - TERM_MOUSE_WHEEL_UP; + else if (ev->button >= WSAP_VTCORE_MOUSE_BUTTON_EXTRA_1 && ev->button <= WSAP_VTCORE_MOUSE_BUTTON_EXTRA_4) + button = 128 + ev->button - WSAP_VTCORE_MOUSE_BUTTON_EXTRA_1; + else if (ev->button >= WSAP_VTCORE_MOUSE_WHEEL_UP && ev->button <= WSAP_VTCORE_MOUSE_WHEEL_RIGHT) + button = 64 + ev->button - WSAP_VTCORE_MOUSE_WHEEL_UP; else { return out; } int mods = 0; - if (ev->mods & TERM_MOD_ALT) mods |= 8; - if (ev->mods & TERM_MOD_CTRL) mods |= 16; + if (ev->mods & WSAP_VTCORE_MOD_ALT) mods |= 8; + if (ev->mods & WSAP_VTCORE_MOD_CTRL) mods |= 16; - int code = button | mods | (ev->kind == TERM_MOUSE_MOTION ? 32 : 0); - int legacy_code = ev->kind == TERM_MOUSE_RELEASE ? 3 | mods : code; - struct term_vector2i report = m->mouse_encoding == TERM_MOUSE_ENC_SGR_PIXELS + int code = button | mods | (ev->kind == WSAP_VTCORE_MOUSE_MOTION ? 32 : 0); + int legacy_code = ev->kind == WSAP_VTCORE_MOUSE_RELEASE ? 3 | mods : code; + struct wsap_vtcore_vector2i report = m->mouse_encoding == WSAP_VTCORE_MOUSE_ENC_SGR_PIXELS ? ev->pixel : cell; if (report.x < 0 || report.y < 0) return out; @@ -618,16 +618,16 @@ struct term_input_result term_input_encode_mouse(const struct term_mouse_event * struct seqbuf sb = { .p = buf, .left = buf_sz }; - if (m->mouse_encoding == TERM_MOUSE_ENC_SGR || - m->mouse_encoding == TERM_MOUSE_ENC_SGR_PIXELS) { + if (m->mouse_encoding == WSAP_VTCORE_MOUSE_ENC_SGR || + m->mouse_encoding == WSAP_VTCORE_MOUSE_ENC_SGR_PIXELS) { sb_bytes(&sb, "\033[<", 3); sb_u32(&sb, (uint32_t)code); sb_ch(&sb, ';'); sb_u32(&sb, report_x); sb_ch(&sb, ';'); sb_u32(&sb, report_y); - sb_ch(&sb, ev->kind == TERM_MOUSE_RELEASE ? 'm' : 'M'); - } else if (m->mouse_encoding == TERM_MOUSE_ENC_URXVT) { + sb_ch(&sb, ev->kind == WSAP_VTCORE_MOUSE_RELEASE ? 'm' : 'M'); + } else if (m->mouse_encoding == WSAP_VTCORE_MOUSE_ENC_URXVT) { sb_bytes(&sb, "\033[", 2); sb_u32(&sb, (uint32_t)(legacy_code + 32)); sb_ch(&sb, ';'); @@ -635,7 +635,7 @@ struct term_input_result term_input_encode_mouse(const struct term_mouse_event * sb_ch(&sb, ';'); sb_u32(&sb, (uint32_t)(cell.y + 1)); sb_ch(&sb, 'M'); - } else if (m->mouse_encoding == TERM_MOUSE_ENC_UTF8) { + } else if (m->mouse_encoding == WSAP_VTCORE_MOUSE_ENC_UTF8) { sb_bytes(&sb, "\033[M", 3); sb_utf8(&sb, (unsigned)legacy_code + 32); sb_utf8(&sb, (unsigned)cell.x + 33); @@ -665,11 +665,11 @@ static bool is_direction_format(uint32_t cp) cp == 0xfeff; } -struct term_input_result term_input_encode_paste(const struct term_modes *m, +struct wsap_vtcore_input_result wsap_vtcore_input_encode_paste(const struct wsap_vtcore_modes *m, const char *text, size_t len, char *buf, size_t capacity) { - struct term_input_result out = {0}; + struct wsap_vtcore_input_result out = {0}; if (!m || !buf || (!text && len)) return out; struct seqbuf sb = { .p = buf, .left = capacity }; @@ -677,7 +677,7 @@ struct term_input_result term_input_encode_paste(const struct term_modes *m, char *body = sb.p; for (size_t i = 0; i < len;) { if (sb.overflow) break; - size_t run = term_scan_printable_span(text + i, len - i, 0x7f); + size_t run = wsap_vtcore_scan_printable_span(text + i, len - i, 0x7f); if (run > 0) { sb_bytes(&sb, text + i, run); i += run; @@ -695,7 +695,7 @@ struct term_input_result term_input_encode_paste(const struct term_modes *m, continue; } uint32_t cp; - int n = term_utf8_decode_one(text + i, len - i, &cp); + int n = wsap_vtcore_utf8_decode_one(text + i, len - i, &cp); if (!n) { i++; continue; } if (cp >= 0xa0 && !is_direction_format(cp)) { sb_bytes(&sb, text + i, (size_t)n); @@ -703,7 +703,7 @@ struct term_input_result term_input_encode_paste(const struct term_modes *m, i += (size_t)n; } - out.status = TERM_INPUT_CONSUMED; + out.status = WSAP_VTCORE_INPUT_CONSUMED; if (!sb.overflow && sb.p == body) return out; if (m->bracketed_paste) sb_bytes(&sb, "\033[201~", 6); return sb_result(&sb, buf); |
