More key event work. Added SetDetectableAutoRepeat.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2503 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
1999-05-18 19:35:33 +00:00
parent 25dd56b1d3
commit f0492f7d97
8 changed files with 55 additions and 4 deletions

View File

@@ -596,6 +596,8 @@ int wxEntry( int argc, char *argv[] )
gtk_init( &argc, &argv );
wxSetDetectableAutoRepeat( TRUE );
if (!wxApp::Initialize())
return -1;

View 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
// ----------------------------------------------------------------------------

View 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;