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:
parent
c1e45241da
commit
d7ff9fa84d
3 changed files with 102 additions and 20 deletions
|
@ -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>
|
||||
|
||||
* gnome-settings-daemon.c (main): Call gconf_client_add_dir.
|
||||
|
|
|
@ -33,12 +33,14 @@
|
|||
#include "gnome-settings-keyboard.h"
|
||||
#include "gnome-settings-daemon.h"
|
||||
#include "gnome-settings-locate-pointer.h"
|
||||
#include <gdk/gdkkeysyms.h>
|
||||
#include <X11/keysym.h>
|
||||
|
||||
#ifdef HAVE_X11_EXTENSIONS_XF86MISC_H
|
||||
# include <X11/extensions/xf86misc.h>
|
||||
#endif
|
||||
|
||||
#define HAVE_XKB
|
||||
#undef HAVE_XKB
|
||||
#ifdef HAVE_XKB
|
||||
# include <X11/XKBlib.h>
|
||||
#endif
|
||||
|
@ -102,7 +104,9 @@ apply_settings (void)
|
|||
&kbdcontrol);
|
||||
}
|
||||
|
||||
#ifdef HAVE_XKB
|
||||
|
||||
#if 0
|
||||
//def HAVE_XKB
|
||||
/* XKB support
|
||||
*/
|
||||
static GdkFilterReturn
|
||||
|
@ -120,10 +124,98 @@ gnome_settings_keyboard_xkb_filter (GdkXEvent *xevent,
|
|||
}
|
||||
#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
|
||||
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_minor = XkbMinorVersion;
|
||||
g_print ("foo1\n");
|
||||
|
@ -143,19 +235,3 @@ gnome_settings_keyboard_init_xkb (void)
|
|||
}
|
||||
}
|
||||
#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 ();
|
||||
}
|
||||
|
|
|
@ -216,5 +216,5 @@ gnome_settings_locate_pointer (void)
|
|||
stage = STAGE_ONE;
|
||||
setup_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);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue