<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ida-tui.git/experiments/type_bench.py, branch main</title>
<subtitle>tui for headless ida</subtitle>
<id>https://git.sl0p.foo/ida-tui.git/atom/experiments/type_bench.py?h=main</id>
<link rel='self' href='https://git.sl0p.foo/ida-tui.git/atom/experiments/type_bench.py?h=main'/>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/ida-tui.git/'/>
<updated>2026-09-29T12:31:42Z</updated>
<entry>
<title>experiments: two pty harnesses the pilot cannot stand in for</title>
<updated>2026-09-29T12:31:42Z</updated>
<author>
<name>blasty</name>
<email>peter@haxx.in</email>
</author>
<published>2026-09-29T12:31:42Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/ida-tui.git/commit/?id=6f05712453c303d71cf9b36bfb07732eb868500c'/>
<id>urn:sha1:6f05712453c303d71cf9b36bfb07732eb868500c</id>
<content type='text'>
Both exist because an in-process Textual pilot passes on things a real
terminal does not do.

type_bench.py times the semantic verbs at several delay_ms values through
a real pty -- tests/_fixtures.fast_keys patches the per-key idle wait
away, which is exactly the cost being measured, so the pilot is blind to
it. This is where the ~80ms/char figure behind `press()` came from.

click_pty.py injects SGR mouse bytes on stdin like a terminal emulator
and reads the cursor back over the RPC. `pilot.click()` posts
MouseDown/MouseUp/Click straight at a widget and bypasses Textual's own
click synthesis, so it can pass while a real click does nothing.
</content>
</entry>
</feed>
