From 653d3d99f73a325b08b8df1635e1007f28100c7a Mon Sep 17 00:00:00 2001 From: "Sergey V. Udaltsov" Date: Sat, 27 Nov 2004 16:05:03 +0000 Subject: [PATCH] xmodmap support is here --- gnome-settings-daemon/ChangeLog | 4 +++ .../gnome-settings-keyboard-xkb.c | 36 +++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/gnome-settings-daemon/ChangeLog b/gnome-settings-daemon/ChangeLog index 975704494..9471d36f8 100644 --- a/gnome-settings-daemon/ChangeLog +++ b/gnome-settings-daemon/ChangeLog @@ -1,3 +1,7 @@ +2004-11-27 Sergey V. Udaltsov + + * gnome-settings-keyboard-xkb.c: support for xmodmap introduced + 2004-10-28 Kjartan Maraas * gnome-settings-xrdb.c: (append_xresource_file), (apply_settings): diff --git a/gnome-settings-daemon/gnome-settings-keyboard-xkb.c b/gnome-settings-daemon/gnome-settings-keyboard-xkb.c index 79b2039f9..a6b770978 100644 --- a/gnome-settings-daemon/gnome-settings-keyboard-xkb.c +++ b/gnome-settings-daemon/gnome-settings-keyboard-xkb.c @@ -32,6 +32,7 @@ #include #include +#include #include @@ -56,6 +57,23 @@ typedef enum { RESPONSE_USE_GNOME } SysConfigChangedMsgResponse; +/* #define GSDKX */ + +#ifdef GSDKX +static FILE *logfile; + +static void +gnome_settings_keyboard_log_appender (const char file[], const char function[], + int level, const char format[], va_list args) +{ + time_t now = time (NULL); + fprintf (logfile, "[%08ld,%03d,%s:%s/] \t", now, + level, file, function); + vfprintf (logfile, format, args); + fflush(logfile); +} +#endif + static void activation_error (void) { @@ -252,6 +270,12 @@ gnome_settings_keyboard_xkb_set_post_activation_callback void gnome_settings_keyboard_xkb_init (GConfClient * client) { +#ifdef GSDKX + XklSetDebugLevel (200); + logfile = fopen ("/tmp/gsdkx.log", "a"); + XklSetLogAppender (gnome_settings_keyboard_log_appender); +#endif + if (!XklInit (GDK_DISPLAY ())) { initedOk = TRUE; XklBackupNamesProp (); @@ -260,6 +284,18 @@ gnome_settings_keyboard_xkb_init (GConfClient * client) gnome_settings_daemon_register_callback ("/desktop/gnome/peripherals/keyboard/xkb", (KeyCallbackFunc) apply_settings); + + if (XklGetBackendFeatures() & + XKLF_REQUIRES_MANUAL_LAYOUT_MANAGEMENT) + { + gdk_window_add_filter (NULL, + (GdkFilterFunc) XklFilterEvents, + NULL); + gdk_window_add_filter (gdk_get_default_root_window(), + (GdkFilterFunc) XklFilterEvents, + NULL); + XklStartListen (XKLL_MANAGE_LAYOUTS); + } } }