<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>[A5] user keyboard input in int array ?</title>
		<link>http://www.allegro.cc/forums/view/606704</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Fri, 18 Mar 2011 13:38:26 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hi,</p><p>I took a glance at the keyboard tutorial. Unfortunatly I was not able to derive from it some way to gather user keyboard input in an array of int.</p><p>My goal is:</p><p>1. Display a textbox with two fields - The fields are coordinate X/Y (I know how to do that)<br />2. The user can input numbers in both fields (arrays)<br />3. While he is pushing numbers on his keyboard the X coordinate array is filled. (then the second)</p><p>Right now, and thanks to the tutorial, I know how to make the software recognize which key is pushed, however I would have to enumerate all allegro keycodes for that. </p><p>What I want is to store every number push, whatever the number is.</p><p>Can anybody englighten me ?</p><p>Thanks
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Inquisiteur)</author>
		<pubDate>Mon, 14 Mar 2011 20:50:32 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Do you want an array like <span class="source-code"><a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span><span class="n">256</span><span class="k2">]</span></span> that is true if that key code is pressed, or an array that indicates a stream of characters that the user has entered?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Mon, 14 Mar 2011 22:00:08 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks for your reply,</p><p>I need an array that catches a stream of numbers, not their code. </p><p>So basically:</p><p>&quot;Please input X coordinates&quot;</p><p>--&gt; user input 72</p><p>Software allocate the number 72 to variable CoordX.</p><p>In fact I probably don&#39;t need an array at all...I just need to stock the user keyboard input, whatever it is (for now numbers) in some kind of int variable, I dont know what A5 function would allow me to do that.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Inquisiteur)</author>
		<pubDate>Mon, 14 Mar 2011 23:27:25 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Just listen for <span class="source-code">KEY_CHAR</span> events and process the keycode:
</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">int</span> number <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  2</span>
<span class="number">  3</span><span class="k1">while</span> <span class="k2">(</span>some_loop<span class="k2">)</span>
<span class="number">  4</span><span class="k2">{</span>
<span class="number">  5</span>  <span class="c">// assume you just received a KEY_CHAR event</span>
<span class="number">  6</span>
<span class="number">  7</span>  <span class="k1">if</span> <span class="k2">(</span>keycode <span class="k3">&gt;</span><span class="k3">=</span> <span class="s">'0'</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> keycode <span class="k3">&lt;</span><span class="k3">=</span> <span class="s">'9'</span><span class="k2">)</span>
<span class="number">  8</span>  <span class="k2">{</span>
<span class="number">  9</span>    <span class="k1">int</span> digit <span class="k3">=</span> keycode <span class="k3">-</span> <span class="s">'0'</span><span class="k2">;</span>     <span class="c">// convert from ASCII code to integer 0-9</span>
<span class="number"> 10</span>    number <span class="k3">=</span> number <span class="k3">*</span> <span class="n">10</span> <span class="k3">+</span> digit<span class="k2">;</span>  <span class="c">// shift the current number left and add the new integer</span>
<span class="number"> 11</span>  <span class="k2">}</span>
<span class="number"> 12</span>
<span class="number"> 13</span>  <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_BACKSPACE<span class="k2">)</span>
<span class="number"> 14</span>  <span class="k2">{</span>
<span class="number"> 15</span>    number <span class="k3">=</span> number <span class="k3">/</span> <span class="n">10</span><span class="k2">;</span> <span class="c">// remove the right most digit</span>
<span class="number"> 16</span>  <span class="k2">}</span>
<span class="number"> 17</span>
<span class="number"> 18</span>  <span class="c">// print number to screen</span>
<span class="number"> 19</span><span class="k2">}</span>
</div></div><p>

