weee! locate_cursor works now!!!! speed up animation.

Wed Jan  9 21:22:30 2002  Jonathan Blandford  <jrb@redhat.com>

	* gnome-settings-keyboard.c (filter): weee!  locate_cursor works
	now!!!!
 	* gnome-settings-locate-pointer: speed up animation.
This commit is contained in:
Jonathan Blandford 2002-01-10 02:26:59 +00:00 committed by Jonathan Blandford
parent c1e45241da
commit d7ff9fa84d
3 changed files with 102 additions and 20 deletions

View file

@ -1,3 +1,9 @@
Wed Jan 9 21:22:30 2002 Jonathan Blandford <jrb@redhat.com>
* gnome-settings-keyboard.c (filter): weee! locate_cursor works
now!!!!
* gnome-settings-locate-pointer: speed up animation.
2002-01-09 Anders Carlsson <andersca@gnu.org> 2002-01-09 Anders Carlsson <andersca@gnu.org>
* gnome-settings-daemon.c (main): Call gconf_client_add_dir. * gnome-settings-daemon.c (main): Call gconf_client_add_dir.

View file

@ -33,12 +33,14 @@
#include "gnome-settings-keyboard.h" #include "gnome-settings-keyboard.h"
#include "gnome-settings-daemon.h" #include "gnome-settings-daemon.h"
#include "gnome-settings-locate-pointer.h" #include "gnome-settings-locate-pointer.h"
#include <gdk/gdkkeysyms.h>
#include <X11/keysym.h>
#ifdef HAVE_X11_EXTENSIONS_XF86MISC_H #ifdef HAVE_X11_EXTENSIONS_XF86MISC_H
# include <X11/extensions/xf86misc.h> # include <X11/extensions/xf86misc.h>
#endif #endif
#define HAVE_XKB #undef HAVE_XKB
#ifdef HAVE_XKB #ifdef HAVE_XKB
# include <X11/XKBlib.h> # include <X11/XKBlib.h>
#endif #endif
@ -102,7 +104,9 @@ apply_settings (void)
&kbdcontrol); &kbdcontrol);
} }
#ifdef HAVE_XKB
#if 0
//def HAVE_XKB
/* XKB support /* XKB support
*/ */
static GdkFilterReturn static GdkFilterReturn
@ -120,10 +124,98 @@ gnome_settings_keyboard_xkb_filter (GdkXEvent *xevent,
} }
#endif #endif
#define KEYBOARD_GROUP_SHIFT 13
#define KEYBOARD_GROUP_MASK ((1 << 13) | (1 << 14))
/* Owen magic */
static GdkFilterReturn
filter (GdkXEvent *xevent,
GdkEvent *event,
gpointer data)
{
XEvent *xev = (XEvent *) xevent;
guint keyval;
gint group;
if (xev->type == KeyPress ||
xev->type == KeyRelease) {
/* get the keysym */
group = (xev->xkey.state & KEYBOARD_GROUP_MASK) >> KEYBOARD_GROUP_SHIFT;
gdk_keymap_translate_keyboard_state (gdk_keymap_get_default (),
xev->xkey.keycode,
xev->xkey.state,
group,
&keyval,
NULL, NULL, NULL);
if (keyval == GDK_Control_L) {
if (xev->type == KeyPress) {
XAllowEvents (gdk_x11_get_default_xdisplay (),
SyncKeyboard,
xev->xkey.time);
} else {
XAllowEvents (gdk_x11_get_default_xdisplay (),
AsyncKeyboard,
xev->xkey.time);
gnome_settings_locate_pointer ();
}
} else {
XAllowEvents (gdk_x11_get_default_xdisplay (),
ReplayKeyboard,
xev->xkey.time);
XUngrabKeyboard (gdk_x11_get_default_xdisplay (),
xev->xkey.time);
}
return GDK_FILTER_REMOVE;
}
return GDK_FILTER_CONTINUE;
}
static void static void
gnome_settings_keyboard_init_xkb (void) gnome_settings_keyboard_init_xkb (void)
{ {
#ifdef HAVE_XKB GdkKeymapKey *keys;
int n_keys;
if (gdk_keymap_get_entries_for_keyval (gdk_keymap_get_default (),
GDK_Control_L,
&keys,
&n_keys)) {
gint i;
for (i = 0; i < n_keys; i++) {
XGrabKey (gdk_x11_get_default_xdisplay (),
keys[i].keycode,
AnyModifier,
GDK_ROOT_WINDOW (),
False,
GrabModeAsync,
GrabModeSync);
}
g_free (keys);
gdk_window_add_filter (gdk_get_default_root_window (), filter, NULL);
}
}
void
gnome_settings_keyboard_init (GConfClient *client)
{
gnome_settings_daemon_register_callback ("/desktop/gnome/peripherals/keyboard", (KeyCallbackFunc) apply_settings);
gnome_settings_keyboard_init_xkb ();
}
void
gnome_settings_keyboard_load (GConfClient *client)
{
apply_settings ();
}
#if 0
//def HAVE_XKB
gint xkb_major = XkbMajorVersion; gint xkb_major = XkbMajorVersion;
gint xkb_minor = XkbMinorVersion; gint xkb_minor = XkbMinorVersion;
g_print ("foo1\n"); g_print ("foo1\n");
@ -143,19 +235,3 @@ gnome_settings_keyboard_init_xkb (void)
} }
} }
#endif #endif
}
void
gnome_settings_keyboard_init (GConfClient *client)
{
gnome_settings_daemon_register_callback ("/desktop/gnome/peripherals/keyboard", (KeyCallbackFunc) apply_settings);
gnome_settings_keyboard_init_xkb ();
}
void
gnome_settings_keyboard_load (GConfClient *client)
{
apply_settings ();
}

View file

@ -216,5 +216,5 @@ gnome_settings_locate_pointer (void)
stage = STAGE_ONE; stage = STAGE_ONE;
setup_window (); setup_window ();
gdk_window_show (window); gdk_window_show (window);
locate_pointer_id = gtk_timeout_add (125, locate_pointer_timeout, NULL); locate_pointer_id = gtk_timeout_add (100, locate_pointer_timeout, NULL);
} }