summaryrefslogtreecommitdiff
path: root/src/input.c
diff options
context:
space:
mode:
authorBerke Güzel <wenekar1@gmail.com>2026-10-15 13:04:32 +0300
committerBerke Güzel <wenekar1@gmail.com>2026-10-15 13:04:32 +0300
commitbdaedce69b17b654bd0060579dd9b9ff120009b5 (patch)
tree0e9cd8597652263a96c48ba678fb0b66e1fc131b /src/input.c
parentba75c8b0a1bba03ad92c53375432f122ddb4cb98 (diff)
parentdcebf9c7f954a55350b68d0ead1935612c4e2e05 (diff)
Merge branch 'wt/rename' into api-hardening
# Conflicts: # README.md
Diffstat (limited to 'src/input.c')
-rw-r--r--src/input.c598
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);