From a8143270cd804a9606663c033aa2c7e5b48eed55 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 12 Dec 2012 13:31:18 +0000 Subject: [PATCH] always re-set xmodmap after changing kbd layout group SVN revision: 80761 --- src/bin/e_deskenv.c | 26 ++++++++++++++------------ src/bin/e_deskenv.h | 2 +- src/bin/e_xkb.c | 1 + 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/bin/e_deskenv.c b/src/bin/e_deskenv.c index 4e68a0664..f89b21dba 100644 --- a/src/bin/e_deskenv.c +++ b/src/bin/e_deskenv.c @@ -23,18 +23,7 @@ e_deskenv_init(void) } } - // load ~/.Xmodmap - // NOTE: one day we should replace this with an e based config + service - if (e_config->deskenv.load_xmodmap) - { - e_user_homedir_concat(buf, sizeof(buf), ".Xmodmap"); - if (ecore_file_exists(buf)) - { - snprintf(buf2, sizeof(buf2), "xmodmap %s", buf); - ecore_exe_run(buf2, NULL); - } - } - + e_deskenv_xmodmap_run(); // make gnome apps happy // NOTE: one day we should replace this with an e based config + service if (e_config->deskenv.load_gnome) @@ -56,3 +45,16 @@ e_deskenv_shutdown(void) { return 1; } + +EAPI void +e_deskenv_xmodmap_run(void) +{ + char buf[PATH_MAX], buf2[PATH_MAX + sizeof("xmodmap ")]; + // load ~/.Xmodmap + // NOTE: one day we should replace this with an e based config + service + if (!e_config->deskenv.load_xmodmap) return; + e_user_homedir_concat(buf, sizeof(buf), ".Xmodmap"); + if (!ecore_file_exists(buf)) return; + snprintf(buf2, sizeof(buf2), "xmodmap %s", buf); + ecore_exe_run(buf2, NULL); +} diff --git a/src/bin/e_deskenv.h b/src/bin/e_deskenv.h index 737c410a5..bbab0f492 100644 --- a/src/bin/e_deskenv.h +++ b/src/bin/e_deskenv.h @@ -5,6 +5,6 @@ EINTERN int e_deskenv_init(void); EINTERN int e_deskenv_shutdown(void); - +EAPI void e_deskenv_xmodmap_run(void); #endif #endif diff --git a/src/bin/e_xkb.c b/src/bin/e_xkb.c index 34ede792b..def7f5a2b 100644 --- a/src/bin/e_xkb.c +++ b/src/bin/e_xkb.c @@ -45,6 +45,7 @@ e_xkb_update(int cur_group) { _e_xkb_cur_group = cur_group; ecore_x_xkb_select_group(cur_group); + e_deskenv_xmodmap_run(); _e_xkb_update_event(cur_group); return; }