Currently, the VNC protocol does not provide any synchronization of CapsLock. When CapsLock is active on the client and the user presses, say, "j", this is transferred as XK_J. On the server side, Shift will be "faked" if necessary. CapsLock will never be activated. This means that applications cannot distinguish between Shift-j and CapsLock-j.
One example of when this is a problem is when activating full screen mode in LibreOffice Writer. This is done with Ctrl-Shift-j. However, if CapsLock is active on the client, you must use Ctrl-j instead.
See also bug 400.
For a 4.1 solution, we will need a XKB tool to activate CapsLock. This could be:
* A modified version of numlockx
* xkbset, available from http://www.math.missouri.edu/~stephen/software/
https://bugs.launchpad.net/ubuntu/+source/numlockx/+bug/218202 references https://bugs.freedesktop.org/show_bug.cgi?id=16145 ; both are interesting.
(In reply to comment #3)
> For a 4.1 solution, we will need a XKB tool to activate CapsLock. This could
> * A modified version of numlockx
> * xkbset, available from http://www.math.missouri.edu/~stephen/software/
It turns out that https://github.com/jordansissel/xdotool can do this. Thus, to set Caps lock in the TL session, one can create a script in xstartup.d that looks like:
/usr/local/bin/xdotool.static key Caps_Lock
Bug 400 has been fixed upstream, so this will be resolved with the next vendor drop.
*** This bug has been marked as a duplicate of bug 400 ***