Bug 27737

Summary: xkl_engine_get_state returns incorrect group value
Product: libxklavier Reporter: Frank <frankebay99>
Component: GeneralAssignee: Sergey V. Udaltsov <svu>
Status: RESOLVED NOTABUG QA Contact: Sergey V. Udaltsov <svu>
Severity: normal    
Priority: medium CC: vas.pup
Version: unspecifiedKeywords: NEEDINFO
Hardware: x86-64 (AMD64)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:

Description Frank 2010-04-19 07:01:49 UTC
Libxklavier has been integrated into a dock application (Cairo-Dock).

In 32-bits it seems to work fine.
In 64-bits, there is a problem with function 'xkl_engine_get_state'.

When changing languages from the applet of Cairo-Dock, line 'xkl_engine_get_state (pEngine, Xid, &state)' returns a group value that does not make sense.

It returns the following: 'group : -1 -> 46140237 ; indic : 0 -> 0 '


Tested on openSUSE 11.2 64-bits, but some other distros had the same problem, all under 64-bits.
Comment 1 Sergey V. Udaltsov 2010-04-19 13:22:46 UTC
That is very strange indeed. I run gnome with ubuntu/x86_64 for years and did not have any issues. Could you run your app with XKL_DEBUG=160 and attach the output?
Comment 2 Frank 2010-04-19 17:47:01 UTC
Hum, maybe it's distro specific and does not affect Ubuntu.

Let's see, after typing the command

'cairo-dock -cl debug XKL_DEBUG=160'

(I run it without openGL on my virtual test machine, but I also tried it with openGL on another real non-virtual installation of same distro and I get the same problem)

it returns the following:

---
message :  (cairo-dock-dock-manager.c:cairo_dock_stop_quick_hide:562)
                                 
debug   :  (cairo-dock-callbacks.c:cairo_dock_on_button_press:1316)
  clicked on keyboard
debug   :  (cairo-dock-callbacks.c:cairo_dock_on_button_press:1211)
  activate Keyboard (Keyboard)
debug   :  (cairo-dock-callbacks.c:cairo_dock_notification_click_icon:1158)
  no action here
debug   :  (applet-xklavier.c:cd_xkbd_set_prev_next_group:39)
  keyboard current state : 7417872;0 +1
warning :  (cairo-dock.c:_cairo_dock_intercept_signal:181)
  Cairo-Dock has crashed (sig 11)
---
Comment 3 Frank 2010-04-19 17:48:04 UTC
Oops, forgot to mention that the code it returned was just after I clicked on the applet to switch languages.
Comment 4 Sergey V. Udaltsov 2010-04-20 16:26:08 UTC
> 'cairo-dock -cl debug XKL_DEBUG=160'
Sorry for being unclear. XKL_DEBUG is environment variable. So please do

export XKL_DEBUG=160
cairo-dock -cl debug
Comment 5 Frank 2010-04-20 18:27:29 UTC
I must be missing a step somewhere, I get the same result in the terminal screen. Is there a log file somewhere?
Comment 6 Sergey V. Udaltsov 2010-04-22 14:47:49 UTC
(In reply to comment #5)
> I must be missing a step somewhere, I get the same result in the terminal
> screen. Is there a log file somewhere?
That is quite odd. XKL_DEBUG sends all stuff to stdout. Are you sure there is no child process with inhibited stdout?
Comment 7 Sergey V. Udaltsov 2010-04-22 14:48:16 UTC
Do you properly initialize libxklavier?
Comment 8 Frank 2010-04-22 14:51:43 UTC
I must say I have no idea.

I use KDE4.3.1 btw.

I don't know how libxklavier is initialized neither how to verify if it is. I can tell the standard country flags in the systray are always working well, but beyond that it's all new to me. Maybe those systray country flags (of KDE/distro) have nothing to do with libxklavier, I can't tell that either. :(
Comment 9 Sergey V. Udaltsov 2010-04-22 15:10:58 UTC
Try to build libxklavier. There are some test apps inside. Try to run them (with XKL_DEBUG=160), if they work for you
Comment 10 Frank 2010-04-22 18:00:01 UTC
Child processes... not sure if openSUSE does something about that, quite possible.

I will uninstall libxklavier (if not too many dependencies), download the latest tarball from http://sourceforge.net/projects/gswitchit/files/libxklavier/ and compile it. Hoping to have something within the next few days.
Comment 11 Frank 2010-04-26 09:14:53 UTC
Hi, I have not had time yet to look into compiling libxklavier for debugging, but I want to bring up front a similar issue in Ubuntu Lucid 32-bits (which makes this even more interesting).

The dev of Cairo-Dock now has a new problem with libxklavier. It's actually his first.

The first time he calls 'xkl_engine_get_state()', it returns the value 'FALSE', which for him means the function did not do its job.

But calling 'xkl_engine_get_num_groups()' works. Doing so does not bring the keyboard's state at startup, though.


So my original problem is that get_state returns weird values and here in Cairo-Dock dev's situation the same function returns nothing on start-up, we wonder if it could be related somehow.

If you want debugging details on that one too, let me know.

tnx
Comment 12 Frank 2010-05-08 12:33:10 UTC
Ok I have uninstalled 4.0 and compiled 5.0.

Then I did 'export XKL_DEBUG=160' and 'cairo-dock -ol debug' (I run it with opengl now).

Now I click on the icon to switch the locale. I have an error msg I haven't seen before:

[1273347018,150,xklavier_toplevel.c:xkl_engine_get_toplevel_window_state/]      Appwin 2a00b4d, 'Yakuake' does not have state
cd_xkbd_set_prev_next_group: assertion `bSuccess' failed 



Trying right-clicking on the icon, browsing through the menu and selecting my second locale which is listed and I get:

[1273347146,150,xklavier_toplevel.c:xkl_engine_get_toplevel_window_state/]      Appwin a0002e, '' does not have state
cd_xkbd_set_group: assertion `bSuccess' failed
Comment 13 Sergey V. Udaltsov 2010-05-13 14:42:30 UTC
That explains. Some windows are ignored by libxklavier (they are "transparent") - for that window the statis not defined, the xkl_engine_get_state returns false - you should not look at the group field in that case, there can be any rubbish.
Comment 14 Frank 2010-05-14 08:46:48 UTC
Ok. So what is the solution? If we don't look at the group field, what should we be looking for?

I understand there is no bug in libxklavier here, am I correct?

If yes, and assuming there is currently no other way to get the required info, is there a feature I can ask for so that we would get the required info?

Let me know what you suggest to either workaround this or have an enhancement filled.

tnx
Comment 15 Frank 2010-05-14 09:53:57 UTC
I would like precise one point:

The active window at the time the problem occurs is not transparent. We can edit inside and change locale-language.
Comment 16 Sergey V. Udaltsov 2010-05-14 13:48:24 UTC
I cannot tell you exactly without looking at the code. First of all, how do you initialize the XklEngine? What are the parameters passed to xkl_engine_start_listen? There must be XKLL_MANAGE_WINDOW_STATES | XKLL_MANAGE_LAYOUTS, at least
Comment 17 Frank 2010-05-14 16:48:07 UTC
There is no xkl_engine_start_listen.

The code is :

=============
XklEngine *pEngine = xkl_engine_get_instance (display);
XklState state;
gboolean bSuccess = xkl_engine_get_state (pEngine, Xid, &state);
=============

Important NB: It works ok in 32-bits, but does not in 64-bits.


Also it seems the doc is unclear, for example xkl_engine_stop_listen() takes 2 args, not 1.


The developer tried modifying something but got the following msg:
====
The backend does not require manual layout management
====


Can you explain how to initialize the library?
Comment 18 Sergey V. Udaltsov 2010-05-15 13:56:09 UTC
That message is just an information, can be ignored. The stop_listen function takes the same arguments as start_listen.

The docs perhaps are quite poor indeed.
Comment 19 Frank 2010-05-19 07:09:47 UTC
Some code changes have been tested.

It appears the 'init/stop' does nothing and that in 64-bits I systematically get the function 'cd_xkbd_set_group' returning 'FALSE'.


Unread_message_signal
cd_xkbd_set_group: assertion `bSuccess' failed
Comment 20 Sergey V. Udaltsov 2010-05-19 15:36:07 UTC
Start-stop functions initialize listener. After that, your application is responsible for calling even handling function in X event loop (xkl_engine_filter_events).

See the sample code in tests/test_monitor.c
Comment 21 Frank 2010-05-20 05:04:17 UTC
Ok.

We already retrieve ourselves XKLAVIER_STATE events.

All we want is that the function 'XklGetState()' returns current state.


The function does it this way:

(XGetWindowProperty( dpy, appWin, XKLAVIER_STATE, 0L, PROP_LENGTH, False, XA_INTEGER,
&type_ret, &format_ret, &nitems, &rest,
&prop ) == Success ) &&
( type_ret == XA_INTEGER ) && ( format_ret == 8 )



The only places where it can return FALSE is if 'XGetWindowProperty' doesn't go through or if the return type or format is wrong.

Again this exact function works perfectly in 32-bits mode, there must be something handled differently in 64-bits.
Comment 22 Sergey V. Udaltsov 2010-09-27 14:14:04 UTC
Sorry, that bug somehow got lost in my inbox

First of all, would you try running test_monitor app from libxklavier? Does it display proper group number?

Second, using that app, you could add more debug (just printf, if you like) to the library code, straight after XGetWindowProperty and see what it returns.

Additionally, you can always check every window's properties using xprop. Would you see any mismatch between xprop results - and the results of the XGetWindowProperties call?
Comment 23 Frank 2010-09-28 09:46:42 UTC
Ok I have to start over again, since last may I have cleaned up my distro, I need to re-compile v5.0 and use latest version of Cairo-dock with the debug options and see what I get now.
Comment 24 Frank 2012-02-09 10:15:49 UTC
Hi Sergey,

This has been a long time I know. I had to stop testing due to old distro and could not upgrade until recently.

I have now moved from openSUSE KDE 11.2 to Kubuntu 11.10.

I get the same problem with libxklavier. Latest version included in Kubuntu 11.10. I think it's version 6.

Would it be good if the developer of Cairo-Dock could join the discussion?

tnx
Comment 25 Sergey V. Udaltsov 2012-02-09 10:17:53 UTC
Everybody is free to join, this is bugzilla ;)
Comment 26 Vasya Pupkin 2012-12-13 09:52:06 UTC
I have exactly the same problem.

Xubuntu 12.10, 64 bit
Cairo-dock  3.10

The same error message:

[1355392250,150,xklavier_toplevel.c:xkl_engine_get_toplevel_window_state/] 	Appwin 4e00004, 'Terminal - vas.pup@aaa: ~' does not have state
cd_xkbd_set_group: assertion `bSuccess' failed
Comment 27 Frank 2012-12-13 13:48:20 UTC
Yes absolutely, still there with recent version of libxklavier.

I didn't know XFCE would have it as well, probably uses the same libs as KDE.


So who is supporting libxklavier, now?

Plz let's team up to fix this, we are unable to use one of Cairo-Dock's function because of this.


For the bug report and discussion on Cairo-Dock's forums, see here (we could continue the discussion in English if more people join):

http://glx-dock.org/bg_topic.php?t=4261

Vasya, if you want to join the discussion and help fixing this, plz join in on glx.dock.org and we will switch the discussion to English. :) I really want that keyboard applet to work!
Comment 28 Sergey V. Udaltsov 2012-12-13 13:54:43 UTC
I am still trying to support it. But I cannot reproduce the issue in GNOME environment. Going to read glx-dock forum
Comment 29 Sergey V. Udaltsov 2012-12-13 13:58:15 UTC
Did anyone really tried test_monitor in 64-bit mode?
Comment 30 Sergey V. Udaltsov 2012-12-13 14:10:44 UTC
Also, to help debuggin the situation, please insert (patching libxklavier) the following after XGetWindowProperty:

