From 513bf031a589d9e2a1a2730adf56f95e5e316a06 Mon Sep 17 00:00:00 2001 From: Berke Güzel Date: Wed, 14 Oct 2026 17:17:43 +0300 Subject: Remove unused private functions and inline trivial helpers --- src/input.c | 125 +++++++++++++++++++----------------------------------------- 1 file changed, 40 insertions(+), 85 deletions(-) (limited to 'src/input.c') diff --git a/src/input.c b/src/input.c index 960f488..9fee179 100644 --- a/src/input.c +++ b/src/input.c @@ -9,13 +9,6 @@ struct seqbuf { bool overflow; }; -static inline void sb_init(struct seqbuf *sb, char *buf, size_t buf_sz) -{ - sb->p = buf; - sb->left = buf_sz; - sb->overflow = false; -} - static inline void sb_ch(struct seqbuf *sb, char c) { if (!sb->left) { sb->overflow = true; return; } @@ -57,9 +50,23 @@ static inline void sb_u32(struct seqbuf *sb, uint32_t val) sb_bytes(sb, p, (size_t)(end - p)); } -static inline size_t sb_len(const struct seqbuf *sb, const char *buf) +static inline void sb_utf8(struct seqbuf *sb, uint32_t cp) { - return (size_t)(sb->p - buf); + char tmp[8]; + size_t n = (size_t)utf8_encode(cp, tmp); + sb_bytes(sb, tmp, n); +} + +static struct term_input_result sb_result(const struct seqbuf *sb, const char *buf) +{ + if (sb->overflow) + return (struct term_input_result){ .status = TERM_INPUT_BUFFER_FULL }; + + size_t len = (size_t)(sb->p - buf); + return (struct term_input_result){ + .status = len ? TERM_INPUT_BYTES : TERM_INPUT_CONSUMED, + .len = len, + }; } struct kitty_desc { @@ -295,12 +302,6 @@ static inline bool key_is_modifier(enum term_key k) mod_desc[k].group == MOD_KEY_ISO5); } -static inline bool key_is_lock(enum term_key k) -{ - return k == TERM_KEY_CAPS_LOCK || k == TERM_KEY_SCROLL_LOCK || - k == TERM_KEY_NUM_LOCK; -} - static unsigned effective_mods(const struct term_keyboard_state *s, const struct term_key_event *ev) { @@ -317,27 +318,6 @@ static unsigned effective_mods(const struct term_keyboard_state *s, return mods; } -static unsigned lock_mod_bit(enum term_key key) -{ - if (key == TERM_KEY_CAPS_LOCK) return TERM_MOD_CAPS; - if (key == TERM_KEY_NUM_LOCK) return TERM_MOD_NUM; - return 0; -} - -static unsigned toggle_locks(enum term_key key, enum term_key_action action, - unsigned mods) -{ - unsigned bit = lock_mod_bit(key); - if (bit && action == TERM_KEY_PRESS) mods ^= bit; - return mods; -} - -/* Convert logical input modifiers to terminal protocol bits. */ -static inline unsigned protocol_modifiers(unsigned mods) -{ - return mods & 0xff; -} - static void format_kitty(struct seqbuf *sb, uint32_t code, char final, unsigned flags, bool functional, uint32_t shifted, uint32_t base, unsigned mods, unsigned event, @@ -392,11 +372,16 @@ static bool encode_kitty(const struct term_keyboard_state *s, char final = functional ? d->final : 'u'; bool all = (flags & TERM_KEYBOARD_ALL_KEYS) != 0; - if ((key_is_modifier(ev->key) || key_is_lock(ev->key)) && !all) + bool lock = ev->key == TERM_KEY_CAPS_LOCK || ev->key == TERM_KEY_SCROLL_LOCK || + ev->key == TERM_KEY_NUM_LOCK; + if ((key_is_modifier(ev->key) || lock) && !all) return true; unsigned mods = effective_mods(s, ev); - mods = toggle_locks(ev->key, ev->action, mods); + 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; + } bool plain_control = ev->key == TERM_KEY_RETURN || ev->key == TERM_KEY_TAB || ev->key == TERM_KEY_BACKSPACE; @@ -411,7 +396,7 @@ static bool encode_kitty(const struct term_keyboard_state *s, bool has_text = text >= 32 && !(text >= 127 && text < 160) && !(mods & command_mods); if (!all && has_text) return ev->action == TERM_KEY_RELEASE; - if (!all && plain_control && !(protocol_modifiers(mods) & 63)) + 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; @@ -430,7 +415,7 @@ static bool encode_kitty(const struct term_keyboard_state *s, bool report_text = all && (flags & TERM_KEYBOARD_ASSOCIATED_TEXT) && has_text && ev->action != TERM_KEY_RELEASE; - format_kitty(sb, code, final, flags, functional, shifted, base, protocol_modifiers(mods), + format_kitty(sb, code, final, flags, functional, shifted, base, mods & 0xff, event, report_text, text); return true; } @@ -463,12 +448,12 @@ static bool encode_legacy(const struct term_key_event *ev, if (ch == '-') { sb_ch(sb, 0x1f); return true; } } - unsigned csi = protocol_modifiers(ev->mods) & 63; + unsigned csi = ev->mods & 63; unsigned p = csi + 1; bool shift = (ev->mods & TERM_MOD_SHIFT) != 0; enum term_key k = ev->key; - if ((unsigned)k < TERM_KEY_COUNT && legacy_desc[k].equiv != TERM_KEY_NONE) + if (legacy_desc[k].equiv != TERM_KEY_NONE) k = legacy_desc[k].equiv; if ((unsigned)k < TERM_KEY_COUNT) { @@ -511,9 +496,7 @@ static bool encode_legacy(const struct term_key_event *ev, } if (ev->text && !ev->text_deferred) { - char tmp[8]; - size_t n = (size_t)utf8_encode(ev->text, tmp); - sb_bytes(sb, tmp, n); + sb_utf8(sb, ev->text); return true; } return false; @@ -544,7 +527,7 @@ static inline bool legacy_is_escape(const struct term_key_event *ev, if ((ev->mods & TERM_MOD_CTRL) && control_base_char(ev) == '[') return true; enum term_key k = ev->key; - if ((unsigned)k < TERM_KEY_COUNT && legacy_desc[k].equiv != TERM_KEY_NONE) + if (legacy_desc[k].equiv != TERM_KEY_NONE) k = legacy_desc[k].equiv; if ((unsigned)k < TERM_KEY_COUNT && legacy_desc[k].final) return true; @@ -569,8 +552,7 @@ struct term_input_result term_input_encode_key(const struct term_keyboard_state (unsigned)ev->key >= TERM_KEY_COUNT) return out; - struct seqbuf sb; - sb_init(&sb, buf, buf_sz); + struct seqbuf sb = { .p = buf, .left = buf_sz }; bool handled = encode_kitty(s, ev, m, &sb); if (!handled) { @@ -586,14 +568,7 @@ struct term_input_result term_input_encode_key(const struct term_keyboard_state if (!handled) return out; - if (sb.overflow) { - out.status = TERM_INPUT_BUFFER_FULL; - out.len = 0; - } else { - out.len = sb_len(&sb, buf); - out.status = out.len ? TERM_INPUT_BYTES : TERM_INPUT_CONSUMED; - } - return out; + return sb_result(&sb, buf); } struct term_input_result term_input_encode_mouse(const struct term_mouse_event *ev, @@ -641,8 +616,7 @@ struct term_input_result term_input_encode_mouse(const struct term_mouse_event * uint32_t report_x = (uint32_t)report.x + 1; uint32_t report_y = (uint32_t)report.y + 1; - struct seqbuf sb; - sb_init(&sb, buf, buf_sz); + struct seqbuf sb = { .p = buf, .left = buf_sz }; if (m->mouse_encoding == TERM_MOUSE_ENC_SGR || m->mouse_encoding == TERM_MOUSE_ENC_SGR_PIXELS) { @@ -663,14 +637,9 @@ struct term_input_result term_input_encode_mouse(const struct term_mouse_event * sb_ch(&sb, 'M'); } else if (m->mouse_encoding == TERM_MOUSE_ENC_UTF8) { sb_bytes(&sb, "\033[M", 3); - char tmp[8]; - size_t n; - n = (size_t)utf8_encode((unsigned)legacy_code + 32, tmp); - sb_bytes(&sb, tmp, n); - n = (size_t)utf8_encode((unsigned)cell.x + 33, tmp); - sb_bytes(&sb, tmp, n); - n = (size_t)utf8_encode((unsigned)cell.y + 33, tmp); - sb_bytes(&sb, tmp, n); + sb_utf8(&sb, (unsigned)legacy_code + 32); + sb_utf8(&sb, (unsigned)cell.x + 33); + sb_utf8(&sb, (unsigned)cell.y + 33); } else { if (legacy_code > 223 || cell.x > 222 || cell.y > 222) return out; @@ -683,14 +652,7 @@ struct term_input_result term_input_encode_mouse(const struct term_mouse_event * sb_bytes(&sb, tmp, 6); } - if (sb.overflow) { - out.status = TERM_INPUT_BUFFER_FULL; - out.len = 0; - return out; - } - out.len = sb_len(&sb, buf); - out.status = TERM_INPUT_BYTES; - return out; + return sb_result(&sb, buf); } /* Bidi controls can make pasted text look different from what runs. */ @@ -710,10 +672,9 @@ struct term_input_result term_input_encode_paste(const struct term_modes *m, struct term_input_result out = {0}; if (!m || !buf || (!text && len)) return out; - struct seqbuf sb; - sb_init(&sb, buf, capacity); + struct seqbuf sb = { .p = buf, .left = capacity }; if (m->bracketed_paste) sb_bytes(&sb, "\033[200~", 6); - size_t body = sb_len(&sb, buf); + 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); @@ -743,13 +704,7 @@ struct term_input_result term_input_encode_paste(const struct term_modes *m, } out.status = TERM_INPUT_CONSUMED; - if (!sb.overflow && sb_len(&sb, buf) == body) return out; + if (!sb.overflow && sb.p == body) return out; if (m->bracketed_paste) sb_bytes(&sb, "\033[201~", 6); - if (sb.overflow) { - out.status = TERM_INPUT_BUFFER_FULL; - return out; - } - out.len = sb_len(&sb, buf); - out.status = TERM_INPUT_BYTES; - return out; + return sb_result(&sb, buf); } -- cgit v1.2.3