When an "unknown" keysym is recieved by Xvnc, it will dynamically allocate one from the "xmodmap table". Unfortunately there's only room for 255 keycodes. Our default table nowadays includes many multimedia keys etc, so there's only 29 free positions. If the client uses more keysyms than this (consider cyrillic clients for example), we will run out of free positions. The effect is that no (new) symbols can be entered. I guess it's difficult to find a real solution for this, but we could perhaps tweak the allocation somewhat, for example consider removing rarely used keysyms to make room for new ones.
An administrator can mitigate this problem by configuring the default keyboard layout to the layout users are actually using (we have "us" layout by default). A user can also work around the issue by manually setting the keyboard layout inside the session (using setxkbmap or some GUI).
This command can be run to see how much free space a layout has: > xmodmap -pke | grep '=$' | wc -l
https://community.thinlinc.com/t/after-switching-the-layout-several-random-keys-are-not-typed/595
This is now fixed in upstream TigerVNC: https://github.com/TigerVNC/tigervnc/pull/1734