<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>How to properly handle the keyboard with allegro?</title>
		<link>http://www.allegro.cc/forums/view/586246</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Mon, 03 Jul 2006 23:08:17 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><b>edit:</b> It has been fixed <img src="http://www.allegro.cc/forums/smileys/cheesy.gif" alt=":D" /></p><p>What I do now gets by, but it clearly doesn&#39;t handle like a regular keyboard.  It misses key presses every so often, and it&#39;s highly annoying.  I downloaded an allegro game off allegro.cc last night, 3579 or something like that, and it had similar issues where it couldn&#39;t keep up with a fast typing user and would mis-read keys.</p><p>All I&#39;m looking for is to be able to properly handle keyboard input as it regularly is in a windows environment.  Can anyone offer some direction?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BrknPhoenix)</author>
		<pubDate>Mon, 03 Jul 2006 20:52:07 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
How to properly handle the keyboard with allegro
</p></div></div><p>

the keyboard is a magic device with mysteries powers...  you should handle it with great care.. like you handle your woman...    oh&#39; i forgot, your an allegro game hacker, you probably dont know about that <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (A J)</author>
		<pubDate>Mon, 03 Jul 2006 21:01:51 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>What are you doing now in your input code?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (gnolam)</author>
		<pubDate>Mon, 03 Jul 2006 21:06:01 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
What are you doing now in your input code?
</p></div></div><p>

Well, I haven&#39;t gotten into the meat of it yet.  It&#39;s just debug stuff.  Here is the call to the function that checks the keys:</p><div class="source-code snippet"><div class="inner"><pre>    <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/keyboard_needs_poll" target="_blank"><span class="a">keyboard_needs_poll</span></a><span class="k2">(</span><span class="k2">)</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">if</span> <span class="k2">(</span>DEBUG <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span><span class="k2">)</span>
    <span class="k2">{</span>
        Debug-&gt;CheckKeys<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>    
    <span class="k2">}</span>
</pre></div></div><p>

and here&#39;s the CheckKeys function that is just kinda mangled together.  It kinda works but notsomuch, hehe</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">void</span> objDebug::CheckKeys<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">2</td><td><span class="k2">{</span></td></tr><tr><td class="number">3</td><td>    <span class="k1">static</span> <span class="k1">bool</span> F1_p <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span></td></tr><tr><td class="number">4</td><td>    <span class="k1">static</span> <span class="k1">bool</span> F2_p <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span></td></tr><tr><td class="number">5</td><td>                </td></tr><tr><td class="number">6</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_ESC<span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">7</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">8</td><td>        GameManager-&gt;SetQuit<span class="k2">(</span><span class="k1">true</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">9</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">10</td><td>    </td></tr><tr><td class="number">11</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_F1<span class="k2">]</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k3">!</span><span class="k2">(</span>F1_p<span class="k2">)</span><span class="k2">)</span> </td></tr><tr><td class="number">12</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">13</td><td>        <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/key_shifts" target="_blank"><span class="a">key_shifts</span></a> <span class="k3">&amp;</span> KB_CTRL_FLAG<span class="k2">)</span></td></tr><tr><td class="number">14</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">15</td><td>            <span class="k1">if</span> <span class="k2">(</span>mouse_info <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span><span class="k2">)</span></td></tr><tr><td class="number">16</td><td>            <span class="k2">{</span></td></tr><tr><td class="number">17</td><td>                mouse_info <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td>            <span class="k2">}</span></td></tr><tr><td class="number">19</td><td>            <span class="k1">else</span></td></tr><tr><td class="number">20</td><td>            <span class="k2">{</span></td></tr><tr><td class="number">21</td><td>                mouse_info <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span></td></tr><tr><td class="number">22</td><td>            <span class="k2">}</span></td></tr><tr><td class="number">23</td><td>            F1_p <span class="k3">=</span> <span class="k1">true</span><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="k2">}</span></td></tr><tr><td class="number">26</td><td>    <span class="k1">else</span> <span class="k1">if</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_F1<span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">27</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">28</td><td>        F1_p <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span></td></tr><tr><td class="number">29</td><td>    <span class="k2">}</span>    </td></tr><tr><td class="number">30</td><td>    </td></tr><tr><td class="number">31</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_F2<span class="k2">]</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k3">!</span><span class="k2">(</span>F2_p<span class="k2">)</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="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/key_shifts" target="_blank"><span class="a">key_shifts</span></a> <span class="k3">&amp;</span> KB_CTRL_FLAG<span class="k2">)</span></td></tr><tr><td class="number">34</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">35</td><td>            <span class="k1">if</span> <span class="k2">(</span>timer_info <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span><span class="k2">)</span></td></tr><tr><td class="number">36</td><td>            <span class="k2">{</span></td></tr><tr><td class="number">37</td><td>                timer_info <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span></td></tr><tr><td class="number">38</td><td>            <span class="k2">}</span></td></tr><tr><td class="number">39</td><td>            <span class="k1">else</span></td></tr><tr><td class="number">40</td><td>            <span class="k2">{</span></td></tr><tr><td class="number">41</td><td>                timer_info <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span></td></tr><tr><td class="number">42</td><td>            <span class="k2">}</span></td></tr><tr><td class="number">43</td><td>            F2_p <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span></td></tr><tr><td class="number">44</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">45</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">46</td><td>    <span class="k1">else</span></td></tr><tr><td class="number">47</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">48</td><td>        F2_p <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span></td></tr><tr><td class="number">49</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">50</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BrknPhoenix)</author>
		<pubDate>Mon, 03 Jul 2006 21:08:03 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Check this out:</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
</p><div class="source-code snippet"><div class="inner"><pre>            <span class="k1">if</span> <span class="k2">(</span>timer_info <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span><span class="k2">)</span>
            <span class="k2">{</span>
                timer_info <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
            <span class="k2">}</span>
            <span class="k1">else</span>
            <span class="k2">{</span>
                timer_info <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
            <span class="k2">}</span>
</pre></div></div><p>
</p></div></div><p><span class="source-code">timer_info <span class="k3">=</span> <span class="k3">!</span>timer_info<span class="k2">;</span></span>Both snippets do the same. You decide <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" /> Same applies for the mouse_info variable.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (CGamesPlay)</author>
		<pubDate>Mon, 03 Jul 2006 23:06:08 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>hehe so they do :p thanks for the shortcut
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BrknPhoenix)</author>
		<pubDate>Mon, 03 Jul 2006 23:08:17 +0000</pubDate>
	</item>
</rss>
