]> git.saurik.com Git - wxWidgets.git/commitdiff
More key event work. Added SetDetectableAutoRepeat.
authorRobert Roebling <robert@roebling.de>
Tue, 18 May 1999 19:35:33 +0000 (19:35 +0000)
committerRobert Roebling <robert@roebling.de>
Tue, 18 May 1999 19:35:33 +0000 (19:35 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2503 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/utils.h
src/common/utilscmn.cpp
src/gtk/app.cpp
src/gtk/utilsgtk.cpp
src/gtk/window.cpp
src/gtk1/app.cpp
src/gtk1/utilsgtk.cpp
src/gtk1/window.cpp

index ecc35d98e64d14ce1b12a573c225967d5c4dfc2f..db163acb3e85cc66fb44df9916b8f0199c9e84af 100644 (file)
@@ -84,6 +84,11 @@ WXDLLEXPORT int wxGetOsVersion(int *majorVsn= (int *) NULL,int *minorVsn= (int *
 // Return a string with the current date/time
 WXDLLEXPORT wxString wxNow();
 
+// Synthesize KeyUp events holding down a key and producing
+// KeyDown events with autorepeat. On by default an always
+// on in wxMSW.
+WXDLLEXPORT bool wxSetDetectableAutoRepeat( bool flag );
+
 // ----------------------------------------------------------------------------
 // Window ID management
 // ----------------------------------------------------------------------------
index 3fe071d7b3af9d9055e616951444d8536ea0e3d0..3b67989d3a86266b1e03d954d75991119462f151 100644 (file)
@@ -355,6 +355,16 @@ StringMatch (char *str1, char *str2, bool subString, bool exact)
   return FALSE;
 }
 
+// Synthesize KeyUp events holding down a key and producing
+// KeyDown events with autorepeat. On by default an always
+// on in wxMSW. wxGTK version in utilsgtk.cpp.
+#ifndef __WXGTK__
+bool wxSetDetectableAutoRepeat( bool WXUNUSED(flag) )
+{
+   return TRUE;          // detectable auto-repeat is the only mode MSW supports
+}
+#endif
+
 // Return the current date/time
 // [volatile]
 wxString wxNow( void )
index c35b4af51d464f6860aba32b88ebb98a7476b902..349491360334d7cb067bb4d391e8e6dc431c238a 100644 (file)
@@ -596,6 +596,8 @@ int wxEntry( int argc, char *argv[] )
 
     gtk_init( &argc, &argv );
 
+    wxSetDetectableAutoRepeat( TRUE );
+    
     if (!wxApp::Initialize())
         return -1;
 
index d9ceaf81f4eb4e7951e6a521463018749f070e94..4a64e6a797bd854a0afd2aaf6e272c58a4154e12 100644 (file)
@@ -35,6 +35,7 @@
 #include <gtk/gtk.h>
 #include <gtk/gtkfeatures.h>
 #include <gdk/gdkx.h>
+#include "X11/XKBlib.h"
 
 // ----------------------------------------------------------------------------
 // misc.
@@ -45,6 +46,15 @@ void wxBell()
     gdk_beep();
 }
 
+// Synthesize KeyUp events holding down a key and producing
+// KeyDown events with autorepeat.
+bool wxSetDetectableAutoRepeat( bool flag )
+{
+    Bool result;
+    XkbSetDetectableAutoRepeat( GDK_DISPLAY(), flag, &result );
+    return result;       // true if keyboard hardware supports this mode
+}
+
 // ----------------------------------------------------------------------------
 // display characterstics
 // ----------------------------------------------------------------------------
index 8bf4d36bfa6d3ba151fd90a54f79baa0f24020ab..cff51e599d063b79f2ff2cd70bcb8efa81530392 100644 (file)
@@ -563,8 +563,6 @@ static gint gtk_window_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_e
     printf( "\n" );
 */
 
-    bool ret = FALSE;
-    
     int x = 0;
     int y = 0;
     GdkModifierType state;
@@ -572,6 +570,11 @@ static gint gtk_window_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_e
 
     long key_code = get_unmodified_wx_keysym( gdk_event );
     
+    /* sending unknown key events doesn't really make sense */
+    if (key_code == 0) return FALSE;
+
+    bool ret = FALSE;
+    
     wxKeyEvent event( wxEVT_KEY_DOWN );         
     event.SetTimestamp( gdk_event->time );
     event.m_shiftDown = (gdk_event->state & GDK_SHIFT_MASK);
@@ -702,6 +705,9 @@ static gint gtk_window_key_release_callback( GtkWidget *widget, GdkEventKey *gdk
 */
 
     long key_code = get_unmodified_wx_keysym( gdk_event );
+    
+    /* sending unknown key events doesn't really make sense */
+    if (key_code == 0) return FALSE;
 
     int x = 0;
     int y = 0;
index c35b4af51d464f6860aba32b88ebb98a7476b902..349491360334d7cb067bb4d391e8e6dc431c238a 100644 (file)
@@ -596,6 +596,8 @@ int wxEntry( int argc, char *argv[] )
 
     gtk_init( &argc, &argv );
 
+    wxSetDetectableAutoRepeat( TRUE );
+    
     if (!wxApp::Initialize())
         return -1;
 
index d9ceaf81f4eb4e7951e6a521463018749f070e94..4a64e6a797bd854a0afd2aaf6e272c58a4154e12 100644 (file)
@@ -35,6 +35,7 @@
 #include <gtk/gtk.h>
 #include <gtk/gtkfeatures.h>
 #include <gdk/gdkx.h>
+#include "X11/XKBlib.h"
 
 // ----------------------------------------------------------------------------
 // misc.
@@ -45,6 +46,15 @@ void wxBell()
     gdk_beep();
 }
 
+// Synthesize KeyUp events holding down a key and producing
+// KeyDown events with autorepeat.
+bool wxSetDetectableAutoRepeat( bool flag )
+{
+    Bool result;
+    XkbSetDetectableAutoRepeat( GDK_DISPLAY(), flag, &result );
+    return result;       // true if keyboard hardware supports this mode
+}
+
 // ----------------------------------------------------------------------------
 // display characterstics
 // ----------------------------------------------------------------------------
index 8bf4d36bfa6d3ba151fd90a54f79baa0f24020ab..cff51e599d063b79f2ff2cd70bcb8efa81530392 100644 (file)
@@ -563,8 +563,6 @@ static gint gtk_window_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_e
     printf( "\n" );
 */
 
-    bool ret = FALSE;
-    
     int x = 0;
     int y = 0;
     GdkModifierType state;
@@ -572,6 +570,11 @@ static gint gtk_window_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_e
 
     long key_code = get_unmodified_wx_keysym( gdk_event );
     
+    /* sending unknown key events doesn't really make sense */
+    if (key_code == 0) return FALSE;
+
+    bool ret = FALSE;
+    
     wxKeyEvent event( wxEVT_KEY_DOWN );         
     event.SetTimestamp( gdk_event->time );
     event.m_shiftDown = (gdk_event->state & GDK_SHIFT_MASK);
@@ -702,6 +705,9 @@ static gint gtk_window_key_release_callback( GtkWidget *widget, GdkEventKey *gdk
 */
 
     long key_code = get_unmodified_wx_keysym( gdk_event );
+    
+    /* sending unknown key events doesn't really make sense */
+    if (key_code == 0) return FALSE;
 
     int x = 0;
     int y = 0;