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>
|
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.
|
||||||
|
|
|
@ -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 ();
|
|
||||||
}
|
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue