<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>It would work on any platform, yes, but after downloading one would have to assign the keys (if they do not work). Perhaps it could store the keycodes in a dictionary per platform ... and we could guess the other platform's keycodes if there was a translation table ...</div><div><br></div><div>Adding keyboard support to the joystick would be less flexible but could be made to work on all platforms without manual configuration.</div><div><br></div><span class="Apple-style-span" style="font-family: Helvetica; font-size: 12px; ">- Bert -</span><div><font class="Apple-style-span" face="Helvetica"><br></font><div><div>On 31.07.2010, at 22:55, Ricardo Moran wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">Well, it seems I was being very naive when trying to implement this... :)<div><br></div><div>I really like your single-key morph idea. It would allow you to configure your keyboard before running the game, so it will work on any platform, right?</div>

<div><br></div><div>Cheers</div><div>Richo<br><br><div class="gmail_quote">On Sat, Jul 31, 2010 at 4:52 PM, Bert Freudenberg <span dir="ltr">&lt;<a href="mailto:bert@freudenbergs.de" target="_blank">bert@freudenbergs.de</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div style="word-wrap:break-word"><div>[moving to a more appropriate list]</div><div><br></div><div>Unfortunately, keyUp/keyDown event codes are different between VMs on different platforms. They are supposed to refer to physical keys. E.g. the Windows VM produces keycode 65 when you press "A", independent of the shift key. On&nbsp;Linux I think you get either 65 or 97 depending on caps lock and the shift key. On an American Apple keyboard you get 0 for "A", 1 for "S", &nbsp;2 for "D" (*). It gets even more funny on all platforms when you involve modifier keys (like Alt-A makes  etc). Or &nbsp;in countries which do not use latin scripts, you might get values way outside the ASCII range anyway.&nbsp;</div>


<div><br></div><div>So up/down events are generally not used in Squeak (except for a few games). There is a reason we have not exposed this in Etoys yet, because we can't, unless we change the VMs or rewrite the keyboard handling code in the system. We might borrow the latter from Pharo, I know Michael worked on it, but I haven't actually looked yet.</div>


<div><br></div><div>Your approach with an array won't work anyway because keycodes can be much larger than a byte. A Set of the currently pressed key codes would be more appropriate (that's how we implemented keyboard support in our games at impara).</div>


<div><br></div><div>My suggestion would be to make a single-key morph. When you click it, it would allow you to press the key you want. It would have only a single slot named "pressed" to be used in tile scripts. You would make as many of these as you want scripts to expose.&nbsp;</div>


<div><br></div><div>For your particular purpose, you could just&nbsp;add cursor-key handling to the Joystick morph. Map the arrow keys to the eight directions, and space to button 1 and return to button 2.</div><div><br></div>


<span style="font-family:Helvetica;font-size:12px">- Bert -</span><div><font face="Helvetica"><br></font></div><div><font face="Helvetica">(*)&nbsp;google for "mac virtual keycode"<br></font><div><div></div><div>
<div><font face="Helvetica"><br></font><div><div>On 29.07.2010, at 01:03, Ricardo Moran wrote:</div><br><blockquote type="cite">Mmm... I really don't know. I didn't think there would be so much difference between platforms. I guess I was wrong... I won't be able to test on a Mac, but tomorrow I'll test in a linux computer and I'll see how different it is from Windows.<div>




<br></div><div>Cheers</div><div>Richo<br><br><div class="gmail_quote">On Thu, Jul 29, 2010 at 1:38 AM, Randall Caton <span dir="ltr">&lt;<a href="mailto:rcaton@cnu.edu" target="_blank">rcaton@cnu.edu</a>&gt;</span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Dear Richo,<br><br>Great tools. They don't work on the Mac. How hard is it to make it work on the Mac or is there a key mapping? I tried to change the up key to the a key and still couldn't move the ship. Maybe I did something wrong.<br>





<br>Randy<div><div></div><div><br><br><div class="gmail_quote">On Wed, Jul 28, 2010 at 12:38 PM, Ricardo Moran <span dir="ltr">&lt;<a href="mailto:richi.moran@gmail.com" target="_blank">richi.moran@gmail.com</a>&gt;</span> wrote:<br>




<blockquote class="gmail_quote" style="border-left:1px solid rgb(204, 204, 204);margin:0pt 0pt 0pt 0.8ex;padding-left:1ex">
Hi guys,<div><br>
<div>I may have diverged from the actual GSoC requirements but yesterday I was looking at Morphic events and I made this simple object called KeyboardMorph which I believe it could be useful to handle keyboard events better than what we currently have.</div>







</div><div><br></div><div>I made an Asteroids remake to test it:&nbsp;<a href="http://tecnodacta.com.ar/gira/gsoc/Asteroids.051.pr" target="_blank">http://tecnodacta.com.ar/gira/gsoc/Asteroids.051.pr</a>. I did this project some time ago and I felt really dissapointed at that time because Etoys keyboard support wasn't enough to play with it so I made it work with a joystick. Now you can choose between joystick or keyboard :)</div>







<div><br></div><div>Please note that to handle multiple keys simultaneously the KeyboardMorph has a set of boolean slots to test if a specific key is currently pressed or not. I only added support for number, letters, and a few special keys (space, enter, arrows). I think this is more than enough for most purposes. I also added a currentKeyValue slot which returns the key value of the currently pressed key.</div>







<div><br></div><div>I know different keyboards have different layouts, maybe we can make specific KeyboardMorphs for each supported layout. What do you think?</div><div><br></div><div>Cheers</div><div>Richo</div>
</blockquote></div><br><br clear="all"><br></div></div>-- <br>The views expressed in this email are my own<br>and not necessarily those of CNU.<br><br>Randall Caton<br>41596 Bald Eagle Drive<br>Bigfork, MN 56628<br>218-832-3490<br>




<br>
email: <a href="mailto:rcaton@cnu.edu" target="_blank">rcaton@cnu.edu</a><br>web: <a href="http://www.pcs.cnu.edu/~rcaton" target="_blank">www.pcs.cnu.edu/~rcaton</a><br>
</blockquote></div><br></div>
</blockquote></div><div><span style="border-collapse:separate;border-spacing:0px 0px;color:rgb(0, 0, 0);font-family:Lucida Grande;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:auto;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><span style="font-size:medium"><br>


</span></span>
</div>
<br></div></div></div></div></div><br>_______________________________________________<br>
etoys-dev mailing list<br>
<a href="mailto:etoys-dev@squeakland.org" target="_blank">etoys-dev@squeakland.org</a><br>
<a href="http://lists.squeakland.org/mailman/listinfo/etoys-dev" target="_blank">http://lists.squeakland.org/mailman/listinfo/etoys-dev</a><br>
<br></blockquote></div><br>
</div>
</blockquote></div><div><span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Lucida Grande; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="font-size: medium;"><br class="Apple-interchange-newline"></span></span>
</div>
<br></div></body></html>