<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>KEY_ENTER_PAD  &quot;UP&quot; message</title>
		<link>http://www.allegro.cc/forums/view/591131</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Mon, 23 Apr 2007 09:19:52 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>if its possible to catch KEY_ENTER_PAD  &quot;UP&quot; message<br />thx
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (stonecold)</author>
		<pubDate>Mon, 23 Apr 2007 08:26:00 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>KEY_8_PAD?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Mark Oates)</author>
		<pubDate>Mon, 23 Apr 2007 09:02:38 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Your question is not very clear. I understand that you want to respond to the event of the ENTER key of the numerical PAD being released, like an on_key_up event, is that right?</p><p>This is what I usually do in that case:</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td>&#160;</td></tr><tr><td class="number">2</td><td><span class="k1">static</span> <span class="k1">int</span> key_state<span class="k2">[</span>KEY_MAX<span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">3</td><td>&#160;</td></tr><tr><td class="number">4</td><td><span class="k1">int</span> is_key_released<span class="k2">(</span><span class="k1">int</span> key_index<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">5</td><td>    <span class="k1">int</span> released <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">6</td><td>&#160;</td></tr><tr><td class="number">7</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="k2">[</span>key_index<span class="k2">]</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">8</td><td>        <span class="c">// key is pressed, store its state and return 0</span></td></tr><tr><td class="number">9</td><td>        key_state<span class="k2">[</span>key_index<span class="k2">]</span> <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">10</td><td>    <span class="k2">}</span> <span class="k1">else</span> <span class="k2">{</span></td></tr><tr><td class="number">11</td><td>        <span class="c">// key is released, check the stored state,</span></td></tr><tr><td class="number">12</td><td>        <span class="c">// if it's zero, the key was never pressed,</span></td></tr><tr><td class="number">13</td><td>        <span class="c">// if it's one, the key was pressed in the previous iteration, so it was just released</span></td></tr><tr><td class="number">14</td><td>        released <span class="k3">=</span> key_state<span class="k2">[</span>key_index<span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">15</td><td>        <span class="c">// reset the stored state</span></td></tr><tr><td class="number">16</td><td>        key_state<span class="k2">[</span>key_index<span class="k2">]</span> <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">17</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">18</td><td>&#160;</td></tr><tr><td class="number">19</td><td>    <span class="k1">return</span> released<span class="k2">;</span></td></tr><tr><td class="number">20</td><td><span class="k2">}</span></td></tr><tr><td class="number">21</td><td>&#160;</td></tr><tr><td class="number">22</td><td><span class="c">// use it to handle the event:</span></td></tr><tr><td class="number">23</td><td><span class="k1">if</span> <span class="k2">(</span>is_key_released<span class="k2">(</span>KEY_PAD_ENTER<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">24</td><td>    on_key_pad_enter_released<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">25</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Rampage)</author>
		<pubDate>Mon, 23 Apr 2007 09:17:35 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Have a look at the keyboard call back functions, particularly &#39;keyboard_lowlevel_callback&#39;</p><p><a href="http://www.allegro.cc/manual/api/keyboard-routines/keyboard_lowlevel_callback">http://www.allegro.cc/manual/api/keyboard-routines/keyboard_lowlevel_callback</a></p><p>or if if you are in your main program loop try something like this</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="p">#include &lt;allegro.h&gt;</span></td></tr><tr><td class="number">2</td><td>&#160;</td></tr><tr><td class="number">3</td><td><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><span class="k3">*</span>argv<span class="k2">)</span></td></tr><tr><td class="number">4</td><td><span class="k2">{</span></td></tr><tr><td class="number">5</td><td>  <a href="http://www.allegro.cc/manual/allegro_init" target="_blank"><span class="a">allegro_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">6</td><td>  <a href="http://www.allegro.cc/manual/install_keyboard" target="_blank"><span class="a">install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">7</td><td>&#160;</td></tr><tr><td class="number">8</td><td>  <a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_AUTODETECT, <span class="n">640</span>, <span class="n">480</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">9</td><td>&#160;</td></tr><tr><td class="number">10</td><td>  <span class="k1">int</span> key_down <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td>  <span class="k1">int</span> down_count <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">12</td><td>  <span class="k1">int</span> up_count <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">13</td><td>&#160;</td></tr><tr><td class="number">14</td><td>  <span class="k1">while</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ESC<span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">15</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">16</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="k2">[</span>KEY_ENTER_PAD<span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">17</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">18</td><td>      <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>key_down<span class="k2">)</span></td></tr><tr><td class="number">19</td><td>      <span class="k2">{</span></td></tr><tr><td class="number">20</td><td>        <span class="c">/* ran once when the key is pressed down */</span></td></tr><tr><td class="number">21</td><td>        down_count<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">22</td><td>        key_down <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">24</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">25</td><td>    <span class="k1">else</span></td></tr><tr><td class="number">26</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">27</td><td>      <span class="k1">if</span> <span class="k2">(</span>key_down<span class="k2">)</span></td></tr><tr><td class="number">28</td><td>      <span class="k2">{</span></td></tr><tr><td class="number">29</td><td>        <span class="c">/* ran once when the key is released */</span></td></tr><tr><td class="number">30</td><td>        up_count<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">31</td><td>        key_down <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span></td></tr><tr><td class="number">32</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">33</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">34</td><td>&#160;</td></tr><tr><td class="number">35</td><td>    <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">0</span>, <span class="n">0</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">255</span>,<span class="n">255</span><span class="k2">)</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span>, <span class="s">"Times KEY_ENTER_PAD has been pushed:   %d"</span>, down_count<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">36</td><td>    <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">0</span>, <span class="n">8</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">255</span>,<span class="n">255</span><span class="k2">)</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span>, <span class="s">"Times KEY_ENTER_PAD has been released: %d"</span>, up_count<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">37</td><td>&#160;</td></tr><tr><td class="number">38</td><td>&#160;</td></tr><tr><td class="number">39</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">40</td><td>&#160;</td></tr><tr><td class="number">41</td><td><span class="k2">}</span></td></tr><tr><td class="number">42</td><td><a href="http://www.allegro.cc/manual/END_OF_MAIN" target="_blank"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span></td></tr></tbody></table></div></div><p>

Edit: doh I was too slow
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Timorg)</author>
		<pubDate>Mon, 23 Apr 2007 09:19:52 +0000</pubDate>
	</item>
</rss>
