<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>keypressed</title>
		<link>http://www.allegro.cc/forums/view/587596</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Tue, 19 Sep 2006 03:35:39 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;d like to stop the program while there is a key pressed.</p><p>This freezes the program:
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">do</span><span class="k2">{</span>
  <a href="http://www.allegro.cc/manual/rest" target="_blank"><span class="a">rest</span></a><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
  <a href="http://www.allegro.cc/manual/poll_keyboard" target="_blank"><span class="a">poll_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>    
<span class="k2">}</span><span class="k1">while</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/keypressed" target="_blank"><span class="a">keypressed</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

And this doesnt wait for the key to be released:
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">do</span><span class="k2">{</span>
  <a href="http://www.allegro.cc/manual/clear_keybuf" target="_blank"><span class="a">clear_keybuf</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
  <a href="http://www.allegro.cc/manual/rest" target="_blank"><span class="a">rest</span></a><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
  <a href="http://www.allegro.cc/manual/poll_keyboard" target="_blank"><span class="a">poll_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>    
<span class="k2">}</span><span class="k1">while</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/keypressed" target="_blank"><span class="a">keypressed</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

EDIT:<br />I&#39;ve just done it this way (looping through key array):
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="k1">int</span> done<span class="k2">;</span></td></tr><tr><td class="number">2</td><td>  </td></tr><tr><td class="number">3</td><td><span class="k1">do</span><span class="k2">{</span></td></tr><tr><td class="number">4</td><td>  done<span class="k3">=</span><span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">5</td><td>&#160;</td></tr><tr><td class="number">6</td><td>  <a href="http://www.allegro.cc/manual/poll_keyboard" target="_blank"><span class="a">poll_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">7</td><td>  <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>KEY_MAX<span class="k2">;</span>i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span></td></tr><tr><td class="number">8</td><td>    <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k3">&lt;</span>i&gt;<span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">9</td><td>      done<span class="k3">=</span><span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">10</td><td>      <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td>    <span class="k2">}</span>  </td></tr><tr><td class="number">12</td><td>      </td></tr><tr><td class="number">13</td><td>  <a href="http://www.allegro.cc/manual/rest" target="_blank"><span class="a">rest</span></a><span class="k2">(</span><span class="n">5</span><span class="k2">)</span><span class="k2">;</span>  </td></tr><tr><td class="number">14</td><td><span class="k2">}</span><span class="k1">while</span><span class="k2">(</span><span class="k3">!</span>done<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">15</td><td>  </td></tr><tr><td class="number">16</td><td><a href="http://www.allegro.cc/manual/clear_keybuf" target="_blank"><span class="a">clear_keybuf</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr></tbody></table></div></div><p>

Is there some better way to do so?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (clovekx)</author>
		<pubDate>Sun, 17 Sep 2006 15:00:25 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="source-code snippet"><div class="inner"><pre><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span>
<span class="k2">{</span>
  <span class="k1">while</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/keypressed" target="_blank"><span class="a">keypressed</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
  <span class="k2">{</span>
  <span class="k2">}</span>
  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>
Or...
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span>
<span class="k2">{</span>
  <span class="k1">bool</span> Running <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
  
  <span class="k1">while</span> <span class="k2">(</span>Running<span class="k2">)</span>
  <span class="k2">{</span>
    <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/keypressed" target="_blank"><span class="a">keypressed</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span> Running <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span> <span class="k2">}</span>
  <span class="k2">}</span>
  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (CursedTyrant)</author>
		<pubDate>Sun, 17 Sep 2006 15:49:26 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The problem with your code is that it waits for a key to be pressed, but I want to wait for all keys to be released. Just adding &#39;!&#39; will not work.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (clovekx)</author>
		<pubDate>Sun, 17 Sep 2006 15:56:19 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Don&#39;t call poll_keyboard(); it&#39;s not nescessary.<br />Anyway, keypressed() returns TRUE as long as there is a key press <i>waiting in the buffer</i>. It&#39;s intended to be used with readkey(), which blocks until a key is pressed, it&#39;s not supposed to tell you if a key is pressed right now.<br />For that, use the key[] array.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Evert)</author>
		<pubDate>Sun, 17 Sep 2006 16:20:19 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Wouldn&#39;t it be useful to add some key[KEY_ANY] to allegro, that will be set if any key is pressed?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (clovekx)</author>
		<pubDate>Sun, 17 Sep 2006 20:15:12 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Wouldn&#39;t it be useful to add some key[KEY_ANY] to allegro, that will be set if any key is pressed?
</p></div></div><p>
I don&#39;t think it&#39;s necessary you can easily check entire array yourself. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">do</span>
<span class="k2">{</span>
  <span class="k1">int</span> i<span class="k2">;</span>
  <span class="k1">for</span><span class="k2">(</span>i<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>i<span class="k3">&lt;</span>KEY_MAX<span class="k2">;</span>i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
    <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k3">&lt;</span>i&gt;<span class="k2">)</span>
      <span class="k1">break</span><span class="k2">;</span>
<span class="k2">}</span> <span class="k1">while</span><span class="k2">(</span>i<span class="k3">&lt;</span>KEY_MAX<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>


Also &quot;KEY_ANY&quot; should be probably reserved for &quot;Any&quot; key that might be added in future keyboards. <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Krzysztof Kluczek)</author>
		<pubDate>Sun, 17 Sep 2006 20:36:24 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Maybe al_keydown that does what Krzysztof just did?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (CGamesPlay)</author>
		<pubDate>Sun, 17 Sep 2006 21:02:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Also &quot;KEY_ANY&quot; should be probably reserved for &quot;Any&quot; key that might be added in future keyboards. <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" />
</p></div></div><p>
And what if there will be some &quot;Max&quot; key in the future?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (clovekx)</author>
		<pubDate>Sun, 17 Sep 2006 21:10:49 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Seems to me like setting KEY_ANY would be more optimal than scanning the entire array each time you want to know.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BAF)</author>
		<pubDate>Mon, 18 Sep 2006 02:14:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Future versions of Allegro have, if the plan hasn&#39;t quietly changed, the option of event based input. So if you&#39;re laying your code out like that you&#39;d just do a loop like:
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">while</span><span class="k2">(</span><span class="k3">!</span>KeyDown<span class="k2">)</span>
<span class="k2">{</span>
   al_WaitForEvent<span class="k2">(</span><span class="k3">&amp;</span>ev<span class="k2">)</span><span class="k2">;</span>
   <span class="k1">switch</span><span class="k2">(</span>ev.Type<span class="k2">)</span>
   <span class="k2">{</span>
      <span class="k1">case</span> AL_KEYDOWN: KeyDown <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span> <span class="k1">break</span><span class="k2">;</span>
      <span class="c">/* check for other important stuff, like a quit message */</span>
   <span class="k2">}</span>
<span class="k2">}</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Harte)</author>
		<pubDate>Tue, 19 Sep 2006 02:23:06 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Future versions of Allegro have, if the plan hasn&#39;t quietly changed, the option of event based input.
</p></div></div><p>
Ithink that already works in 4.3
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Evert)</author>
		<pubDate>Tue, 19 Sep 2006 03:35:39 +0000</pubDate>
	</item>
</rss>