xkl_debug(0, "type: %d, format: %d\n", (int)type_ret, format_ret);
Comment 31 Sergey V. Udaltsov 2012-12-13 14:15:34 UTC
Another idea.

Change 
CARD32 *prop = NULL;
to
long *prop = NULL;

(I am still talking about xkl_engine_get_toplevel_window_state)

The idea is based on http://www.x.org/releases/X11R7.5/doc/man/man3/XGetWindowProperty.3.html:


If the returned format is 32, the property data will be stored as an array of longs (which in a 64-bit application will be 64-bit values that are padded in the upper 4 bytes).

If that helps - I will patch libxklavier
Comment 32 Frank 2012-12-13 15:25:34 UTC
I will restart my validations from scratch and come back. Glad to see you are still there, Sergey. :)

I do not know much about developments, so I may need a little help at some point, but we'll see.

Vasya, are you able to try something on your end as well?
Comment 33 Vasya Pupkin 2012-12-13 22:02:38 UTC
Hi Frank,
I would like to see this plugin working too :) I left the comment on the glx-dock forum.

Be honest the first time I met the name of the LibXklavier it was today when I googled for the possible solution for this problem. Sorry if I totally wrong, but it makes me no sense that problem is in this library, since on the same machine when I'm running the same application (which I guess uses the same binary for libxklavier) - everything works ok. Am I wrong? 

Anyway, I will try to build / patch the libxklavier, probably tomorrow to see if it helps.

thanks
Comment 34 Vasya Pupkin 2012-12-13 22:04:35 UTC
ups, forgot to mention in previous comment:
-- when I run the same application (cairo-dock) on the same machine, with the same library, on DIFFERENT shell (Unity and Gnome) everything is working as expected.
Comment 35 Frank 2012-12-14 13:05:06 UTC
Ok that's normal, on Unity and Gnome it works, cuz I think Unity/Gnome does not use libxklavier. Libxklavier is intended to support XFree86 (X.Org), which I think it not used on Gnome/Unity, but I am not positive on that...

I have tried KDE on 2 distros, 2 versions of each and also under VBOX and every single time it was not working. All in 64-bits, in 32-bits it works perfectly.

This week-end I will restart my testing with test_monitor and possibly that patch too if I can compile libxklavier.
Comment 36 Sergey V. Udaltsov 2012-12-14 13:17:15 UTC
> Ok that's normal, on Unity and Gnome it works, cuz I think Unity/Gnome does
They are not using libxklavier (well, GNOME does not use it since 3.6)

> not use libxklavier. Libxklavier is intended to support XFree86 (X.Org),
> which I think it not used on Gnome/Unity, but I am not positive on that...
GNOME is using XKB API directly, without libxklavier layer.

> This week-end I will restart my testing with test_monitor and possibly that
> patch too if I can compile libxklavier.
Please do. That should work.
Comment 37 Vasya Pupkin 2012-12-14 22:34:02 UTC
Hi,
What are expected results from test_monitor? I compiled the package and run test_monitor with -l1 -l2 and -l3 options. I tried to switch layouts, open new windows etc. - and saw no output.

Additional question - what is the safest way to replace the original package with the compiled one, and revert back to the original? 

Thanks,
V.P.
Comment 38 Vasya Pupkin 2012-12-14 22:55:58 UTC
another question:

grep -n "CARD32 \*prop" *.c
xklavier_toplevel.c:295:	CARD32 *prop = NULL;
xklavier_toplevel.c:384:	CARD32 *prop = NULL;


Is it correct file to patch, should I replace both declarations? 

thx
Comment 39 Sergey V. Udaltsov 2012-12-14 23:01:55 UTC
you can try test_monitor -h

also use -d 255 option.

Mainly, -l1 -l2 is of interest, they should manage keyboard layouts per-window.

But, most of all, I would be interested in replacing CARD32 with long - and see if your application work with that.
Comment 40 Sergey V. Udaltsov 2012-12-14 23:06:40 UTC
yes. both.
Comment 41 Vasya Pupkin 2012-12-14 23:17:15 UTC
Sergey,

Before installing the patch I'd like to know how to revert back (in case of disaster with given patch) to original package. I'm using Ubuntu, so I guess it should be something like apt-get install -f or by Synaptic. Anyway, I cannot afford to reinstall the whole system because of this package. 

