<b>Sugar Game y olpc game, hacen algo como esto:</b><div><br></div><div><div><font color="#990000">class PygameCanvas(gtk.EventBox):</font></div><div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre"> </span>def __init__(self):</font></div>
<div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">                </span>gtk.EventBox.__init__(self)</font></div><div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">               </span>self.set_flags(gtk.CAN_FOCUS)</font></div>
<div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">                </span>self.setup_events()</font></div><div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">               </span>self.socket = gtk.Socket()</font></div>
<div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">                </span>self.add(self.socket)</font></div><div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">             </span>self.button_state = [0,0,0]</font></div>
<div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">                </span>self.mouse_pos = (0,0)</font></div><div><font color="#990000"><br></font></div><div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">        </span>def setup_events(self):</font></div>
<div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">                </span>self.set_events(gtk.gdk.KEY_PRESS | gtk.gdk.EXPOSE | gtk.gdk.POINTER_MOTION_MASK | \</font></div><div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">              </span>            gtk.gdk.POINTER_MOTION_HINT_MASK | gtk.gdk.BUTTON_MOTION_MASK | \</font></div>
<div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">                </span>            gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.BUTTON_RELEASE_MASK)</font></div><div><span class="Apple-tab-span" style="white-space:pre"><font color="#990000">      </font></span></div>
<div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">                </span>self.connect("key-press-event", self.keypress)</font></div><div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">          </span>self.connect("button_press_event", self.mousedown)</font></div>
<div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">                </span>self.connect("motion-notify-event", self.mousemotion)</font></div><div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">           </span>self.connect('expose-event', self.expose)</font></div>
<div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">                </span>self.connect('configure-event', self.resize)</font></div><div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">              </span>self.connect("focus-in-event", self.set_focus)</font></div>
<div><font color="#990000"><br></font></div><div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">    </span>def keypress(self, selfmain, event, parametros= None):</font></div><div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">            </span>nombre = gtk.gdk.keyval_name(event.keyval)</font></div>
<div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">                </span>tipo = pygame.KEYDOWN</font></div><div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">             </span>unic = str.lower(nombre)</font></div>
<div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">                </span>valor = nombre</font></div><div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">            </span>try:</font></div>
<div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">                        </span>valor = getattr(pygame, "K_%s" % (str.upper(nombre)))</font></div><div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">           </span>except:</font></div>
<div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">                        </span>print "no has programado la traduccion de esta tecla: ", nombre</font></div><div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">                 </span>return False</font></div>
<div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">                </span>evt = pygame.event.Event(tipo, key = valor, unicode = unic, mod = None)</font></div><div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">           </span>try:</font></div>
<div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">                        </span>pygame.event.post(evt)</font></div><div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">            </span>except:</font></div>
<div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">                        </span>pass</font></div><div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">              </span>return False</font></div>
<div><font color="#990000"><br></font></div><div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">    </span>def mousedown(self, widget, event):</font></div><div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">               </span>evt = pygame.event.Event(pygame.MOUSEBUTTONDOWN,</font></div>
<div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">                </span>button = event.button, pos=(int(event.x), int(event.y)))</font></div><div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">          </span>try:</font></div>
<div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">                        </span>pygame.event.post(evt)</font></div><div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">            </span>except:</font></div>
<div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">                        </span>pass</font></div><div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">              </span>return False</font></div>
<div><font color="#990000"><br></font></div><div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">    </span>def mousemotion(self, widget, event):</font></div><div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">             </span>x, y, state = event.window.get_pointer()</font></div>
<div><font color="#990000">        <span class="Apple-tab-span" style="white-space:pre">        </span>rel = (x - self.mouse_pos[0], y - self.mouse_pos[1])</font></div><div><font color="#990000">        <span class="Apple-tab-span" style="white-space:pre">      </span>self.mouse_pos = (int(x), int(y))</font></div>
<div><font color="#990000">        <span class="Apple-tab-span" style="white-space:pre">        </span>self.button_state = [</font></div><div><font color="#990000">            <span class="Apple-tab-span" style="white-space:pre"> </span>state & gtk.gdk.BUTTON1_MASK and 1 or 0,</font></div>
<div><font color="#990000">            <span class="Apple-tab-span" style="white-space:pre">    </span>state & gtk.gdk.BUTTON2_MASK and 1 or 0,</font></div><div><font color="#990000">            <span class="Apple-tab-span" style="white-space:pre">  </span>state & gtk.gdk.BUTTON3_MASK and 1 or 0,</font></div>
<div><font color="#990000">        <span class="Apple-tab-span" style="white-space:pre">        </span>]</font></div><div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">         </span>evt = pygame.event.Event(pygame.MOUSEMOTION, pos = self.mouse_pos,</font></div>
<div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">                        </span>rel = rel, buttons = self.button_state)</font></div><div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">           </span>try:</font></div>
<div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">                        </span>pygame.event.post(evt)</font></div><div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">            </span>except:</font></div>
<div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">                        </span>pass</font></div><div><font color="#990000"><span class="Apple-tab-span" style="white-space:pre">              </span>return False</font></div>
<div><span class="Apple-tab-span" style="white-space:pre">              </span></div><div>Desde hace meses, ninguna captura los eventos de teclado, para que los capture, hay que grabar los eventos en la clase base de PygameCanvas, de una de estas dos formas:</div>
<div><br></div><div><font color="#cc0000">self.grab_focus()</font></div><div><font color="#cc0000">self.grab_add()</font></div><div><br></div><div>Pero luego de esto, no podrás "desgrabar" los eventos, de modo que si tu actividad tiene un menú base en gtk, no puedes volver a él luego de lanzado el juego. El problema se encuentra en gtk, no es de sugar ni de pygame.</div>
<div><br></div><div><br></div><div><br></div><br><div class="gmail_quote">El 22 de mayo de 2012 18:16, Alan Jhonn Aguiar Schwyn <span dir="ltr"><<a href="mailto:alanjas@hotmail.com" target="_blank">alanjas@hotmail.com</a>></span> escribió:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div><div dir="ltr">
<div><br></div><div>Hola!</div><div><br></div><div>En el CodeSprint estuvieron hablando del problema de los eventos de SugarGame/OlpcGames.</div><div>Recién me doy cuenta que todas las actividades que usan SugarGame no están respondiendo</div>
<div>a los eventos del teclado!!</div><div>Los únicos eventos que obtengo son del tipo: 4 (MouseMotion)</div><div>Creo que en el único lugar que reconoce los eventos es en la barra de actividad.</div><div><br></div><div>Qué está pasando? Y desde cuando pasa esto?</div>
<div><br></div><div>Saludos!</div><span class="HOEnZb"><font color="#888888"><div><br></div><div>Alan</div><div><br></div>                                          </font></span></div></div>
<br>_______________________________________________<br>
Lista olpc-Sur<br>
<a href="mailto:olpc-Sur@lists.laptop.org">olpc-Sur@lists.laptop.org</a><br>
<a href="http://lists.laptop.org/listinfo/olpc-sur" target="_blank">http://lists.laptop.org/listinfo/olpc-sur</a><br>
<br></blockquote></div><br></div>