<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>[a5] keyboard.unichar help needed</title>
		<link>http://www.allegro.cc/forums/view/606715</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Wed, 16 Mar 2011 13:17:10 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I am making input boxes in my game and I am having problems converting the unichar to char. How would I do this.</p><p>The reason I&#39;m using unichar than keycode is because it&#39;s less handling needed for special characters.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Desmond Taylor)</author>
		<pubDate>Tue, 15 Mar 2011 14:27:44 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Use a single <span class="source-code"><a href="http://www.allegro.cc/manual/ALLEGRO_USTR"><span class="a">ALLEGRO_USTR</span></a></span> to store multiple unichars (there are plenty of functions for manipulating an <span class="source-code"><a href="http://www.allegro.cc/manual/ALLEGRO_USTR"><span class="a">ALLEGRO_USTR</span></a></span>), and then use the various _ustr drawing functions to output to a bitmap.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Tue, 15 Mar 2011 14:31:07 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Sorry but I really do not get any of that web page :S I use std::string to store my text. It&#39;s only converting from unichar to char I need.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Desmond Taylor)</author>
		<pubDate>Tue, 15 Mar 2011 14:36:14 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Use an ALLEGRO_USTR instead of a std::string. You get free unicode support that way.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Tue, 15 Mar 2011 15:51:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;ve been trying and I don&#39;t get it. I get the unicode number all the time.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Desmond Taylor)</author>
		<pubDate>Tue, 15 Mar 2011 18:44:06 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="k1">inline</span> <span class="k1">size_t</span> encodeUtf8<span class="k2">(</span><span class="k1">char</span> outputChars<span class="k2">[</span><span class="k2">]</span>, <span class="k1">int</span> inputUnichar<span class="k2">)</span> <span class="k1">const</span> 