I read the test_monitor help and have to say that it is not too informative to me (once again, I'm completely new in this domain). So, right now with -l3 option there is no output...

Thanks,
V.P.
Comment 42 Vasya Pupkin 2012-12-14 23:18:17 UTC
probably: sudo make uninstall  - should revert (or at least uninstall) the patched package?
Comment 43 Sergey V. Udaltsov 2012-12-14 23:21:58 UTC
Just backup /usr/lib/libxklavier* and /usr/lib64/libxklavier*
Comment 44 Vasya Pupkin 2012-12-15 00:17:00 UTC
Unfortunately, seems like it doesn't work:
debug   :  (/build/buildd/cairo-dock-3.1.2/src/cairo-dock-user-interaction.c:cairo_dock_notification_click_icon:263)  
  no action here
[1355529915,150,xklavier_toplevel.c:xkl_engine_get_toplevel_window_state/] 	Appwin 4401288, 'Terminal - vas@pup: ~/Downl' does not have state
cd_xkbd_set_prev_next_group: assertion `bSuccess' failed



Here is a patch I made for testing:
--- xklavier_toplevel.c	2010-01-11 02:57:51.000000000 +0200
+++ ../../../libxklavier-5.0/libxklavier/xklavier_toplevel.c	2012-12-15 01:43:51.794924977 +0200
@@ -292,7 +292,7 @@
 	Atom type_ret;
 	int format_ret;
 	unsigned long nitems, rest;
-	CARD32 *prop = NULL;
+	long *prop = NULL;
 	gboolean ret = FALSE;
 
 	gint grp = -1;
@@ -305,6 +305,8 @@
 	      &format_ret, &nitems, &rest,
 	      (unsigned char **) (void *) &prop) == Success)
 	    && (type_ret == XA_INTEGER) && (format_ret == 32)) {
+
+		xkl_debug(0, "type: %d, format: %d\n", (int)type_ret, format_ret);
 		grp = prop[0];
 		if (grp >= xkl_engine_get_num_groups(engine) || grp < 0)
 			grp = 0;
@@ -381,7 +383,7 @@
 	Atom type_ret;
 	int format_ret;
 	unsigned long nitems, rest;
-	CARD32 *prop = NULL;
+	long *prop = NULL;
 	if ((XGetWindowProperty
 	     (xkl_engine_get_display(engine), toplevel_win,
 	      xkl_engine_priv(engine, atoms)[XKLAVIER_TRANSPARENT], 0L, 1,

I also notice, that original package was named: libxklavier.16.2.0.0, and the version I donwloaded was 16.0.0. I think that the problem is not there, but still worth to mention.

The test_monitor is working fine when I switch with the xfce-kbd-pugin (with the standard xfce4 panel). Here is the output:
[1355530342,000,test_monitor.c:main/] 	Xklavier initialized
[1355530342,000,test_monitor.c:main/] 	Group: [us]
[1355530342,000,test_monitor.c:main/] 	Group: [il]
[1355530342,000,test_monitor.c:main/] 	Group: [ru]
[1355530342,000,test_monitor.c:main/] 	Now, listening: 2...
[1355530387,000,test_monitor.c:state_changed/] 	State changed: 0,2,0
[1355530393,000,test_monitor.c:state_changed/] 	State changed: 0,1,0
[1355530396,000,test_monitor.c:state_changed/] 	State changed: 0,0,0

However, with cairo-dock keyboard plugin it has no output.

Hope it helps.
Comment 45 Sergey V. Udaltsov 2012-12-15 00:40:32 UTC
> Appwin 4401288, 'Terminal - vas@pup: ~/Downl' does not have state
> cd_xkbd_set_prev_next_group: assertion `bSuccess' failed
Can you try again? And when you get that error, please run "xprop | grep XKL" - and point mouse pointer to that terminal window that "does not have state".

> I also notice, that original package was named: libxklavier.16.2.0.0, and
> the version I donwloaded was 16.0.0. I think that the problem is not there,
> but still worth to mention.
When you build libxklavier properly from tarball, you should get libxklavier.so.16.2.0. That is important - because your applications are most probably using it.

In case of doubt, check by running "ldd /whatever/your/path/is/cairo-doc"
Comment 46 Vasya Pupkin 2012-12-15 10:55:28 UTC
Where can I find the  latest tarball?
Comment 47 Frank 2012-12-15 14:33:23 UTC
The latest I could find here is 5.0, which is older than what I have installed. loll

http://www.freedesktop.org/wiki/Software/LibXklavier
http://sourceforge.net/projects/gswitchit/files/libxklavier/

But here 5.3 seems the latest: http://cgit.freedesktop.org/libxklavier/
Could not find more recent.

I'll give a try anyway.
I've got the 5.1 installed, which came in Kubuntu 11.10.
Comment 48 Frank 2012-12-15 14:36:54 UTC
Vasya, where did you get test_monitor app from?
Comment 49 Sergey V. Udaltsov 2012-12-15 14:48:11 UTC
> http://www.freedesktop.org/wiki/Software/LibXklavier
Thanks, will update it.
> http://sourceforge.net/projects/gswitchit/files/libxklavier/
VEEEEERY old.

> But here 5.3 seems the latest: http://cgit.freedesktop.org/libxklavier/
> Could not find more recent.
Yes, please either use 5.3 tarball or take the stuff from git.
Comment 50 Frank 2012-12-15 14:56:13 UTC
I am currently as we speak patching.

grep -n "CARD32 \*prop" *.c
xklavier_toplevel.c:295:        CARD32 *prop = NULL;
xklavier_toplevel.c:384:        CARD32 *prop = NULL;

Changed lines 295 and 384 for:

Atom type_ret;
int format_ret;
unsigned long nitems, rest;
long *prop = NULL;
gboolean ret = FALSE;

grep -n "long \*prop" *.c
xklavier_toplevel.c:295:        long *prop = NULL;
xklavier_toplevel.c:384:        long *prop = NULL;


Now I need to check how to compile. I believe no special options?
Comment 51 Frank 2012-12-15 14:57:31 UTC
I guess
# ./configure
# make
# make install
?
Comment 52 Frank 2012-12-15 14:58:00 UTC
Do I need to unsinstall my packaged version of libxklavier first?
Comment 53 Sergey V. Udaltsov 2012-12-15 14:58:24 UTC
No special options required. Just make sure you specify --prefix proper for your distribution
Comment 54 Sergey V. Udaltsov 2012-12-15 14:58:55 UTC
Do, do not uninstall. Just backup /usr/lib/libxklavier*
Comment 55 Frank 2012-12-15 15:01:06 UTC
(In reply to comment #53)
> No special options required. Just make sure you specify --prefix proper for
> your distribution

Crap, I do not know what it is, will have to look. tnx

I will backup /libxklavier*
Comment 56 Frank 2012-12-15 15:03:30 UTC
That should do it:

$ kde4-config --prefix
/usr

So --prefix=/USR
Comment 57 Sergey V. Udaltsov 2012-12-15 15:08:24 UTC
mkdir $HOME/libxklavier.backup
cp /usr/lib/libxklavier* $HOME/libxklavier.backup

(if you have 64-bit system, may be /usr/lib64, please check)

cd (wherever you unpacked libxklavier)
./configure --prefix=/usr
make
sudo make install
Comment 58 Frank 2012-12-15 15:14:06 UTC
(In reply to comment #57)
> mkdir $HOME/libxklavier.backup
> cp /usr/lib/libxklavier* $HOME/libxklavier.backup
> 
> (if you have 64-bit system, may be /usr/lib64, please check)
> 
> cd (wherever you unpacked libxklavier)
> ./configure --prefix=/usr
> make
> sudo make install

/usr/lib is the folder for my distro. Just 4 files in there. Backped up, but I don't care about breaking up the system, cuz I use dd to restore my partition and I use 2 independent hard drives (TEST and PROD), so even if nothing works I can restore my entire hard drive no problem. But it is faster to copy the backed up files and recompile. :)
Comment 59 Frank 2012-12-15 15:22:09 UTC
Ok currently looking into a compiling issue.

/libxklavier-5.3$ ./configure --prefix=/usr
bash: ./configure: No such file or directory

I do compile cairo-dock and it works and the make and cmake packages are installed. Googling for an answer.
Comment 60 Frank 2012-12-15 15:24:14 UTC
/libxklavier-5.3$ ls -l
total 124
-rw-rw-r-- 1 frank frank    47 2012-09-21 20:36 AUTHORS
-rwxrwxr-x 1 frank frank   759 2012-09-21 20:36 autogen.sh
-rw-rw-r-- 1 frank frank    64 2012-09-21 20:36 ChangeLog
-rw-rw-r-- 1 frank frank 31184 2012-09-21 20:36 ChangeLog.cvs
-rw-rw-r-- 1 frank frank  6673 2012-09-21 20:36 configure.ac
-rw-rw-r-- 1 frank frank 25275 2012-09-21 20:36 COPYING.LIB
-rw-rw-r-- 1 frank frank    69 2012-09-21 20:36 CREDITS
drwxrwxr-x 3 frank frank  4096 2012-09-21 20:36 doc
drwxrwxr-x 2 frank frank  4096 2012-12-15 09:52 libxklavier
-rw-rw-r-- 1 frank frank  1446 2012-09-21 20:36 libxklavier.anjuta
-rw-rw-r-- 1 frank frank   256 2012-09-21 20:36 libxklavier.pc.in
-rw-rw-r-- 1 frank frank  1434 2012-09-21 20:36 libxklavier.spec.in
drwxrwxr-x 2 frank frank  4096 2012-09-21 20:36 m4
-rw-rw-r-- 1 frank frank   396 2012-09-21 20:36 Makefile.am
-rw-rw-r-- 1 frank frank  2702 2012-09-21 20:36 NEWS
-rw-rw-r-- 1 frank frank    75 2012-09-21 20:36 README
drwxrwxr-x 2 frank frank  4096 2012-09-21 20:36 tests

Am I missing files?
Comment 61 Frank 2012-12-15 15:42:53 UTC
Ok 'test_monitor.c' is part of the libxklavier package, I see those files. But I am trying the patch first.

Except I think there is no 'configure' script in the package I extracted, or I have a different problem, but './configure' is not finding any files to run.
Comment 62 Frank 2012-12-15 15:45:24 UTC
Should I use 'autogen.sh'?
Comment 63 Sergey V. Udaltsov 2012-12-15 15:45:55 UTC
If you took the stuff from git, yes, autogen.sh
Comment 64 Frank 2012-12-15 15:48:12 UTC
Good.
Gotta work on the dependencies. 'gtk-doc' for instance.
Trying to find the package and install it.
Comment 65 Frank 2012-12-15 15:50:32 UTC
Yes I took it from git, from http://cgit.freedesktop.org/libxklavier/ that's why.
Comment 66 Frank 2012-12-15 15:51:26 UTC
autogen seems to have work:

**********************************************************
  Libxklavier is configured with the following backends:
    XKB, libxkbfile is NOT present
    xmodmap, default ruleset: base
             base: /usr/share/xmodmap
  gtk-doc disabled
**********************************************************
Comment 67 Frank 2012-12-15 15:52:53 UTC
And to make sure the compiling worked, here's the 'make' output:




$ make
make  all-recursive
make[1]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3'
Making all in libxklavier
make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier'
`/usr/bin/pkg-config --variable=glib_genmarshal glib-2.0` --prefix=xkl_engine ./marshal.list --header > xkl_engine_marshal.h
(cd . \
        && glib-mkenums \
                --fhead "#ifndef __XKL_ENUM_TYPES_H__\n#define __XKL_ENUM_TYPES_H__\n" \
                --fprod "/* enumerations from \"@filename@\" */\n" \
                --vhead "GType @enum_name@_get_type (void);\n#define XKL_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n" \
                --ftail "#endif /* __XKL_ENUM_TYPES_H__ */" \
                xkl_engine.h xkl_config_item.h xkl_config_registry.h xkl_config_rec.h xkl_engine_marshal.h xklavier.h) > new-xkl-enum-types.h \
        && (cmp -s new-xkl-enum-types.h xkl-enum-types.h || cp new-xkl-enum-types.h xkl-enum-types.h) \
        && rm -f new-xkl-enum-types.h \
        && echo timestamp > stamp-xkl-enum-types.h
(cd . \
        && glib-mkenums \
                --fhead "#include <libxklavier/xklavier.h>" \
                --fprod "\n/* enumerations from \"@filename@\" */" \
                --vhead "GType\n@enum_name@_get_type (void)\n{\n  static GType etype = 0;\n  if (etype == 0) {\n    static const G@Type@Value values[] = {" \
                --vprod "      { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \
                --vtail "      { 0, NULL, NULL }\n    };\n    etype = g_@type@_register_static (\"@EnumName@\", values);\n  }\n  return etype;\n}\n" \
                xkl_engine.h xkl_config_item.h xkl_config_registry.h xkl_config_rec.h xkl_engine_marshal.h xklavier.h) > new-xkl-enum-types.c \
        && cp new-xkl-enum-types.c xkl-enum-types.c \
        && rm -f new-xkl-enum-types.c
make  all-am
make[3]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier'
  CC     xkl-enum-types.lo
  CC     xklavier.lo
  CC     xklavier_evt.lo
  CC     xklavier_config.lo
  CC     xklavier_config_iso.lo
  CC     xklavier_xkb.lo
  CC     xklavier_evt_xkb.lo
  CC     xklavier_config_xkb.lo
  CC     xklavier_toplevel.lo
  CC     xklavier_xmm.lo
  CC     xklavier_xmm_opts.lo
  CC     xklavier_evt_xmm.lo
  CC     xklavier_config_xmm.lo
  CC     xklavier_util.lo
  CC     xklavier_props.lo
  CC     xklavier_dump.lo
`/usr/bin/pkg-config --variable=glib_genmarshal glib-2.0` --prefix=xkl_engine ./marshal.list --body > xkl_engine_marshal.c
  CC     xkl_engine_marshal.lo
  CCLD   libxklavier.la
make[3]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier'
make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier'
Making all in doc
make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc'
Making all in reference
make[3]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc/reference'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc/reference'
make[3]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc'
make[3]: Nothing to be done for `all-am'.
make[3]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc'
make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc'
Making all in tests
make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/tests'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/tests'
make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3'
make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3'
make[1]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3'
Comment 68 Frank 2012-12-15 15:53:46 UTC
And now 'sudo make install':


$ sudo make install
Making install in libxklavier
make[1]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier'
make  install-am
make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier'
make[3]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier'
test -z "/usr/lib" || /bin/mkdir -p "/usr/lib"
 /bin/bash ../libtool   --mode=install /usr/bin/install -c   libxklavier.la '/usr/lib'
libtool: install: /usr/bin/install -c .libs/libxklavier.so.16.3.0 /usr/lib/libxklavier.so.16.3.0
libtool: install: (cd /usr/lib && { ln -s -f libxklavier.so.16.3.0 libxklavier.so.16 || { rm -f libxklavier.so.16 && ln -s libxklavier.so.16.3.0 libxklavier.so.16; }; })
libtool: install: (cd /usr/lib && { ln -s -f libxklavier.so.16.3.0 libxklavier.so || { rm -f libxklavier.so && ln -s libxklavier.so.16.3.0 libxklavier.so; }; })
libtool: install: /usr/bin/install -c .libs/libxklavier.lai /usr/lib/libxklavier.la
libtool: install: /usr/bin/install -c .libs/libxklavier.a /usr/lib/libxklavier.a
libtool: install: chmod 644 /usr/lib/libxklavier.a
libtool: install: ranlib /usr/lib/libxklavier.a
libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin:/sbin" ldconfig -n /usr/lib
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/lib

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,-rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
test -z "" || /bin/mkdir -p ""
test -z "" || /bin/mkdir -p ""
test -z "/usr/include/libxklavier" || /bin/mkdir -p "/usr/include/libxklavier"
 /usr/bin/install -c -m 644 xkl_engine.h xkl_config_item.h xkl_config_registry.h xkl_config_rec.h xkl_engine_marshal.h xklavier.h xkl-enum-types.h '/usr/include/libxklavier'
make[3]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier'
make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier'
make[1]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier'
Making install in doc
make[1]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc'
Making install in reference
make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc/reference'
make[3]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc/reference'
make[3]: Nothing to be done for `install-exec-am'.
Nothing to install
make[3]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc/reference'
make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc/reference'
make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc'
make[3]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc'
make[3]: Nothing to be done for `install-exec-am'.
make[3]: Nothing to be done for `install-data-am'.
make[3]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc'
make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc'
make[1]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc'
Making install in tests
make[1]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/tests'
make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/tests'
make[2]: Nothing to be done for `install-exec-am'.
make[2]: Nothing to be done for `install-data-am'.
make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/tests'
make[1]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/tests'
make[1]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3'
make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3'
make[2]: Nothing to be done for `install-exec-am'.
test -z "/usr/lib/pkgconfig" || /bin/mkdir -p "/usr/lib/pkgconfig"
 /usr/bin/install -c -m 644 libxklavier.pc '/usr/lib/pkgconfig'
make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3'
make[1]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3'



Is all ok?
Comment 69 Sergey V. Udaltsov 2012-12-15 15:54:43 UTC
>     XKB, libxkbfile is NOT present
You are missing important files. Further build does not make sense.

You need libxkbfile
Comment 70 Frank 2012-12-15 15:58:05 UTC
Tnx for pointing that out. I knew something was wrong, as the indicator in cairo-dock only shows US keyboard, and I got also CA keyboard.

Installed 'libxkbfile-devel'.
Comment 71 Sergey V. Udaltsov 2012-12-15 16:00:19 UTC
After you got libxkbfile, rerun configure/make/make install parts
Comment 72 Frank 2012-12-15 16:04:50 UTC
Sorry I reran before you posted. :(

Did a 'sudo make uninstall'.

Now autogen.sh:



$ ./autogen.sh --prefix=/usr
autoreconf: Entering directory `.'
autoreconf: running: autopoint --force
autoreconf: running: aclocal --force -I m4 ${ACLOCAL_FLAGS}
autoreconf: configure.ac: tracing
autoreconf: running: libtoolize --install --copy --force
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, `build-aux'.
libtoolize: copying file `build-aux/config.guess'
libtoolize: copying file `build-aux/config.sub'
libtoolize: copying file `build-aux/install-sh'
libtoolize: copying file `build-aux/ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'.
libtoolize: copying file `m4/libtool.m4'
libtoolize: copying file `m4/ltoptions.m4'
libtoolize: copying file `m4/ltsugar.m4'
libtoolize: copying file `m4/ltversion.m4'
libtoolize: copying file `m4/lt~obsolete.m4'
autoreconf: running: /usr/bin/autoconf --force
autoreconf: running: /usr/bin/autoheader --force
autoreconf: running: automake --add-missing --copy --force-missing
Makefile.am:3: AM_GNU_GETTEXT used but `po' not in SUBDIRS
autoreconf: Leaving directory `.'
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking whether to disable maintainer-specific portions of Makefiles... yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking for ld used by GCC... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for shared library run path origin... done
checking for iconv... yes
checking for working iconv... yes
checking for iconv declaration... 
         extern size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
checking how to print strings... printf
checking for a sed that does not truncate output... /bin/sed
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for fgrep... /bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking how to convert x86_64-unknown-linux-gnu file names to x86_64-unknown-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for ar... ar
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for mt... mt
checking if mt is a manifest tool... no
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking whether NLS is requested... yes
checking for msgfmt... /usr/bin/msgfmt
checking for gmsgfmt... /usr/bin/msgfmt
checking for xgettext... /usr/bin/xgettext
checking for msgmerge... /usr/bin/msgmerge
checking for CFPreferencesCopyAppValue... no
checking for CFLocaleCopyCurrent... no
checking for GNU gettext in libc... yes
checking whether to use NLS... yes
checking where the gettext function comes from... libc
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for gobject-introspection... no
checking for gtkdoc-check... /usr/bin/gtkdoc-check
checking for gtkdoc-rebase... /usr/bin/gtkdoc-rebase
checking for gtkdoc-mkpdf... /usr/bin/gtkdoc-mkpdf
checking whether to build gtk-doc documentation... no
checking langinfo.h usability... yes
checking langinfo.h presence... yes
checking for langinfo.h... yes
checking for nl_langinfo... yes
checking for nl_langinfo and CODESET... yes
checking for setlocale... yes
checking for X... yes
checking for xkbcomp... /usr/bin/xkbcomp
checking for X11/extensions/XKBrules.h... yes
checking whether at least one libxklavier backend is enabled... yes
checking for XML... yes
checking for GLIB... yes
checking for XINPUT... yes
checking whether iso-codes exists... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating libxklavier/Makefile
config.status: creating libxklavier.spec
config.status: creating doc/Makefile
config.status: creating doc/reference/Makefile
config.status: creating tests/Makefile
config.status: creating libxklavier.pc
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing depfiles commands
config.status: executing libtool commands
config.status: executing po-directories commands
**********************************************************
  Libxklavier is configured with the following backends:
    XKB, libxkbfile is present
         default ruleset: base
         base: /usr/share/X11/xkb
         xkbcomp is used from: /usr/bin
         xinput available: yes
    xmodmap, default ruleset: base
             base: /usr/share/xmodmap
  gtk-doc disabled
**********************************************************





make:



$ make
make  all-recursive
make[1]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3'
Making all in libxklavier
make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier'
make  all-am
make[3]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier'
make[3]: Nothing to be done for `all-am'.
make[3]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier'
make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier'
Making all in doc
make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc'
Making all in reference
make[3]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc/reference'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc/reference'
make[3]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc'
make[3]: Nothing to be done for `all-am'.
make[3]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc'
make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc'
Making all in tests
make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/tests'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/tests'
make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3'
make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3'
make[1]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3'



sudo make install:


$ sudo make install
Making install in libxklavier
make[1]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier'
make  install-am
make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier'
make[3]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier'
test -z "/usr/lib" || /bin/mkdir -p "/usr/lib"
 /bin/bash ../libtool   --mode=install /usr/bin/install -c   libxklavier.la '/usr/lib'
libtool: install: /usr/bin/install -c .libs/libxklavier.so.16.3.0 /usr/lib/libxklavier.so.16.3.0
libtool: install: (cd /usr/lib && { ln -s -f libxklavier.so.16.3.0 libxklavier.so.16 || { rm -f libxklavier.so.16 && ln -s libxklavier.so.16.3.0 libxklavier.so.16; }; })
libtool: install: (cd /usr/lib && { ln -s -f libxklavier.so.16.3.0 libxklavier.so || { rm -f libxklavier.so && ln -s libxklavier.so.16.3.0 libxklavier.so; }; })
libtool: install: /usr/bin/install -c .libs/libxklavier.lai /usr/lib/libxklavier.la
libtool: install: /usr/bin/install -c .libs/libxklavier.a /usr/lib/libxklavier.a
libtool: install: chmod 644 /usr/lib/libxklavier.a
libtool: install: ranlib /usr/lib/libxklavier.a
libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin:/sbin" ldconfig -n /usr/lib
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/lib

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,-rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
test -z "" || /bin/mkdir -p ""
test -z "" || /bin/mkdir -p ""
test -z "/usr/include/libxklavier" || /bin/mkdir -p "/usr/include/libxklavier"
 /usr/bin/install -c -m 644 xkl_engine.h xkl_config_item.h xkl_config_registry.h xkl_config_rec.h xkl_engine_marshal.h xklavier.h xkl-enum-types.h '/usr/include/libxklavier'
make[3]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier'
make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier'
make[1]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier'
Making install in doc
make[1]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc'
Making install in reference
make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc/reference'
make[3]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc/reference'
make[3]: Nothing to be done for `install-exec-am'.
Nothing to install
make[3]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc/reference'
make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc/reference'
make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc'
make[3]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc'
make[3]: Nothing to be done for `install-exec-am'.
make[3]: Nothing to be done for `install-data-am'.
make[3]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc'
make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc'
make[1]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc'
Making install in tests
make[1]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/tests'
make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/tests'
make[2]: Nothing to be done for `install-exec-am'.
make[2]: Nothing to be done for `install-data-am'.
make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/tests'
make[1]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/tests'
make[1]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3'
make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3'
make[2]: Nothing to be done for `install-exec-am'.
test -z "/usr/lib/pkgconfig" || /bin/mkdir -p "/usr/lib/pkgconfig"
 /usr/bin/install -c -m 644 libxklavier.pc '/usr/lib/pkgconfig'
make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3'
make[1]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3'


I still only see US as the kbd. I must have done something wrong. I will revert to older version and untar again the package, restarting from scratch.
Comment 73 Frank 2012-12-15 16:15:31 UTC
Here we go again. :)
But before compiling, I tested the display of the kbd indicator of cairo-dock. It was showing 'English (US)' and 'French (Canada)'. So that was good. Of course the switch does not work, but libxklavier shows both.

Now the compile.
autogen.sh:

$ ./autogen.sh --prefix=/usr
autoreconf: Entering directory `.'
autoreconf: running: autopoint --force
Copying file ABOUT-NLS
Creating directory build-aux
Copying file build-aux/config.rpath
Copying file m4/codeset.m4
Copying file m4/gettext.m4
Copying file m4/glibc2.m4
Copying file m4/glibc21.m4
Copying file m4/iconv.m4
Copying file m4/intdiv0.m4
Copying file m4/intl.m4
Copying file m4/intldir.m4
Copying file m4/intlmacosx.m4
Copying file m4/intmax.m4
Copying file m4/inttypes-pri.m4
Copying file m4/inttypes_h.m4
Copying file m4/lcmessage.m4
Copying file m4/lib-ld.m4
Copying file m4/lib-link.m4
Copying file m4/lib-prefix.m4
Copying file m4/lock.m4
Copying file m4/longlong.m4
Copying file m4/nls.m4
Copying file m4/po.m4
Copying file m4/printf-posix.m4
Copying file m4/progtest.m4
Copying file m4/size_max.m4
Copying file m4/stdint_h.m4
Copying file m4/uintmax_t.m4
Copying file m4/visibility.m4
Copying file m4/wchar_t.m4
Copying file m4/wint_t.m4
Copying file m4/xsize.m4
Creating directory po
Copying file po/Makefile.in.in
Copying file po/Makevars.template
Copying file po/Rules-quot
Copying file po/boldquot.sed
Copying file po/en@boldquot.header
Copying file po/en@quot.header
Copying file po/insert-header.sin
Copying file po/quot.sed
Copying file po/remove-potcdate.sin
autoreconf: running: aclocal --force -I m4 ${ACLOCAL_FLAGS}
autoreconf: configure.ac: tracing
autoreconf: running: libtoolize --install --copy --force
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, `build-aux'.
libtoolize: copying file `build-aux/config.guess'
libtoolize: copying file `build-aux/config.sub'
libtoolize: copying file `build-aux/install-sh'
libtoolize: copying file `build-aux/ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'.
libtoolize: copying file `m4/libtool.m4'
libtoolize: copying file `m4/ltoptions.m4'
libtoolize: copying file `m4/ltsugar.m4'
libtoolize: copying file `m4/ltversion.m4'
libtoolize: copying file `m4/lt~obsolete.m4'
autoreconf: running: /usr/bin/autoconf --force
autoreconf: running: /usr/bin/autoheader --force
autoreconf: running: automake --add-missing --copy --force-missing
configure.ac:13: installing `build-aux/missing'
libxklavier/Makefile.am: installing `build-aux/depcomp'
Makefile.am: installing `./INSTALL'
Makefile.am:3: AM_GNU_GETTEXT used but `po' not in SUBDIRS
autoreconf: Leaving directory `.'
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking whether to disable maintainer-specific portions of Makefiles... yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking for ld used by GCC... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for shared library run path origin... done
checking for iconv... yes
checking for working iconv... yes
checking for iconv declaration... 
         extern size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
checking how to print strings... printf
checking for a sed that does not truncate output... /bin/sed
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for fgrep... /bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking how to convert x86_64-unknown-linux-gnu file names to x86_64-unknown-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for ar... ar
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for mt... mt
checking if mt is a manifest tool... no
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking whether NLS is requested... yes
checking for msgfmt... /usr/bin/msgfmt
checking for gmsgfmt... /usr/bin/msgfmt
checking for xgettext... /usr/bin/xgettext
checking for msgmerge... /usr/bin/msgmerge
checking for CFPreferencesCopyAppValue... no
checking for CFLocaleCopyCurrent... no
checking for GNU gettext in libc... yes
checking whether to use NLS... yes
checking where the gettext function comes from... libc
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for gobject-introspection... no
checking for gtkdoc-check... /usr/bin/gtkdoc-check
checking for gtkdoc-rebase... /usr/bin/gtkdoc-rebase
checking for gtkdoc-mkpdf... /usr/bin/gtkdoc-mkpdf
checking whether to build gtk-doc documentation... no
checking langinfo.h usability... yes
checking langinfo.h presence... yes
checking for langinfo.h... yes
checking for nl_langinfo... yes
checking for nl_langinfo and CODESET... yes
checking for setlocale... yes
checking for X... yes
checking for xkbcomp... /usr/bin/xkbcomp
checking for X11/extensions/XKBrules.h... yes
checking whether at least one libxklavier backend is enabled... yes
checking for XML... yes
checking for GLIB... yes
checking for XINPUT... yes
checking whether iso-codes exists... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating libxklavier/Makefile
config.status: creating libxklavier.spec
config.status: creating doc/Makefile
config.status: creating doc/reference/Makefile
config.status: creating tests/Makefile
config.status: creating libxklavier.pc
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands
config.status: executing po-directories commands
**********************************************************
  Libxklavier is configured with the following backends:
    XKB, libxkbfile is present
         default ruleset: base
         base: /usr/share/X11/xkb
         xkbcomp is used from: /usr/bin
         xinput available: yes
    xmodmap, default ruleset: base
             base: /usr/share/xmodmap
  gtk-doc disabled
**********************************************************


make:

$ make
make  all-recursive
make[1]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3'
Making all in libxklavier
make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier'
`/usr/bin/pkg-config --variable=glib_genmarshal glib-2.0` --prefix=xkl_engine ./marshal.list --header > xkl_engine_marshal.h
(cd . \
        && glib-mkenums \
                --fhead "#ifndef __XKL_ENUM_TYPES_H__\n#define __XKL_ENUM_TYPES_H__\n" \
                --fprod "/* enumerations from \"@filename@\" */\n" \
                --vhead "GType @enum_name@_get_type (void);\n#define XKL_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n" \
                --ftail "#endif /* __XKL_ENUM_TYPES_H__ */" \
                xkl_engine.h xkl_config_item.h xkl_config_registry.h xkl_config_rec.h xkl_engine_marshal.h xklavier.h) > new-xkl-enum-types.h \
        && (cmp -s new-xkl-enum-types.h xkl-enum-types.h || cp new-xkl-enum-types.h xkl-enum-types.h) \
        && rm -f new-xkl-enum-types.h \
        && echo timestamp > stamp-xkl-enum-types.h
(cd . \
        && glib-mkenums \
                --fhead "#include <libxklavier/xklavier.h>" \
                --fprod "\n/* enumerations from \"@filename@\" */" \
                --vhead "GType\n@enum_name@_get_type (void)\n{\n  static GType etype = 0;\n  if (etype == 0) {\n    static const G@Type@Value values[] = {" \
                --vprod "      { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \
                --vtail "      { 0, NULL, NULL }\n    };\n    etype = g_@type@_register_static (\"@EnumName@\", values);\n  }\n  return etype;\n}\n" \
                xkl_engine.h xkl_config_item.h xkl_config_registry.h xkl_config_rec.h xkl_engine_marshal.h xklavier.h) > new-xkl-enum-types.c \
        && cp new-xkl-enum-types.c xkl-enum-types.c \
        && rm -f new-xkl-enum-types.c
make  all-am
make[3]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier'
  CC     xkl-enum-types.lo
  CC     xklavier.lo
  CC     xklavier_evt.lo
  CC     xklavier_config.lo
  CC     xklavier_config_iso.lo
  CC     xklavier_xkb.lo
  CC     xklavier_evt_xkb.lo
  CC     xklavier_config_xkb.lo
  CC     xklavier_toplevel.lo
  CC     xklavier_xmm.lo
  CC     xklavier_xmm_opts.lo
  CC     xklavier_evt_xmm.lo
  CC     xklavier_config_xmm.lo
  CC     xklavier_util.lo
  CC     xklavier_props.lo
  CC     xklavier_dump.lo
`/usr/bin/pkg-config --variable=glib_genmarshal glib-2.0` --prefix=xkl_engine ./marshal.list --body > xkl_engine_marshal.c
  CC     xkl_engine_marshal.lo
  CCLD   libxklavier.la
make[3]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier'
make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier'
Making all in doc
make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc'
Making all in reference
make[3]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc/reference'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc/reference'
make[3]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc'
make[3]: Nothing to be done for `all-am'.
make[3]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc'
make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc'
Making all in tests
make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/tests'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/tests'
make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3'
make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3'
make[1]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3'


sudo make install:

$ sudo make install
Making install in libxklavier
make[1]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier'
make  install-am
make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier'
make[3]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier'
test -z "/usr/lib" || /bin/mkdir -p "/usr/lib"
 /bin/bash ../libtool   --mode=install /usr/bin/install -c   libxklavier.la '/usr/lib'
libtool: install: /usr/bin/install -c .libs/libxklavier.so.16.3.0 /usr/lib/libxklavier.so.16.3.0
libtool: install: (cd /usr/lib && { ln -s -f libxklavier.so.16.3.0 libxklavier.so.16 || { rm -f libxklavier.so.16 && ln -s libxklavier.so.16.3.0 libxklavier.so.16; }; })
libtool: install: (cd /usr/lib && { ln -s -f libxklavier.so.16.3.0 libxklavier.so || { rm -f libxklavier.so && ln -s libxklavier.so.16.3.0 libxklavier.so; }; })
libtool: install: /usr/bin/install -c .libs/libxklavier.lai /usr/lib/libxklavier.la
libtool: install: /usr/bin/install -c .libs/libxklavier.a /usr/lib/libxklavier.a
libtool: install: chmod 644 /usr/lib/libxklavier.a
libtool: install: ranlib /usr/lib/libxklavier.a
libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin:/sbin" ldconfig -n /usr/lib
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/lib

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,-rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
test -z "" || /bin/mkdir -p ""
test -z "" || /bin/mkdir -p ""
test -z "/usr/include/libxklavier" || /bin/mkdir -p "/usr/include/libxklavier"
 /usr/bin/install -c -m 644 xkl_engine.h xkl_config_item.h xkl_config_registry.h xkl_config_rec.h xkl_engine_marshal.h xklavier.h xkl-enum-types.h '/usr/include/libxklavier'
make[3]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier'
make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier'
make[1]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier'
Making install in doc
make[1]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc'
Making install in reference
make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc/reference'
make[3]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc/reference'
make[3]: Nothing to be done for `install-exec-am'.
Nothing to install
make[3]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc/reference'
make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc/reference'
make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc'
make[3]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc'
make[3]: Nothing to be done for `install-exec-am'.
make[3]: Nothing to be done for `install-data-am'.
make[3]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc'
make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc'
make[1]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc'
Making install in tests
make[1]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/tests'
make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/tests'
make[2]: Nothing to be done for `install-exec-am'.
make[2]: Nothing to be done for `install-data-am'.
make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/tests'
make[1]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/tests'
make[1]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3'
make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3'
make[2]: Nothing to be done for `install-exec-am'.
test -z "/usr/lib/pkgconfig" || /bin/mkdir -p "/usr/lib/pkgconfig"
 /usr/bin/install -c -m 644 libxklavier.pc '/usr/lib/pkgconfig'
make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3'
make[1]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3'





Ok compile worked!
But switching does not work.

Here's a debug from cairo-dock:

g_object_unref: assertion `G_IS_OBJECT (object)' failed
_cairo_dock_search_icon_from_subdock (Mail)
_cairo_dock_search_icon_from_subdock (Shortcuts)
_cairo_dock_search_icon_from_subdock (Script)
_cairo_dock_search_icon_from_subdock (dolphin)
_cairo_dock_search_icon_from_subdock (_MainDock_)
_cairo_dock_search_icon_from_subdock (Mail)
_cairo_dock_search_icon_from_subdock (Shortcuts)
_cairo_dock_search_icon_from_subdock (Script)
_cairo_dock_search_icon_from_subdock (dolphin)
_cairo_dock_search_icon_from_subdock (_MainDock_)
_cairo_dock_search_icon_from_subdock (Mail)
_cairo_dock_search_icon_from_subdock (Shortcuts)
_cairo_dock_search_icon_from_subdock (Script)
_cairo_dock_search_icon_from_subdock (dolphin)
_cairo_dock_search_icon_from_subdock (_MainDock_)
_cairo_dock_search_icon_from_subdock (Mail)
_cairo_dock_search_icon_from_subdock (Shortcuts)
_cairo_dock_search_icon_from_subdock (Script)
_cairo_dock_search_icon_from_subdock (dolphin)
_cairo_dock_search_icon_from_subdock (_MainDock_)
_cairo_dock_search_icon_from_subdock (Mail)
_cairo_dock_search_icon_from_subdock (Shortcuts)
_cairo_dock_search_icon_from_subdock (Script)
_cairo_dock_search_icon_from_subdock (dolphin)
_cairo_dock_search_icon_from_subdock (_MainDock_)
_cairo_dock_search_icon_from_subdock (Mail)
_cairo_dock_search_icon_from_subdock (Shortcuts)
_cairo_dock_search_icon_from_subdock (Script)
_cairo_dock_search_icon_from_subdock (dolphin)
_cairo_dock_search_icon_from_subdock (_MainDock_)
cd_xkbd_set_group: assertion `bSuccess' failed
Comment 74 Frank 2012-12-15 16:22:05 UTC
CD developers think

'gboolean bSuccess = xkl_engine_get_state (pEngine, Xid, &state);'

runs false.


https://bazaar.launchpad.net/~cairo-dock-team/cairo-dock-plug-ins/plug-ins/view/head:/keyboard-indicator/src/applet-xklavier.c#L38
Comment 75 Sergey V. Udaltsov 2012-12-15 16:41:53 UTC
> /usr/lib/libxklavier.so.16.3.0
Are you sure cairo-doc is using the right version? Can you do "ldd /usr/bin/cairo-dock | grep xkl " ? Well, if your cairo-dock is in different location, change the path?

Also, please provide here "ls -l /usr/lib/libxklavier*"
Comment 76 Frank 2012-12-15 17:00:10 UTC
It's in /usr/bin.

I get no result at all.

$ ldd /usr/bin/cairo-dock | grep xkl
$
Comment 77 Sergey V. Udaltsov 2012-12-15 17:05:45 UTC
Well, may be it is one of cairo-dock plugins then. You have to find out which of them is using libxklavier (using ldd)
Comment 78 Sergey V. Udaltsov 2012-12-15 17:07:37 UTC
On my system:

ldd /usr/lib64/cairo-dock/libcd-keyboard-indicator.so | grep xkl
	libxklavier.so.16 => /lib64/libxklavier.so.16 (0x00007f30a7907000)
Comment 79 Frank 2012-12-15 17:20:19 UTC
Then,

$ ldd /usr/lib/cairo-dock/libcd-keyboard-indicator.so | grep xkl
        libxklavier.so.16 => /usr/lib/libxklavier.so.16 (0x00007f97ccf23000)
Comment 80 Sergey V. Udaltsov 2012-12-15 17:21:56 UTC
great. So, what do you get from

ls -l /usr/lib/libxklavier*
Comment 81 Frank 2012-12-15 17:24:47 UTC
This:

$ ls -l /usr/lib/libxklavier*
-rw-r--r-- 1 root root 1105822 2012-12-15 11:12 /usr/lib/libxklavier.a
-rwxr-xr-x 1 root root    1145 2012-12-15 11:12 /usr/lib/libxklavier.la
lrwxrwxrwx 1 root root      21 2012-12-15 11:12 /usr/lib/libxklavier.so -> libxklavier.so.16.3.0
lrwxrwxrwx 1 root root      21 2012-12-15 11:12 /usr/lib/libxklavier.so.16 -> libxklavier.so.16.3.0
-rw-r--r-- 1 root root  115440 2011-05-17 04:55 /usr/lib/libxklavier.so.16.1.0
-rwxr-xr-x 1 root root  538608 2012-12-15 11:12 /usr/lib/libxklavier.so.16.3.0
Comment 82 Sergey V. Udaltsov 2012-12-15 17:39:09 UTC
Great. That proves that cairo-doc is using right library. Now, you can try

"export XKL_DEBUG=150"
before executing cairo-doc. You should see massive output
Comment 83 Frank 2012-12-15 18:23:05 UTC
I didn't see any output after the EXPORT command.

Then I loaded 'cairo-dock -l debug' from my Yakuake window

I tried to switch and here is the different msg:


[1355595717,150,xklavier_toplevel.c:xkl_engine_get_toplevel_window_state/]      Appwin 240000b, 'Yakuake' does not have state
cd_xkbd_set_group: assertion `bSuccess' failed
Comment 84 Frank 2012-12-15 18:32:54 UTC
I recompiled cairo-dock.

Launched with 'cairo-dock -cl debug XKL_DEBUG=150'


Was in Yakuake, tried to switch languages using the mouse on the cairo-dock indicator:



g_object_unref: assertion `G_IS_OBJECT (object)' failed
_cairo_dock_search_icon_from_subdock (Mail)
_cairo_dock_search_icon_from_subdock (Shortcuts)
_cairo_dock_search_icon_from_subdock (Script)
_cairo_dock_search_icon_from_subdock (dolphin)
_cairo_dock_search_icon_from_subdock (_MainDock_)
_cairo_dock_search_icon_from_subdock (Mail)
_cairo_dock_search_icon_from_subdock (Shortcuts)
_cairo_dock_search_icon_from_subdock (Script)
_cairo_dock_search_icon_from_subdock (dolphin)
_cairo_dock_search_icon_from_subdock (_MainDock_)
_cairo_dock_search_icon_from_subdock (Mail)
_cairo_dock_search_icon_from_subdock (Shortcuts)
_cairo_dock_search_icon_from_subdock (Script)
_cairo_dock_search_icon_from_subdock (dolphin)
_cairo_dock_search_icon_from_subdock (_MainDock_)
_cairo_dock_search_icon_from_subdock (Mail)
_cairo_dock_search_icon_from_subdock (Shortcuts)
_cairo_dock_search_icon_from_subdock (Script)
_cairo_dock_search_icon_from_subdock (dolphin)
_cairo_dock_search_icon_from_subdock (_MainDock_)
_cairo_dock_search_icon_from_subdock (Mail)
_cairo_dock_search_icon_from_subdock (Shortcuts)
_cairo_dock_search_icon_from_subdock (Script)
_cairo_dock_search_icon_from_subdock (dolphin)
_cairo_dock_search_icon_from_subdock (_MainDock_)
_cairo_dock_search_icon_from_subdock (Mail)
_cairo_dock_search_icon_from_subdock (Shortcuts)
_cairo_dock_search_icon_from_subdock (Script)
_cairo_dock_search_icon_from_subdock (dolphin)
_cairo_dock_search_icon_from_subdock (_MainDock_)
[1355596251,150,xklavier_toplevel.c:xkl_engine_get_toplevel_window_state/]      Appwin 240000b, 'Yakuake' does not have state
cd_xkbd_set_group: assertion `bSuccess' failed


Right-click gives the _cairo_dock_search_icon* msgs.
Left-click gives the [1355* and below lines.
Comment 85 Sergey V. Udaltsov 2012-12-15 18:38:56 UTC
XKL_DEBUG is environment variable that has to be set before cairo-dock is executed. That way libxklaiver is producing a lot of xkl_debug messages. Actually, you can add more of them to xkl_engine_get_toplevel_window_state function if you like, rebuild and reinstall libxklavier.
Or you can add just printf, for simplicity...

Perhaps at that stage you have all instruments on your hands, try to add debug and find out why xkl_engine_get_toplevel_window_state returns FALSE... Unfortunately I do not see that issue locally. BTW, what is your distro name?
Comment 86 Frank 2012-12-15 18:48:12 UTC
Kubuntu 11.10, will upgrade to 12.10 by month-end.

I will see with cairo-dock devs what they can do.
Comment 87 Frank 2012-12-15 19:21:05 UTC
XKL_DEBUG does not seem very efficient.

I did that before and I did it again and the result is the same:


g_object_unref: assertion `G_IS_OBJECT (object)' failed
_cairo_dock_search_icon_from_subdock (Mail)
_cairo_dock_search_icon_from_subdock (Shortcuts)
_cairo_dock_search_icon_from_subdock (Script)
_cairo_dock_search_icon_from_subdock (dolphin)
_cairo_dock_search_icon_from_subdock (_MainDock_)
_cairo_dock_search_icon_from_subdock (Mail)
_cairo_dock_search_icon_from_subdock (Shortcuts)
_cairo_dock_search_icon_from_subdock (Script)
_cairo_dock_search_icon_from_subdock (dolphin)
_cairo_dock_search_icon_from_subdock (_MainDock_)
_cairo_dock_search_icon_from_subdock (Mail)
_cairo_dock_search_icon_from_subdock (Shortcuts)
_cairo_dock_search_icon_from_subdock (Script)
_cairo_dock_search_icon_from_subdock (dolphin)
_cairo_dock_search_icon_from_subdock (_MainDock_)
_cairo_dock_search_icon_from_subdock (Mail)
_cairo_dock_search_icon_from_subdock (Shortcuts)
_cairo_dock_search_icon_from_subdock (Script)
_cairo_dock_search_icon_from_subdock (dolphin)
_cairo_dock_search_icon_from_subdock (_MainDock_)
_cairo_dock_search_icon_from_subdock (Mail)
_cairo_dock_search_icon_from_subdock (Shortcuts)
_cairo_dock_search_icon_from_subdock (Script)
_cairo_dock_search_icon_from_subdock (dolphin)
_cairo_dock_search_icon_from_subdock (_MainDock_)
_cairo_dock_search_icon_from_subdock (Mail)
_cairo_dock_search_icon_from_subdock (Shortcuts)
_cairo_dock_search_icon_from_subdock (Script)
_cairo_dock_search_icon_from_subdock (dolphin)
_cairo_dock_search_icon_from_subdock (_MainDock_)
[1355599042,150,xklavier_toplevel.c:xkl_engine_get_toplevel_window_state/]      Appwin 240000b, 'Yakuake' does not have state
cd_xkbd_set_group: assertion `bSuccess' failed


If I try printf, I add it on top of every line with xkl_engine_get_toplevel_window_state in the .c file?
Comment 88 Frank 2012-12-15 20:39:53 UTC
Since I am still looking on how to use prtinf, I would like to check test_monitor.c.

I guess it uses CMAKE? There is no CMakeLists.txt file in the folder so cmake . -DCMAKE_INSTALL_PREFIX=/usr does not work.
Comment 89 Frank 2012-12-15 21:05:23 UTC
The problem is it's not that xkl_engine_get_toplevel_window_state does not return a result, it does return a result but that result is invalid.

What would printf do more? It may tell why the result is invalid?
Comment 90 Sergey V. Udaltsov 2012-12-15 21:37:26 UTC
Of course it does not use cmake, God forbid! It uses autotools + make

printf inside get_state function would allow to print the results of XGetWindowProerty, that would explain the false return value
Comment 91 Frank 2012-12-16 05:11:29 UTC
Ok, but isn't the below debug helpful in some way?

[1355605203,150,xklavier.c:xkl_engine_one_switch_to_secondary_group_performed/] Resetting allow_one_switch_to_secondary_group flag
[1355605203,150,xklavier.c:xkl_engine_constructor/] Trying all backends:
[1355605203,150,xklavier.c:xkl_engine_constructor/] Trying XKB backend
[1355605203,160,xklavier_xkb.c:xkl_xkb_init/] xkbEvenType: 77, xkbError: A8, display: 0x1d5bdc0, root: 15a
[1355605203,100,xklavier_config_xkb.c:xkl_xkb_multiple_layouts_supported/] !!! Checking multiple layouts support
(...)



What the cairo-dock dev says it that xkl_engine_get_state returns a boolean (which seems to be false for us, which means that there is a problem) and modifies the state variable (which is used to know if capslock, numlock, etc. is enabled or not).

Hopefully printf can help, but so far I have failed to understand how to implement it in the .c, so it will take some time...
Comment 92 Sergey V. Udaltsov 2012-12-16 16:17:26 UTC
Well, xkl_debug works ok, no need in sprintf. Yes, all those debug statements provide plenty of information. And I asked to add one more xkl_debug into get_state function. It should explain the results of XGetProperty call.

So could you pls redirect that output to some file and attach it here?
Comment 93 Frank 2012-12-16 16:26:55 UTC
My guess is I have to add another xkl_debug somewhere here:

	if (ret)
		xkl_debug(150,
			  "Appwin " WINID_FORMAT
			  ", '%s' has the group %d, indicators %X\n",
			  toplevel_win,
			  xkl_get_debug_window_title(engine, toplevel_win),
			  grp, inds);
	else
		xkl_debug(150,
			  "Appwin " WINID_FORMAT
			  ", '%s' does not have state\n", toplevel_win,
			  xkl_get_debug_window_title(engine,
						     toplevel_win));


Vasya, do you know where and how to add that other xkl_debug?
Comment 94 Frank 2012-12-16 16:30:26 UTC
Or maybe here in:

	if (!ignore_existing_state) {
		gboolean have_state =
		    xkl_engine_get_toplevel_window_state(engine,
							 toplevel_win,
							 &state);


Or here:


if (transient_for) {
				XklState trans_state;
				gboolean have_state =
					xkl_engine_get_toplevel_window_state(engine,
							 transient_for,
							 &trans_state);
				if (have_state) {
					default_group_to_use = trans_state.group;


Vasya, any idea?
Comment 95 Sergey V. Udaltsov 2012-12-16 16:33:36 UTC
Vasya already did proper patch for debugging, see comment #44
Comment 96 Frank 2012-12-16 16:38:58 UTC
Ok I get it, sorry.

So I will have to use XKL_DEBUG=0.

I am patching and will recompile.
Comment 97 Sergey V. Udaltsov 2012-12-16 16:41:11 UTC
You can use bigger XKL_DEBUG values, they will include all messages with lower parameters (when you specify 150, all messages 0-150 are displayed)
Comment 98 Frank 2012-12-16 16:45:30 UTC
Well I must have done something wrong, I think I didn't do the patch right:


g_object_unref: assertion `G_IS_OBJECT (object)' failed
_cairo_dock_search_icon_from_subdock (Mail)
_cairo_dock_search_icon_from_subdock (Shortcuts)
_cairo_dock_search_icon_from_subdock (Script)
_cairo_dock_search_icon_from_subdock (_MainDock_)
_cairo_dock_search_icon_from_subdock (Mail)
_cairo_dock_search_icon_from_subdock (Shortcuts)
_cairo_dock_search_icon_from_subdock (Script)
_cairo_dock_search_icon_from_subdock (_MainDock_)
_cairo_dock_search_icon_from_subdock (Mail)
_cairo_dock_search_icon_from_subdock (Shortcuts)
_cairo_dock_search_icon_from_subdock (Script)
_cairo_dock_search_icon_from_subdock (_MainDock_)
_cairo_dock_search_icon_from_subdock (Mail)
_cairo_dock_search_icon_from_subdock (Shortcuts)
_cairo_dock_search_icon_from_subdock (Script)
_cairo_dock_search_icon_from_subdock (_MainDock_)
_cairo_dock_search_icon_from_subdock (Mail)
_cairo_dock_search_icon_from_subdock (Shortcuts)
_cairo_dock_search_icon_from_subdock (Script)
_cairo_dock_search_icon_from_subdock (_MainDock_)
[1355676291,150,xklavier_toplevel.c:xkl_engine_get_toplevel_window_state/]      Appwin 2600016, 'Yakuake' does not have state
cd_xkbd_set_group: assertion `bSuccess' failed


I will retry.
Comment 99 Frank 2012-12-16 16:56:58 UTC
I can't get more info with Vasya's patch, I don't understand what I may be doing wrong.
Comment 100 Sergey V. Udaltsov 2012-12-16 16:58:40 UTC
I suspect you do not actually set XKL_DEBUG environment variable before running your app
Comment 101 Frank 2012-12-16 19:56:42 UTC
Maybe.

I did do export XKL_DEBUG=150.
I did launch with cairo-dock -l debug after.

I also tried launching with cairo-dock -l XKL_DEBUG=150.

I will retry this week, I have more time during the w-e on Saturdays, though.
Comment 102 Frank 2012-12-18 00:09:32 UTC
Same result. :(

export XKL_DEBUG=150
env XKL_DEBUG=150 cairo-dock debug


[1355785536,150,xklavier_toplevel.c:xkl_engine_get_toplevel_window_state/]      Appwin 3a0001a, '' does not have state
cd_xkbd_set_group: assertion `bSuccess' failed







When launching cairo-dock I have seen some debug when it gets the kbd information. Not sure if that can help:

[1355785482,150,xklavier.c:xkl_engine_one_switch_to_secondary_group_performed/]         Resetting allow_one_switch_to_secondary_group flag
[1355785482,150,xklavier.c:xkl_engine_constructor/]     Trying all backends:
[1355785482,150,xklavier.c:xkl_engine_constructor/]     Trying XKB backend
[1355785482,100,xklavier_config_xkb.c:xkl_xkb_multiple_layouts_supported/]      !!! Checking multiple layouts support
[1355785482,100,xklavier_config.c:xkl_engine_get_ruleset_name/]         Rules set: [evdev]
[1355785482,100,xklavier_config_xkb.c:xkl_xkb_multiple_layouts_supported/]      !!! Multiple layouts ARE supported
[1355785482,150,xklavier.c:xkl_engine_constructor/]     Actual backend: XKB
[1355785482,150,xklavier_toplevel.c:xkl_engine_get_toplevel_window_state/]      Appwin 3a0001a, '' does not have state
warning :  (/build/buildd/cairo-dock-plug-ins-3.1.0/keyboard-indicator/src/applet-xklavier.c:cd_xkbd_keyboard_state_changed:106)  
  xkl_engine_get_state() failed, we use the first keyboard layout as a workaround (60817434, 0)
[1355785482,100,xklavier_xkb.c:xkl_xkb_lock_group/]     Posted request for change the group to 0 ##
Comment 103 Sergey V. Udaltsov 2012-12-18 00:56:23 UTC
Could you move (see line around 309)

xkl_debug(0, "type: %d, format: %d\n", (int)type_ret, format_ret);

15 lines lower, just before the line

if (ret)
Comment 104 Frank 2012-12-18 01:15:03 UTC
With pleasure.


Here is the new *.c:


		if (state_out != NULL) {
			state_out->group = grp;
			state_out->indicators = inds;
		}
		if (prop != NULL)
			XFree(prop);

		ret = TRUE;
	}
		  
		xkl_debug(0, "type: %d, format: %d\n", (int)type_ret, format_ret);
	if (ret)
		xkl_debug(150,
			  "Appwin " WINID_FORMAT
			  ", '%s' has the group %d, indicators %X\n",
			  toplevel_win,
			  xkl_get_debug_window_title(engine, toplevel_win),
			  grp, inds);
	else
		xkl_debug(150,
			  "Appwin " WINID_FORMAT
			  ", '%s' does not have state\n", toplevel_win,
			  xkl_get_debug_window_title(engine,
						     toplevel_win));

	return ret;
}




And again same result.

Let'see...

$ ldd /usr/lib/x86_64-linux-gnu/cairo-dock/libcd-keyboard-indicator.so | grep xkl
        libxklavier.so.16 => /usr/lib/libxklavier.so.16 (0x00007fb2ce9e1000)

$ ls -l /usr/lib/libxkla*
-rw-r--r-- 1 root root 1241902 Dec 17 18:18 /usr/lib/libxklavier.a
-rwxr-xr-x 1 root root    1013 Dec 17 18:18 /usr/lib/libxklavier.la
lrwxrwxrwx 1 root root      21 Dec 17 18:18 /usr/lib/libxklavier.so -> libxklavier.so.16.3.0
lrwxrwxrwx 1 root root      21 Dec 17 18:18 /usr/lib/libxklavier.so.16 -> libxklavier.so.16.3.0
-rw-r--r-- 1 root root  107264 Oct  5 06:39 /usr/lib/libxklavier.so.16.2.0
-rwxr-xr-x 1 root root  610138 Dec 17 18:18 /usr/lib/libxklavier.so.16.3.0


That looks good.

BTW I switched to Kubuntu 12.10 under VBox.
I still got my other installation, but it is quicker to test (no switch of HD). I don't believe the environment change is causing any issue, here.
Cairo-dock I am using is now the deb package from Canonical, version 3.1, not the bzr version.
Comment 105 Sergey V. Udaltsov 2012-12-18 01:16:13 UTC
I want to see that:

type: %d, format: %d

In the output, with XKL_DEBUG=150
Comment 106 Frank 2012-12-18 01:21:07 UTC
Ok, I will try the debug code on different lines until I get the TYPE and FORMAT.
Comment 107 Vasya Pupkin 2012-12-19 10:10:18 UTC
Hi again,
I installed 5.0.3 version (which produces the library - so.16.3.0) and patched the xklavier_toplevel.c with CARD32 *p = NULL replacement to long, and also added the debug printing "just before if(RET)".

After running with XKL_DEBUG=150 - I got the following result:


[1355911388,000,xklavier_toplevel.c:xkl_engine_get_toplevel_window_state/] 	type: 0, format: 0
[1355911388,150,xklavier_toplevel.c:xkl_engine_get_toplevel_window_state/] 	Appwin 3200101, 'Cairo-Dock configuration' does not have state
cd_xkbd_set_prev_next_group: assertion `bSuccess' failed


BTW - probably kind of remote debugging could be more efficient? I have no problem to provide you Sergey the access to my desktop (and burn out my identity :) )

Thanks.
Comment 108 Sergey V. Udaltsov 2012-12-19 14:11:07 UTC
> [1355911388,000,xklavier_toplevel.c:xkl_engine_get_toplevel_window_state/] 
> type: 0, format: 0
There is REALLY no status on that window, it seems. Can you check by executing 
"xprop | grep XKL" and pointing the mouse cursor to that window?

One more question. When the app initialises the engine and starts listening, what parameters are passed?

> BTW - probably kind of remote debugging could be more efficient? I have no
> problem to provide you Sergey the access to my desktop (and burn out my
> identity :) )
Well, I would prefer not to intrude:)
Comment 109 Vasya Pupkin 2012-12-19 14:21:22 UTC
xprop | grep XKL  - Returns nothing on cairo-configuration window, on XFCE terminal window, on AbiWord, on LeafPad etc.

>> When the app initialises the engine and starts listening, what parameters are >> passed?

Please instruct how to check this.

Thanks.
Comment 110 Sergey V. Udaltsov 2012-12-19 22:03:47 UTC
Somewhere in cairo-dock source code (or keyboard plugin?) there must be a call to xkl_engine_start_listen. I am asking about the 2nd parameter of that call.
Comment 111 Vasya Pupkin 2012-12-19 22:32:44 UTC
Hi Sergey,

I downloaded sources with the following command:

 apt-get source cairo-dock cairo-dock-plug-ins

and tried to find references to "xkl_engine_start_listen". Unfortunately, the plugin itself and also cairo-dock don't contain such call.

I noticied, however that there engine is initialized with the method xkl_engine_get_instance :


:~/cairo-dock-plug-ins-3.1.2$ grep -n -R "xkl_engine_get_instance" .
./keyboard-indicator/src/applet-xklavier.c:33:	XklEngine *pEngine = xkl_engine_get_instance (dsp);  // const
./keyboard-indicator/src/applet-xklavier.c:66:	XklEngine *pEngine = xkl_engine_get_instance (dsp); // const
./keyboard-indicator/src/applet-xklavier.c:101:		XklEngine *pEngine = xkl_engine_get_instance (dsp); // const
./keyboard-indicator/src/applet-notifications.c:66:	XklEngine *pEngine = xkl_engine_get_instance (cairo_dock_get_Xdisplay ());  // singleton.

You can browse the code here: https://bazaar.launchpad.net/~cairo-dock-team/cairo-dock-plug-ins/plug-ins/view/head:/keyboard-indicator/src/applet-xklavier.c

thx
Comment 112 Frank 2012-12-19 22:35:11 UTC
On my end I have asked the cairo-dock dev about this function. Once I get an answer I'll post back.
Comment 113 Vasya Pupkin 2012-12-19 22:36:43 UTC
M.b. the problem is in absents of the call to the function "start_listen"?
Comment 114 Sergey V. Udaltsov 2012-12-19 22:54:21 UTC
Quite possible - there must be call to xkl_engine_start_listen. Also, the function xkl_engine_filter_events should be added to X11 events processing loop. I am sure cairo-doc developers will understand.
Comment 115 Frank 2012-12-29 18:11:11 UTC
FIXED!!!!!!!!! :)

The cairo-dock developers changed something and in their latest bzr it works!!! I guess you were right, some misused of the API. Is it clear how to use it I dunno and it doesn't matter they fixed it! :)

Tnx so much Sergey for your immense patience and tnx Vasya for joining and helping! :)
Comment 116 Sergey V. Udaltsov 2012-12-29 18:33:51 UTC
Good to know! Happy new year:)

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.