- # mostly adds nothing, but sometimes swallowed first char
- to_yield += chars[len(_OSC52_PREFIX):].decode('utf-8')
- while (gotch := self._blessed.getch()) != _PASTE_DELIMITER:
- to_yield += gotch
+ # sometimes, prev .inkey got some or all (including paste
+ # delimiter) of the paste code (maybe even more), so first
+ # harvest potential remains of chars post prefix …
+ caught_delimiter = False
+ post_prefix_str = chars[len_prefix:].decode('utf-8')
+ for idx, c in enumerate(post_prefix_str):
+ if c == _PASTE_DELIMITER:
+ caught_delimiter = True
+ if (remains := post_prefix_str[idx + 1:]):
+ self._blessed.ungetch(remains)
+ break
+ to_yield += c
+ # … before .getch() further until expected delimiter found
+ if not caught_delimiter:
+ while (c := self._blessed.getch()) != _PASTE_DELIMITER:
+ to_yield += c