<span class="number">  2</span>  <span class="k2">{</span>
<span class="number">  3</span>    <span class="k1">size_t</span> uc <span class="k3">=</span> inputUnichar<span class="k2">;</span>
<span class="number">  4</span>
<span class="number">  5</span>    <span class="k1">if</span> <span class="k2">(</span>uc <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">0x7f</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  6</span>      outputChars<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">=</span> <span class="k1">static_cast</span><span class="k3">&lt;</span>char&gt;<span class="k2">(</span>uc<span class="k2">)</span><span class="k2">;</span>
<span class="number">  7</span>      <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  8</span>    <span class="k2">}</span>
<span class="number">  9</span>
<span class="number"> 10</span>    <span class="k1">if</span> <span class="k2">(</span>uc <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">0x7ff</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 11</span>      outputChars<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">=</span> <span class="n">0xC0</span> <span class="k3">|</span> <span class="k2">(</span><span class="k2">(</span>uc <span class="k3">&gt;</span><span class="k3">&gt;</span> <span class="n">6</span><span class="k2">)</span> <span class="k3">&amp;</span> <span class="n">0x1F</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 12</span>      outputChars<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> <span class="k3">=</span> <span class="n">0x80</span> <span class="k3">|</span>  <span class="k2">(</span>uc       <span class="k3">&amp;</span> <span class="n">0x3F</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span>      <span class="k1">return</span> <span class="n">2</span><span class="k2">;</span>
<span class="number"> 14</span>    <span class="k2">}</span>
<span class="number"> 15</span>
<span class="number"> 16</span>    <span class="k1">if</span> <span class="k2">(</span>uc <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">0xffff</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 17</span>      outputChars<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">=</span> <span class="n">0xE0</span> <span class="k3">|</span> <span class="k2">(</span><span class="k2">(</span>uc <span class="k3">&gt;</span><span class="k3">&gt;</span> <span class="n">12</span><span class="k2">)</span> <span class="k3">&amp;</span> <span class="n">0x0F</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span>      outputChars<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> <span class="k3">=</span> <span class="n">0x80</span> <span class="k3">|</span> <span class="k2">(</span><span class="k2">(</span>uc <span class="k3">&gt;</span><span class="k3">&gt;</span>  <span class="n">6</span><span class="k2">)</span> <span class="k3">&amp;</span> <span class="n">0x3F</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 19</span>      outputChars<span class="k2">[</span><span class="n">2</span><span class="k2">]</span> <span class="k3">=</span> <span class="n">0x80</span> <span class="k3">|</span>  <span class="k2">(</span>uc        <span class="k3">&amp;</span> <span class="n">0x3F</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 20</span>      <span class="k1">return</span> <span class="n">3</span><span class="k2">;</span>
<span class="number"> 21</span>    <span class="k2">}</span>
<span class="number"> 22</span>
<span class="number"> 23</span>    <span class="k1">if</span> <span class="k2">(</span>uc <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">0x10ffff</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 24</span>      outputChars<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">=</span> <span class="n">0xF0</span> <span class="k3">|</span> <span class="k2">(</span><span class="k2">(</span>uc <span class="k3">&gt;</span><span class="k3">&gt;</span> <span class="n">18</span><span class="k2">)</span> <span class="k3">&amp;</span> <span class="n">0x07</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 25</span>      outputChars<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> <span class="k3">=</span> <span class="n">0x80</span> <span class="k3">|</span> <span class="k2">(</span><span class="k2">(</span>uc <span class="k3">&gt;</span><span class="k3">&gt;</span> <span class="n">12</span><span class="k2">)</span> <span class="k3">&amp;</span> <span class="n">0x3F</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 26</span>      outputChars<span class="k2">[</span><span class="n">2</span><span class="k2">]</span> <span class="k3">=</span> <span class="n">0x80</span> <span class="k3">|</span> <span class="k2">(</span><span class="k2">(</span>uc <span class="k3">&gt;</span><span class="k3">&gt;</span>  <span class="n">6</span><span class="k2">)</span> <span class="k3">&amp;</span> <span class="n">0x3F</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 27</span>      outputChars<span class="k2">[</span><span class="n">3</span><span class="k2">]</span> <span class="k3">=</span> <span class="n">0x80</span> <span class="k3">|</span>  <span class="k2">(</span>uc        <span class="k3">&amp;</span> <span class="n">0x3F</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 28</span>      <span class="k1">return</span> <span class="n">4</span><span class="k2">;</span>
<span class="number"> 29</span>    <span class="k2">}</span>
<span class="number"> 30</span>
<span class="number"> 31</span>    <span class="c">/* Otherwise is illegal. */</span>
<span class="number"> 32</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 33</span>  <span class="k2">}</span>
<span class="number"> 34</span>
<span class="number"> 35</span><span class="k2">}</span><span class="k2">;</span>
</div></div><p>

This will convert UTF32 (unichar) to UTF-8.</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span>  <span class="k1">inline</span> <span class="k1">size_t</span> getUnicharLength<span class="k2">(</span><span class="k1">int</span> c<span class="k2">)</span> <span class="k1">const</span>
<span class="number">  2</span>  <span class="k2">{</span>
<span class="number">  3</span>  
<span class="number">  4</span>   <span class="k1">size_t</span> uc <span class="k3">=</span> c<span class="k2">;</span>
<span class="number">  5</span>
<span class="number">  6</span>   <span class="k1">if</span> <span class="k2">(</span>uc <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">0x7f</span><span class="k2">)</span>
<span class="number">  7</span>      <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  8</span>   <span class="k1">if</span> <span class="k2">(</span>uc <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">0x7ff</span><span class="k2">)</span>
<span class="number">  9</span>      <span class="k1">return</span> <span class="n">2</span><span class="k2">;</span>
<span class="number"> 10</span>   <span class="k1">if</span> <span class="k2">(</span>uc <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">0xffff</span><span class="k2">)</span>
<span class="number"> 11</span>      <span class="k1">return</span> <span class="n">3</span><span class="k2">;</span>
<span class="number"> 12</span>   <span class="k1">if</span> <span class="k2">(</span>uc <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">0x10ffff</span><span class="k2">)</span>
<span class="number"> 13</span>      <span class="k1">return</span> <span class="n">4</span><span class="k2">;</span>
<span class="number"> 14</span>   <span class="c">/* The rest are illegal. */</span>
<span class="number"> 15</span>   <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 16</span><span class="k2">}</span>
</div></div><p>

this will tell you how big your char buffer needs to be for the previous function.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (jmasterx)</author>
		<pubDate>Tue, 15 Mar 2011 18:51:40 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I have it working by doing this:</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number"> 1</span>        <span class="k1">case</span> ALLEGRO_EVENT_KEY_CHAR:
<span class="number"> 2</span>        <span class="k2">{</span>
<span class="number"> 3</span>            <span class="k1">char</span> buf<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k2">;</span>
<span class="number"> 4</span>            <a href="http://www.allegro.cc/manual/al_utf8_encode"><span class="a">al_utf8_encode</span></a><span class="k2">(</span> buf, this-&gt;event.keyboard.unichar <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 5</span>            <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span> <span class="s">"%s"</span>, buf <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 6</span>        <span class="k2">}</span>
<span class="number"> 7</span>        <span class="k1">break</span><span class="k2">;</span>
</div></div><p>

Another noobie question in this simular matter.</p><p>How do I blank the buffer before using al_utf8_encode? as some special keys mess it up :/
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Desmond Taylor)</author>
		<pubDate>Tue, 15 Mar 2011 18:56:23 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>the (somewhat) proper way:</p><div class="source-code snippet"><div class="inner"><pre> <span class="k1">case</span> ALLEGRO_EVENT_KEY_CHAR:
        <span class="k2">{</span>
            <span class="k1">char</span> buf<span class="k2">[</span><span class="n">5</span><span class="k2">]</span><span class="k2">;</span>
            <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> <span class="n">5</span><span class="k2">;</span> <span class="k3">+</span><span class="k3">+</span>i<span class="k2">)</span>
                buf<span class="k2">[</span>i<span class="k2">]</span> <span class="k3">=</span> NULL<span class="k2">;</span>
              
            <a href="http://www.allegro.cc/manual/al_utf8_encode"><span class="a">al_utf8_encode</span></a><span class="k2">(</span> buf, this-&gt;event.keyboard.unichar <span class="k2">)</span><span class="k2">;</span>
            <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span> <span class="s">"%s"</span>, buf <span class="k2">)</span><span class="k2">;</span>
        <span class="k2">}</span>
        <span class="k1">break</span><span class="k2">;</span>
</pre></div></div><p>

Because do not forget, utf-8 != to ascii, it has ascii + tons more so it needs up to 4 chars + NULL terminating which is why you need to use the function to get the size and to NULL size + 1.</p><p>ALLEGRO_USTR makes this easier, but I use std::string because my GUI API is backend independent.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (jmasterx)</author>
		<pubDate>Tue, 15 Mar 2011 19:01:02 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /> Works a dream.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Desmond Taylor)</author>
		<pubDate>Tue, 15 Mar 2011 19:45:29 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Definitely some bizarre code in this thread...
</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/ALLEGRO_USTR"><span class="a">ALLEGRO_USTR</span></a> <span class="k3">*</span>foo <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_ustr_new"><span class="a">al_ustr_new</span></a><span class="k2">(</span><span class="s">""</span><span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/al_ustr_append_chr"><span class="a">al_ustr_append_chr</span></a><span class="k2">(</span>foo, unichar<span class="k2">)</span><span class="k2">;</span>

<a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"%s"</span>, <a href="http://www.allegro.cc/manual/al_cstr"><span class="a">al_cstr</span></a><span class="k2">(</span>foo<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// to convert to a C string</span>

<a href="http://www.allegro.cc/manual/al_draw_ustr"><span class="a">al_draw_ustr</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, color, x,y, <span class="n">0</span>, foo<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Tue, 15 Mar 2011 23:23:41 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks, That one works better. I was just about to post this video showing an error I get when rendering buttons afterwards <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" /></p><p>Here is the video anyway <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /></p><p><a href="http://www.youtube.com/watch?v=M_A_Ty71JlY">http://www.youtube.com/watch?v=M_A_Ty71JlY</a></p><p>This is my new case
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span>        <span class="k1">case</span> ALLEGRO_EVENT_KEY_CHAR:
<span class="number">  2</span>        <span class="k2">{</span>
<span class="number">  3</span>            <span class="k1">if</span> <span class="k2">(</span> this-&gt;event.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_BACKSPACE <span class="k2">)</span>
<span class="number">  4</span>            <span class="k2">{</span>
<span class="number">  5</span>                this-&gt;input-&gt;set_special_key_state<span class="k2">(</span> KEY_STATE_BACKSPACE <span class="k2">)</span><span class="k2">;</span>
<span class="number">  6</span>            <span class="k2">}</span>
<span class="number">  7</span>            <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span> this-&gt;event.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_ENTER <span class="k2">)</span>
<span class="number">  8</span>            <span class="k2">{</span>
<span class="number">  9</span>                this-&gt;input-&gt;set_special_key_state<span class="k2">(</span> KEY_STATE_ENTER <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 10</span>            <span class="k2">}</span>
<span class="number"> 11</span>            <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span> this-&gt;event.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_TAB <span class="k2">)</span>
<span class="number"> 12</span>            <span class="k2">{</span>
<span class="number"> 13</span>                this-&gt;input-&gt;set_special_key_state<span class="k2">(</span> KEY_STATE_TAB <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 14</span>            <span class="k2">}</span>
<span class="number"> 15</span>            <span class="k1">else</span>
<span class="number"> 16</span>            <span class="k2">{</span>
<span class="number"> 17</span>                <a href="http://www.allegro.cc/manual/ALLEGRO_USTR"><span class="a">ALLEGRO_USTR</span></a><span class="k3">*</span> ustr <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_ustr_new"><span class="a">al_ustr_new</span></a><span class="k2">(</span> <span class="s">""</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span>                <a href="http://www.allegro.cc/manual/al_ustr_append_chr"><span class="a">al_ustr_append_chr</span></a><span class="k2">(</span> ustr, this-&gt;event.keyboard.unichar <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 19</span>                this-&gt;input-&gt;set_last_repeat_char<span class="k2">(</span> <a href="http://www.allegro.cc/manual/al_cstr"><span class="a">al_cstr</span></a><span class="k2">(</span> ustr <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 20</span>                this-&gt;input-&gt;set_special_key_state<span class="k2">(</span> KEY_STATE_NONE <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 21</span>                <a href="http://www.allegro.cc/manual/al_ustr_free"><span class="a">al_ustr_free</span></a><span class="k2">(</span> ustr <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 22</span>            <span class="k2">}</span>
<span class="number"> 23</span>        <span class="k2">}</span>
<span class="number"> 24</span>        <span class="k1">break</span><span class="k2">;</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Desmond Taylor)</author>
		<pubDate>Wed, 16 Mar 2011 01:56:42 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You shouldn&#39;t create a new ustr on every key press. Have a single ustr for each text box. Append the new character to it, and draw it to the bitmap.</p><p>I don&#39;t know what your input class is doing, but this is very simple:
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span>        <span class="k1">case</span> ALLEGRO_EVENT_KEY_CHAR:
<span class="number">  2</span>        <span class="k2">{</span>
<span class="number">  3</span>            <span class="k1">if</span> <span class="k2">(</span> this-&gt;event.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_BACKSPACE <span class="k2">)</span>
<span class="number">  4</span>            <span class="k2">{</span>
<span class="number">  5</span>                <span class="c">// may need to check if the ustr is empty</span>
<span class="number">  6</span>                <a href="http://www.allegro.cc/manual/al_ustr_remove_chr"><span class="a">al_ustr_remove_chr</span></a><span class="k2">(</span>this-&gt;ustr, <a href="http://www.allegro.cc/manual/al_ustr_offset"><span class="a">al_ustr_offset</span></a><span class="k2">(</span>this-&gt;ustr, <span class="k3">-</span><span class="n">1</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  7</span>            <span class="k2">}</span>
<span class="number">  8</span>            <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span> this-&gt;event.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_ENTER <span class="k2">)</span>
<span class="number">  9</span>            <span class="k2">{</span>
<span class="number"> 10</span>                this-&gt;input-&gt;set_special_key_state<span class="k2">(</span> KEY_STATE_ENTER <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 11</span>            <span class="k2">}</span>
<span class="number"> 12</span>            <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span> this-&gt;event.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_TAB <span class="k2">)</span>
<span class="number"> 13</span>            <span class="k2">{</span>
<span class="number"> 14</span>                this-&gt;input-&gt;set_special_key_state<span class="k2">(</span> KEY_STATE_TAB <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 15</span>            <span class="k2">}</span>
<span class="number"> 16</span>            <span class="k1">else</span>
<span class="number"> 17</span>            <span class="k2">{</span>
<span class="number"> 18</span>                <a href="http://www.allegro.cc/manual/al_ustr_append_chr"><span class="a">al_ustr_append_chr</span></a><span class="k2">(</span> this-&gt;ustr, this-&gt;event.keyboard.unichar <span class="k2">)</span><span class="k2">;</span>                
<span class="number"> 19</span>            <span class="k2">}</span>
<span class="number"> 20</span>        <span class="k2">}</span>
<span class="number"> 21</span>        <span class="k1">break</span><span class="k2">;</span>
</div></div><p>

Use the various draw_ustr functions to output the text.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Wed, 16 Mar 2011 02:28:54 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I have one event queue that handles everything since it&#39;s a simple game to re-create. The input field is a class and the data is stored in the input box due to needing them later on. It&#39;s a clone of Endless Online since the server was taken down by the owner. It&#39;s not been updated since 2007, the site was last updated 2009 so I&#39;m creating the entire thing again since I used to play that daily <img src="http://www.allegro.cc/forums/smileys/sad.gif" alt=":(" /> Miss it to be honest. Anyway, I am making a clone of his MMORPG <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Desmond Taylor)</author>
		<pubDate>Wed, 16 Mar 2011 03:23:17 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606715/908076#target">Desmond Taylor</a> said:</div><div class="quote"><p>The input field is a class and the data is stored in the input box due to needing them later on. </p></div></div><p>Yes, and if you make it an `ALLEGRO_USTR *` instead of a `char *`, you can do as Matthew says, and save the memory allocation and excess copying.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Wed, 16 Mar 2011 03:28:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606715/908077#target">Thomas Fjellstrom</a> said:</div><div class="quote"><p>Yes, and if you make it an `ALLEGRO_USTR *` instead of a `char *`, you can do as Matthew says, and save the memory allocation and excess copying.</p></div></div><p>

Yes, but I&#39;m too used to std::string functions for appending text ect so it&#39;s copied to that. :/</p><p>I shall read more about ALLEGRO_USTR* for sure but for now I shall use std::string since I know it better <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Desmond Taylor)</author>
		<pubDate>Wed, 16 Mar 2011 13:17:10 +0000</pubDate>
	</item>
</rss>
