keyboard release

"Frank W. Samuelson" <frank-54OiX5uwpr77T4i/[email protected]>
Newsgroups gmane.comp.python.visualpython.user
Message-ID <alpine.LFD.2.02.1106110752360.14566@localhost>
I am interested in using vpython to make some simple games.  Apparently there 
are a few others like me based on some internet posts that I found.  To make 
games we need to know when keyboard buttons are released as well as pressed. 
To facilitate this happening, I made a couple small code changes represented by 
the below patch on the visual-5.71 release.  You are welcome to incorporate or 
ignore them.  When keys are released, the generated keyboard events are 
proceeded with the string "Released: " in front of them.

The good:
-The patch is very small
-This hack is backwards compatible for people who use code like
     s = scene.kb.getkey()
     if s == 'k': ...
-Processing of keyboard events is still easy string comparisons

The bad:
-The code is currently only for gtk.  I don't have "Windows" or Mac computer on 
which to test any change that I make.

Thanks for all your work on vpython.  It's great.

-Frank


--- src/gtk2/display.cpp.~1.58.~	2009-10-11 17:33:43.000000000 -0400
+++ src/gtk2/display.cpp	2011-06-11 07:24:54.176217104 -0400
@@ -133,6 +133,8 @@
  	area->set_size_request( w, h );
  	area->signal_key_press_event().connect(
  		sigc::mem_fun( *this, &display::on_key_pressed));
+	area->signal_key_release_event().connect(
+		sigc::mem_fun( *this, &display::on_key_pressed));

  	// Glade-based UI.
  	// Turned off toolbar in display initialization for now; not yet available on Windows or Mac
@@ -270,6 +272,11 @@
  	// other than a US keyboard.
  	guint k = key->keyval;
  	std::string ctrl_str;
+
+	// Is this a press or release?
+	if (key->type == GDK_KEY_RELEASE) {
+		ctrl_str += "Released: ";
+	}
  	// First trap for shift, ctrl, and alt.
  	if (key->state & GDK_CONTROL_MASK) {
  		ctrl_str += "ctrl+";


------------------------------------------------------------------------------
EditLive Enterprise is the world's most technically advanced content
authoring tool. Experience the power of Track Changes, Inline Image
Editing and ensure content is compliant with Accessibility Checking.
http://p.sf.net/sfu/ephox-dev2dev
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.