<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>API Reference on TUI</title><link>https://serenafontaine.github.io/tui/docs/api/</link><description>Recent content in API Reference on TUI</description><generator>Hugo</generator><language>en</language><atom:link href="https://serenafontaine.github.io/tui/docs/api/index.xml" rel="self" type="application/rss+xml"/><item><title>Component</title><link>https://serenafontaine.github.io/tui/docs/api/component/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://serenafontaine.github.io/tui/docs/api/component/</guid><description>&lt;p&gt;&lt;code&gt;Component&lt;/code&gt; is the core interface for TUI applications.&lt;/p&gt;
&lt;h2 id="interface"&gt;Interface&lt;/h2&gt;




&lt;div class="chroma-wrap"&gt;
 
 &lt;div class="chroma-header"&gt;
 &lt;span class="chroma-lang"&gt;go&lt;/span&gt;
 &lt;button type="button" class="btn-copy" data-copy-target aria-label="Copy code"&gt;Copy&lt;/button&gt;
 &lt;/div&gt;
 
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;type&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Component&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;interface&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;Init&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Cmd&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;Update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;msg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Msg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;Component&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Cmd&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;Render&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;buf&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nx"&gt;Buffer&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;area&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Rect&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id="init"&gt;Init&lt;/h3&gt;




&lt;div class="chroma-wrap"&gt;
 
 &lt;div class="chroma-header"&gt;
 &lt;span class="chroma-lang"&gt;go&lt;/span&gt;
 &lt;button type="button" class="btn-copy" data-copy-target aria-label="Copy code"&gt;Copy&lt;/button&gt;
 &lt;/div&gt;
 
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;func&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;Init&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Cmd&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Called once when the application starts. Return a &lt;code&gt;Cmd&lt;/code&gt; to run an initial command (start a timer, fetch data), or &lt;code&gt;nil&lt;/code&gt; for no initial action.&lt;/p&gt;
&lt;h3 id="update"&gt;Update&lt;/h3&gt;




&lt;div class="chroma-wrap"&gt;
 
 &lt;div class="chroma-header"&gt;
 &lt;span class="chroma-lang"&gt;go&lt;/span&gt;
 &lt;button type="button" class="btn-copy" data-copy-target aria-label="Copy code"&gt;Copy&lt;/button&gt;
 &lt;/div&gt;
 
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;func&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;Update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;msg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Msg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;Component&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Cmd&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Called when a message arrives (key press, mouse event, timer tick, custom message). Update state and return the component and an optional command. Return a different &lt;code&gt;Component&lt;/code&gt; to swap the root component entirely.&lt;/p&gt;</description></item><item><title>Buffer</title><link>https://serenafontaine.github.io/tui/docs/api/buffer/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://serenafontaine.github.io/tui/docs/api/buffer/</guid><description>&lt;p&gt;&lt;code&gt;Buffer&lt;/code&gt; is a 2D grid of cells representing terminal content. The framework creates buffers automatically; components write into them during &lt;code&gt;Render&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="creating-buffers"&gt;Creating Buffers&lt;/h2&gt;