The result is that <span class="source-code">number</span> holds an integer as entered by the keyboard. </p><p>Edit: actually I think you need to use the unichar property for the digits. i.e.:
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">if</span> <span class="k2">(</span>unichar <span class="k3">&gt;</span><span class="k3">=</span> <span class="s">'0'</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> unichar <span class="k3">&lt;</span><span class="k3">=</span> <span class="s">'9'</span><span class="k2">)</span>
<span class="k2">{</span>
  <span class="k1">int</span> digit <span class="k3">=</span> unichar <span class="k3">-</span> <span class="s">'0'</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>
But the same principle applies.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Mon, 14 Mar 2011 23:34:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thank you very much, I&#39;m gonna try that today.</p><p>Update-------</p><p>For some reason I can&#39;t even have the software recognize that I am pushing a keyboard key...</p><p>I have seen two other posts in the forum about that, however they did not help me solve my issue. I have seen that this has been solved by implementing a timer, assuming I don&#39;t want a timer, is there a way to fix the code below ?</p><p>Sry to ask again for your help...</p><p>Here&#39;s the code:</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="number">  2</span><span class="p">#include &lt;allegro5/allegro.h&gt;</span>
<span class="number">  3</span><span class="p">#include &lt;stdio.h&gt;</span>
<span class="number">  4</span>
<span class="number">  5</span><span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span> <span class="k3">*</span>argv<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  6</span>  <a href="http://www.allegro.cc/manual/al_init"><span class="a">al_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  7</span>  <a href="http://www.allegro.cc/manual/al_install_keyboard"><span class="a">al_install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  8</span>
<span class="number">  9</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span>event_queue <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number"> 10</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_KEYBOARD_STATE"><span class="a">ALLEGRO_KEYBOARD_STATE</span></a> keys<span class="k2">;</span>
<span class="number"> 11</span>  event_queue <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_event_queue"><span class="a">al_create_event_queue</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 12</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event_queue, <a href="http://www.allegro.cc/manual/al_get_keyboard_event_source"><span class="a">al_get_keyboard_event_source</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span>
<span class="number"> 14</span>
<span class="number"> 15</span>  <span class="k1">while</span><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 16</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> ev<span class="k2">;</span>
<span class="number"> 17</span>    <a href="http://www.allegro.cc/manual/al_wait_for_event"><span class="a">al_wait_for_event</span></a><span class="k2">(</span>event_queue, <span class="k3">&amp;</span>ev<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span>    <a href="http://www.allegro.cc/manual/al_get_keyboard_state"><span class="a">al_get_keyboard_state</span></a><span class="k2">(</span><span class="k3">&amp;</span>keys<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 19</span>
<span class="number"> 20</span>    <span class="k1">if</span><span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_KEY_DOWN<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 21</span>      <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_key_down"><span class="a">al_key_down</span></a><span class="k2">(</span><span class="k3">&amp;</span>keys,ALLEGRO_KEY_TAB<span class="k2">)</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 22</span>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"keyboard key pressed down"</span><span class="k2">)</span><span class="k2">;</span>    
<span class="number"> 23</span>      <span class="k2">}</span>    
<span class="number"> 24</span>    <span class="k2">}</span>
<span class="number"> 25</span>  <span class="k2">}</span>
<span class="number"> 26</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 27</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Inquisiteur)</author>
		<pubDate>Tue, 15 Mar 2011 19:32:23 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><ol><li><p>Forget about the keyboard state if you are using events.
</p></li><li><p>Use ALLEGRO_EVENT_KEY_CHAR. The KEY_DOWN event doesn&#39;t do what you think.
</p></li><li><p>Use ev.keyboard.unichar for printable characters; use keycode for special keys</p></li></ol><div class="source-code snippet"><div class="inner"><pre><span class="k1">if</span> <span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_KEY_CHAR <span class="k3">&amp;</span><span class="k3">&amp;</span> ev.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_TAB<span class="k2">)</span>
<span class="k2">{</span>
  <span class="c">// tab was pressed</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:47:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks again for your reply.</p><p>I am starting to wonder if there would be some kind of incompatibility coming from my keyboard ? I have been trying a lot of variation with absolutely no other results than a black console...</p><p>Here&#39;s the code:</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="p">#include &lt;allegro5/allegro.h&gt;</span>
<span class="number">  2</span><span class="p">#include &lt;stdio.h&gt;</span>
<span class="number">  3</span>
<span class="number">  4</span><span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span> <span class="k3">*</span>argv<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  5</span>
<span class="number">  6</span>  <a href="http://www.allegro.cc/manual/al_init"><span class="a">al_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  7</span>
<span class="number">  8</span>  <a href="http://www.allegro.cc/manual/al_install_keyboard"><span class="a">al_install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span>
<span class="number"> 10</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span>event_queue <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number"> 11</span>
<span class="number"> 12</span>  event_queue <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_event_queue"><span class="a">al_create_event_queue</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span>
<span class="number"> 14</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event_queue, <a href="http://www.allegro.cc/manual/al_get_keyboard_event_source"><span class="a">al_get_keyboard_event_source</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 15</span>
<span class="number"> 16</span>  <span class="k1">while</span><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 17</span>
<span class="number"> 18</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> ev<span class="k2">;</span>
<span class="number"> 19</span>
<span class="number"> 20</span>    <a href="http://www.allegro.cc/manual/al_wait_for_event"><span class="a">al_wait_for_event</span></a><span class="k2">(</span>event_queue, <span class="k3">&amp;</span>ev<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 21</span>
<span class="number"> 22</span>    <span class="k1">if</span> <span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_KEY_CHAR <span class="k3">&amp;</span><span class="k3">&amp;</span> ev.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_TAB<span class="k2">)</span>
<span class="number"> 23</span>  <span class="c">//  if (ev.type == ALLEGRO_EVENT_KEY_DOWN)</span>
<span class="number"> 24</span>    <span class="k2">{</span>
<span class="number"> 25</span>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"keyboard key pressed down"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 26</span>    <span class="k2">}</span>
<span class="number"> 27</span>  <span class="k2">}</span>
<span class="number"> 28</span><span class="k2">}</span>
</div></div><p>

Can anyone compile this and tell me if it works ... ?</p><p>The //	if (ev.type == ALLEGRO_EVENT_KEY_DOWN) didn&#39;t work either.</p><p>The console is simply not registering any event when I am pushing the TAB, or any other button when using &quot;if (ev.type == ALLEGRO_EVENT_KEY_DOWN)&quot;
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Inquisiteur)</author>
		<pubDate>Wed, 16 Mar 2011 14:56:14 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Try adding this before your while loop:</p><div class="source-code snippet"><div class="inner"><pre>  <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>display <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_display"><span class="a">al_create_display</span></a><span class="k2">(</span><span class="n">640</span>, <span class="n">480</span><span class="k2">)</span><span class="k2">;</span>
  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>display<span class="k2">)</span> 
      <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (LennyLen)</author>
		<pubDate>Wed, 16 Mar 2011 15:20:07 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I can&#39;t believe this was the issue. It worked !</p><p>So basically if there are no displays to be selected, I won&#39;t be able to interact with the &quot;allegro based&quot; software.</p><p>Logical and weird at the same time...</p><p>Thanks to both of you guys for your time.</p><p>Regards,</p><p>Inquisiteur
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Inquisiteur)</author>
		<pubDate>Wed, 16 Mar 2011 15:46:17 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Allegro doesn&#39;t support console mode like you might expect. It receives input from events sent to the graphical display window by the OS. So without such a window, you won&#39;t ever get any keyboard input (among other things).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Wed, 16 Mar 2011 23:04:37 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ok, so I finally put together something that works ok for me:</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="p">#include &lt;allegro5/allegro.h&gt;</span>