&lt;div class="chroma-wrap"&gt;
 
 &lt;div class="chroma-header"&gt;
 &lt;span class="chroma-lang"&gt;go&lt;/span&gt;
 &lt;button type="button" class="btn-copy" data-copy-target aria-label="Copy code"&gt;Copy&lt;/button&gt;
 &lt;/div&gt;
 
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;buf&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;tui&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;NewBuffer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;width&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;height&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Typically you receive a buffer from the framework rather than creating one.&lt;/p&gt;
&lt;h2 id="writing-content"&gt;Writing Content&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Method&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;SetChar(x, y, rune, Style)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Set a single character&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;SetString(x, y, string, Style) int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Write a string, returns cells written&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;SetStringInRect(string, Rect, Style) int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Write with wrapping, returns lines used&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Fill(Rect, Cell)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Fill area with a cell&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;FillStyle(Rect, Style)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Apply style to area, preserving characters&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;DrawHLine(x, y, width, rune, Style)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Draw horizontal line&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;DrawVLine(x, y, height, rune, Style)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Draw vertical line&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="reading-content"&gt;Reading Content&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Method&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Get(x, y) Cell&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Read cell at position (emptyCell if out of bounds)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="buffer-operations"&gt;Buffer Operations&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Method&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Clear()&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Reset all cells to empty&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Resize(width, height)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Change dimensions, discard content&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Merge(other, offsetX, offsetY)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Overlay another buffer at offset&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;AddImage(ImagePlacement)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Register an image for KGP rendering&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="diff-based-rendering"&gt;Diff-Based Rendering&lt;/h2&gt;
&lt;p&gt;The framework uses &lt;code&gt;Diff&lt;/code&gt; internally to produce minimal terminal updates:&lt;/p&gt;</description></item><item><title>Style &amp; Color</title><link>https://serenafontaine.github.io/tui/docs/api/style/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://serenafontaine.github.io/tui/docs/api/style/</guid><description>&lt;h2 id="color"&gt;Color&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;Color&lt;/code&gt; represents a terminal color. The zero value is &amp;ldquo;no color&amp;rdquo; (terminal default).&lt;/p&gt;
&lt;h3 id="constructors"&gt;Constructors&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Function&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;RGB(r, g, b uint8)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;24-bit true color&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Hex(string)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;From hex string (&lt;code&gt;&amp;quot;#FF6432&amp;quot;&lt;/code&gt; or &lt;code&gt;&amp;quot;FF6432&amp;quot;&lt;/code&gt;)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ANSI256(uint8)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;256-color palette index&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="ansi-16-constants"&gt;ANSI 16 Constants&lt;/h3&gt;
&lt;p&gt;Standard: &lt;code&gt;Black&lt;/code&gt;, &lt;code&gt;Red&lt;/code&gt;, &lt;code&gt;Green&lt;/code&gt;, &lt;code&gt;Yellow&lt;/code&gt;, &lt;code&gt;Blue&lt;/code&gt;, &lt;code&gt;Magenta&lt;/code&gt;, &lt;code&gt;Cyan&lt;/code&gt;, &lt;code&gt;White&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Bright: &lt;code&gt;BrightBlack&lt;/code&gt;, &lt;code&gt;BrightRed&lt;/code&gt;, &lt;code&gt;BrightGreen&lt;/code&gt;, &lt;code&gt;BrightYellow&lt;/code&gt;, &lt;code&gt;BrightBlue&lt;/code&gt;, &lt;code&gt;BrightMagenta&lt;/code&gt;, &lt;code&gt;BrightCyan&lt;/code&gt;, &lt;code&gt;BrightWhite&lt;/code&gt;&lt;/p&gt;
&lt;h3 id="methods"&gt;Methods&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Method&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;IsZero() bool&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;True if this is the default (no) color&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="style"&gt;Style&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;Style&lt;/code&gt; defines visual attributes for a cell. It is a value type with a chainable builder.&lt;/p&gt;</description></item><item><title>Layout</title><link>https://serenafontaine.github.io/tui/docs/api/layout/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://serenafontaine.github.io/tui/docs/api/layout/</guid><description>&lt;p&gt;The layout system splits rectangular areas according to constraints.&lt;/p&gt;
&lt;h2 id="functions"&gt;Functions&lt;/h2&gt;
&lt;h3 id="vsplit"&gt;VSplit&lt;/h3&gt;




&lt;div class="chroma-wrap"&gt;
 
 &lt;div class="chroma-header"&gt;
 &lt;span class="chroma-lang"&gt;go&lt;/span&gt;
 &lt;button type="button" class="btn-copy" data-copy-target aria-label="Copy code"&gt;Copy&lt;/button&gt;
 &lt;/div&gt;
 
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;func&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;VSplit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;area&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Rect&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;constraints&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;Constraint&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="nx"&gt;Rect&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Splits vertically (top to bottom). Returns one &lt;code&gt;Rect&lt;/code&gt; per constraint.&lt;/p&gt;
&lt;h3 id="hsplit"&gt;HSplit&lt;/h3&gt;




&lt;div class="chroma-wrap"&gt;
 
 &lt;div class="chroma-header"&gt;
 &lt;span class="chroma-lang"&gt;go&lt;/span&gt;
 &lt;button type="button" class="btn-copy" data-copy-target aria-label="Copy code"&gt;Copy&lt;/button&gt;
 &lt;/div&gt;
 
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;func&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;HSplit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;area&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Rect&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;constraints&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;Constraint&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="nx"&gt;Rect&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Splits horizontally (left to right). Returns one &lt;code&gt;Rect&lt;/code&gt; per constraint.&lt;/p&gt;
&lt;h3 id="layout"&gt;Layout&lt;/h3&gt;




&lt;div class="chroma-wrap"&gt;
 
 &lt;div class="chroma-header"&gt;
 &lt;span class="chroma-lang"&gt;go&lt;/span&gt;
 &lt;button type="button" class="btn-copy" data-copy-target aria-label="Copy code"&gt;Copy&lt;/button&gt;
 &lt;/div&gt;
 
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;func&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;Layout&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;area&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Rect&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;dir&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Direction&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;constraints&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="nx"&gt;Constraint&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="nx"&gt;Rect&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;General-purpose split with explicit direction (&lt;code&gt;Horizontal&lt;/code&gt; or &lt;code&gt;Vertical&lt;/code&gt;).&lt;/p&gt;</description></item><item><title>Events</title><link>https://serenafontaine.github.io/tui/docs/api/events/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://serenafontaine.github.io/tui/docs/api/events/</guid><description>&lt;p&gt;All events implement the &lt;code&gt;Msg&lt;/code&gt; interface. The framework sends them to your &lt;code&gt;Update&lt;/code&gt; method.&lt;/p&gt;
&lt;h2 id="keyboard"&gt;Keyboard&lt;/h2&gt;




&lt;div class="chroma-wrap"&gt;
 
 &lt;div class="chroma-header"&gt;
 &lt;span class="chroma-lang"&gt;go&lt;/span&gt;
 &lt;button type="button" class="btn-copy" data-copy-target aria-label="Copy code"&gt;Copy&lt;/button&gt;
 &lt;/div&gt;
 
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;type&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;KeyMsg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;struct&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Type&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;KeyType&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Rune&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;rune&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// only valid when Type == KeyRune&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Alt&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;bool&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id="key-types"&gt;Key Types&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Constant&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;KeyRune&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Regular character (check &lt;code&gt;Rune&lt;/code&gt; field)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;KeyEnter&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Enter/Return&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;KeyTab&lt;/code&gt; / &lt;code&gt;KeyBacktab&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Tab / Shift+Tab&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;KeyBackspace&lt;/code&gt; / &lt;code&gt;KeyDelete&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Backspace / Delete&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;KeyEscape&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Escape&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;KeySpace&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Space&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;KeyUp&lt;/code&gt; / &lt;code&gt;KeyDown&lt;/code&gt; / &lt;code&gt;KeyLeft&lt;/code&gt; / &lt;code&gt;KeyRight&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Arrow keys&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;KeyHome&lt;/code&gt; / &lt;code&gt;KeyEnd&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Home / End&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;KeyPageUp&lt;/code&gt; / &lt;code&gt;KeyPageDown&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Page Up / Page Down&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;KeyInsert&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Insert&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;KeyF1&lt;/code&gt; through &lt;code&gt;KeyF12&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Function keys&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;KeyCtrlA&lt;/code&gt; through &lt;code&gt;KeyCtrlZ&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Ctrl+letter combinations&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="pattern-matching"&gt;Pattern Matching&lt;/h3&gt;




&lt;div class="chroma-wrap"&gt;
 
 &lt;div class="chroma-header"&gt;
 &lt;span class="chroma-lang"&gt;go&lt;/span&gt;
 &lt;button type="button" class="btn-copy" data-copy-target aria-label="Copy code"&gt;Copy&lt;/button&gt;
 &lt;/div&gt;
 
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;switch&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;msg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;.(&lt;/span&gt;&lt;span class="kd"&gt;type&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;case&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;tui&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;KeyMsg&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;switch&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Type&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;case&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;tui&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;KeyCtrlC&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;tui&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;QuitCmd&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;case&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;tui&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;KeyRune&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;switch&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Rune&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;case&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sc"&gt;&amp;#39;q&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;tui&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;QuitCmd&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="mouse"&gt;Mouse&lt;/h2&gt;




&lt;div class="chroma-wrap"&gt;
 
 &lt;div class="chroma-header"&gt;
 &lt;span class="chroma-lang"&gt;go&lt;/span&gt;
 &lt;button type="button" class="btn-copy" data-copy-target aria-label="Copy code"&gt;Copy&lt;/button&gt;
 &lt;/div&gt;
 
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;type&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;MouseMsg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;struct&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;X&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Y&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Button&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;MouseButton&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Action&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;MouseAction&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Alt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Ctrl&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Shift&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;bool&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Button&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;MouseLeft&lt;/code&gt; / &lt;code&gt;MouseMiddle&lt;/code&gt; / &lt;code&gt;MouseRight&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Standard buttons&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;MouseWheelUp&lt;/code&gt; / &lt;code&gt;MouseWheelDown&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Scroll wheel&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;MouseNone&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;No button (motion event)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Action&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;MousePress&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Button pressed&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;MouseRelease&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Button released&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;MouseMotion&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Mouse moved&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="resize"&gt;Resize&lt;/h2&gt;




&lt;div class="chroma-wrap"&gt;
 
 &lt;div class="chroma-header"&gt;
 &lt;span class="chroma-lang"&gt;go&lt;/span&gt;
 &lt;button type="button" class="btn-copy" data-copy-target aria-label="Copy code"&gt;Copy&lt;/button&gt;
 &lt;/div&gt;
 
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;type&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;ResizeMsg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;struct&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Width&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Height&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Sent when the terminal dimensions change.&lt;/p&gt;</description></item><item><title>Image</title><link>https://serenafontaine.github.io/tui/docs/api/image/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://serenafontaine.github.io/tui/docs/api/image/</guid><description>&lt;p&gt;Complete KGP image integration. All functions return escape sequence strings ready to flush to the terminal.&lt;/p&gt;
&lt;h2 id="imageplacement"&gt;ImagePlacement&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;ImagePlacement&lt;/code&gt; describes an image to render at a terminal position. Use the chainable &lt;code&gt;With*&lt;/code&gt; methods to configure.&lt;/p&gt;
&lt;h3 id="creating-placements"&gt;Creating Placements&lt;/h3&gt;




&lt;div class="chroma-wrap"&gt;
 
 &lt;div class="chroma-header"&gt;
 &lt;span class="chroma-lang"&gt;go&lt;/span&gt;
 &lt;button type="button" class="btn-copy" data-copy-target aria-label="Copy code"&gt;Copy&lt;/button&gt;
 &lt;/div&gt;
 
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;func&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;NewImagePlacement&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;y&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;cols&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;rows&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;ImagePlacement&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id="data-sources"&gt;Data Sources&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Method&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;WithPNG([]byte)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;PNG-encoded data&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;WithRGBA([]byte, w, h)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Raw 32-bit RGBA pixels&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;WithRGB([]byte, w, h)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Raw 24-bit RGB pixels&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;WithImage(image.Image)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Convert Go image to PNG&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;WithImageRGBA(image.Image)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Convert Go image to RGBA&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;WithImageRGB(image.Image)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Convert Go image to RGB&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;WithImageID(uint32)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Reference a pre-transmitted image&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="transmission-methods"&gt;Transmission Methods&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Method&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;WithFile(path, format)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Read from filesystem&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;WithFileOffset(path, format, offset, size)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Read byte range from file&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;WithTempFile(path, format)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Temp file (terminal auto-deletes)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;WithSharedMemory(name, size, format)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;POSIX shared memory&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="display-options"&gt;Display Options&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Method&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;WithCrop(x, y, w, h)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Source rectangle for cropping&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;WithCellOffset(x, y)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Pixel offset within starting cell&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;WithZIndex(int)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Layering (negative = below text)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;WithCursorMove(bool)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Advance cursor after placement&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;WithCompression()&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;ZLIB compress RGBA/RGB data&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;WithVirtual()&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Unicode placeholder mode&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;WithRelativeTo(parentID, placeID, offsetH, offsetV)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Relative positioning&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="id-management"&gt;ID Management&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Method&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;WithID(uint32)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Set image ID&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;WithImageNumber(uint32)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Set client-side image number&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;WithPlacementID(uint32)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Set placement ID&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;WithResponseSuppression(mode)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Control terminal responses&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="image-manager"&gt;Image Manager&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;ImageManager&lt;/code&gt; tracks transmitted images and manages lifecycle.&lt;/p&gt;</description></item><item><title>Animation</title><link>https://serenafontaine.github.io/tui/docs/api/animation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://serenafontaine.github.io/tui/docs/api/animation/</guid><description>&lt;p&gt;KGP animation support for building, transmitting, and controlling animated images.&lt;/p&gt;
&lt;h2 id="animation-builder"&gt;Animation Builder&lt;/h2&gt;




&lt;div class="chroma-wrap"&gt;
 
 &lt;div class="chroma-header"&gt;
 &lt;span class="chroma-lang"&gt;go&lt;/span&gt;
 &lt;button type="button" class="btn-copy" data-copy-target aria-label="Copy code"&gt;Copy&lt;/button&gt;
 &lt;/div&gt;
 
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;anim&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;tui&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;NewAnimation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;imageID&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id="adding-frames"&gt;Adding Frames&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Method&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;AddFrame(data, format, w, h, gapMS)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Raw pixel data&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;AddPNGFrame(pngData, gapMS)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;PNG data&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;AddImageFrame(image.Image, gapMS)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Go image (converted to PNG)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;AddRGBAFrame(data, w, h, gapMS)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Raw RGBA pixels&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;AddRGBFrame(data, w, h, gapMS)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Raw RGB pixels&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;AddSolidFrame(w, h, r, g, b, a, gapMS)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Solid color frame&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="frame-options"&gt;Frame Options&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Method&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;SetFrameComposition(idx, mode, bgFrame)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Set composition mode&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;SetFrameBackground(idx, r, g, b, a)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Set background color&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="fields"&gt;Fields&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ImageID&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Target image ID&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Frames&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Slice of &lt;code&gt;AnimationFrame&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;LoopCount&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;0=default, 1=infinite, N&amp;gt;1 loops N-1 times&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;DefaultGap&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default frame gap in ms&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="encoding"&gt;Encoding&lt;/h3&gt;




&lt;div class="chroma-wrap"&gt;
 
 &lt;div class="chroma-header"&gt;
 &lt;span class="chroma-lang"&gt;go&lt;/span&gt;
 &lt;button type="button" class="btn-copy" data-copy-target aria-label="Copy code"&gt;Copy&lt;/button&gt;
 &lt;/div&gt;
 
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;func&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nx"&gt;Animation&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;Encode&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Returns escape sequences for all frames after the first (frame 1 is the base image, transmitted separately).&lt;/p&gt;</description></item><item><title>Widgets</title><link>https://serenafontaine.github.io/tui/docs/api/widgets/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://serenafontaine.github.io/tui/docs/api/widgets/</guid><description>&lt;p&gt;All widgets are in the &lt;code&gt;tui/widget&lt;/code&gt; package. Interactive widgets follow the pattern:&lt;/p&gt;




&lt;div class="chroma-wrap"&gt;
 
 &lt;div class="chroma-header"&gt;
 &lt;span class="chroma-lang"&gt;go&lt;/span&gt;
 &lt;button type="button" class="btn-copy" data-copy-target aria-label="Copy code"&gt;Copy&lt;/button&gt;
 &lt;/div&gt;
 
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;widget&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;cmd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;widget&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// in Update&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;widget&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Render&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;buf&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;area&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// in Render&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Most widgets support &lt;code&gt;SetBlock(tui.Block)&lt;/code&gt; for borders and titles.&lt;/p&gt;
&lt;h2 id="text"&gt;Text&lt;/h2&gt;
&lt;p&gt;Static text display with alignment.&lt;/p&gt;




&lt;div class="chroma-wrap"&gt;
 
 &lt;div class="chroma-header"&gt;
 &lt;span class="chroma-lang"&gt;go&lt;/span&gt;
 &lt;button type="button" class="btn-copy" data-copy-target aria-label="Copy code"&gt;Copy&lt;/button&gt;
 &lt;/div&gt;
 
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;func&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;NewText&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nx"&gt;Text&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Method&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;SetStyle(Style)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Text style&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;SetAlignment(Alignment)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;AlignLeft&lt;/code&gt;, &lt;code&gt;AlignCenter&lt;/code&gt;, &lt;code&gt;AlignRight&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;SetBlock(Block)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Border&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="input"&gt;Input&lt;/h2&gt;
&lt;p&gt;Single-line text input with cursor.&lt;/p&gt;




&lt;div class="chroma-wrap"&gt;
 
 &lt;div class="chroma-header"&gt;
 &lt;span class="chroma-lang"&gt;go&lt;/span&gt;
 &lt;button type="button" class="btn-copy" data-copy-target aria-label="Copy code"&gt;Copy&lt;/button&gt;
 &lt;/div&gt;
 
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;func&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;NewInput&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;placeholder&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nx"&gt;Input&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Value&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Current text value&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Focused&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Whether input accepts keys&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Method&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Update(Msg) (*Input, Cmd)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Handle key events&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Focus() Cmd&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Return focus command&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;SetBlock(Block)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Border&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;SetStyle(Style)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Text style&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Keyboard: Home, End, Left, Right, Backspace, Delete, Ctrl+U, Ctrl+K, Ctrl+W.&lt;/p&gt;</description></item></channel></rss>