<span class="number">  2</span><span class="p">#include &lt;stdio.h&gt;</span>
<span class="number">  3</span>
<span class="number">  4</span>  <span class="k1">void</span> command_console<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span>event_queue<span class="k2">)</span><span class="k2">{</span>
<span class="number">  5</span>  
<span class="number">  6</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Please input X coordinates - press SPACE to confirm coordinates\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  7</span>
<span class="number">  8</span>  <span class="k1">int</span> number <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  9</span>
<span class="number"> 10</span>  <span class="k1">while</span><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 11</span>    
<span class="number"> 12</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> c_ev<span class="k2">;</span>
<span class="number"> 13</span>    <a href="http://www.allegro.cc/manual/al_wait_for_event"><span class="a">al_wait_for_event</span></a><span class="k2">(</span>event_queue, <span class="k3">&amp;</span>c_ev<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 14</span>
<span class="number"> 15</span>    <span class="k1">if</span> <span class="k2">(</span>c_ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_KEY_CHAR<span class="k2">)</span>
<span class="number"> 16</span>    <span class="k2">{</span>
<span class="number"> 17</span>      <span class="k1">if</span> <span class="k2">(</span>c_ev.keyboard.unichar <span class="k3">&gt;</span><span class="k3">=</span> <span class="s">'0'</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> c_ev.keyboard.unichar <span class="k3">&lt;</span><span class="k3">=</span> <span class="s">'9'</span><span class="k2">)</span>
<span class="number"> 18</span>      <span class="k2">{</span>
<span class="number"> 19</span>        <span class="k1">int</span> digit <span class="k3">=</span> <span class="k2">(</span>c_ev.keyboard.unichar <span class="k3">-</span> <span class="s">'0'</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 20</span>        number <span class="k3">=</span> number <span class="k3">*</span> <span class="n">10</span> <span class="k3">+</span> digit<span class="k2">;</span>
<span class="number"> 21</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Number is %d\n"</span>, number<span class="k2">)</span><span class="k2">;</span>        
<span class="number"> 22</span>      <span class="k2">}</span>
<span class="number"> 23</span>      <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>c_ev.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_BACKSPACE<span class="k2">)</span>
<span class="number"> 24</span>      <span class="k2">{</span>
<span class="number"> 25</span>        number <span class="k3">=</span> number <span class="k3">/</span> <span class="n">10</span><span class="k2">;</span>
<span class="number"> 26</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Number is %d\n"</span>, number<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 27</span>      <span class="k2">}</span>
<span class="number"> 28</span>      <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>c_ev.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_SPACE<span class="k2">)</span>
<span class="number"> 29</span>      <span class="k2">{</span>
<span class="number"> 30</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"coordinates are %d\n"</span>, number<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 31</span>      <span class="k2">}</span>
<span class="number"> 32</span>    <span class="k2">}</span>
<span class="number"> 33</span>  <span class="k2">}</span>
<span class="number"> 34</span>  <span class="k2">}</span>
<span class="number"> 35</span><span class="c">///////////////////////////////////////----------------MAIN LOOP</span>
<span class="number"> 36</span><span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span> <span class="k3">*</span>argv<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 37</span>
<span class="number"> 38</span>  <a href="http://www.allegro.cc/manual/al_init"><span class="a">al_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 39</span>
<span class="number"> 40</span>  <a href="http://www.allegro.cc/manual/al_install_keyboard"><span class="a">al_install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 41</span>
<span class="number"> 42</span>  <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_is_keyboard_installed"><span class="a">al_is_keyboard_installed</span></a><span class="k2">(</span><span class="k2">)</span><span class="k3">=</span><span class="k3">=</span><span class="k1">true</span><span class="k2">)</span>
<span class="number"> 43</span>  <span class="k2">{</span>
<span class="number"> 44</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"keyboard installed successfully\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 45</span>  <span class="k2">}</span>
<span class="number"> 46</span>
<span class="number"> 47</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span>event_queue <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number"> 48</span>
<span class="number"> 49</span>  event_queue <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_event_queue"><span class="a">al_create_event_queue</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 50</span>  
<span class="number"> 51</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event_queue, <a href="http://www.allegro.cc/manual/al_get_keyboard_event_source"><span class="a">al_get_keyboard_event_source</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 52</span>
<span class="number"> 53</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>display <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_display"><span class="a">al_create_display</span></a><span class="k2">(</span><span class="n">640</span>, <span class="n">480</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 54</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>display<span class="k2">)</span> 
<span class="number"> 55</span>      <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 56</span>
<span class="number"> 57</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> ev<span class="k2">;</span>
<span class="number"> 58</span>  <a href="http://www.allegro.cc/manual/al_wait_for_event"><span class="a">al_wait_for_event</span></a><span class="k2">(</span>event_queue, <span class="k3">&amp;</span>ev<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 59</span>
<span class="number"> 60</span>  <span class="k1">if</span> <span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_KEY_DOWN <span class="k3">&amp;</span><span class="k3">&amp;</span> ev.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_TAB<span class="k2">)</span>
<span class="number"> 61</span>  <span class="k2">{</span>
<span class="number"> 62</span>      command_console<span class="k2">(</span>event_queue<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 63</span>  <span class="k2">}</span>
<span class="number"> 64</span><span class="k2">}</span>
</div></div><p>

I have one last question though. When I replace:</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">if</span> <span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_KEY_DOWN <span class="k3">&amp;</span><span class="k3">&amp;</span> ev.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_TAB<span class="k2">)</span>
<span class="number"> 2</span>  <span class="k2">{</span>
<span class="number"> 3</span>      command_console<span class="k2">(</span>event_queue<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 4</span>  <span class="k2">}</span>
</div></div><p>

by</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">if</span> <span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_KEY_CHAR<span class="k2">)</span>
<span class="number"> 2</span>  <span class="k2">{</span>
<span class="number"> 3</span>      command_console<span class="k2">(</span>event_queue<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 4</span>  <span class="k2">}</span>
</div></div><p>

The console closes down as soon as I press a character on the keyboard. So basically the function &quot;command_console&quot; is not launched. Why is ALLEGRO_EVENT_KEY_DOWN working and not ALLEGRO_EVENT_KEY_CHAR in this case ?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Inquisiteur)</author>
		<pubDate>Thu, 17 Mar 2011 17:53:11 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The key events <i>typically</i> look like:</p><ul><li><p>KEY_DOWN
</p></li><li><p>KEY_CHAR
</p></li><li><p>KEY_UP</p></li></ul><p>The first two happen simultaneously. You are only checking for the first one in your program. If you were to loop through all available events, you&#39;d find a CHAR in the queue.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Thu, 17 Mar 2011 23:40:25 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ok I see, thank you.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Inquisiteur)</author>
		<pubDate>Fri, 18 Mar 2011 13:38:26 +0000</pubDate>
	</item>
</rss>
